Node.js用modesl调用FreeSWITCH ESL originate返回NORMAL_CLEARING原因排查
FreeSWITCH originate返回-ERR NORMAL_CLEARING错误原因
NORMAL_CLEARING本身是SIP协议标准的正常挂断码,在originate发起呼叫阶段直接返回该错误,说明呼叫尝试还没完成建立就被提前中断,常见触发原因如下:
- 分机状态异常:你呼叫的
1000@domain分机未在FreeSWITCH上注册,或者注册的IP地址不可达,FreeSWITCH发送INVITE请求超时后主动挂断返回该错误 - 权限配置问题:当前调用ESL接口使用的账号没有originate呼叫权限,或者
1000分机的呼入权限被限制,FreeSWITCH权限校验不通过直接终止呼叫 - 播放资源不存在:你指定的
&playback(message)中的音频文件message不存在,或者未放在FreeSWITCH配置的 sounds 搜索目录下,呼叫建立后无法执行播放操作直接挂断 - 域名配置不匹配:originate指令中填写的
domain和FreeSWITCH内部SIP域配置不一致,FreeSWITCH找不到对应域下的分机记录,直接终止呼叫 - 分机主动拒接:如果分机在线但处于忙线/主动拒接状态,返回486/603响应时,FreeSWITCH也会返回
NORMAL_CLEARING错误
快速排查方案
- 登录FreeSWITCH的fs_cli终端,执行
show registrations命令确认1000分机是否正常注册 - 将originate指令替换为
api originate {ignore_early_media=true}sofia/internal/1000@domain &park()测试,如果呼叫可以正常进入park状态,说明是音频文件配置问题,检查对应音频文件路径是否正确 - 开启FreeSWITCH debug日志,复现呼叫操作后查看完整呼叫流程日志,定位具体的中断节点
内容的提问来源于stack exchange,提问作者Dmitry Evgrafoov
相关产品推荐
相关产品推荐

