Difference between ESL execute() and executeAsync()
I don't notice any different in behavior between execute() and executeAsync(). I was expecting that executeAsync() would return right-away, and that execute() would only return after the specified application runs to completion (CHANNEL_EXECUTE_COMPLETE event). Running the sample app below, I see the "About to call execute(playback)" and "returned" displayed one right-after the other, even though the file being played takes about 4 minutes to play-out. Do I have this wrong, or is there something incorrect in my app? APP: #!/usr/bin/php <?php require_once "ESL.php"; $eventSocket = New ESLconnection('192.168.100.132', '8021', 'ClueCon'); $eventSocket->events('plain', 'CHANNEL_STATE'); $eventSocket->filter('channel-state', 'CS_ROUTING'); // Wait for new call attempts while($eventSocket->connected()){ $event = $eventSocket->recvEvent(); $serializedBody = $event->serialize(); $listOfLines = toArrayOfLines($serializedBody); $nameValuePairs = toArrayOfNameValuePairs($listOfLines); $uuid = $nameValuePairs['Caller-Unique-ID']; printf("New call from uuid: $uuid\n"); // answer the caller and play announcement $eventSocket->execute('answer', Null ,$uuid); printf("About to call execute(playback)\n"); $eventSocket->execute('playback', '/tmp/ann.wav', $uuid); printf("returned\n"); } ?> DIALPLAN: <?xml version="1.0" encoding="utf-8"?> <include> <context name="mytest"> <extension name="mytest"> <condition field="destination_number" expression="^.*$"> <action application="park"/> </condition> </extension> </context> </include>
Here's the ES network trace: Content-Length: 1502 Content-Type: text/event-plain Event-Name: CHANNEL_STATE Core-UUID: bb9ea62a-ed02-11de-91b1-8b7cb185f66f FreeSWITCH-Hostname: ron-laptop FreeSWITCH-IPv4: 192.168.100.132 FreeSWITCH-IPv6: %3A%3A1 Event-Date-Local: 2009-12-19%2019%3A12%3A09 Event-Date-GMT: Sun,%2020%20Dec%202009%2003%3A12%3A09%20GMT Event-Date-Timestamp: 1261278729767397 Event-Calling-File: switch_channel.c Event-Calling-Function: switch_channel_perform_set_running_state Event-Calling-Line-Number: 1024 Channel-State: CS_ROUTING Channel-State-Number: 2 Channel-Name: sofia/internal/699%40192.168.100.132 Unique-ID: 76021ab2-ed15-11de-91b1-8b7cb185f66f Call-Direction: inbound Presence-Call-Direction: inbound Answer-State: ringing Channel-Read-Codec-Name: PCMU Channel-Read-Codec-Rate: 8000 Channel-Write-Codec-Name: PCMU Channel-Write-Codec-Rate: 8000 Caller-Username: 699 Caller-Dialplan: XML Caller-Caller-ID-Name: Ron%20Soft%20Phone Caller-Caller-ID-Number: 699 Caller-Network-Addr: 192.168.100.3 Caller-Destination-Number: 444 Caller-Unique-ID: 76021ab2-ed15-11de-91b1-8b7cb185f66f Caller-Source: mod_sofia Caller-Context: mytest Caller-Channel-Name: sofia/internal/699%40192.168.100.132 Caller-Profile-Index: 1 Caller-Profile-Created-Time: 1261278729764077 Caller-Channel-Created-Time: 1261278729764077 Caller-Channel-Answered-Time: 0 Caller-Channel-Progress-Time: 0 Caller-Channel-Progress-Media-Time: 0 Caller-Channel-Hangup-Time: 0 Caller-Channel-Transfer-Time: 0 Caller-Screen-Bit: true Caller-Privacy-Hide-Name: false Caller-Privacy-Hide-Number: false sendmsg 76021ab2-ed15-11de-91b1-8b7cb185f66f call-command: execute execute-app-name: answer execute-app-arg: Content-Type: command/reply Reply-Text: +OK sendmsg 76021ab2-ed15-11de-91b1-8b7cb185f66f call-command: execute execute-app-name: playback execute-app-arg: /tmp/ann.wav Content-Type: command/reply Reply-Text: +OK
-----Original Message----- From: freeswitch-users-bounces@lists.freeswitch.org [mailto:freeswitch- users-bounces@lists.freeswitch.org] On Behalf Of Ron McLeod Sent: Saturday, December 19, 2009 5:30 PM To: freeswitch-users@lists.freeswitch.org Subject: [Freeswitch-users] Difference between ESL execute() andexecuteAsync()
I don't notice any different in behavior between execute() and executeAsync(). I was expecting that executeAsync() would return right-away, and that execute() would only return after the specified application runs to completion (CHANNEL_EXECUTE_COMPLETE event).
Running the sample app below, I see the "About to call execute(playback)" and "returned" displayed one right-after the other, even though the file being played takes about 4 minutes to play-out.
Do I have this wrong, or is there something incorrect in my app?
APP: #!/usr/bin/php <?php require_once "ESL.php";
$eventSocket = New ESLconnection('192.168.100.132', '8021', 'ClueCon'); $eventSocket->events('plain', 'CHANNEL_STATE'); $eventSocket->filter('channel-state', 'CS_ROUTING');
// Wait for new call attempts while($eventSocket->connected()){ $event = $eventSocket->recvEvent(); $serializedBody = $event->serialize(); $listOfLines = toArrayOfLines($serializedBody); $nameValuePairs = toArrayOfNameValuePairs($listOfLines);
$uuid = $nameValuePairs['Caller-Unique-ID']; printf("New call from uuid: $uuid\n");
// answer the caller and play announcement $eventSocket->execute('answer', Null ,$uuid);
printf("About to call execute(playback)\n"); $eventSocket->execute('playback', '/tmp/ann.wav', $uuid); printf("returned\n"); } ?>
DIALPLAN: <?xml version="1.0" encoding="utf-8"?> <include> <context name="mytest"> <extension name="mytest"> <condition field="destination_number" expression="^.*$"> <action application="park"/> </condition> </extension> </context> </include>
_______________________________________________ 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
-- This email was Anti Virus checked by Astaro Security Gateway. http://www.astaro.com
if you run the socket in async mode, every call to execute is async if you don't specify async in the socket app in FS all calls are synchronous but you can send async calls with te asyncExecute On Sat, Dec 19, 2009 at 9:16 PM, Ron McLeod <ron.freeswitch@mcleodnet.com>wrote:
Here's the ES network trace:
Content-Length: 1502 Content-Type: text/event-plain Event-Name: CHANNEL_STATE Core-UUID: bb9ea62a-ed02-11de-91b1-8b7cb185f66f FreeSWITCH-Hostname: ron-laptop FreeSWITCH-IPv4: 192.168.100.132 FreeSWITCH-IPv6: %3A%3A1 Event-Date-Local: 2009-12-19%2019%3A12%3A09 Event-Date-GMT: Sun,%2020%20Dec%202009%2003%3A12%3A09%20GMT Event-Date-Timestamp: 1261278729767397 Event-Calling-File: switch_channel.c Event-Calling-Function: switch_channel_perform_set_running_state Event-Calling-Line-Number: 1024 Channel-State: CS_ROUTING Channel-State-Number: 2 Channel-Name: sofia/internal/699%40192.168.100.132 Unique-ID: 76021ab2-ed15-11de-91b1-8b7cb185f66f Call-Direction: inbound Presence-Call-Direction: inbound Answer-State: ringing Channel-Read-Codec-Name: PCMU Channel-Read-Codec-Rate: 8000 Channel-Write-Codec-Name: PCMU Channel-Write-Codec-Rate: 8000 Caller-Username: 699 Caller-Dialplan: XML Caller-Caller-ID-Name: Ron%20Soft%20Phone Caller-Caller-ID-Number: 699 Caller-Network-Addr: 192.168.100.3 Caller-Destination-Number: 444 Caller-Unique-ID: 76021ab2-ed15-11de-91b1-8b7cb185f66f Caller-Source: mod_sofia Caller-Context: mytest Caller-Channel-Name: sofia/internal/699%40192.168.100.132 Caller-Profile-Index: 1 Caller-Profile-Created-Time: 1261278729764077 Caller-Channel-Created-Time: 1261278729764077 Caller-Channel-Answered-Time: 0 Caller-Channel-Progress-Time: 0 Caller-Channel-Progress-Media-Time: 0 Caller-Channel-Hangup-Time: 0 Caller-Channel-Transfer-Time: 0 Caller-Screen-Bit: true Caller-Privacy-Hide-Name: false Caller-Privacy-Hide-Number: false
sendmsg 76021ab2-ed15-11de-91b1-8b7cb185f66f call-command: execute execute-app-name: answer execute-app-arg:
Content-Type: command/reply Reply-Text: +OK
sendmsg 76021ab2-ed15-11de-91b1-8b7cb185f66f call-command: execute execute-app-name: playback execute-app-arg: /tmp/ann.wav
Content-Type: command/reply Reply-Text: +OK
-----Original Message----- From: freeswitch-users-bounces@lists.freeswitch.org [mailto:freeswitch- users-bounces@lists.freeswitch.org] On Behalf Of Ron McLeod Sent: Saturday, December 19, 2009 5:30 PM To: freeswitch-users@lists.freeswitch.org Subject: [Freeswitch-users] Difference between ESL execute() andexecuteAsync()
I don't notice any different in behavior between execute() and executeAsync(). I was expecting that executeAsync() would return right-away, and that execute() would only return after the specified application runs to completion (CHANNEL_EXECUTE_COMPLETE event).
Running the sample app below, I see the "About to call execute(playback)" and "returned" displayed one right-after the other, even though the file being played takes about 4 minutes to play-out.
Do I have this wrong, or is there something incorrect in my app?
APP: #!/usr/bin/php <?php require_once "ESL.php";
$eventSocket = New ESLconnection('192.168.100.132', '8021', 'ClueCon'); $eventSocket->events('plain', 'CHANNEL_STATE'); $eventSocket->filter('channel-state', 'CS_ROUTING');
// Wait for new call attempts while($eventSocket->connected()){ $event = $eventSocket->recvEvent(); $serializedBody = $event->serialize(); $listOfLines = toArrayOfLines($serializedBody); $nameValuePairs = toArrayOfNameValuePairs($listOfLines);
$uuid = $nameValuePairs['Caller-Unique-ID']; printf("New call from uuid: $uuid\n");
// answer the caller and play announcement $eventSocket->execute('answer', Null ,$uuid);
printf("About to call execute(playback)\n"); $eventSocket->execute('playback', '/tmp/ann.wav', $uuid); printf("returned\n"); } ?>
DIALPLAN: <?xml version="1.0" encoding="utf-8"?> <include> <context name="mytest"> <extension name="mytest"> <condition field="destination_number" expression="^.*$"> <action application="park"/> </condition> </extension> </context> </include>
_______________________________________________ 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
-- This email was Anti Virus checked by Astaro Security Gateway. http://www.astaro.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
-- Anthony Minessale II FreeSWITCH http://www.freeswitch.org/ ClueCon http://www.cluecon.com/ Twitter: http://twitter.com/FreeSWITCH_wire AIM: anthm MSN:anthony_minessale@hotmail.com <MSN%3Aanthony_minessale@hotmail.com> GTALK/JABBER/PAYPAL:anthony.minessale@gmail.com<PAYPAL%3Aanthony.minessale@gmail.com> IRC: irc.freenode.net #freeswitch FreeSWITCH Developer Conference sip:888@conference.freeswitch.org <sip%3A888@conference.freeswitch.org> iax:guest@conference.freeswitch.org/888 googletalk:conf+888@conference.freeswitch.org<googletalk%3Aconf%2B888@conference.freeswitch.org> pstn:+19193869900
participants (2)
-
Anthony Minessale
-
Ron McLeod