Browsed by
分类:How-to

一些简单的技术技巧,有助于您更有效地配置或者使用SIP服务器

外线配置

外线配置

部署VoIP网络时,我们常常会在miniSIPServer中配置外线连接VoIP运营商的服务器。考虑到市场中有大量的VoIP运营服务商,因此经常有客户咨询我们如果配置miniSIPServer来连接这些运营商的网络。

实际上在“小型企业建立IP-PBX系统指南”这篇指导文档中,我们已经提供了一个简单的外线配置,连接VoIP运营商“call centric”。您可以参考这篇文章了解VoIP网络和外线的相关细节。另一方面,我们在“常见问题”文档的“外线”章节,也给出了一些其他运营商的配置参考。如果您有兴趣或者需求的话,也可以参考这些文档,希望这些文档帮助您部署VoIP网络。

https://www.myvoipapp.com/cn/docs/faq/index.html

SIP中继转发媒体流

SIP中继转发媒体流

在某些VoIP网络部署中,我们需要采用“SIP中继”与其他VoIP服务器或者网关进行互联。在媒体处理方面,我们希望(1)本地分机之间的媒体流不经过MSS服务器,而(2)与其他VoIP服务器对接的呼叫中希望能通过MSS转发媒体流。

为解决这个需求,我们更新了V32版本,在“SIP中继”的“出呼叫”配置中,可以单独设置是否需要MSS来转发媒体。请参考下图:

SIP 中继转发媒体流配置
SIP 中继转发媒体流配置

请注意,目前仅支持转发语音流,不会转发视频流。

保存录制的语音

保存录制的语音

miniSIPServer 支持客户录制根据需要录制自己的语音,并替换系统默认的语音文件。以前的版本中,如果客户需要升级 MSS 的话,每次都需要备份好自己的语音,并重新替换系统默认的语音。

这当然是个小小的麻烦。现在,最新的V32可以解决这个麻烦了。

MSS 启动时,将在“mss_ann”目录下自动创建子目录“cust_ann”,现在您所有的自定义语音文件都可以放在这个子目录下。当 MSS 卸载或者升级时,这个子目录和内部的所有语音文件都不会删除或者被替换。MSS 启动后,会自动读取并加载“cust_ann”子目录下的语音文件。

在 windows 系统,这个子目录默认应该是“d:/myvoipapp/minisipserver/mss_ann/cust_ann”。在Linux系统中,这个子目录默认是“/opt/sipserver/mss_ann/cust_ann/”。

请参考在线文档了解录制自定义语音的更多细节。

https://www.myvoipapp.com/cn/docs/others/how_to_record_your_own_audio/index.html

连接Sonetel

连接Sonetel

“Sonetel.com”是一家VoIP运营商,提供各国本地电话号码服务。我们可以在MSS中添加外线,连接Sonetel的服务器。根据Sonetel给出的配置参考,有以下几方面的内容需要注意:

  • Sonetel采用用户的email地址作为SIP帐号,并且
  • 部署了Proxy(SBC)服务器统一处理外部SIP消息。

本文给出一个简单的示例,指导如何配置MSS与Sonetel互联。我们假设用户的SIP帐号是“abc@gmail.com”。

在MSS中,请点击菜单“数据 – 外线”,增加一条新记录。

配置Sonetel外线
配置Sonetel外线

在“基本配置”页中,外线类型是“连接到对端VoIP服务器”,用户名是“abc”,而“服务器地址/域”必须是“gmail.com”。

另外请注意,密码項应该是在注册sonetel帐号时的密码,而不是email帐号自身的密码。

由于sonetel前置了Proxy(SBC)来处理SIP消息,因此我们在外线中还需要指定这个Proxy地址。在“出呼叫”页面中,指定对应的服务器地址,如下图所示。

Sonetel代理服务器地址
Sonetel代理服务器地址

Sonetel代理服务器地址为“sip.sonetel.com”,在注册时sonetel发送的email邮件有相应的说明。如果未来有变动,参考sonetel邮件说明即可。

对接中国电信IMS网络

对接中国电信IMS网络

最近帮助一位客户部署MSS服务器,对接中国电信IMS网络。在本次对接中,中国电信的软交换是ZTE的设备(至少SIP消息中的User-Agent是这么描述的),存在一些问题,需要特别注意配置方法才能完成对接。

由于中国电信是提供账号、密码信息进行对接,因此在MSS中应配置“外线”,其中需要注意的是以下几个关键点:

鉴权用户

通常外线配置中,默认采用“外线/账户”做鉴权用户(或者配置单独的鉴权ID)。而ZTE设备要求采用完整的URI作为鉴权用户名,因此在MSS的外线配置中,必须配置“鉴权用户名应包含地址信息”项,请参考下图。

外线鉴权用户配置
外线鉴权用户配置

设置该项后,例如上图的信息,MSS将采用“+8612345678@gd.ctcims.cn”作为鉴权用户名进行鉴权操作。

如果不采用完整格式的鉴权用户名,IMS网络会返回“403 Forbidden”拒绝注册和呼叫。我们认为这实际是ZTE软交换的缺陷,因为鉴权信息中本来就携带了域信息,无论鉴权用户名是否携带域信息,应该都不影响鉴权。如果您在与其他IMS设备对接时,也遇到了类似的问题,建议试试上述配置項。

Proxy设置

在中国电信的IMS网络中,对外的服务器地址作为逻辑域存在,实际上并不可访问。例如,上述例子中的“gd.ctcims.cn”就是域,而不是实际的SIP服务器。SIP消息实际应路由到指定的物理实体(在此我们理解为IMS网络前置的一个SBC或者Proxy),因此在MSS外线配置中,必须指明实际SIP消息需要路由的地址,请参考下图:

IMS网关的物理地址
IMS网关的物理地址
阻止匿名呼叫

阻止匿名呼叫

我们可以使用“系统黑白名单”来过滤、阻止匿名呼叫。请点击菜单“业务 – 系统黑名单”,添加以下记录:

caller number prefix = anonymous
called number prefix = *
rate = 100

该记录的作用就是:100%阻断来自“anonymous”的呼叫。

有些匿名呼叫的主叫号码可能会有差别,不过仍然可以在“系统黑名单”配置类似的记录进行过滤。

Invalid CSeq number

Invalid CSeq number

最近一位客户报告了一个问题:他的外线始终无法注册到VoIP运营商的网络。这让人倍感奇怪,毕竟“外线”是MSS非常基础的功能,已经和众多VoIP运营商对接过,我们从没想到过“外线注册”居然会有问题。

抓取了相应的log,发现该运营商返回了“400 Bad Request”消息,其中携带了以下原因信息:

P-Registrar-Error: Invalid CSeq number

我们检查了REGISTER消息,MSS在处理CSeq时并没有任何问题。以下是MSS消息的摘要:

==>
REGISTER sip:sip.xxx.com SIP/2.0
...
Call-ID: 18BF67854AE23D6D2CD772AFMSS002A0001.
CSeq: 13 REGISTER
...

<==
SIP/2.0 401 Unauthorized
...
Call-ID: 18BF67854AE23D6D2CD772AFMSS002A0001.
CSeq: 13 REGISTER
...

==>
REGISTER sip:sip.xxx.com SIP/2.0
...
Call-ID: 18BF67854AE23D6D2CD772AFMSS002A0001.
CSeq: 14 REGISTER
...

<==
SIP/2.0 400 Bad Request
...
Call-ID: 18BF67854AE23D6D2CD772AFMSS002A0001.
CSeq: 14 REGISTER
P-Registrar-Error: Invalid CSeq number
...

我们再次检查了RFC3261规范中的定义:

A UA MUST increment the CSeq value by one for each REGISTER request with the same Call-ID.

显然我们是完全正确的,但是为什么对端会拒绝了注册呢?

最终我们尝试修改了Call-ID参数后注册成功。这让我们更感困惑!RFC3261规范很清楚地说明了注册流程中Call-ID参数的注意事项:

All registrations from a UAC SHOULD use the same Call-ID header field value for registrations sent to a particular registrar.

我们认为这个VoIP运营商的系统是不专业的。不幸的是,该运营商很难去升级他们的系统,因此我们在MSS中增加了一个开关变量来控制这种情况:

[sip]
gVarSipRegSameDialog=0

如果您在与某些VoIP运营商系统对接时遇到类似的问题,请在“mss_var_param.ini” 文件中增加上述参数并重启MSS。

外线无应答时长

外线无应答时长

在外线的“出呼叫”配置中,我们增加了一个配置项“无应答时长”。该参数用于限制外线外呼时的无应答时间。请参考下图:

外线无应答配置
在外线中配置无应答定时器时长

该参数默认值为0,也就是缺省采用系统定义的无应答定时器时长。如果设置了其他值,则优先采用该值。

例如,设置为15,则该外线的外呼呼叫如果在15秒内没有应答,外线将强制释放呼叫。

IP地址鉴权

IP地址鉴权

本特性已经合入最新的V25版本(build 20160126)。

某些特殊的SIP设备,例如自动控制系统中的嵌入式SIP设备,往往不具备全SIP能力集,只能发起或者接受简单的SIP呼叫,不能进行账号和密码鉴权。部分设备甚至不支持发送“注册”消息到MSS更新自己的状态。

嗯,我们在MSS中可以将这些设备配置为“SIP中继”,但是这样也会丢掉一些关键特性,例如“振铃组”。在某些场景中,客户们希望能让所有设备同时振铃,这样我们就只能将设备配置为“分机”用户。

为满足这些需求,我们在“分机”中增加了“IP地址鉴权”的特性。也就是说,MSS可以不要求SIP终端首先进行注册,呼叫过程中也可以不再对账号和密码进行鉴权,只要SIP消息来自特定的或者预先配置的IP地址即可。请参考下图了解更多的细节:

IP地址鉴权
IP地址鉴权

另外,在新版本中我们同样也更新了openAPI文档,如果您有兴趣的话,可以参考最新的文档。

MSS之间采用SIP中继通信

MSS之间采用SIP中继通信

1. 描述

部分客户在多地都有分支机构或者分公司,因此希望在这些分公司之间建立VOIP连接。有很多种方法可以实现这个需求,本文给出一个具体的实例描述两个MSS之间采用SIP中继建立这种连接。

2. 网络拓扑

整个网络拓扑结构是比较简单的,总共只有两个分支办公室,各部署一套MSS。如下图所示:

网络拓扑
网络拓扑

在部署VoIP网络之前,我们应先做好号码规划。不同的号码格式或者规划直接影响到后期的呼叫路由配置。在上图中可以看到:我们给分支1规划的号码是1xx格式,例如100、101等,而给分支2规划的号码是2xx格式,例如200、201等。

两地的MSS都配置了公共IP地址,能直接连接公网。如果您的MSS是部署在私网或者路由器后面,并且您希望也能向外部用户提供服务,请先点击文档了解细节。

现在我们开始本场景的具体配置细节。

3. 配置

在下面各项配置中,如果没有特别申明,部分参数总是采用默认值即可。

3.1 MSS1

请点击菜单“数据 – SIP中继”,添加以下记录:

SIP中继编号 = 1
描述 = to MSS2
服务器地址 = 10.23.x.x

请点击菜单“拨号规则 – 分析被叫号码”,增加以下记录用于MSS将呼叫路由给MSS2:

被叫号码前缀 = 2
路由类型 = SIP中继
SIP中继编号 = 1

3.2 MSS2

基本配置与MSS1几乎相同。

请点击菜单“数据 – SIP中继”,添加以下记录:

SIP中继编号 = 1
描述 = to MSS1
服务器地址 = 41.32.x.x

请点击菜单“拨号规则 – 分析被叫号码”,增加以下记录用于MSS将呼叫路由给MSS1:

被叫号码前缀 = 1
路由类型 = SIP中继
SIP中继编号 = 1