我们在上一篇教程中讲解了如何安装 FreePBX。现在我们来讲解如何创建用于入站呼叫的中继。
您需要准备:
- 一个可正常运行的 FreePBX
- 一个 SIP 账户(或多个,用于冗余)
- 一个或多个 DID
- 一个已配置好的 FreePBX
可正常运行的 FreePBX:
有关安装 FreePBX,请参阅本教程:https://multitel.net/docs/view/671/tutorials/installing-freepbx
单个 SIP 帐户(或多个帐户,用于冗余)
您可以先在此处创建 SIP 账户:https://multitel.net/trunks/accounts
点击“新建(Create New)”按钮。将弹出一个新窗口。复制 SIP 用户名和 SIP 密码,并保存到您的笔记中,稍后会用到。
完成后点击“提交(Submit)”按钮。

在我们的示例中,我们创建了以下 SIP 账户:
SIP 用户名:[SIP_USERNAME]
SIP 密码:[SIP_PASSWORD]
(您的 SIP 用户名/密码将与此不同。请使用您自己的 SIP 用户名和 SIP 密码。上述这些在本教程编写完成后已被删除)
现在,对于要使用的 SIP 代理,您可以从以下选项中选择一个(按字母顺序排列):
| 大洲 | 国家/地区 | SIP 代理 |
| 非洲 | 南非 | sbc-za.multitel.net |
| 亚洲 | 新加坡 | sbc-sg.multitel.net |
| 澳大利亚和大洋洲 | 澳大利亚 | sbc-au.multitel.net |
| 欧洲 | 荷兰 | sbc-nl.multitel.net |
| 欧洲 | 德国 | sbc-de.multitel.net |
| 欧洲 | 英国 | sbc-uk.multitel.net |
| 北美 | 加拿大 | sbc-ca.multitel.net |
| 北美 | 美国 | sbc-us.multitel.net |
| 南美洲 | 巴西 | sbc-br.multitel.net |
因此,如果您位于欧洲,您会选择其中一个位于欧洲的 SIP 代理。您可以 ping 每一个代理,确定哪一个离您的位置更近:
在我自己的测试中,sbc-ca.multitel.net 是最近的一个,往返时间约为 20-21 毫秒。

因此,本教程的凭据现在如下:
SIP 用户名:[SIP_USERNAME]
SIP 密码:[SIP_PASSWORD]
SIP 代理:sbc-ca.multitel.net
一个或多个 DID:
您可以在此购买 DID 号码:https://multitel.net/numbers/rent
或
您可以使用现有号码之一:https://multitel.net/numbers/inventory
或
您可以自带运营商(Bring Your Own Carrier):https://multitel.net/numbers/byoc
无论您选择哪种方式,最终都会到达这里:
https://multitel.net/numbers/inventory
您需要确保您的 DID 从与您用于 SIP 注册的相同 SIP 代理向您发送呼叫。操作方法如下:
编辑号码:
首先前往此处:https://multitel.net/numbers/inventory

搜索该号码,然后点击“编辑号码”按钮:

找到“呼入中继 (Origination trunk)”设置,并将其设置为“sbc-ca.multitel.net”——或离您所在位置最近的任一 SIP 服务器。

接下来,请确保 DID 将呼叫发送到您的 SIP 账户。
将“Call Action”菜单设置为“SIP Account”,并确保“SIP Account”菜单设置为您将要使用的 SIP 账户。
至此,您在 MultiTEL 门户上需要完成的操作已全部完成。接下来进入下一步:
已配置的 FreePBX:
在网页浏览器中打开您的 FreePBX 服务器:
点击“FreePBX Administration”(FreePBX 管理)。系统会要求您输入用户名和密码。请记住,您已在我们之前题为“安装 FreePBX”的教程中设置过这些信息
您或许可以跳过激活,由您决定。
您可能会看到一些带有广告的新窗口,是否点击或跳过由您决定。为使本教程保持简短,我将跳过它们。
我需要选择区域设置:
可能还会出现其他广告,建议您跳过;如果没有“Skip”(跳过)按钮,请点击“Abort”(中止)。
我将直接进入“Connectivity”(连接设置)并选择“Trunks”(中继):

点击“Add Trunk”(添加中继)按钮,再选择“Add SIP (chan_pjsip) Trunk”(添加 SIP 中继):
在新窗口中按如下设置:
中继名称:您可以放心地将其设置为 MultiTEL
最大通道数: 此 PBX 限制控制同时通话的数量,不会更改您号码的计费套餐。套餐包含的通道和分钟数因套餐而异。按量计费套餐不含通话分钟数。在已确认的美国本地号码套餐中,两个同时进行的入站通话可以使用每月 100,000 分钟的额度。启用溢出通话时,第三个同时进行的通话会按整个通话时长计费,并且不消耗此额度;禁用溢出通话时,该通话会被拒绝。超出套餐包含分钟数的通话按套餐的使用费率计费。将此 PBX 字段设为 2 会限制 PBX 的同时通话数量,但不会免除使用费,也不会配置号码侧的溢出通话设置。查看您号码的套餐和当前费率。
Asterisk 中继拨号选项:我一向喜欢生成回铃音,因此我会点击“覆盖(Override)”按钮,并将选项设置为“Ttr”(“Tt”- 允许主叫/被叫方转接呼叫,“r”- 生成回铃音)
接下来,转到“pjsip 设置(pjsip Settings)”选项卡。
使用我们在“单个 SIP 帐户(A single SIP account)”步骤中获得的 SIP 凭证填写。
SIP Username: [SIP_USERNAME]
SIP Password: [SIP_PASSWORD]
SIP Proxy: sbc-ca.multitel.net
提醒一下,请使用您自己的 SIP 凭证。上述这些凭证已不存在,仅为撰写本教程而使用。尝试使用这些不存在的测试凭证将导致您的 IP 地址被封禁。
至少,我将配置以下设置:
请注意,我已将 context 更改为“from-multitel”(最初设置为“from-pstn”)。此更改很重要,因为它允许我们使用单个 SIP 帐户进一步处理来自多个入站 DID 的呼叫(而不是每个 DID 使用一个 SIP 帐户)。
在 编解码器(Codecs)选项卡中,我将只保留 ulaw 和 alaw:
我将点击 提交(Submit)按钮:

然后忽略弹出的菜单(我喜欢在分机上设置外呼 CID,而不是每条中继设置一个外呼 CID。这样,我可以在单条中继上使用多个 主叫身份,而不必定义多条中继,为我的主叫需要使用的每个 主叫身份 各定义一条)
因此,请点击“OK”
页面将刷新,您现在将看到新的 SIP 中继。点击屏幕右上角红色的“应用配置 (Apply Config)”按钮:

屏幕刷新且红色 Apply Config 按钮消失后,您可能需要在 asterisk CLI 中检查您的 SIP 账户是否已成功注册。
使用 SSH 登录到您的 FreePBX 服务器并执行:
asterisk -rx 'pjsip show registrations' | grep multitel
您应该会看到与下方类似的输出:
现在 SIP 注册已正常工作,让我们为 DID 创建一条入站路由。
前往“Connectivity”(连接设置),选择“Inbound Routes”(呼入路由):
点击“Add Inbound Route”(添加入站路由)按钮。
为了本次测试,我只会让入站呼叫转到 Echo 测试:

保存后,我们将被重定向到主“入站路由”(Inbound routes)界面:
我们现在快完成了。目前,请点击屏幕右上角的红色“应用配置”(Apply Config)按钮。
还记得我们在设置 SIP 中继时将拨号计划上下文(context)改为“from-multitel”吗?最后一步就是添加该上下文。
我们必须从服务器控制台执行此操作:
nano /etc/asterisk/extensions_custom.conf
添加以下行:
[from-multitel]
; exten => s,1,Set(DID=${SIP_HEADER(X-DID)}) ; set this if using chan_sip
exten => s,1,Set(DID=${PJSIP_HEADER(read,X-DID)}) ; set this if using chan_pjsip
exten => s,2,Goto(from-pstn,${DID},1)
保存(CTRL+O、Enter、CTRL+X),然后重新加载 asterisk 拨号方案:
asterisk -rx 'dialplan reload'
您已全部完成,您的入站呼叫现在应该可以顺利接通。您现在可以拥有多个 DID,全部使用同一个 SIP 账号。
附言:这是如何工作的?我们将 SIP 账号设置为使用自定义上下文 “from-multitel”。然后,在 “from-multitel” 上下文中,我们处理一个名为 “X-DID” 的 SIP 变量,并将被叫号码设置为该值。然后,呼叫被送回 “from-pstn” 上下文。