[Freeswitch-users] Set command is not working with the variable value in freeswitch

Iskren Hadzhinedev iskren.hadzhinedev at ikiji.com
Mon May 12 18:17:24 MSD 2014


Hello again,
This looks like you've put the whole path to the file in the dialplan, perhaps something like
*<action application="set" data="${python(/usr/lib/python2.7/getplayfile.py ${uuid})}"/>.*
If this is the case, it's incorrect. Python has internal paths for module loading and /usr/lib/python2.7 should be in them.
This should be sufficient:
 *<action application="set" data="${python(getplayfile ${uuid})}"/>*
It should pickup the path and the extension on its own.

/P.S. I seem to have an error in the example from the previous email, it's trying to open */tmp/* and not */*/*/nfs/th/play*,
/you should edit it in case you copy-pasted 1:1/

Kind regards,
-- 
Iskren Hadzhinedev

On Monday 12 May 2014 18:01:52 Nikhitha T wrote:


Hello Iskren



           I have followed the instructions told by you and executing the pythoon file from the dial plan,but some issues are  arised in loading the files

2014-05-12 16:57:10.046636 [ERR] mod_python.c:231 Error importing module2014-05-12 16:57:10.046636 [ERR] mod_python.c:164 Python Error by calling script "usr.lib.python2.7.getplayfile": <type 'exceptions.ImportError'>Message: No module named usr.lib.python2.7.getplayfile






On Mon, May 12, 2014 at 1:53 PM, Iskren Hadzhinedev <iskren.hadzhinedev at ikiji.com[1]> wrote:


Hello Nikhitha,
I have a similar scenario and I'm using mod_python. It's a bit more complicated, but it is very fast and reliable. If you have that module, you can use the following as a solution: 
 
1) Create a file getplayfile.py with the following contents:
 
*-- Copy below --*
import freeswitch
 
def handler(session, args):
pass
 
def fsapi(session, stream, env, args):
with open("/tmp/%s" % args, "r") as f:
stream.write(f.readline().rstrip('\n'))
*-- End copy --*
 
2) Place that file somewhere in the python path, for centos 6.5 that's /usr/lib/python2.6/site-packages, 64bit systems use /usr/lib64/python2.6/site-packages 
3) Modify your dialplan:
<action application="set" data="RESULT=${python(getplayfile ${uuid})}"/>
 
/P.S. I'm pretty sure the same can be done with mod_lua or mod_perl, but I'm not using them so I can't provide a solution./ 
 
Kind regards,
-- 
Iskren Hadzhinedev
 


Ian 



     As you told here the performances are unacceptable , I dont want the live caller to experience such issues.So how to overcome this issue and can you tell me what are the other approaches that solve the problem by increasing and not by increasing the complexity.




On Fri, May 9, 2014 at 5:16 PM, Ian McMaster <ian.mcmaster at gmail.com[2]> wrote:


Nikhitha,


I doubt that the poor response time is caused by the script itself.  For example, from the shell, time your script using "time <script.sh>".  You will probably get a time around 10ms.  This should not be a concern, and would be difficult to improve. 
The problem most likely is the choice of using 'system'.  A system() call is an expensive choice in terms of performance.  There is a lot of overhead going on in the operating system in the process. 
You can perform a few quick tests to see where your issue lies:  Use the freeswitch logs to see what the total time of the system call is, and then use the "time <script.sh>" to see what the time is from the shell.  I think you will find that the issue is "system" and not the script itself. 


Is the performance unacceptable because a live caller experiences an unacceptable pause?  If so, can you run the system command prior to the start of the script?  There are other approaches to solve your problem, but they increase in complexity. 


Ian.






On Fri, May 9, 2014 at 3:24 AM, Nikhitha T <nikhitha.voxta at gmail.com[3]> wrote:


Ian 



Thank you for the reply that worked for me and I have one more doubt.



While executing a shell script from the dial plan it is consuming much time to execute that script.How can i overcome this problem in reducing execution time of shell script when used in dial plan.




On Thu, May 8, 2014 at 7:35 PM, Ian McMaster <ian.mcmaster at gmail.com[2]> wrote:


Nikhitha,


You are using 'sed' to print the first line (head -1), which will include a line return. 


This will work:
Create a shell script "getplayfile.sh" and in your dialplan use:
* data="RESULT=${system getplayfile.sh}"*



The shell script can use tr to strip out the end of line as follows: 
sed -n 1p /nfs/th/play/${uuid} | tr "\n" "\0" 


On Thu, May 8, 2014 at 6:55 AM, Nikhitha T <nikhitha.voxta at gmail.com[3]> wrote:


In freeswitch as I am setting the variable like this 


*<action application="set" data="RESULT=${system sed -n 1p /nfs/th/play/${uuid}}" inline="true"/>*

*1002 at 192.168.0.106[4] SET [RESULT]=[/usr/local/freeswitch/sounds/en/us/callie/directory/8000/dir-for_prev.wav

]*
*2014-05-08 13:34:56.679046 [ERR] switch_core_file.c:150 Invalid file format [wav

] for [/usr/local/freeswitch/sounds/en/us/callie/directory/8000/dir-for_prev.wav

]!

*

Can anyone help me in solving this issue.Thanks in advance 



_________________________________________________________________________Professional FreeSWITCH Consulting Services:

consulting at freeswitch.org[5]
http://www.freeswitchsolutions.com[6]
[7]
http://www.freeswitch.org[8]
http://wiki.freeswitch.org[9]
http://www.cluecon.com[10]
FreeSWITCH-users at lists.freeswitch.org[11]
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users[12]
http://lists.freeswitch.org/mailman/options/freeswitch-users[13]
http://www.freeswitch.org[8]




consulting at freeswitch.org[5]
http://www.freeswitchsolutions.com[6]
[7]
http://www.freeswitch.org[8]
http://wiki.freeswitch.org[9]
http://www.cluecon.com[10]
FreeSWITCH-users at lists.freeswitch.org[11]
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users[12]
http://lists.freeswitch.org/mailman/options/freeswitch-users[13]
http://www.freeswitch.org[8]




consulting at freeswitch.org[5]
http://www.freeswitchsolutions.com[6]
[7]
http://www.freeswitch.org[8]
http://wiki.freeswitch.org[9]
http://www.cluecon.com[10]
FreeSWITCH-users at lists.freeswitch.org[11]
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users[12]
http://lists.freeswitch.org/mailman/options/freeswitch-users[13]
http://www.freeswitch.org[8]




consulting at freeswitch.org[5]
http://www.freeswitchsolutions.com[6]
[7]
http://www.freeswitch.org[8]
http://wiki.freeswitch.org[9]
http://www.cluecon.com[10]
FreeSWITCH-users at lists.freeswitch.org[11]
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users[12]
http://lists.freeswitch.org/mailman/options/freeswitch-users[13]
http://www.freeswitch.org[8]




consulting at freeswitch.org[5]
http://www.freeswitchsolutions.com[6]
[7]
http://www.freeswitch.org[8]
http://wiki.freeswitch.org[9]
http://www.cluecon.com[10]
FreeSWITCH-users at lists.freeswitch.org[11]
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users[12]
http://lists.freeswitch.org/mailman/options/freeswitch-users[13]
http://www.freeswitch.org[8]






--------
[1] mailto:iskren.hadzhinedev at ikiji.com
[2] mailto:ian.mcmaster at gmail.com
[3] mailto:nikhitha.voxta at gmail.com
[4] mailto:1002 at 192.168.0.106
[5] mailto:consulting at freeswitch.org
[6] http://www.freeswitchsolutions.com
[7] 
[8] http://www.freeswitch.org
[9] http://wiki.freeswitch.org
[10] http://www.cluecon.com
[11] mailto:FreeSWITCH-users at lists.freeswitch.org
[12] http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
[13] http://lists.freeswitch.org/mailman/options/freeswitch-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20140512/ad2a78c5/attachment-0001.html 


Join us at ClueCon 2013 Aug 6-8, 2013
More information about the FreeSWITCH-users mailing list