Seagull模拟器:如何在Diameter请求中发送E-164编码的Originator-SCCP-Address AVP?
解决Originator-SCCP-Address AVP以E-164编码发送的问题
当前你的Seagull字典将Originator-SCCP-Address定义为OctetString类型,导致代码只能按普通字符串处理,无法生成符合E-164格式的编码地址。以下是具体修正步骤:
1. 修改Seagull字典中的AVP类型
将AVP的类型从OctetString改为Address——Diameter的Address类型原生支持编码格式标识,正好匹配E-164的封装要求。修改后的字典定义如下:
<define name="Originator-SCCP-Address" type="Address"> <setfield name="avp-code" value="2008"></setfield> <setfield name="flags" value="192"></setfield> <setfield name="Vendor-ID" value="10415"></setfield> </define>
2. 在请求脚本中指定E-164编码
构造Diameter请求时,给该AVP明确设置编码类型和地址值:
address-type设为1(对应Diameter协议中E-164的编码标识)address-value填写实际的E-164号码(无需带+,直接传入数字串即可)
示例脚本片段:
<field name="Originator-SCCP-Address"> <setfield name="address-type" value="1"></setfield> <setfield name="address-value" value="1234567890"></setfield> </field>
3. 验证报文格式
发送后抓包确认:AVP内容应包含1字节的编码类型(0x01),紧随其后的是E-164号码的ASCII字节流,这样接收端就能正确解析为E-164编码地址。
内容的提问来源于stack exchange,提问作者Sarang Kawade
相关产品推荐
相关产品推荐

