如何停止为漫游付费,或者在全球范围内使用一个号码

去年我想到了这种材料的想法,当时,在我们的工作上取得了很大的进步之后,月底我收到了漫游账单。 尽管移动公司保证可以在国内免费漫游,但仍可以单独收取SMS或Internet流量的费用。 资费中包含的分钟数仅在“本国”有效。 好吧,由于今年的计划不仅包括在我的祖国旅行,我也开始意识到我的想法-我自己在家里的固定电话交换机,可以在世界任何地方与我联系。
一路走来,我解决了亲戚公寓之间的电话通讯问题,因为内部谈判的时间不仅是按小时计算的,而是按数十小时计算的。
小破坏者:结果,我设法在NAS和路由器上安装了Asterisk



因此,我得出的结论是我需要自己的电话。 人们可以选择市场上大量存在的任何SIP电话服务。 但是我列出了所有操作员都没有满足的要求:

  • 内部号码的独立选择
  • 可以拨打外部电话线并拨打固定电话和手机号码
  • 选择提供IP电话的运营商的可能性
  • 能够以通常的“电话”资费使用所选运营商的SIM卡
  • 语音菜单的存在,可将呼叫转移到必要的用户
  • 最低的维修成本或零成本\维持内部沟通

许多运营商提供虚拟电话交换机甚至语音菜单。 但是这项服务已经付款。 一些运营商允许免费在其网络内拨打电话,但是拨打长号码存在问题。 当然,没有人可以让您以最低的通话费用或预付费分钟使用所选运营商的SIM卡。 因此,我决定自己成为自己的电信运营商。

第一步。 平台选择:虚拟化

由于我已经在处理IP电话,因此决定提高我基于Asterisk的PBX-它是免费的,有很多论坛,手册和...为什么不呢? 我得到了一些支持SIP的手机,并开始考虑可用于Asterisk的平台。 要将其放在云端或虚拟服务器上,这意味着您迟早必须付费,但是随后免费拨打电话的想法便崩溃了。 因此,我决定在QNAP TS-451 NAS上使用虚拟化功能。 我已经写过有关该网络驱动器芯片的文章,因此您可以阅读更多内容 。 系统性能不仅足以满足Asterisk本身的工作,而且足以满足Web界面的需要,所以我决定使用Elastix发行版。 我必须说,官方Elastix.org网站上第5号发行版已经是共享软件,因此我建议在torrent上搜索torrent版本4-它是免费的并且免费发行,但是现在该网站上不可用。

在Elastix中创建用户的过程已被多次描述,但其余部分未在网络上详细介绍。 因此,我将描述Megafon的Multifon SIP提供程序的连接以及带有呼叫转移的语音菜单的创建。

使用您在Multifon中的帐户参数创建中继。 您可以将此选项连接到任何Megafon操作员号码。 扣款不取决于所选的资费计划,而是在拨出电话的每一分钟进行。 收件箱是免费的。 一次支持两行对话。 另外,您可以配置来电仅打到电话,电话+多电话,只打到多电话。


想要为自己添加Multifon中继的用户的文本设置:

行李箱
对等详细信息:

用户名= phone_number
类型=对等
机密=密码
端口= 5060
nat =是
不安全=端口,邀请
主机= sbc.megafon.ru
发件人=电话号码
fromdomain = multifon.ru
dtmfmode =带内
上下文=来自主干

注册字符串:
phone_number:password@multifon.ru/ phone_number

因此,我们已连接到SIP提供商,现在我们可以将来电转接到任何分机号。 但是,如果您希望呼叫者选择要拨打的分机号码,该怎么办? 您可以选择接收者来创建语音菜单。 我将进行逐步说明。

在Elastix中创建语音菜单

转到系统记录。 此处已经完成了需要录音的参数:PCM,16位,8000 Hz。 既可以在标准录音实用程序中,也可以在第三方程序(如SoundForge)中完成此操作。



创建语音问候并将其上传到服务器后,请转到IVR菜单项。 我们创建一个新的语音菜单并选择欢迎文件,以及对按下按钮的反应。 就我而言,我选择按数字“ 3”将调出数字“ 101”,依此类推。 如果选择了错误的按钮,或者呼叫者未按单个按钮,则将呼叫转接到分机304。



现在我们需要使来电进入语音菜单。 我们转到“入站路由”项并创建一个新规则。 在“设置目标”的最后一段中,选择IVR和先前创建的队列,我称为“ dozvon”。


我们保存并使用。 所有这些工作了大约一个月没有失败,但是在我看来这还不够。 毕竟,并非每个房屋都有一个带有虚拟机或服务器的NAS,您可以在其上举起星号,但是几乎每个房屋都有一个路由器!

虚拟服务器可能出现的问题及其解决方案

在创建服务器和端口转发的过程中,事实证明,在同一网络端口上运行两个虚拟机和一个物理服务器不是很有效。 最简单的解决方案是利用虚拟化系统并为虚拟机选择单独的网络接口。 事实证明,使用内置QNAP工具进行此操作非常简单。 之后,NAS + 1虚拟机本身保留在第一个网络接口上,第二个虚拟机保留在第二个网络接口上。



第二步:在路由器上加星号

碰巧我使用了Yota提供程序,但是我没有使用它们的原始路由器。 很长一段时间以来,我都选择了Zyxel-Keenetic LTE的出色路由器。 几年前,我已经在内陆最严酷的条件下对其进行了测试,并且完全满意-哈布雷(Habré)对此有另一种材料

在最新的NDMS固件中,或更确切地说,从固件2.08.B开始,Zyxel Keenetic系列路由器包括对OPKG软件包的支持。 这意味着您可以放置​​最多样化的软件。 (有很多适合Zyxel路由器的软件 )那么为什么不把Asterisk放在那呢? 路由器至少要有128 MB的RAM,这一点很重要。 快说不做!
更令人高兴的是,合勤科技的专家甚至为路由器配置了Asterisk的使用手册 。 原则上,要在路由器上部署电话,只需遵循分步说明即可。 我将告诉您如何改进该系统的功能,并将其功能带到在单独的虚拟服务器上旋转的系统。

我遇到的第一件事是在软件重启后启动路由器尚不清楚的问题。 事实证明,连接到路由器USB端口的闪存驱动器消耗的电流高达0.16A。 事实证明,这足以使Zyxel Keenetic LTE路由器中的LTE调制解调器无法定期启动。 通过具有附加电源的外部USB集线器连接闪存驱动器,一切都得到了解决。 经过了许多人的时间测试D-Link DUB-H7 。 这样就解决了问题。 我相信带有一对USB端口的路由器可以正常工作。

现在让我们进入星号设置。 在这里,您已经需要编辑所有笔。 有两种方法:通过SSH并在那里进行编辑(存在MC)或绕过路由器的IP地址并使用记事本++编辑文件。 两种选择都适合我,我开始做生意。 添加了我的用户,在sip.conf文件中注册了多中继。 仅保留语音队列。 我将语音问候文件放在\\ 192.168.1.1 \ Asterisk-blue \ var \ lib \星号\ sounds \ ru中 ,并对extensions.conf文件进行了以下更改。

在星号中制作语音菜单
[外向]
; ------------------ Multifon-exten => _8 ..........,1,NoOp()
exten => _8 ..........,n,Set(__ SIP_CODEC_OUTBOUND = ulaw)
exten => _8 ..........,n,Set(__ SIP_CODEC_INBOUND = ulaw)
exten => _8 ..........,n,答案()
exten => _8 ..........,n,等待(2)
exten => _8 ..........,n,播放(/ opt / var / lib /星号/声音/ itsp_names / multifon)
exten => _8 ..........,n,拨(SIP / Multifon / 7 $ {EXTEN:1} ,, T)
exten => _8 ..........,n,挂断()

[multifon-incoming]; =====来自Multifon的来电=====
exten => _........,1,NoOp()
exten => _........ ,, n,等待(4)
exten => _........ ,, n,答案()
exten => _........,n(播放),NoOp()
exten => _........ ,, n,等待(1)
exten => _........ ,, n,播放(你好)
exten => _........ ,, n,等待(0,5)
exten => _........ ,, n,播放(私人)
exten => _........ ,, n,设置(超时(数字)= 1)
exten => _........,n,NoOp()
exten => _........,n,WaitExten(7)

exten => _1,1,NoOp()
exten => _1,n,设置(__ SIP_CODEC_OUTBOUND = ulaw)
exten => _1,n,Set(__ SIP_CODEC_INBOUND = ulaw)
exten => _1,n,集合(CALLERID(num)= 8 $ {CALLERID(num):1})
exten => _1,n(dial_ext),拨号(SIP / 101.60,mt)

exten => _2,1,NoOp()
exten => _2,n,Set(__ SIP_CODEC_OUTBOUND = ulaw)
exten => _2,n,Set(__ SIP_CODEC_INBOUND = ulaw)
exten => _2,n,集合(CALLERID(num)= 8 $ {CALLERID(num):1})
exten => _2,n(dial_ext),拨号(SIP / 302.60,mt)

exten => _3,1,NoOp()
exten => _3,n,Set(__ SIP_CODEC_OUTBOUND = ulaw)
exten => _3,n,Set(__ SIP_CODEC_INBOUND = ulaw)
exten => _3,n,集合(CALLERID(num)= 8 $ {CALLERID(num):1})
exten => _3,n(dial_ext),拨号(SIP / 304.60,mt)

这样就行了。 通过Multifon进行拨出呼叫,用户之间的内部呼叫是免费的,通过Multifon进行的拨入呼叫可以寻址到这三个用户中的任何一个。 但是在我看来这还不够。 遗憾的是,只有扩音器才能将替代SIP连接提供给蜂窝线路。 如果您想使用其他移动运营商怎么办? 有解决问题的方法!

第三步:将任何移动运营商附加到我们的星号

最后一步是将任何移动运营商连接到我们的电话服务器。 最合乎逻辑的解决方案是连接GSM-SIP网关,该网关在输出端提供SIP中继。 但是这种设备每1张SIM卡的成本从9000卢布开始,因此决定改行。 我们找到了具有语音支持的调制解调器。 在我们的案例中,结果就是华为E3131。 在网络上已经多次描述了如何解锁它并启用语音功能,因此我不会因此而分心。 我们将所需的SIM卡插入USB集线器端口,首先,在菜单中关闭其作为3G调制解调器的操作。



然后我们开始配置星号文件。 首先,在opkg install asterisk11-chan-dongle控制台中使用命令安装Dongle软件包。 安装后,打开dongle.conf文件并对其进行编辑以获取以下内容:

工作文件dongle.conf
[加密狗]
间隔= 15

[默认值]
上下文=接收加密狗
rxgain = 0
txgain = 0
usecallingpres =是
呼叫等待=否
dtmf =带内
mindtmfgap = 45; 从预览结束到下一次开始的DTMF的最小间隔(以毫秒为单位)
mindtmfduration = 80; 最小DTMF音调持续时间(以毫秒为单位)
mindtmfinterval = 200; 相同数字的DTMF两端之间的最小间隔(以毫秒为单位)

[GSM1]
音频= / dev / ttyUSB1
数据= / dev / ttyUSB2
imei = *****************; E3131-输入IMEI调制解调器

保存该文件,然后转到extensions.conf文件。 可以将多格式注释掉,并添加到调制解调器中使用。

我们在extensions.conf文件中通过USB调制解调器注册了呼叫操作
[加密狗传出]; 对于拨出电话:
; ------------------ GSM1 Donle-exten => _8 .....,1,NoOp()
exten => _8 ..........,n,Set(__ SIP_CODEC_OUTBOUND = ulaw)
exten => _8 ..........,n,Set(__ SIP_CODEC_INBOUND = ulaw)
exten => _8 ..........,n,答案()
exten => _8 ..........,n,等待(2)
exten => _8 ..........,n,播放(/ opt / var / lib /星号/声音/ itsp_names / beeline-gsm)
exten => _8 ..........,n,拨(DONGLE / GSM1 / 8 $ {EXTEN:1} ,, T)
exten => _8 ..........,n,挂断()

[加密狗传入]; 对于来电:
exten => s,1,NoOp()
exten => s,n,等待(4)
exten => s,n,答案()
exten => s,n(播放),NoOp()
exten => s,n,等待(1)
exten => s,n,播放(你好)
exten => s,n,等待(0,5)
exten => s,n,播放(专用)
exten => s,n,Set(TIMEOUT(digit)= 1)
exten => s,n,NoOp()
exten => s,n,WaitExten(7)

exten => _1,1,NoOp()
exten => _1,n,设置(__ SIP_CODEC_OUTBOUND = ulaw)
exten => _1,n,Set(__ SIP_CODEC_INBOUND = ulaw)
exten => _1,n,集合(CALLERID(num)= 8 $ {CALLERID(num):1})
exten => _1,n(dial_ext),拨号(SIP / 101.60,mt)

exten => _2,1,NoOp()
exten => _2,n,Set(__ SIP_CODEC_OUTBOUND = ulaw)
exten => _2,n,Set(__ SIP_CODEC_INBOUND = ulaw)
exten => _2,n,集合(CALLERID(num)= 8 $ {CALLERID(num):1})
exten => _2,n(dial_ext),拨号(SIP / 302.60,mt)

exten => _3,1,NoOp()
exten => _3,n,Set(__ SIP_CODEC_OUTBOUND = ulaw)
exten => _3,n,Set(__ SIP_CODEC_INBOUND = ulaw)
exten => _3,n,集合(CALLERID(num)= 8 $ {CALLERID(num):1})
exten => _3,n(dial_ext),拨号(SIP / 304.60,mt)

现在,一切都已启动并按预期工作。 星号接受拨入号码的呼叫,并且用户通过选择号码来选择呼叫他的位置。 无论您身在何处,拨出电话都会通过任何移动运营商进行。 也就是说,您可以将SIM卡插入USB调制解调器,并可以在世界任何地方使用。 足以访问网络,并且在智能手机/笔记本电脑上拥有一个将连接到您的Asterisk服务器的SIP客户端。 该解决方案已在其中运行且有效。 当某些驱动器发生故障时,可以通过添加具有外部电源的USB集线器并更换闪存驱动器来解决由此引起的故障。 将电话投入使用的所有工作将需要一个晚上。

为了防止这项工作消失,您可以使用以下命令在闪存驱动器上创建整个星号的备份:

在闪存驱动器上备份星号
tar cvzf / opt / backup-ʻdate“ +%Y-%m-%d_%H-%M” .tar.gz -C / opt / bin等home lib丢失+找到根sbin共享tmp usr var

Zyxel Keenetic LTE所有者的奖金

应当注意,该路由器还配备了两个带有物理FXS端口的SIP客户端,您可以将任何模拟电话连接到该客户端。 该客户端可以轻松连接到正在旋转的Asterisk服务器。

Zyxel Keenetic所有者的奖金*

如果您不想花钱购买SIP电话,则Keenetic系列路由器支持Zyxel DECT适配器,该适配器增加了SIP电话功能并可以连接任何DECT无线手机。

结论

解决了频繁对话和冗长对话的不同订户之间的自由通信问题。 还解决了用户在城市中的“在场”以及与号码所有者(无论所有者位于何处)进行免费通信的任务。 具备虚拟化功能的QNAP TS-451 NAS解决方案得益于通过Web界面配置Asterisk的能力。 但是使用路由器的解决方案几乎不需要任何成本。 星号-很简单! 当连接可以免费时,为什么要为漫游付费?

我要分别感谢Zyxel团队的响应能力,在试验和增加设备功能方面的帮助。

PS如以下正确注释所述,几乎所有移动运营商都禁止使用SIM卡创建GSM门。 实际上,在您开始大门的商业运营之前,没有人会阻止您。 作者对您的行为不承担任何责任。
但是,我知道一些情况,公司在GSM网关中使用了数十个SIM卡来廉价拨打电话号码。

Source: https://habr.com/ru/post/zh-CN402367/


All Articles