Freeswitch ESL事件过滤

时间:2016-07-19 08:59:54

标签: python sockets freeswitch

FreeSWITCH(版本1.7.0 -907-0b3f776 64位)

我一直在使用Freeswitch Python ESL,但我注意到以下内容: 我使用originate命令创建了2个调用:

originate {ignore_early_media=true,bridge_early_media=false,originate_timeout=24,call_timeout=24,execute_on_answer='sched_hangup 18',origination_uuid=5d56e91e-dfb7-4269-92cd-2967fa2d1d81,origination_caller_id_number=+18623079305}sofia/gateway/asterisk/+14084070000 handle_calls

使用新的ESL实例创建每个调用。

流量:

API请求 - > HTTP - >芹菜任务 - >新的ESL实例 - >发送始发请求。

enter image description here

我收集了数据包捕获和ESL日志,并在接听电话时: 我开始在同一个TCP套接字上看到CHANNEL_ANSWER的重复事件。我使用SRC端口而不是Freeswitch DST端口进行过滤。进一步的调试表明,我正在接收所有活动呼叫的所有事件(我订阅的事件)。

当我订阅事件时,我是否应该通过同一套接字接收所有呼叫的所有事件?这是预期的行为吗? 或者我应该只接收originate命令使用的调用实例的事件?

events = "BACKGROUND_JOB " \
                     "CHANNEL_OUTGOING " \
                     "CHANNEL_CREATE " \
                     "CHANNEL_ANSWER " \
                     "RECORD_START " \
                     "CHANNEL_HANGUP " \
                     "CHAN_NOT_IMPLEMENTED "


self.connection.events("plain", events)

现在我在收到事件后使用:Channel-Call-UUID进行过滤。这是最好的方法吗?

http://pastebin.com/8jwprN7M

0 个答案:

没有答案