|
本帖最后由 stevemorrislian 于 2017-6-21 16:36 编辑
首先,我等不及开树莓派专版就想把最近做的发上来;另外sip账号在上海10元/月,免费试用的很多,但真的也就是试用
*************************************************************************************************************************************************这一段是为扫盲,后加的,知道基本概念的请跳过
asterisk是一个voip软件,voice on IP,通过internet网络协议打电话。目前最红的是SIP协议
不需要电话线路,用SIP账号登录到提供语音网关的服务器(有公网IP地址,一般有PRI等线路与电话网衔接),就可以与电话网络的话机,手机通讯
asterisk是服务器软件,在voip服务器中的特点就是内核小,以可以装入路由器著称,openwrt上就可以装,我在12M内存上也成功运行了;终端可以是网络电话机(eth口的电话机,dhcp得到内网IP),PC机(以太网口或者wifi的笔记本),平板,安卓电视盒,也可以是手机(用wifi,无所谓电信/联通还是移动)当然还有安卓手表
与asterisk相同的软件有很多,著名的有elastix,他们一般用于centos服务器,特点是扩展性强(如果你选的是虚拟机安装,随时可以扩大)。微软的lynx也是公司内应用著名代表.
sip协议的client软件很多,在PC上是X-Lite,我一般推荐Zoiper,免费,可以运行在各种手机上(iPhone,android,WP10),收费的更多,比如Bria。支持L2TP(virtual**)的以太网电话座机也在淘宝上可以买到(用于在家里打出公司的电话,带l2tp的virtual**)。
本文的基本配置完全可以在其他OpenWRT设备上运行asterisk。我自己就是在mikrotik的metarouter上先成功运行OpenWRT,然后推广到其他OpenWRT的。愿意给mikrotik做个广告,tunnel特别多,你懂的!!!
***************************************************************************************************************************************************
然后我要承认LEDE只是幌子,因为这里是OpenWRT版,而树莓派不装LEDE也完全可以运行Asterisk,除了Rasbian,有人专门做了RAS-PBX。而且LEDE支持的似乎还很旧。我自己没有用LEDE,原因也比较奇葩:我不喜欢WEB配置界面,而宁愿写*.conf, 当然web上手还是很快的,asterisk就有一个GUI
废话少说这是LEDE上装asterisk的命令
opkg install asterisk18 asterisk-gui asterisk18-app-system asterisk18-chan-local
油管上有个阿拉伯语的安装视频,听不懂也能看懂。用路由器的最大优势是:谁家可以省掉路由器?你可以没有pc,没有电视盒,没有fq,这些功能树莓派都可以代替! 但是,缺啥再补啥,树莓派毕竟还小。我建议与路由器分开,主要是与防火墙隔离,因为拨号机器人(听名字就知道历史比人工智能,大数据,模糊决策等久远)比我们想的厉害的多
好在linux上的应用一般只要配置,保存sip.conf和extensions.conf两个文件就可以,asterisk的GUI下配置的还要备份好users.conf
如果在树莓派的Rasbian操作系统下,也就是不用OpenWRT,那么命令是
sudo apt-get install asterisk asterisk-config asterisk-core-sounds-en-gsm
需要asterisk-gui的同学自己再找找网上的资源。如果不喜欢自己配置,有个试用minisipserver也很不错。不过树莓派的精神是重在折腾,这类收费我们是不去的。
再继续看下去之前,建议先看看 https://zh.wikibooks.org/zh/Asterisk权威指南/前言,搞清楚几个电话上的概念。我的另一个帖子把asterisk装在routerboard的虚拟机中,metaRouter,有兴趣也可以看看
接下来是配置,一般是先建立几个分机101~104。在sip.conf下,一般添加在最后
[101]
type=friend
host=dynamic
secret=101
context=local
dtmfmode=rfc2833
[102]
type=friend
host=dynamic
secret=102
context=local
dtmfmode=rfc2833
[103]
type=friend
host=dynamic
secret=103
context=local
dtmfmode=rfc2833
[104]
type=friend
host=dynamic
secret=104
context=local
dtmfmode=rfc2833
在extendions.conf的文件中,【local】下,注意刚才每个分机下都有context=local
exten => 101,1,Dial(sip/101)
exten => 102,1,Dial(sip/102)
exten => 103,1,Dial(sip/103)
exten => 104,1,Dial(sip/104)
而后就可以试试相互间是否可以打通了:手机上装一个sip软件(看附件的图),有很多;我自己是zoiper,原因又是奇葩的:je suis 1%er.也就是windows手机,而zoiper支持android/iPhone和win10手机。一般要设置的就是你树莓派的IP地址(最好和wifi在同一个网段上,虽然ping通的IP都是可以得,但是现在是最简单的情形下,还没考虑NAT等的复杂环境),分机号101,102,103,104都可以,口令(就是secret)也是。然后就先庆祝一下吧,毕竟第一次打通电话已经很开心了**** 除了IP地址(手机软件可能问你要的是domain),其他都填101,可以空着先空着,别影响庆祝
接下去就是如何打电话出去,直奔主题,买一个账号,应该也会告诉你
1,电话号码(打出后别人要看到你的号码;
2,账户(一般就是电话号码);
3,服务器的IP,或者domain(用dns翻译到IP地址);
服务好的也会给你一个sip.conf下的例子,不同provider下多少会有些不同
要把这些放进sip.conf文件中———找到【general】加上一行register
[general]
context=public ; 一般加在这句之后
register => 号码:口令@IP地址
然后在sip.conf文件最后,也就是我们已经建立的[101]...[104]之后
[outgoing] ;随便取个名字,在extensions.conf下会用到这名字
type=friend
secret=得到的密码
username=账户
host=ip地址或域名
dtmfmode=rfc2833
canreinvite=no
disallow=all
allow=ulaw
allow=alaw
allow=gsm
insecure=port,invite
context=incoming ;设置打进来时再考虑
在extensions.conf文件【local】下,拨号规则
;如果拨了5位数以上,以9开头,就把电话打到外线去
exten => _9XXXX.,1,Log(NOTICE,Dialout from ${CALLERID(all)} to ${EXTEN:1})
exten => _9XXXX.,n,Set(CALLERID(num)=提供的电话号码)
exten => _9XXXX.,n,Dial(SIP/outgoing/${EXTEN:1},60) ;其中outging就是刚才在sip文件最后建立的context,{EXTEN:1}是你打出的号码,去掉了9。如果不要外拨9起始, _9XXXX.就改为_XXXXX.,{EXTEN:1}改为{EXTEN}相关的语法看权威指南
exten => _9XXXX.,n,Playtones(congestion)
exten => _9XXXX.,n,Hangup()
只是为了表示位置,这些是刚才加的
exten => 101,1,Dial(sip/101)
exten => 102,1,Dial(sip/102)
exten => 103,1,Dial(sip/103)
exten => 104,1,Dial(sip/104)
细节问题慢慢解释,我也还在看。因为打出电话了,有点兴奋,都不知道自己写了啥,以后补充吧
**********************************************************
关于两个asterisk系统相互对打电话
其实真正的问题是如何分布电话内部分机号码,最好先画好图再做;新加了一台,上面的号码都是2XX,原来那台上都是1XX。
sip.conf文件要修改的部分
【general】
register => ast88:pwg2202@192.168.88.11 ;这一行的账号和口令在另一台服务器上设定【ast88】下,与下面【ast3】格式一样
;最好增加这两行,如果登记不成功不会无限制的做下去,限时20秒,限制20次
registertimeout=20
registerattempts=10
[ast3] ;这个是被拨入的定义
type=friend
secret=pwg1101
host=dynamic ;允许另一台从任何IP来
username=ast3
disallow=all
allow=ulaw
allow=alaw
context=local ;这个local就是diaplan里用到的拨号定义
[ast88];这个是拨出的定义
type=friend
username=ast88
secret=pwg2202
host=192.168.88.11 ;另一台服务器的IP
fromuser=ast88
context=local
dtmfmode=rfc2833
insecure=very
disallow=all
allow=ulaw
allow=alaw
extensions.conf文件
【local】 ;与context=local 先对应的部分
增加了这样一句,我定义1开头的3位数都在ast88(另一台服务器)
exten => _1XX,1,Dial(sip/${EXTEN}@ast88,40)
进入asterisk -vvvr后,sip reload,dialplan reload,应该可以看到(本机ast3,另一台ast88)
Connected to Asterisk 11.13.1~dfsg-2+b1 currently running on raspberrypi (pid = 653)
raspberrypi*CLI> sip show peers
Name/username Host Dyn Forcerport Comedia ACL Port Status Description
201 (Unspecified) D Auto (No) No 0 Unmonitored
202 (Unspecified) D Auto (No) No 0 Unmonitored
203/203 (Unspecified) D Auto (No) No 0 Unmonitored
204/204 (Unspecified) D Auto (No) No 0 Unmonitored
ast3/ast3 192.168.88.11 D Auto (No) No 5060 Unmonitored
ast88/ast88 192.168.88.11 Auto (No) No 5060 Unmonitored
6 sip peers [Monitored: 0 online, 0 offline Unmonitored: 2 online, 4 offline]
raspberrypi*CLI>
****************************************************************************
最常用命令
sip show users
sip show peers
sip show peer 201 ;显示201分机,是一个连上来的分机
dialplan show local ;显示local,这是一个拨号的定义
做了任何修改都需要重新启动一下才起作用
如果sip.conf做了修改:
raspberrypi*CLI> sip reload
extensions.conf改动后,命令是
raspberrypi*CLI>dialplan reload
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
查看全部评分
|