![Asterisk DID 传入规则 =s](https://linux22.com/image/563571/Asterisk%20DID%20%E4%BC%A0%E5%85%A5%E8%A7%84%E5%88%99%20%3Ds.png)
所以我有一个来自英国供应商的 10 路 SIP 中继。来电和拨出电话都正常,但由于我有多个用于不同用途的号码,我为每个号码设置了入站规则,但它们从不起作用,只有捕获所有号码有效。在 CLI 中,当有电话打进来时,我得到以下信息:
Executing [s@from-trunk:1] Set("SIP/Entanet-0000014f", "__FROM_DID=s") in new stack
Executing [s@from-trunk:2] ExecIf("SIP/Entanet-0000014f", "0 ?Set(CALLERID(name)=01299404193)") in new stack
Executing [s@from-trunk:7] Goto("SIP/Entanet-0000014f", "timeconditions,1,1") in new stack
我猜重点是“__FROM_DID=s”,为什么是“s”而不是 DID?我与我的提供商交谈过,他们确实在 SIP 标头中发送了 DID。我的设置可能有什么问题吗?
我的 PEER 详细信息:
username=443331010040
type=peer
secret=***********
qualify=yes
nat=always
insecure=very
host=proxy.entacall.com
fromuser=443331010040
fromdomain=mydomain.com
dtmfmode=rfc2833
disallow=all
context=from-trunk
canreinvite=yes
authuser=443331010040
allow=ulaw
我的传入上下文详细信息:
type=user
secret=**********
context=from-trunk
注册字符串:443331010040:************@proxy.entacall.com
希望你能帮忙!?
答案1
在我看来,这看起来像是脚本错误,而不是设置错误。它报告脚本正在将 __FROM_DID 设置为 s,而不一定表示提供商的调用详细信息显示“s”。
为了针对不同目的路由不同的来电号码,我创建了 extensions.ael,内容如下:
context incoming-calls {
441234000000 => {
Answer();
Dial(SIP/100,120);
}
441234000001 => {
Answer();
Dial(SIP/101, 120);
}
}
您使用 AEL 吗?您的来电号码是否以 44 开头,而不是以 0 开头?
答案2
尝试将注册字符串更改为
443331010040:************@proxy.entacall.com/443331010040
或者将您的对等体更改为如下形式:
username=443331010040
type=friend
secret=***********
qualify=yes
nat=always
insecure=very
host=proxy.entacall.com
fromuser=443331010040
fromdomain=mydomain.com
dtmfmode=rfc2833
disallow=all
context=from-trunk
canreinvite=yes
authuser=443331010040
allow=ulaw
callbackextension=443331010040
并且不填写用户和注册字符串(当您包含回调扩展时 - 星号会自动注册)