之前做的项目中,经常会出现这种情况,就是外呼时,显示的主叫号码总是会多了一个0,比如:
主叫是88998877,那么来电显示的结果是 020088998877,这样,如果人家回呼时,如果直接回呼肯定回呼不了。
后来经过监控,分析数据得知,这是由于七号信令在发送IAM信息时,里面除了包括主叫,被叫之外,还有一个叫主叫
性质的参数,在通过七号信令外呼时,电信的程控机会判断这个主叫性质参数。
先来说一下主叫地址性质,一共有三种:用户、国内有效号码及国际号码。
在判断时:
如果是用户号码,就不做任何的修改;
如果是国内有效号码,则会先将主叫修改为加一个前置0.
国际号码没有测试,不知道会做什么操作。
所以现在为什么会出现多加一个0,就是因为发送出去的主叫地址性质为国内有效号码。
我们来看一下这三种地址性质的值是,如下:
0 0 0 0 0 0 1 用户号码
0 0 0 0 0 1 1 国内有效号码
0 0 0 0 1 0 0 国际号码
即 1 为用户号码 ; 3 为国内有效号码; 4 为国际号码
要修改这个主叫地址性质,我们找到七号信令的原码,找到 l4isup.c 这个文件,找到
param[0] = (is_odd << 7) | (is_international ? 4 : 3); //我的文件在1954行。
这里表示是否为国际号码,如果是国际号码,则主叫地址性质为 4. 即是国际号码。
否则定义为3,即是国内有效号码。
现在我们要修改一下,就是如果不是国际号码,则都定义为用户号码,即是要将3改为1,所以我们只需在这里修改为:
param[0] = (is_odd << 7) | (is_international ? 4 : 1);
即可.
修改之后,然后再重新编译,生成 chan_ss7.so ,然后重启一下asterisk的服务使其生效。
会发现,主叫号码再也不加 0.了。
分享到:
相关推荐
通讯类的标准。对要开发SS7的朋友有很大帮助的。(通讯协议)
ss52ss ss52ss ss52ss ss52ss ss52ss ss52ss ss52ss ss52ss
SS7内部培训资料-ISUP/MAP/TUP
Wireshark数据包,包含各种SS7消息
SS7 7号信令 MTP2 MTP3 SCCP MAP ISUP TUP INAP 电路域 分组域 智能网
7号信令协议栈、七号信令协议栈、ss7协议栈,可以一起进行技术交流和学习
asterisk 的7号信令处理模块,生成的SO直接就可调用
jss7, RestComm Java SS7堆栈和服务 RestComm Java SS7堆栈和服务 简介开放源码 Java SS7栈,允许Java应用与遗留SS7通信设备通信。jSS7为专用设备( 对话框) 提供了一个开源软件解决方案,实现了 M3UA 。SCCP 。TCAP
a detailed protocol description of SS7!!
7 (SS7/C7): Protocol, Architectures, and Services Lee Dryburgh Jeff Hewett Copyright © 2005 Cisco Systems, Inc. Published by: Cisco Press 800 East 96th Street Indianapolis, Indiana 46240 USA
SS7协议概述,T-REC-Q.700.pdf
讲解SS7信息原理的PPT,华为的东东,来源于网,分享于网
7号信令应用、七号信令、No.7信令系统、SS7信令网、7号信令的应用、什么是7号信令
sS7-200smart 自学成才 为您提供最完善的学习资源,包括视频教学地址
SS7信令平台配置的顺序,OCP项目过程中SS7的配置顺序
电信通讯协议7号信令-SS7 中文版 很好的解释七号信令协议的中文说明
七号信令协议栈源码、ss7协议栈源码,一起技术交流和学习
HACH SS7高量程在线浊度仪用户手册rar,HACH SS7高量程在线浊度仪用户手册
chan_ss7_china-0.9.tar.gz
介绍ss7信令的好胶片,网页版 下载后解压即可