如何在Sipp场景中使用自定义生成的Call-ID发送Invite请求
SIPp外部生成Call-ID并传入场景的实现方法
问题背景
使用SIPp的基础uac.xml场景测试SIP Invite流程,需要验证100、180及200 OK响应;目标端点要求对包含Call-ID的SIP Invite消息头签名,已知ToAddress和FromAddress,需从SIPp外部生成Call-ID并传入场景。SIPp官方文档提及无法自定义生成Call-ID,但该需求为测试必需。
官方文档关于Call-ID的说明(翻译)
Call-ID
Call-ID头字段由SIPp自动生成,格式为
sipp-[呼叫编号]@[本地IP]。该字段无法通过场景关键字自定义生成,因为SIPp依赖它来关联呼叫的消息流。
可行解决方案
虽然官方文档说明无法通过关键字自定义,但可以通过命令行参数+场景变量替换的方式实现外部传入Call-ID,步骤如下:
修改uac.xml场景文件
找到Invite消息中的Call-ID头行,将默认的[call_id]替换为自定义变量(比如${MY_CALL_ID}):<![CDATA[ INVITE sip:[service]@[remote_ip]:[remote_port] SIP/2.0 Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch] From: <sip:[field0]@[local_ip]>;tag=[call_number] To: <sip:[service]@[remote_ip]> Call-ID: ${MY_CALL_ID} ... ]]>通过命令行传入自定义Call-ID
使用SIPp的-key参数将外部生成的Call-ID传入场景,命令示例:sipp -sn uac -key MY_CALL_ID "my-unique-call-id-$(uuidgen)" <远端服务器IP>注:
uuidgen是生成符合SIP规范的唯一Call-ID的工具,也可以用自定义脚本生成格式合规的字符串。验证效果
启动测试后,SIPp会将${MY_CALL_ID}替换为命令行传入的值,生成包含自定义Call-ID的Invite消息,满足目标端点的签名需求。
内容的提问来源于stack exchange,提问作者saiteja
相关产品推荐
相关产品推荐

