前几天把N1上基于armbian系统的asterisk安装配置搞定了,遗留的缺陷是N1只有一个网口,不能接入公网,所以把openwrt又翻出来,琢磨了一番,也是可以搞定的。
之前openwrt搭建失败是安装的依赖包不全,导致sip client可以注册成功,但一打电话,就报错
[2021-10-03 12:21:29] ERROR[13509][C-00000002]: rtp_engine.c:435 ast_rtp_instance_new: No RTP engine was found. Do you have one loaded?
尝试安装asterisk-res-xxxx后,又产生新的依赖,所以一直没搞定。
观察openwrt代码发现,最新的lean代码已经引用的是18.5.1的asterisk代码,非常新了,在ubuntu上下载相同代码,用menuselect命令就可以看出依赖关系,逐步添加依赖包,就可以解决依赖问题。
还有一个办法是把18.5.1代码下载到本地,用grep或者windows上source insight等工具搜索报错的函数,这样也能找出依赖关系,当然,这个成本就高些,实在没有线索可以尝试
最终整理的依赖关系如下:
chan-sip => res-rtp-asterisk => res-pjproject => res-sorcery
以Lean openwrt为例,.config代码中需要手动修改,编译如下模块
CONFIG_PACKAGE_asterisk=y
CONFIG_PACKAGE_asterisk-app-confbridge=y
CONFIG_PACKAGE_asterisk-bridge-builtin-features=y
CONFIG_PACKAGE_asterisk-bridge-simple=y
CONFIG_PACKAGE_asterisk-bridge-softmix=y
CONFIG_PACKAGE_asterisk-chan-sip=y
CONFIG_PACKAGE_asterisk-res-pjproject=y
CONFIG_PACKAGE_asterisk-res-rtp-asterisk=y
CONFIG_PACKAGE_asterisk-res-rtp-multicast=y
CONFIG_PACKAGE_asterisk-res-sorcery=y
如果是自己安装,那么需要安装如下ipk
asterisk
asterisk-chan-sip
asterisk-res-pjproject
asterisk-res-rtp-asterisk
asterisk-res-rtp-multicast
asterisk-res-sorcery
安装完毕后,openwrt不会运行asterisk,参考下问,需要配置开启
uci set asterisk.general.enabled='1' && uci commit
openwrt上运行asterisk搭建电话语音网关,对接电信ims-sip配置上遇到的一些坑_NAS存储_什么值得买
20211109刷新:
op搭建的sip服务出现了手机4g网络呼叫单通无声现象,排查需要在sip.conf中增加如下:
1. externhost = xxxx
2. nat = yes
3. localnet = 192.168.1.0/255.255.255.0
op需要安装额外的包:持续刷新
asterisk
asterisk-app-confbridge
asterisk-app-voicemail
asterisk-bridge-builtin-features
asterisk-bridge-simple
asterisk-bridge-softmix
asterisk-chan-sip
asterisk-codec-gsm
asterisk-codec-ulaw
asterisk-format-gsm
asterisk-format-wav
asterisk-format-wav-gsm
asterisk-res-pjproject
asterisk-res-rtp-asterisk
asterisk-res-sorcery
asterisk-sounds
asterisk的声音包默认不全,在系统的/usr/share/asterisk目录下,需要拷贝其他中文语言,有开源下载
asterisk 的语言留言目录需要迁移到其他目录,否则容易把op空间撑满
默认是在/var/spool目录
调试命令
1、运行调试常用命令
- ./asterisk & #后台启动
- ./asterisk -vvvc #启动asterisk 并尽量多的在后台显示调试信息
- ./asterisk -r #连接asterisk控制台
- set verbose #设置打印信息
2、asterisk控制台下常用命令
- set reload #重新加载sip配置信息
- sip set debug on #设置显示更多的Sip信息
- sip set debug off #关闭更多sip信息显示
- sip show channels #显示活动的sip通道
- sip show peers #显示已定义的sip peer
- dialplan show #显示拨号方案
- dialplan reload #重新加载拨号方案
- stop gracefully #优雅的终止asterisk
- stop now #立即停止asterisk
- module show #显示所有已加载模块
- module load xxxxx.so #加载xxxxx.so 模块
- module reload xxxx.so #重新加载xxxx.so
- module unload xxxx.so #卸载xxxx.so模块
- core show applications #显示所有的应用 如:Dial、Radius、Hangup、Answer等
- core show channels #显示所有的通话频道
- core show codecs #显示所有支持的编解码器
- core show funcions #显示所有的功能函数