点击菜单 Applications > Extensions,Submit “Generic SIP Device”,添加 SIP设备211和212(分机号可自定义)
注:1. 移动鼠标至各设定项右边的问号会提示相应的设置说明;
aaa2. 提交设置后记得要点击右上角的“Apply Config”按钮以使设置生效;
在智能手机上的 SIP SoftPhone软件里添加 SIP帐号,然后在无线路由器内网的 wifi环境里,SIP分机201和202相互之间就可以拨号
通话了。
然后点击菜单 Connectivity > Trunks,Add Custom Trunk,添加自定义的 Trunk,Custom Dial String框中填入
“dongle/dongle0/$OUTNUM$”
添加 Outbound Route,完成后就可以在 SIP分机上拨号“9+外线号码”,即可从 3G U棒里的手机号码拨打出去
添加 Inbound Route生效后,当3G U棒里的手机号码有来电时指定的 SIP分机就会响铃
注:如有第二个 3G U棒,可在 DID Number框中填入 sim卡的手机号码以示区分,号码必须以“+86”开头。
点击菜单 Settings > Asterisk SIP Settings,一般家庭宽带分配的是动态ip,所以还要申请一个动态域名(免费的二级域名如 3322.org,
花生壳等)
还要在路由器上设置一下端口映射
端口映射完成后 SIP分机就可以从路由器的外网连接到 RasPBX的 SIP服务端了,SIP帐号的服务器地址需改成路由器外网ip的动态域名(如xxx.3322.org)。我的路由器使用第三方的 Tomato固件,内置了 3322的DDNS,自动更新外网的动态ip,其他平台请自行参考动态域名服务商的官网(比如 noip.com的免费二级域名,可按照 官网教程 在RPI上安装客户端以自动更新ip)。 其他
在 Asterisk CLI界面会自动提示 3G U棒收到的短信内容(存放在 /var/log/asterisk/sms.txt,供事后查阅),中文显示正常,长短信会被自动拆分(不过跨运营商之间的,比如移动发联通,似乎只能收到拆分后的最后一条)。还可以发送短信,不过不支持中文,注意短信接收人的号码必须以“+86”开头(类似10010之类的客服号码则不必)。
root@raspbx:~# asterisk -r
raspbx*CLI> core show help dongle #显示 dongle命令的帮助说明
raspbx*CLI> dongle sms dongle0 +8618699999999 Hello from RasPBX! raspbx*CLI> exit
root@raspbx:~# cat /var/log/asterisk/sms.txt
如果在前面升级 RasPBX的过程中安装了web页面,在浏览器中访问 http://raspbx/sms 可进入短信发送页面
(http://raspbx/ussd 为USSD发送页面),发送中文短信会乱码。
注:修改 /var/www/html/sms/index.php文件,把其中的编码 ISO-8859-1改成 utf-8,重启后发送中文短信就正常了。
如果在前面升级 RasPBX的过程中还设置过接收的短信自动转发邮件的话,则短信内容存放在 /tmp/sms.txt文件中(不过只有最近的一条)。另外,还设置过接收的短信自动转发另一个手机号码的话,对方手机倒是能正常显示中文字符,不过有个bug,即,截止到第一个半角字符后面的内容会丢失。
顺便贴出 /etc/asterisk/extensions_custom.conf文件里的 dialplan,供参考
[from-trunk-dongle]
exten => sms,1,Verbose(Incoming SMS from ${CALLERID(num)} ${BASE64_DECODE(${SMS_BASE64})}) exten => sms,n,System(echo \xxx@gmail.com\\nSubject: Incoming SMS from ${CALLERID(num)} to ${OUTCID_1}\\n\\n${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DONGLENAME} - ${CALLERID(num)}: \> /tmp/sms.txt)
exten => sms,n,Set(FILE(/tmp/sms.txt,,,a)=${BASE64_DECODE(${SMS_BASE64})}) exten => sms,n,System(sendmail -t < /tmp/sms.txt)
;exten => sms,n,DongleSendSMS(dongle0,+8618699999999,${BASE64_DECODE(${SMS_BASE64})} - from ${CALLERID(num)})
exten => sms,n,Hangup()
exten => _.,1,Set(CALLERID(name)=${CALLERID(num)}) exten => _.,n,Goto(from-trunk,${EXTEN},1)
注:如经常更换 3G U棒里的 sim卡,可像如上 dialplan那样在邮件标题中添加 OUTCID_*变量(对应 Trunks设置里的手机号码,具体变量名可在 /etc/asterisk/extensions_additional.conf 文件里查看),以便得知收到的短信是发给哪个号码的。
最后,完工后建议用烧录工具(如 Win32 Disk Imager)备份一下 SD卡,或者按照 RasPBX官网教程 实时备份和更新 SD卡系统的镜像文件(还需要一个不小于4G容量的U盘)。因为SD卡这类存储介质还是比较脆弱的,不正常关机(比如意外停电)可能导致SD卡无法引导启动 PRI。
可能会遇到的问题
问题1:在 FreePBX管理页面的右下角的 Server Status区域可能会显示 Asterisk ERROR 或 Web Server ERROR 一般多是系统时间出错导致的问题(请用 date命令检查一下是否日期变成了 1970年的),用 WinSCP登录 RPI,把 /usr/local/sbin/amportal_delaye文件中的如下四行注释掉
#while [ `/bin/date +%s` -lt $MIN_START_TIME ] #do
# sleep 10
#done
重启 RPI后如果还没有效果,则修改一下 /etc/ntp.conf这个配置文件,替换掉其中的 ntp server
#server 0.debian.pool.ntp.org iburst server ntp服务器地址 iburst
修改完成后重启一下 RPI的 ntp服务
service ntp restart
问题2:第一次使用正常(之后重启也正常),但RPI重新上电后,3G U棒的连接会丢失 正常情形下应该会有三个 ttyUSB*文件
root@pbx:~ $ ls /dev/ttyUSB*
/dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2
但实际上找不到 ttyUSB*,同时在 Asterisk CLI界面会不断提示出错“chan_dongle.c:218 opentty: unable to open /dev/ttyUSB2: No such file or directory”,这时候如果插拔U棒一到二次就能恢复正常。
经网上搜索,找到一篇 文章,得知 3G U棒有两种工作模式,cdrom和modem,默认是前者(所以U棒插入Win系统电脑时会自动安装3G上网软件),解决办法就是在每次 RPI启动时用 usb_modeswitch(RasPBX已内置了该软件)修改一下 3G U棒的工作模式。 新建一个 E173的配置文件 /etc/usb_modeswitch.d/e173.conf,内容如下
######################################################## # Huawei, newer modems
DefaultVendor= 0x12d1 DefaultProduct=0x1446
TargetVendor= 0x12d1 TargetProduct= 0x1436
CheckSuccess=20
MessageContent=\
注:其他型号的 3G U棒的配置文件可参考 USB_ModeSwitch官网 的device_reference.txt文件内容。
修改 E173的工作模式
root@raspbx:~# usb_modeswitch -I -W -c /etc/usb_modeswitch.d/e173.conf
注:这时 E173应该就自动接通了,然后把这一行添加到 /etc/rc.local文件中,exit 0的那一行之前即可。
另外,用 usb-devices 和 lsusb命令可以看到修改前后的变化
#修改模式之前
root@raspbx:~# usb-devices
T: Bus=01 Lev=02 Prnt=02 Port=01 Cnt=02 Dev#= 4 Spd=480 MxCh= 0 D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=12d1 ProdID=1446 Rev=00.00 S: Manufacturer=HUAWEI Technology