Asterisk chan_alsa 使用方法

在Asterisk 中,通常打电话都是建立在通道与通道之间,pbx 只是中转作用,那pbx 有没有办法直接与分机通话呢?有的,那就是使用chan_alsa 。
要求pbx 板子有麦克风和耳机接口,并且安装了alsa声卡驱动,alsa 是 linux 系统下的声卡驱动框架,也叫asoc。

如何使用?

  1. 加载chan_alsa.so
  2. 按需修改 /etc/asterisk/alsa.conf (一般使用默认即可)
  3. 修改拨号规则 /etc/asterisk/extensions.conf
  4. 自动接听
  5. 发起呼叫
1. 加载chan_alsa.so

1.1 asterisk -rvvvvvddddd 进入 cli 命令行,(输入quit 可退出 cli)
1.2 在cli 命令行输入 module load chan_alsa.so
1.3 如果加载失败,可能是因为已经加载了 chan_oos.so,与 chan_alsa.so 不能共存,
解决办法:先 module unload chan_alsa.so
1.4 如果报 snd_pcm_open 失败,检查声卡是否被其它进程占用

2. 按需修改 /etc/asterisk/alsa.conf (一般使用默认即可)
3. 修改拨号规则 /etc/asterisk/extensions.conf
[from-internal]
;当 sip 拨号 9000 时,接通到 Console,Console 就对应于ALSA, x 无任何意义,其实任意字母都可以
exten => 9000.,1,Dial(Console/x,30)
same => n,Hangup()

;...省略....

;这里之所以是local ,是因为alsa.conf 定义了 context=local
[local]
exten => s,1,Dial(SIP/6001,60)       ; 使用Console 发起呼叫时,转接到SIP/6001
same => n,Hangup()

;当console dial 6001123456时,SIP/6001来电显示号码123456
exten => _6001X.,1,Set(CALLERID(number)=${EXTEN:4}) 
same => n,Dial(SIP/6001,60)
same => n,Hangup()

4. 自动接听

alsa.conf 中默认 autoanswer=yes
当sip/6001 拨号 9000 时,alsa 会立即接通,无等待。这是通过耳机(带麦克风)接到pbx 上可以与sip/6001 进行通话。

5. 发起呼叫

有三种方法:
5.1 进入cli ,输入命令 console dial 6001123456
5.2 不用进入cli, asterisk -rx “console dial 6001123456” 其实跟方法本质一是一样的,只不过是在cli外面
5.3 使用 call file
在 /var/spool/asterisk/ 目录下新建 tmp/test.call 文件
cd /var/spool/asterisk/
mkdir tmp
vi tmp/test.call

Channel: SIP/6001
CallerID: 123456

Context: from-internal
Extension: 9000
Priority: 1

cp tmp/test.call outgoing

asterisk 内部有线程会一直检查 outgoing 目录是否有call 文件,有就解析call 文件,并发起呼叫。

参考资料:
Asterisk config alsa.conf - VoIP-Info
https://www.voip-info.org/asterisk-config-alsaconf/
Asterisk auto-dial out - VoIP-Info
https://www.voip-info.org/asterisk-auto-dial-out

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值