假设我有 Freeswitch,它配置了 SIP 网关。因此,此 Freeswitch 的本地用户可以通过
<extension name="russia">
<condition field="destination_number" expression="^(7\d{10})$">
<action application="bridge" data="sofia/gateway/sipnet.ru/$1"/>
<action application="hangup"/>
</condition>
</extension>
其中sipnet.ru
,SIP 提供商网关名称。
现在我希望外面的用户能够呼叫本地客户端。
如何实现?远程 SIP 电话用户如何向 SIP 提供商的主号码输入附加号码?如何使用 Freeswitch 提取这些附加号码?
例如,我的 SIP 呼入号码是 55512345。因此,要呼叫我,呼叫者应输入此号码。但现在我将 Freeswitch 连接到此号码,而 Freeswitch 用户的本地号码为 1000。如何呼叫他?是否可以使用 555123451000 呼叫他?
是否可以另外传递字母而不是数字?
是否可以通过座机或手机传递附加号码?
答案1
(我实际上在我的 FreeSWITCH 服务器上使用 Sipnet 和 Zadarma)
Sipnet.ru 允许您将所有来电转接到 SIP URI。它还允许创建子帐户。因此,您可以根据需要创建任意数量的子帐户,并将所有呼叫的转接到某个唯一的 URI,例如[电子邮件保护]
然后在您的 FreeSWITCH 配置中,创建一个新的公共扩展:
File: conf/dialplan/public/50_users.xml
<include>
<extension name="pub_vasya-pupkin">
<condition field="destination_number" expression="^vasya-pupkin$">
<action application="transfer" data="1007 XML default"/>
</condition>
</extension>
因此所有调用[电子邮件保护]将被转接至1007内部分机。
对于不支持转发的其他 SIP 提供商(例如 zadarma.com),您可以创建一个 SIP 配置文件并使用“扩展”参数来指定应使用公共配置文件中的哪个扩展:
File: conf/sip_profiles/external/zadarma.xml
<gateway name="zadarma_59555">
<param name="username" value="59555"/>
<param name="password" value="*******"/>
<param name="extension" value="vasya-pupkin"/>
<param name="expire-seconds" value="125"/>
<param name="register" value="true"/>
<param name="register-transport" value="udp"/>
<param name="proxy" value="sip.zadarma.com"/>
<param name="retry-seconds" value="30"/>
<param name="caller-id-in-from" value="false"/>
<param name="ping" value="27"/>
</gateway>
我的博客中有一些更实际的例子,以防万一。