Browsed by
分类:文档和常见问题

技术文档以及常见问题解答

保存录制的语音

保存录制的语音

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网关的物理地址
SIP中继的并发呼叫数

SIP中继的并发呼叫数

通常我们不限制SIP中继的并发呼叫数,也就是说,默认情况下能呼叫多少就呼叫多少。如果对方资源有限,自然会拒绝多余的呼叫。然而在一些应用场景中,客户们希望MSS能主动对呼叫进行限制。

为此我们拓展了SIP中继中的配置,分别对“呼入呼叫”和“呼出呼叫”的最大并发呼叫数进行限制,超出最大呼叫数的呼叫将被禁止或者抛弃。请参考下图:

SIP中继并发数配置
SIP中继并发数配置

需要注意的是:

(1)这两项配置是独立的,因此可以对呼入和呼出做出不同的限制决定。

(2)如果将其中一项或者两项配置为0,则可以限制为只允许呼入,或者只允许呼出。

一号多机业务的一点修改

一号多机业务的一点修改

在最新发布的V30版本中,对“一号多机”业务做了点改动。原有版本中默认所有分机都具有该业务能力,也就是说,任何一个分机账号都允许多部设备或者话机同时注册和使用。在实际应用过程中,客户们反馈这样做虽然简化了配置,但是其实带来了管理问题,并不想所有分机都允许多机注册,只有部分或者特定的分机才可以这样做。

考虑到这种情况,我们在分机配置中增加了“一号多机”业务权限配置。只有明确配置了该权限位的分机,才允许多机注册和使用。请参考下面的图例。

一号多机权限配置
一号多机权限配置

本次修改同时适用于本地MSS版本以及云MSS版本。

阻止匿名呼叫

阻止匿名呼叫

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

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秒内没有应答,外线将强制释放呼叫。

对抗SIP扫描

对抗SIP扫描

一位客户向我们报告:他的MSS服务器可能被黑客攻击。我们一起检查了MSS产生的呼叫详细话单,数据显示某人用另外一部SIP电话注册了同样一个分机号,并产生了大量的呼叫。

很显然,这是个非常严重的问题。我们推测这位“黑客”可能采用了发送大量SIP消息的方式来尝试上述分机的密码,并最终破解了密码。MSS以前的版本没有考虑这种异常情况,总是会允许SIP话机不停使用密码进行鉴权,直到最终通过鉴权为止,这就导致某些人刻意不停地扫描和尝试分机和密码。

为阻止这种情况,我们升级了MSS的版本,提供“失败则阻止(fail to ban, F2B)”特性。一旦SIP话机在一分钟内鉴权失败了若干次,则MSS会视之为“恶意扫描”并屏蔽其IP地址若干小时,期间MSS将拒绝所有来自该IP地址的SIP消息。这样迫使某些人几乎不可能破解SIP分机的密码。

F2B特性默认就开启,并且用户无需做任何配置。

部分虚拟虚拟服务器变更

部分虚拟虚拟服务器变更

最近我们对某些虚拟服务器进行了变更,请注意以下几点:

STUN服务器

每个虚拟SIP服务器都同时启动了STUN服务,例如,如果您的虚拟服务器地址是“1234.s1.minisipserver.com”,那么STUN服务器地址也同样可以是“1234.s1.minisipserver.com”。

而现在我们单独部署了独立的简单STUN服务器“stun.minisipserver.com”。默认情况下,我们推荐用户采用这个STUN服务器,所有虚拟SIP服务器节点都可以采用这个新的STUN节点。当然,您仍然可以采用虚拟服务器地址做自己的STUN服务器地址。

SMTP服务器

在语音邮箱业务中,我们需要SMTP服务器发送带语音文件的电子邮件。以前每个虚拟SIP服务器都可以配置客户自己的SMTP信息。但是实际部署过程中我们发现一些问题,例如大部分用户都会采用gmail的SMTP服务。而Gmail默认是没有打开POP/SMTP服务的,客户需要在gmail配置中单独打开这些配置项。另外,gmail要求明确授权其他接入者使用用户的SMTP服务,大部分客户实际上并不清楚这些细节,因此大量的语音邮箱业务都以失败告终。

考虑各种状况,我们决定去掉SMTP的各项配置,即用户不再需要配置自己的SMTP信息,系统会采用我们自己的SMTP服务器发送语音邮件。当然这样也有一点不足之处:您可能需要检查“垃圾”邮箱文件夹,您的邮件系统有可能会将我们的邮件作垃圾邮件处理。