找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 41090|回复: 158

树莓派+LEDE,用asterisk,手机可以用wifi打出到电话网,费用算在固定电话上

  [复制链接]
发表于 2016-9-5 22:53 | 显示全部楼层 |阅读模式
本帖最后由 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



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

评分

参与人数 1恩山币 +1 收起 理由
wee*** + 1 亲,你这么厉害,我想做你的经纪人!

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
发表于 2016-9-5 23:03 | 显示全部楼层
设置参数怎么搞呢?
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2016-9-5 23:03 | 显示全部楼层
没了???
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2016-9-5 23:15 来自手机 | 显示全部楼层
这就安装给包包?

点评

树莓派上的包包不需要我发,网络连上就能装的  详情 回复 发表于 2016-9-5 23:19
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2016-9-5 23:19 | 显示全部楼层
xuefulin 发表于 2016-9-5 23:15
这就安装给包包?

树莓派上的包包不需要我发,网络连上就能装的
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2016-9-5 23:31 | 显示全部楼层
之前想搞网络电话来着,不太懂,现在竟然有现成的,马克
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2016-9-6 00:42 来自手机 | 显示全部楼层
现在即时通讯都带sip功能,搞来做什么

点评

做sip的服务器。 就是因为各种设备都带有sip功能,我的智能电视和手表都能直接打电话了。另外,如果给他一个公网的IP,你在星巴克喝café时,打出电话也不需要向移动付费啊  详情 回复 发表于 2016-9-6 21:49
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2016-9-6 00:48 | 显示全部楼层
66666 我来顶个贴
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2016-9-6 21:49 | 显示全部楼层
copperfiled 发表于 2016-9-6 00:42
现在即时通讯都带sip功能,搞来做什么

做sip的服务器。
就是因为各种设备都带有sip功能,我的智能电视和手表都能直接打电话了。另外,如果给他一个公网的IP,你在星巴克喝café时,打出电话也不需要向移动付费啊
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2016-9-7 22:49 | 显示全部楼层
想做两个服务器对打,谁有经验做个指点?好在我的routeboard可以做虚拟机和树莓派对打
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2016-9-8 16:43 | 显示全部楼层
mark下,等更。。。。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2016-9-8 17:24 来自手机 | 显示全部楼层
进来学习,谢谢分享。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2016-9-8 21:17 来自手机 | 显示全部楼层
好是好,然而都用微信了

点评

我也用facebook/twitter/google+,但是上班是上班,朋友圈内我不希望和工作混在一起。工作的时候还是用linkedin  详情 回复 发表于 2016-9-9 23:13
微信只能和朋友对话,不是电话网。倒是skype提供打到电话的功能,就是付费的部分。实际上skype也提供sip账号,asterisk是可以与之对接的 对公司而言,客户看到的是总机的号码而不是员工的手机号,对员工而言,上班  详情 回复 发表于 2016-9-9 23:08
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2016-9-9 23:08 | 显示全部楼层
lcsuper 发表于 2016-9-8 21:17
好是好,然而都用微信了

微信只能和朋友对话,不是电话网。倒是skype提供打到电话的功能,就是付费的部分。实际上skype也提供sip账号,asterisk是可以与之对接的
对公司而言,客户看到的是总机的号码而不是员工的手机号,对员工而言,上班就不该用自己的话费。实际上即使不在公司内,我也可以virtual**先到自己公司网络,再打电话出去。手机是自己的,话费是公司的。就花费而言,公司也是省话费的,因为这不是移动的话费,而是固话的话费
钉钉之类的应用,其实也是用sip的,只是他们提供企业服务器,而我用的是树莓派。实际上我更推荐mikrotik的metaRouter方案,他的路由器上可以开一个很小的虚拟机,也就是把公司的电话交换机放进了路由器里。局域网是不会不需要路由器的
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2016-9-9 23:13 | 显示全部楼层
lcsuper 发表于 2016-9-8 21:17
好是好,然而都用微信了

我也用facebook/twitter/google+,但是上班是上班,朋友圈内我不希望和工作混在一起。工作的时候还是用linkedin
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-26 15:21

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表