[Freeswitch-users] PHP ESL & Event Socket Outbound

Mike Raistrick michael.raistrick at googlemail.com
Thu Jul 11 14:32:05 MSD 2013


Hi,

This works for me with PHP and outbound socket.

Dialplan: *** sends connection to IP A.B.C.D port 8084

<extension name="test">
    <condition field="destination_number" expression="^\*\*\*$">
        <action application="socket" data="A.B.C.D:8084"/>
    </condition>
</extension>

xinetd picks up the connection and sends to the script. xinetd config is:

*service unlisted
{
         user                = whoever
         disable             = no
         type                = UNLISTED
         socket_type         = stream
         protocol            = tcp
         wait                = no
         server              = /home/test/test.php
         port                = 8084
     server_args         = HOST
}

*
The php script picks it up from there

#!/usr/bin/php
<?php
require_once('ESL.php');

$esl = new ESLconnection(0);

$ans= $esl->execute('answer');

$subscribe = $esl->sendRecv('myevents');
$subscribe = $esl->sendRecv('linger'); # Without this the channel closes
before we receive the events
$res = $esl->execute('sleep', '1000');

$context = $esl->getInfo()->getHeader('Caller-Context');
$curr_user = $esl->getInfo()->getHeader('variable_sip_from_user');
$curr_host = $esl->getInfo()->getHeader('variable_sip_from_host');

///etc etc.

Hope that helps

Mike


On Wed, Jul 10, 2013 at 11:23 AM, Milos Jovanovic <
development.milos at gmail.com> wrote:

> Hello,
>
> I am trying to create PHP application that will be receiving information
> about each call from freeswitch and send commands to control freeswitch.
>
> I found an example at https://wiki.freeswitch.org/wiki/PHP_ESL#ivrd  BUT
> unfortunately they do not explain how I can retrieve information from
> freeswitch (so I can do the routing in PHP).
>
> I guess I should use PHP ESL but the documentation is pretty bad so if
> someone has some working example, I'd appreciate it.
>
> I tried to read from stdin this way:
>
>
> *#!/usr/bin/php -q
>
> <?php
>
> // set a couple of things so we dont kill the system
> ob_implicit_flush(true);
> set_time_limit(30);
>
> // Open stdin so we can read the data in
> $in = fopen("php://stdin", "r");
>
> // Connect
> echo "connect\n\n";
>
> // READ DATA
> $text = fgets($in);
> file_put_contents('/usr/local/freeswitch/scripts/socketlog.txt' ,$text,
> FILE_APPEND);
>
> // Answer
> echo "sendmsg\n";
> echo "call-command: execute\n";
> echo "execute-app-name: answer\n\n";
>
> // Play a prompt
> echo "sendmsg\n";
> echo "call-command: execute\n";
> echo "execute-app-name: playback\n";
> echo "execute-app-arg:
> /usr/local/freeswitch/sounds/en/us/callie/ivr/8000/ivr-welcome_to_freeswitch.wav\n\n";
>
> // Wait
> sleep(5);
>
> // Hangup
> echo "sendmsg\n";
> echo "call-command: hangup\n\n";
>
> fclose($in);
>
> ?>*
>
> *Unfortunately, everything I get as a result in my log file is:*
>
> *Event-Name: CHANNEL_DATA*
>
>
> _________________________________________________________________________
> Professional FreeSWITCH Consulting Services:
> consulting at freeswitch.org
> http://www.freeswitchsolutions.com
>
> 
> 
>
> Official FreeSWITCH Sites
> http://www.freeswitch.org
> http://wiki.freeswitch.org
> http://www.cluecon.com
>
> FreeSWITCH-users mailing list
> FreeSWITCH-users at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> http://www.freeswitch.org
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20130711/da6692e9/attachment.html 


Join us at ClueCon 2011 Aug 9-11, 2011
More information about the FreeSWITCH-users mailing list