我开始使用 Asterisk。我只想通过 SIP 软件电话拨打 PSTN 号码。我读过这本书的最新版本:Asterisk,权威指南,并像往常一样在 Google 上搜索解决方案,但无济于事。
以下是我目前使用 Ekiga 软件电话所做的事情。
我能够使用软电话进行注册。Asterisk“sip show peers”正确列出了已注册的分机。我为 PRI 卡设置了 chan_dahdi.conf。我设置了 sip.conf 文件。在这两个文件中,我都命名了上下文,然后在 extensions.conf 文件中定义这些上下文。
当我尝试从外部呼叫 PRI 号码时,会触发与通用模式匹配的拨号计划扩展。我能够在其中一个步骤中执行应用程序 Dial(DAHDI/g0/1234567890)。它确实呼叫了 PSTN 号码。因此我知道硬件设置和 Dahdi 驱动程序、PRI 卡驱动程序等的基本安装都已到位。
我不知道如何通过软件电话拨打外部电话。需要做什么才能将 SIP 电话中的 URI 连接到拨号计划中的 Dahdi 分机以拨打电话。换句话说,例如,我如何实现这一点:
扩展 => _X.,1,拨号(DAHDI/g0/1234567890)
通过软件电话?
这里的号码是在拨号计划中静态指定的。
如果我在另一个 SIP 分机中执行此操作,然后尝试从软电话访问该 SIP URI,它会抱怨无法联系用户。
答案1
没有独特的方法可以做到这一点。
这是一种方法:
我定义的分机号以除 9 以外的任何数字开头,并使用 9 来表示这是 PSTN 呼叫。
添加extensions.conf
如下内容:
exten => _9X.,1,NoOp(Call to PSTN)
exten => _9X.,n,Dial(DAHDI/g0/${EXTEN:1})
将其放在与分机拨号计划相同的上下文中。上下文在括号标题中定义,如[internal]
或[default]
。
这意味着无论何时拨号,9+something
它都会删除第一个数字,取其余数字并通过 DAHDI/g0 拨号9
。外部指标。
请记住,同一上下文中的任何分机都能够呼叫 PSTN。
这是另一种方法:
如果您知道拨打外线号码的数字长度,假设它始终是 7 位数字,那么您可以执行以下操作:
exten => _XXXXXXX,1,NoOp(Call to PSTN)
exten => _XXXXXXX,n,Dial(DAHDI/g0/${EXTEN})
每当您拨打 7 位数字的号码时,它都会转到 PSTN。您的分机号码必须短于该数字。