尝试索引全局变量'e_con'(一个数字值)

lua: els_bgapi.lua:20: 尝试索引全局变量'e_con'(一个数字值)
stack traceback:
        els_bgapi.lua:20: in main chunk
        [C]: in ?

请帮我,我是 Lua 和 FreeSWITCH 的新手。运行下面的代码时出现了上面的错误

sock:bgapi("originate","{sip_cid_type=pid,origination_uuid=uuid,origination_caller_id_number=65181,originate_timeout=10}sofia/external/sip:81245@10.20.16.135 5000")

e_con= sock:events("plain","all");
if (e_con) then
  print(e_con:getHeader());
else
  print("not e_con")
end
点赞
用户2328287
用户2328287

events 命令只是订阅事件,而不会从连接中读取任何事件。

bgapi 的工作方式就像您向 FS 发送命令一样。FS 会返回一个带有作业 ID 的回复。但在这个时间内,FS 可能尚未开始执行命令。您必须等待具有正确作业 ID 的 BACKGROUND_JOB 事件。

因此,您需要订阅 BACKGROUND_JOB(或像您一样订阅所有事件,但准备处理许多其他事件)。

然后发送 bgapi 并从响应中读取作业 UUID,或者传递您自己的作业 UUID,这样您就可以在从 FS 获取响应之前过滤事件。然后执行 recvEvent 循环。

我没有使用原始的 ESL 库,但是FS的书中提供了示例。同时,我基于 LibUV 库开发了自己的 ESL Lua 实现

2017-03-12 11:36:12