freeswitch lua脚本判断是否收到180
时间: 2024-06-19 17:04:15 浏览: 15
FreeSWITCH是一款开源的软交换平台,可以用于VoIP(Voice over IP)网络的搭建。Lua脚本可以被用于FreeSWITCH中,用于自定义呼叫流程、处理呼叫事件等。要判断是否收到180,可以使用以下的Lua脚本:
```
function session_hangup_hook(status)
if status == "180 Ringing" then
-- 收到180
else
-- 没有收到180
end
end
```
以上脚本会在挂机事件发生时被执行。如果挂机状态为“180 Ringing”,则说明之前已经收到了180 Ringing信令,否则说明没有收到。
相关问题
freeswitch lua脚本 判断是否振铃
FreeSWITCH 是一款开源的电话交换软件,它支持各种语音和视频通信协议,包括SIP、H.323、WebRTC等。Lua是一种轻量级的脚本语言,它可以嵌入到FreeSWITCH中,用于处理电话交换过程中的各种事件和逻辑。
在FreeSWITCH中,可以通过编写Lua脚本来实现各种自定义功能。判断是否振铃的逻辑可以通过监听 CHANNEL_PROGRESS事件来实现。当呼叫进入振铃状态时,FreeSWITCH会触发该事件,此时可以在Lua脚本中添加相应的逻辑处理。
以下是一个示例脚本,用于判断呼叫是否已经振铃:
```
-- 监听 CHANNEL_PROGRESS 事件
session:execute("set","progress_timeout=15")
session:execute("detect_speech","silence_stream://8000 1000 15000 3 3")
session:execute("detect_speech","silence_stream://-1 5000 15000 3 3")
function on_channel_progress()
local progress = session:getVariable("progress_media")
if progress == "ringing" then
-- 呼叫已经振铃
session:execute("hangup")
end
end
session:setHangupHook("on_channel_progress")
```
在该脚本中,我们通过设置progress_timeout和detect_speech指令来检测振铃状态。当呼叫进入振铃状态时,on_channel_progress函数会被调用,并执行相应的逻辑处理。
freeswitch 判断是否收到180
FreeSWITCH是一款开源的电话交换软件,它支持多种通信协议和语音编解码格式,并且可以在各种操作系统上运行。在使用FreeSWITCH过程中,可以使用SIP协议向其他SIP用户发送呼叫请求,并通过状态码来判断呼叫是否被接听或者拒绝。具体而言,当发送呼叫请求后,如果对方接听了呼叫,会返回状态码180表示正在振铃,如果对方拒绝了呼叫,会返回状态码486表示对方忙线或者状态码603表示拒绝呼叫。因此,通过判断接收到的状态码,可以判断呼叫是否被接听或者拒绝。