Asterisk

Asterisk 是第一套以开放源代码软件实现的 用户交换机 (PBX) 系统。Asterisk 由 Digium 的创办人马克·史宾瑟(Mark Spencer)于 1999 年他还在奥本大学念书时所开发。与其他的用户交换机系统相同,Asterisk 同样支持电话拨打另一只分机,和拨打到公共交换电话网与 IP 电话系统。Asterisk 这个名称源自于星号 "*"。

网址:https://www.asterisk.org/

Asterisk 常见错误

403 登录失败

解决:等待 1 分钟,等超时之后重新连接即可。一般是切换 IP 时或者换软电话登录会碰到。

401 登录失败

解决:检查账户和密码是否正确?检查连接地址是否正确?检查 Asterisk 是否启动?检查防火墙端口是否打开?

408 连接超时

解决:一般是 Asterisk 服务不通,检查 Asterisk 服务是否启动,检查防火墙是否打开?

可以拨通,没有声音?

一般是 NAT 造成,配置这三个参数:rtp_symmetric,force_rport,rewrite_contact。

SIP 客户端没有自动挂机?

一般是没有设置 stun 造成的,在 SIP 客户端,设置 stun 即可。如果没有 stun server,可以设置这个stun.l.google.com:19302

AGI 脚本返回状态 4,正常应该为 0?

查看网上资料,是 AGI 脚本中调用 Hangup 导致,将脚本中的 Hangup 去掉,放在拨号计划配置文件中执行 Hangup,可以解决这个问题。

AGI Script agidemo completed, returning 0

解决 asterisk 没有声音的问题

在配置好 asterisk 之后,拨打 8000 没有听到声音。

我的环境,asterisk 在云服务器,使用手机 zoiper 拨打。没有声音,经过一番调整后,使用如下配置可行。

asterisk 的配置如下:

rtp_symmetric = yes
force_rport = yes
rewrite_contact = no

手机 zoiper 的配置,ice 启用,其它全是默认配置。

现在发现,WIFI 可以拨通,流量不可以。

经过排查,发现 RTP 在 WIFI 情况下使用同一个端口,在流量情况下不是同一个端口。

打开 rtp 调试信息,使用如下命令:

rtp set debug on

查看 rtp 的配置,使用如下命令:

rtp show setting

可以看到 rtp 信息。

如果排查 PJSIP 信息,可以使用查看 pjsip 的日志命令:

pjsip set logger on