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@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@freeswitch.org
http://www.freeswitchsolutions.com

FreeSWITCH-powered IP PBX: The CudaTel Communication Server
http://www.cudatel.com

Official FreeSWITCH Sites
http://www.freeswitch.org
http://wiki.freeswitch.org
http://www.cluecon.com

FreeSWITCH-users mailing list
FreeSWITCH-users@lists.freeswitch.org
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org