Matching CHANNEL_CREATE event to previous originate command
Hello everyone, I'm using mod_event_socket in inbound mode to 'remote control' a FreeSwitch instance. I'm using the raw TCP interface (not any of the available language bindings). My problem now is, if I do a command like bgapi originate sofia/gateway/mygw/0123456789 &park and try to match the channel which is created by this command to the command itself, this seems to be very difficult. I cannot do it on timing only, because many channels may be created in a very short time and the order of originate-CHANNEL_CREATE will probably not be consistent. Is there any 'best practice' how to solve this problem? One solution seems to be to set {origination_uuid=x-y-z-k} in the originate section, but this does not reliably work with failover routing (for example, if I specify two gateways and the call gets rejected on the first and then originated on the second, the origination_uuid will not be the same any more). Greetings, Roland
Actually, you need to subscribe to BACKGROUND_JOB events so that you can match up the uuid of the call leg with the Job-UUID. Here is a copy and paste from an actual session I just did, with what I typed in bold: <291>:*telnet localhost 8021* Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Content-Type: auth/request auth ClueCon Content-Type: command/reply Reply-Text: +OK accepted *event plain BACKGROUND_JOB* Content-Type: command/reply Reply-Text: +OK event listener enabled plain *bgapi originate user/1001 &park()* Content-Type: command/reply Reply-Text: +OK Job-UUID: d601515b-e986-4d56-90f4-101f1a3c279f Job-UUID: d601515b-e986-4d56-90f4-101f1a3c279f Content-Length: 581 Content-Type: text/event-plain Event-Name: BACKGROUND_JOB Core-UUID: 4a408781-c3ec-4cdd-a8e0-ad13915711ba FreeSWITCH-Hostname: freeswitch1.yt FreeSWITCH-IPv4: 10.15.0.91 FreeSWITCH-IPv6: %3A%3A1 Event-Date-Local: 2010-06-22%2010%3A51%3A50 Event-Date-GMT: Tue,%2022%20Jun%202010%2017%3A51%3A50%20GMT Event-Date-Timestamp: 1277229110556854 Event-Calling-File: mod_event_socket.c Event-Calling-Function: api_exec Event-Calling-Line-Number: 1374 Job-UUID: d601515b-e986-4d56-90f4-101f1a3c279f Job-Command: originate Job-Command-Arg: user/1001%20%26park() Content-Length: 41 +OK b5d8310a-1085-4ea5-8927-398e9eee0c39 Notice that the Job-UUID that you got in response to the bgapi command corresponds with the Job-UUID of the BACKGROUND_JOB event. The information you want, which is the result of the originate command, is found at the end of the event after "Content-Length" header. In this case the originate was successful ("+OK") and the call leg's UUID is b5d8310a... Have fun! -MC 2010/6/19 Roland Hänel <roland@haenel.me>
Hello everyone,
I'm using mod_event_socket in inbound mode to 'remote control' a FreeSwitch instance. I'm using the raw TCP interface (not any of the available language bindings). My problem now is, if I do a command like
bgapi originate sofia/gateway/mygw/0123456789 &park
and try to match the channel which is created by this command to the command itself, this seems to be very difficult. I cannot do it on timing only, because many channels may be created in a very short time and the order of originate-CHANNEL_CREATE will probably not be consistent.
Is there any 'best practice' how to solve this problem?
One solution seems to be to set {origination_uuid=x-y-z-k} in the originate section, but this does not reliably work with failover routing (for example, if I specify two gateways and the call gets rejected on the first and then originated on the second, the origination_uuid will not be the same any more).
Greetings, Roland
_______________________________________________ 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
participants (2)
-
Michael Collins
-
Roland Hänel