如何使用 Docker 安装 Asterisk?

VoIP 不只是技术人员的专利。它适用于任何准备深入 SIP、pjsip 和扩展世界的人,同时还能玩转 Docker!本文将向你展示如何使用 Docker 安装 Asterisk(一款流行的开源通信服务器)。

什么是 Asterisk?

Asterisk 就像通信服务器中的瑞士军刀。它为 VoIP、IVR 系统和呼叫队列(现代电话的支柱)提供动力。将它与 Docker 搭配使用,你就拥有了一个易于部署的便携式通信系统。

步骤1:构建 Docker 映像

首先创建了一个 Dockerfile,并包含了基本配置文件:pjsip.conf、extensions.conf 和 asterisk.conf。下面是获取镜像文件的方法:

docker pull nikhildhole/asterisk-setup

或自己构建:

git clone https://github.com/nikhildhole/asterisk-zoipher-ari 
cd asterisk-docker-setup 
docker build -t asterisk-setup 。

这将打包你的 Asterisk 安装,其中包含必要的配置文件。

步骤2:运行 Asterisk 容器

以交互方式运行容器:

docker run -it --network="host" -p 5060:5060/udp asterisk-setup /bin/bash

进入容器后,启动 Asterisk:

asterisk

要重新进入运行中的容器:

docker exec -it asterisk-setup /bin/bash

步骤3:配置

pjsip.conf

该文件用于设置 SIP 端点。下面是一个示例:

[general]
nat=yes
external_signaling_address=172.17.0.1
external_media_address=172.17.0.1
[transport-udp]
type=transport
protocol=udp
bind=0.0.0.0:5060
[7000]
type=endpoint
context=from-external
disallow=all
allow=ulaw
transport=transport-udp
auth=7000
aors=7000
[7000]
type=auth
auth_type=userpass
password=7000
username=7000
[7000]
type=aor
max_contacts=1

本例使用基本身份验证和端点配置设置了扩展名 7000、7001 和 7002。

extensions.conf

该文件用于路由呼叫并处理语音邮件和通话录音等功能:

[from-external]
exten => 7000,1,Verbose(1, "Incoming call to extension 7000 from ${CALLERID(num)}")
exten => 7000,n,Set(RECORDING_FILE=/var/lib/asterisk/sounds/${UNIQUEID}.wav)
exten => 7000,n,MixMonitor(${RECORDING_FILE},b)
exten => 7000,n,Playback(hello-world)
exten => 7000,n,Hangup()
exten => 7001,1,Answer()
exten => 7001,2,Dial(SIP/7001,60)
exten => 7002,1,Answer()
    same => n,Set(RECORDING_FILE=/var/spool/asterisk/monitor/1001-${UNIQUEID}.wav)
    same => n,MixMonitor(${RECORDING_FILE},b)
    same => n,Dial(SIP/7002)
    same => n,Hangup()

通过这种设置,您可以在分机之间拨打电话,甚至播放音频文件或录制对话。

步骤 4:调试

每个旅程都会遇到一些障碍。以下是我遇到的情况:

  • 扩展程序无法注册:确保 pjsip.conf 中的绑定地址与容器的网络设置相匹配。
  • 呼叫无法连接:检查防火墙规则,确保 UDP 端口 5060 处于打开状态。
  • 音频问题:仔细检查 external_signaling_address 和 external_media_address 设置。

调试提示:使用 asterisk -rvvv 进入 Asterisk CLI 并实时排除故障。pjsip show endpointscore show calls 等命令是救星。

步骤 5:成功!

有了这个设置,就可以在分机 7001 和 7002 之间顺利拨打电话了。添加 Zoiper 或其他 SIP 客户端,就可以使用了!

最后提示:使用 ubuntu 不要使用 windows,它在 windows 上不起作用。

作者:Nikhil Dhole

本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/55529.html

(0)

相关推荐

发表回复

登录后才能评论