[Freeswitch-users] PHP ESL Problem
Ron McLeod
ron.freeswitch at mcleodnet.com
Tue Dec 29 21:23:33 PST 2009
Would someone please take a look at this simple PHP event socket script and
tell me what I am doing wrong - or tell me that this could be a bug
elsewhere? Any help would be appreciated.
When I run the script without the call to execute(), everything seems fine.
When I include the call to execute(), the calls to getType() return CUSTOM
for a while, then later start to return the correct name.
#!/usr/bin/php
<?php
require_once 'ESL.php';
$endPoint = 'sofia/internal/695%192.168.100.132';
$eventSocket = New ESLconnection('192.168.100.132', '8021', 'ClueCon');
$event = $eventSocket->events('plain', 'ALL');
// call endpoint, get uuid
$event = $eventSocket->api('originate', $endPoint . ' &park');
$serializedEvent = explode("\n", $event->serialize());
foreach ($serializedEvent as $eventLine) {
list($dummy, $uuid) = explode('+OK ', $eventLine);
if ($uuid) { break; }
}
// play announcement to endpoint
$event = $eventSocket->execute('playback', '/opt/ann/user-busy.wav', $uuid);
// monitor events
while (TRUE) {
echo "getType: " . $event->getType() . "\n";
$serializedEvent = explode("\n", $event->serialize());
foreach ($serializedEvent as $eventLine) {
list($header, $value) = explode(': ', $eventLine);
if ($header == "Event-Name") { printf($eventLine . "\n"); }
if ($header == "Content-Type") { printf($eventLine . "\n"); }
}
printf("\n");
$event = $eventSocket->recvEvent();
}?>
Run without the call to execute():
==================================
getType: CUSTOM
Content-Type: api/response
getType: CHANNEL_CREATE
Event-Name: CHANNEL_CREATE
getType: CHANNEL_OUTGOING
Event-Name: CHANNEL_OUTGOING
getType: CHANNEL_ORIGINATE
Event-Name: CHANNEL_ORIGINATE
getType: CHANNEL_STATE
Event-Name: CHANNEL_STATE
getType: PRESENCE_IN
Event-Name: PRESENCE_IN
getType: CHANNEL_STATE
Event-Name: CHANNEL_STATE
getType: PRESENCE_IN
Event-Name: PRESENCE_IN
getType: CHANNEL_STATE
Event-Name: CHANNEL_STATE
getType: CALL_UPDATE
Event-Name: CALL_UPDATE
getType: CHANNEL_PROGRESS
Event-Name: CHANNEL_PROGRESS
getType: HEARTBEAT
Event-Name: HEARTBEAT
getType: HEARTBEAT
Event-Name: RE_SCHEDULE
getType: CALL_UPDATE
Event-Name: CALL_UPDATE
getType: CODEC
Event-Name: CODEC
getType: CODEC
Event-Name: CODEC
getType: CHANNEL_ANSWER
Event-Name: CHANNEL_ANSWER
getType: PRESENCE_IN
Event-Name: PRESENCE_IN
getType: API
Event-Name: API
getType: PRESENCE_IN
Event-Name: PRESENCE_IN
getType: CHANNEL_STATE
Event-Name: CHANNEL_STATE
getType: CHANNEL_EXECUTE
Event-Name: CHANNEL_EXECUTE
getType: CHANNEL_PARK
Event-Name: CHANNEL_PARK
getType: CHANNEL_HANGUP
Event-Name: CHANNEL_HANGUP
getType: CHANNEL_UNPARK
Event-Name: CHANNEL_UNPARK
getType: CHANNEL_EXECUTE_COMPLETE
Event-Name: CHANNEL_EXECUTE_COMPLETE
getType: PRESENCE_IN
Event-Name: PRESENCE_IN
getType: CHANNEL_STATE
Event-Name: CHANNEL_STATE
getType: PRESENCE_IN
Event-Name: PRESENCE_IN
getType: CHANNEL_HANGUP_COMPLETE
Event-Name: CHANNEL_HANGUP_COMPLETE
getType: CHANNEL_STATE
Event-Name: CHANNEL_STATE
getType: CHANNEL_DESTROY
Event-Name: CHANNEL_DESTROY
getType: CHANNEL_STATE
Event-Name: CHANNEL_STATE
Run with the call to execute():
===============================
getType: CUSTOM
Content-Type: command/reply
getType: CUSTOM
Content-Type: text/event-plain
Event-Name: CHANNEL_CREATE
getType: CUSTOM
Content-Type: text/event-plain
Event-Name: CHANNEL_OUTGOING
getType: CUSTOM
Content-Type: text/event-plain
Event-Name: CHANNEL_ORIGINATE
getType: CUSTOM
Content-Type: text/event-plain
Event-Name: CHANNEL_STATE
getType: CUSTOM
Content-Type: text/event-plain
Event-Name: PRESENCE_IN
getType: CUSTOM
Content-Type: text/event-plain
Event-Name: CHANNEL_STATE
getType: CUSTOM
Content-Type: text/event-plain
Event-Name: PRESENCE_IN
getType: CUSTOM
Content-Type: text/event-plain
Event-Name: CHANNEL_STATE
getType: CUSTOM
Content-Type: text/event-plain
Event-Name: CALL_UPDATE
getType: CUSTOM
Content-Type: text/event-plain
Event-Name: CHANNEL_PROGRESS
getType: CUSTOM
Content-Type: text/event-plain
Event-Name: CALL_UPDATE
getType: CUSTOM
Content-Type: text/event-plain
Event-Name: CODEC
getType: CUSTOM
Content-Type: text/event-plain
Event-Name: CODEC
getType: CUSTOM
Content-Type: text/event-plain
Event-Name: CHANNEL_ANSWER
getType: CUSTOM
Content-Type: text/event-plain
Event-Name: PRESENCE_IN
getType: CUSTOM
Content-Type: text/event-plain
Event-Name: API
getType: CUSTOM
Content-Type: text/event-plain
Event-Name: PRESENCE_IN
getType: CUSTOM
Content-Type: text/event-plain
Event-Name: CHANNEL_STATE
getType: CUSTOM
Content-Type: text/event-plain
Event-Name: CHANNEL_EXECUTE
getType: CUSTOM
Content-Type: text/event-plain
Event-Name: CHANNEL_PARK
getType: CHANNEL_EXECUTE
Event-Name: CHANNEL_EXECUTE
getType: CHANNEL_HANGUP
Event-Name: CHANNEL_HANGUP
getType: CHANNEL_EXECUTE_COMPLETE
Event-Name: CHANNEL_EXECUTE_COMPLETE
getType: COMMAND
Event-Name: COMMAND
getType: CHANNEL_UNPARK
Event-Name: CHANNEL_UNPARK
getType: CHANNEL_EXECUTE_COMPLETE
Event-Name: CHANNEL_EXECUTE_COMPLETE
getType: PRESENCE_IN
Event-Name: PRESENCE_IN
getType: CHANNEL_STATE
Event-Name: CHANNEL_STATE
getType: PRESENCE_IN
Event-Name: PRESENCE_IN
getType: CHANNEL_HANGUP_COMPLETE
Event-Name: CHANNEL_HANGUP_COMPLETE
getType: CHANNEL_STATE
Event-Name: CHANNEL_STATE
getType: CHANNEL_DESTROY
Event-Name: CHANNEL_DESTROY
getType: CHANNEL_STATE
Event-Name: CHANNEL_STATE
Thanks,
Ron
More information about the FreeSWITCH-users
mailing list