如何在pjsip和Asterisk 13中允许入站呼叫?

时间:2017-02-24 13:29:13

标签: asterisk sip voip pjsip

我已经使用PJProject 2.5.5配置了Asterisk 13.13.1并启用了PJSIP作为SIP驱动程序(不编译chan_sip)。

我有完全配置的系统并且它正在工作,但我在接听电话时遇到了一些问题。我的主机连接的号码很少,当我从任何公共号码拨打电话时,我注意到星号远程控制台上的这些信息:

[Feb 24 14:27:16] NOTICE[5291]: res_pjsip/pjsip_distributor.c:525 log_failed_request: Request 'INVITE' from '"zzzzz" <sip:zzzzz@192.168.34.1>' failed for '192.168.34.1:5062' (callid: 0e07e7607f8f62dd225347363173bb9f@192.168.34.1:5062) - No matching endpoint found

如果我将调用我的Asterisk的号码添加到终端然后它正在工作 - 我可以接听这个电话。

如何添加允许所有入站呼叫的可能性?

3 个答案:

答案 0 :(得分:4)

您需要创建一个匿名端点来接受来自未知端点的入站呼叫。

请注意,添加匿名端点会将系统打开到扩展扫描攻击,扫描程序会尝试找出您在系统中配置的扩展程序。他们这样做是为了通过广告电话向您发送垃圾邮件,或利用呼叫转移来拨打长途电话号码,或者用于其他一些别有用心的动机。

创建匿名端点后,将其与不同于扩展程序使用的上下文关联。这可以防止他们通过你的中继线拨打长途电话。

要在pjsip.conf中添加匿名端点,请添加以下行:

[anonymous]
type=endpoint
context=anonymous
disallow=all
allow=speex,g726,g722,ilbc,gsm,alaw

在拨号方案extensions.conf中:

[anonymous]
exten => _XXXXX,1,GotoIf(${DIALPLAN_EXISTS(local-extensions,${EXTEN},1)}?local-extensions,${EXTEN},1)
 same => n,Hangup(1)

local-extensions是列出本地扩展程序的上下文。

答案 1 :(得分:0)

看起来你错过了*配置的内容。我的基本配置如下,基于带有内部扩展的sipgate设置。此配置已从正在运行的框中提取(尽管用户名和密码已被删除);

*

pjsip

pjsip.conf

[transport-udp]
type = transport
protocol = udp
bind = 0.0.0.0


[reg_sipgate_premium]
type = registration
retry_interval = 20
max_retries = 10
contact_user = 0000000
expiration = 120
transport = transport-udp
outbound_auth = auth_sipgate_premium
client_uri = sip:0000000@sipgate.co.uk:5060
server_uri = sip:sipgate.co.uk:5060

[auth_sipgate_premium]
type = auth
username = 0000000
password = password

[sipgate_aor_premium]
type = aor
contact = sip:0000000@sipgate.co.uk

[sipgate-preimum]
type = endpoint
context = incomingsipgate
dtmf_mode = rfc4733
disallow = all
allow = alaw
rtp_symmetric = yes
force_rport = yes
rewrite_contact = yes
timers = yes
from_user = 0000000
from_domain = sipgate.co.uk
language = en
outbound_auth = auth_sipgate_premium
aors = sipgate_aor_premium

此行用于捕获任何免费电话(0500)号码,并在用户内部拨打90500xxxxxxx时通过sipgate路由;

extensions.conf

答案 2 :(得分:0)

当然,问题出在您的传入线路运营商环境中。问题不在pjsip中 - 它在拨号方案中。请检查您的主干(或注册上下文值以了解正确的拨号方案部分:

[outer]
exten=>_1234567,1,NoOp(Incoming call to public number 1234567)
exten=>_1234567,n,GoTo(outer,3333,1)
exten=>_1234567,n,Hangup()
exten=>_3333,1,NoOp(Transfered from public context to local extension 3333)
exten=>_3333,n,Dial(PJSIP/${EXTEN},180)
exten=>_3333,n,Hangup()

将1234567更改为您的公共号码,将3333更改为必须接收此来电的本地号码。当然,将outer设置为来电号码提供商注册(主干)的上下文。