Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua 在星号中找到正确的挂断原因_Lua_Asterisk - Fatal编程技术网

Lua 在星号中找到正确的挂断原因

Lua 在星号中找到正确的挂断原因,lua,asterisk,Lua,Asterisk,我在extensions.lua中设置了一个挂断处理程序。在挂断时,该函数也会执行,但我的问题是我无法捕捉到确切的挂断代码。无论是我的拨号计划挂断还是最终用户挂断,我总是得到16作为挂断码。我在PRI卡上使用星号,所有通话仅通过PRI 下面是我的挂断处理程序代码- function my_custom_hangup_handler(c,e) app.NoOp('Inside Hangup Handler For:'..e) app.NoOp('Hangup Cause='..ch

我在extensions.lua中设置了一个挂断处理程序。在挂断时,该函数也会执行,但我的问题是我无法捕捉到确切的挂断代码。无论是我的拨号计划挂断还是最终用户挂断,我总是得到16作为挂断码。我在PRI卡上使用星号,所有通话仅通过PRI

下面是我的挂断处理程序代码-

function my_custom_hangup_handler(c,e)
    app.NoOp('Inside Hangup Handler For:'..e)
    app.NoOp('Hangup Cause='..channel['HANGUPCAUSE']:get())
end
我还可以在控制台中看到响铃事件。有没有办法把这些活动列入计划

见下面的日志

-- Called DAHDI/g0/888488XXXX
-- DAHDI/i1/888488XXXX-389 is proceeding passing it to Local/888488XXXX@local-channel-start-00000017;2
-- Local/888488XXXX@local-channel-start-00000017;1 is proceeding
-- DAHDI/i1/888488XXXX-389 is ringing

您可以读取DIALSTATUS变量


如果挂断,则应为“取消”

我始终设置自己的挂断所有者变量。您可以在拨号时使用“g”选项继续执行拨号计划。基本上,如果您挂断,Asterisk将直接跳转到当前上下文的“h”扩展名,但如果您的被叫方挂断,“g”选项将告诉Asterisk在同一上下文中继续执行dialplan。这是我拨号计划的修改版本。请记住,在使用Dial()函数的任何地方都必须执行此操作:

[all-outbound]
exten = _X.,1,NoOp(Outgoing call from ${CALLERID(all)} to ${EXTEN})
exten = _X.,n,Set(HANGUP_OWNER=Caller)  ; we hung up
; dial out on the provider SIP trunk
exten = _X.,n,Dial(SIP/${EXTEN}@provider-sip,,g)
; must use dial option 'g' for hangup owner to work
exten => _X.,n,Set(HANGUP_OWNER=Callee)  ; they hung up
;....
;....
exten = h,1,NoOp(Hangup cause is ${HANGUPCAUSE})
exten = h,n,NoOp(Call Duration is ${CDR(duration)})
此外,值得指出的是,“我们/他们”与入站和出站相反,因此更新评论很有帮助。我保留了“caller/callee”的措辞以保持简单,但在评论中准确地显示谁是谁很好


星号13

它可以检测电话是否有人接听,甚至更早我就用它来检测了。但这是PRI,当用户未接听或挂断电话时,我总是收到CHANUNAVAIL,我总是希望此事件能够正确检测。如果您发布拨号计划的相关部分,我可能能够识别问题。听起来您可能在用户挂断后拨打了其他不可用的电话?我已经与硬件提供商就此进行了讨论,他们告诉PRI连接提供商在这两个事件中仅通过了挂断原因31,这就是我收到CHANUNAVAIL的原因。