Internet上有很多定制示例。 但是没有一个人为我工作。 我遇到的问题之一是传入呼叫的线路定义不正确。 一次,我从未找到解决此问题的手册。 因此,我决定在此处发布我的说明版本。 同时为自己的未来加婴儿床。
GoIP设定
“配置”-“首选项”
GSM网关位于无法访问Internet的局域网中。 在本地网络上设置NTP服务器以分配时间。 重新启动后,GSM网关将同步并正确显示当前时间。 您可以跳过此步骤,然后必须在网关上手动设置时间。 如果您可以访问Internet,则指定公共NTP服务器之一。
- 在“时间服务器”中,输入NTP服务器的IP地址。
- 指定时区,我有时区:GMT + 6。
- 禁用自动重启。 使用最新的固件版本,不会观察到GSM网关冻结的问题。
- 禁用IVR。

“配置”-“网络”
- LAN端口-静态IP
- IP地址-指定网关的静态IP地址
“配置”-“基本VoIP”
配置模式-按行配置。
对于第一个“线路1路由前缀”的通道,我们指定1,第二个2,第三个3,依此类推。
身份验证ID:注册SIM卡号(我注册时不带8 / + 7),例如9651234567
SIP注册服务器:SIP服务器的IP地址(192.168.0.10)
Line 1 Authentication ID: 9651234567 Password: Routing Prefix: 1 Sip Proxy: SIP Registrar Server: 192.168.0.10:5160 Phone Nymber: 9651234567 Display Name: 9651234567
对于其余各行,我们也是如此。

“配置”-“高级VoIP”

“配置”-“呼出”
对于每一行,请指定Asterisk随附的前缀,并且在拨出电话之前将在网关通道上删除该前缀:例如,对于CH1拨号计划:1:-1,CH2拨号计划:2:-2,等等。
Dial Plan: 1:-1

“配置”-“呼入”
设置说明建议用于CID转发模式:选择“使用CID作为SIP呼叫者ID”以正确确定传入号码。 我选择了使用远程方ID。 这样做是为了正确确定呼叫所在的线路。 输入号码正确确定。

这样就完成了GoIP设置。
配置FreePBX 14
连接-中继线
选择“添加SIP(chan_sip)中继”。
常规标签

转到“拨号操作规则”标签
规定模板。 依次指定每个中继的前缀。 对于第一行1,对于第二行2,依此类推。

标签sip常规设置
外向
星号为多个帐户使用相同的端口。 这在确定呼叫的线路时产生了问题。 对于传入呼叫,将始终使用最后一次注册的盛宴,结果,错误地确定了发出呼叫的GoIP线路。 为了正确确定线路,将GoIP模式设置为
Use Remote Party Id ,在Astrisk上,
trustrpid = yes 。
host=dynamic username=7712020077 secret=Djfgkjgfd!!!!234%$^%# type=friend context=from-trunk-sip-9651234567-custom trustrpid=yes

传入
in-9651234567 secret=Djfgkjgfd!!!!234%$^%# type=user context=from-trunk-sip-9651234567-custom

接下来,创建分机号码和呼叫组。 我不会描述这是如何完成的。 在FreePBX中,这是通过“应用程序”菜单-“扩展”和“应用程序”-“呼叫组”完成的。 一切都非常简单直观。
连接-出站路由
选择“添加出站路由”。
路线设置选项卡
指定路由名称,例如all_line。 接下来,我们按顺序指示将通过其发出呼叫的中继线。

转到标签“拨号规则”
在这里,我们规定了传出号码的模式。

其余选项卡默认情况下保留。 这样就完成了输出路由的配置。 您可以尝试拨打电话。
此处可能会出现一个问题,即呼叫将按照在路由中指示的顺序通过中继线。 反过来,这将导致一个事实,即第一行中的单元比跟随它们的单元走得更多。 要解决此问题,您可以使用extensions_override_freepbx.conf重写出站路由的规则。
根据行数,可以使用随机数。 对于两行,例如1.2。 我使用这样的代码
[outrt-sets](!) exten => _.,50,Set(a_rand_num=${RAND(1,2)}); same => n,GotoIf($["${a_rand_num}"<"2"]?${n}+1:${n}+2) same => n,GotoIf($["${GROUP_COUNT(OUT_1)}">="${OUTMAXCHANS_1}"]?${n}+1:out-1-cust) ... [outrt](outrt-sets) ; all_line exten => _+7XXXXXXXXXX,3,Goto(50) exten => _8XXXXXXXXXX,3,Goto(50)
连接-入站路由
添加入站路由。
常规标签
指定其描述,例如-“入站”。
接下来,选择最后一个项目“设置方向”,在其中选择路线的终点。 就我而言,我指示了一个呼叫组,这样呼叫就可以转到任何免费接线员。
实际上,我有更复杂的逻辑。 使用AGI脚本,我在数据库中查找输入的号码,如果找到它,则将其发送给分配了该号码的操作员。 在通过jabber接到sip客户端的呼叫之前,我会向操作员发送一条消息,其中包含有关该客户端的信息。 如果在数据库中找不到该号码,则呼叫转到该组。

这样就完成了设置。 您可以尝试拨打和接听电话。
结论
许多人不喜欢配置FreePBX,但只标了一个星号。 我对IP电话的使用经验为零,因此一次选择就落在了FreePBX上。 我在编辑配置时没有问题。 可以使用extensions_custom.conf和extensions_override_freepbx.conf配置文件进行任何更改。 弄清楚它并不难。 我们有一个小型呼叫中心。 GoIP被证明是最好的。 唯一的事情不是由其本地SMS服务器安排的。 因此,我写了自己的文章,它支持发送和接收SMS消息,并显示SMS传递的状态。 我们有功能齐全的手机替代品。
作为sip客户端,我们使用基于JsSip库编写的网络电话,它在Firefox 68和Chrome 76上运行良好。如果有时间,我将写有关使用JsSip库的更详细的说明。 以及有关创建自己的SMS服务器的单独文章。