移除SIP INVITE请求From头中的"Anonymous"文本(配置无效求助)
移除INVITE请求From头中"Anonymous"文本失败的解决办法
问题背景
需要移除Asterisk发出的INVITE请求From头内的"Anonymous"文本,现有配置未生效。环境信息:
- Asterisk版本:18.23.1
- 构建信息:
built by root @ pilrh-noc-dynamicconivr-app01 on a x86_64 running Linux on 2024-06-04 09:47:24 UTC
相关SIP消息示例
SIP/2.0 100 Trying Via: SIP/2.0/UDP localip:5060;received=localip;branch=z9hG4bK30fa5b7b;rport=5060 From: "Anonymous" <sip:0117411111@sipserverip>;tag=as032a1a5d To: <sip:07611111111@sipserverip> Call-ID: 3e6730894cf25b8a05ce3e40289d05bd@localip:5060 CSeq: 102 INVITE Content-Length: 0
当前配置文件
sip.conf
[mytrunk] type=peer host=myhostip port=5060 context=mycontext disallow=all allow=ulaw,alaw fromuser=0117411111 fromdomain=localip defaultuser=0117411111 ; 确保用户信息正确发送 callerid="<0117411111" ; 注意:此处引号未闭合,属于语法错误 qualify=yes
extensions.conf
[from-dialog] exten => _X.,1,Set(CALLERID(name)=) ; 清除呼叫者ID的名称部分 exten => _X.,n,Set(CALLERID(num)=0117411111) ; 设置呼叫者ID号码 exten => _X.,n,Dial(SIP/dialog_axa/${EXTEN}) exten => _X.,n,Hangup()
问题分析
- 语法错误:sip.conf中
callerid配置的引号未闭合,导致Asterisk无法正确解析该配置项。 - 上下文不匹配:extensions.conf的
[from-dialog]是处理入站呼叫的逻辑,但问题中的INVITE是出站呼叫(从Asterisk发往mytrunk),所以当前的CallerID设置不会作用于出站请求。
解决步骤
1. 修正sip.conf的语法错误
先补全callerid的闭合引号,同时明确设置名称为空,只保留号码:
callerid="<0117411111>" # 或者更精准地设置名称为空字符串: callerid=" <0117411111>"
2. 针对出站呼叫配置CallerID
方案一:直接在trunk配置中指定
在sip.conf的[mytrunk]段添加或修改以下配置,强制出站呼叫的From头使用指定的CallerID:
callerid=" <0117411111>" sendrpid=yes ; 可选:确保远程方能正确识别CallerID信息
方案二:在拨号计划中处理出站呼叫
如果呼叫是从mycontext上下文发起的,修改extensions.conf的[mycontext]段,在呼出到mytrunk前设置CallerID:
[mycontext] exten => _X.,1,Set(CALLERID(name)=) exten => _X.,n,Set(CALLERID(num)=0117411111) exten => _X.,n,Dial(SIP/mytrunk/${EXTEN}) exten => _X.,n,Hangup()
3. 重新加载配置并验证
执行以下命令让配置生效:
asterisk -rx "sip reload" asterisk -rx "dialplan reload"
发起测试呼叫,通过抓包或Asterisk日志检查INVITE的From头,确认"Anonymous"已被移除。
内容的提问来源于stack exchange,提问作者someone
相关产品推荐
相关产品推荐

