自建Asterisk VoIP服务器:从云PBX账单到开源电话系统的完整落地指南
发布时间:2026/10/1 10:00:17来源:尧图网络
说实话我第一次认真考虑自建VoIP服务器Asterisk不是出于折腾的兴趣而是被一张云PBX账单刺激到了。公司一百多号人分机总数不过五十每月给托管电话系统交的费用够买好几台正经服务器了。后来我一算用一台普通的Linux服务器跑Asterisk内部通话、语音留言、呼叫队列这些核心需求都能覆盖而且Asterisk本身开源免费投进去的只是硬件和运维时间。这篇文章就是把我从零开始安装、配置、排错到上线保护这一路走下来的完整记录适合看得懂Linux基本命令、想自己掌控电话系统的运维或者技术负责人参考。我默认你手里已经有一台干净的系统比如Debian或者Ubuntu也默认你对SIP、软电话这些词不陌生。如果这些概念还比较模糊文里讲到关键地方我会补一句解释。下面按我实际动手的顺序来写从选型到上线安全全部走一遍。1. 从云PBX账单到自建Asterisk这笔账怎么算1.1 Asterisk在VoIP生态里的角色Asterisk本质上是一个软交换Softswitch和PBXPrivate Branch Exchange企业内部电话交换机的合体。它可以把传统的电话线路、SIP运营商的语音中继、IP话机、软电话客户端全部串联起来充当一个中枢角色谁呼叫谁、呼叫怎么路由、振铃逻辑如何执行、语音流如何处理都由它统一调度。很多人第一次看Asterisk的文档会蒙圈因为它的架构既有经典的拨号计划Dialplan又有面向现代SIP的PJSIP栈还要理解通道Channel、编解码Codec、上下文Context等等一堆概念。但我的体会是早期不需要全部弄明白先把一个最小闭环跑通——分机能注册、分机间能通话——后面再按需扩展。Asterisk发展了几十年功能边界非常大从家庭实验室里的两三个分机到运营商级别的电信平台都有它的身影。1.2 为什么是Asterisk而不是FreeSWITCH或FreePBX搭建VoIP服务器大家容易上来就问到底选Asterisk、FreeSWITCH还是FreePBX我当时的决策逻辑很简单FreePBX是一个基于Asterisk的图形化管理面板适合不想碰配置文件、偏好网页点选的用户。但如果你需要做精细的定制、或者想搞懂底层机制图形界面反而会变成一层黑盒出问题不好定位。FreeSWITCH在媒体处理和高并发转发上表现优秀很多运营商级别的语音平台使用它。但它的学习曲线更陡文档和社区讨论规模不如Asterisk大。Asterisk胜在生态成熟、资料多、模块化程度高而且SIP协议栈从老旧的chan_sip迁移到chan_pjsip之后稳定性和功能都有了长足进步。绝大多数中小企业的电话系统需求Asterisk完全能覆盖。对于第一次自建电话系统的团队我建议老老实实从Asterisk上手。FreeSWITCH的优势要到万级并发、复杂媒体转码这种场景才体现得出来而一般企业内部系统远达不到这个量级。1.3 版本选择长期支持版才是归宿Asterisk的发布节奏分为LTSLong Term Support长期支持和普通版本。LTS版本维护周期长、升级路径清晰适合生产环境。目前新项目优先考虑18 LTS或20 LTS这两个版本发布较早、社区反馈充分第三方模块和周边工具兼容性也最好。我选的是20 LTS。原因有几点一是PJSIP栈在18以后已经非常稳定20版本在编码和解码器、安全修复、WebRTC支持等细节上更完善二是社区里关于20的踩坑记录已经比较丰富遇到问题搜得到解法。不要以为版本越新越好Asterisk的普通版本迭代速度快功能激进但放在生产环境里没必要承担这个风险。1.4 系统资源投入的底线很多人对硬件有误解以为电话系统一定要专门设备。实际上一个几十并发的小型内部系统2核CPU、4GB内存的虚拟机就完全够跑。语音通话消耗的主要资源是CPU用于编解码运算内存方面Asterisk本身加上系统开销一般占用不超过1GB。我第一台部署用的机器是4核8GB的云主机同时在线通话峰值约二三十路CPU占用一直没超过30%。如果你还打算跑录音存储、话单统计这些额外服务磁盘和CPU按需加点预算就行。最重要的其实是网络质量这个后面单独讲。2. 安装前的最后检查操作系统、端口规划和硬件基线2.1 操作系统选择Debian系依然最顺手Asterisk官方支持多种类Unix系统但我个人最推荐Debian 12或Ubuntu 22.04 LTS。为什么这两个系统的软件仓库里已经包含了编译Asterisk所需的绝大多数依赖apt一句命令就能装完省去很多手工编译第三方库的麻烦。CentOS和Rocky Linux这类RHEL系也可以跑如果你对RHEL系运维更熟练用起来问题不大。但对新上手的人我建议直接选Ubuntu 22.04 LTS。网络上关于“Ubuntu Asterisk”的教程和故障案例最多遇到问题更容易找到现成答案。2.2 网络端口规划信令与媒体分开Asterisk涉及两类核心流量信令流量负责建立通话、拆除通话、完成注册等控制指令属于SIP协议范畴。默认使用UDP 5060端口也可以启用TCP 5060如果走加密TLS则用5061。媒体流量通话中的实际语音数据基于RTP协议传输。Asterisk默认分配一段连续的UDP端口通常配置为10000-20000。防火墙和安全组必须把这两类流量都放行。新手最常见的问题就是只开了5060端口结果分机注册没问题一打电话就断——因为媒体的UDP端口被挡了。参考端口规划如下用途协议端口开放范围建议SIP信令UDP5060仅对需要的IP段开放SIP-TLS信令TCP5061如不使用加密可关闭RTP媒体流UDP10000-20000仅对需要的IP段开放HTTPWebRTC等TCP8088按需开启生产建议走HTTPS反向代理2.3 时间同步SIP最容易被忽略的前提SIP协议在认证、注册过期、通话计费时都依赖时间戳。如果服务器时间和真实时间偏差过大会出现注册认证失败、会话异常超时等诡异问题。安装完系统后第一件事就是配置NTP时间同步命令很简单apt install -y systemd-timesyncd timedatectl set-ntp true timedatectl status这个步骤花不了两分钟却能省掉后面排查疑难杂症的大量时间。2.4 NAT环境下的部署思路如果你把Asterisk部署在云主机上而分机分布在办公室内网那么NAT问题几乎一定会找上门。Asterisk服务器在公网软电话在内网SIP信令里携带的IP地址是内网私网地址回程媒体流就会发到无法路由的地址上。解决办法有两类方向一类是Asterisk侧配置外部地址和网络拓扑信息另一类是关闭direct_media直接媒体功能让所有媒体都经过Asterisk中转。具体配置在故障排查章节里我会详细展开安装前先理解这个拓扑后面配置心里有数。3. 源码编译全过程从依赖到systemd托管的Asterisk3.1 依赖安装为什么要那么多包Asterisk不是一个单体静态编译的软件它依赖大量系统库XML解析需要libxml2TLS加密需要OpenSSL数据库存储需要SQLite音频处理需要相应的音频库。缺少任意一个关键依赖编译过程就会中断。我用的Ubuntu 22.04上一次性安装依赖apt update apt install -y build-essential git curl wget pkg-config \ libxml2-dev libncurses5-dev libsqlite3-dev \ libssl-dev libedit-dev libjansson-dev uuid-dev \ libtool-bin automake bison flex这里稍微解释几个不太常见的libjansson-devAsterisk的JSON解析库PJSIP配置和部分REST API功能要用。uuid-dev用于生成唯一标识符语音留言、CDR话单记录都会用到。libedit-dev提供Asterisk命令行接口CLI的交互编辑能力没有它虽然能编译但使用体验很差。3.2 下载源码与校验完整性到Asterisk官网下载最新的20 LTS源码包。我习惯下载tar.gz包而不是克隆Git仓库因为tar包附带完整的预生成构建脚本省去自动生成配置的时间。cd /usr/src wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20-current.tar.gz tar xf asterisk-20-current.tar.gz cd asterisk-20.*/解压后建议看一眼README和CHANGES特别是CHANGES文件里面记录了新版本的行为变化和潜在不兼容点。这一步容易被跳过但真出问题时往往就是版本行为差异导致的。3.3 configure参数为什么必须使用bundled模式Asterisk很多核心功能依赖PJSIP库。PJSIP是一个独立的开源SIP协议栈Asterisk虽然已经将其作为子模块集成但系统自带的PJSIP版本可能过旧、带补丁甚至缺失。如果直接使用系统库编译出来会有各种奇怪问题。官方推荐的做法是使用bundled方式./configure --with-pjproject-bundled --with-jansson-bundled--with-pjproject-bundled会告诉构建系统使用Asterisk源码树中自带的PJSIP版本并且由Asterisk自动完成PJSIP的编译和打补丁。这样能保证PJSIP版本与Asterisk严格匹配避免版本错位导致的注册异常、编解码协商失败等问题。--with-jansson-bundled同理Jansson是JSON库捆绑构建后保证行为一致。如果你的系统已经装了兼容版本的PJSIP也可以不加这个参数直接让Asterisk去找系统库。但对我这种希望稳定运行、不想反复排查环境差异的人来说bundled是永不后悔的选择。3.4 编辑模块选择menuselect怎么用configure完成之后会生成一个叫menuselect的菜单工具用来选择哪些模块编译、哪些模块不编译make menuselect正式环境不建议直接点默认编译。我建议至少在menuselect里做几个调整增加chan_sipAsterisk 20默认以chan_pjsip为SIP主栈老的chan_sip驱动需要手动勾选。新项目完全可以不用chan_sip但如果你的旧配置是围绕chan_sip写的迁移过渡期可能需要。去掉不用的编解码模块默认编译会包含大量编解码器如g729、opus、silk等。多一个模块多一个维护面也占内存。命令行下也可以直接跳过menuselect使用默认配置编译出来的Asterisk已经足够跑通大多数场景。我第一台服务器就是默认配置编译的后面需要模块再重新编译也不麻烦。3.5 编译、安装、注册系统服务编译过程比较耗时用nproc看CPU核数然后并行编译make -j$(nproc) make install make samples make config逐条解释一下make install把编译好的二进制和模块安装到系统目录。make samples生成一套默认配置文件到/etc/asterisk。第一次安装时强烈建议执行它提供了一份可参考的完整配置骨架很多默认配置可以直接改着用。生产环境如果追求精简可以手动创建但新手不要跳过。make config生成systemd服务单元注册asterisk服务。执行后就可以用systemctl start asterisk启动服务了。验证安装是否成功asterisk -V如果输出类似Asterisk 20.x.x说明安装成功。再启动服务systemctl enable asterisk systemctl start asterisk注意Asterisk服务默认以asterisk用户运行而不是root。安装过程中会自动创建asterisk系统用户和相应目录。如果遇到权限问题先检查/var/log/asterisk和/var/run/asterisk目录的属主是否正确。3.6 进入CLI一切故障从这里开始Asterisk的CLI是运维和排错的主战场。连接运行中的服务asterisk -rvvv-r表示连接已经运行的服务-vvv是提高日志详细级别让SIP事件、拨号计划匹配过程全部显示出来。熟悉这个命令比什么都重要后面你会反复用到它。4. 最小可用的电话系统SIP分机与拨号计划的一次打通4.1 pjsip.conf理解SIP对象模型安装完成后真正的重头戏是配置。Asterisk 20的SIP配置集中在/etc/asterisk/pjsip.conf内置对象模型比老配置文件复杂但理解后更清晰。每个分机至少涉及三类对象endpoint端点逻辑上的用户终端定义了用户的行为、编解码策略、归属上下文。auth认证存储分机的用户名和密码用于SIP认证。aor绑定描述分机联系地址Contact的绑定信息这里设置最大注册数等参数。一个最简分机配置如下[transport-udp] typetransport protocoludp bind0.0.0.0:5060 [6001] typeendpoint contextinternal disallowall allowulaw,alaw auth6001-auth aors6001-aor [6001-auth] typeauth auth_typeuserpass username6001 password这里写个强密码 [6001-aor] typeaor max_contacts1几处值得注意transport-udp先定义传输方式绑定所有网卡的5060端口。如果之后要加TLS再添加一个transport段。contextinternal这个分机属于哪个拨号计划上下文。“internal”是通用的内部分机上下文名拨号计划里必须有一个同名的context。disallowall, allowulaw,alaw禁用全部编解码再显式启用ulaw和alaw。避免默认启用一堆不常用编码防止协商时出现意外。auth和aor的关联endpoint通过auth6001-auth和aors6001-aor把认证和绑定关系串起来。三个对象协同工作缺一个分机都注册不上。如果分机很多强烈建议用模板。pjsip.conf支持模板继承定义一个基础模板其他分机引用它配置量可以减少80%。4.2 extensions.conf拨号计划告诉你呼叫往哪里去拨号计划是Asterisk的灵魂它决定了一次呼叫从接通到挂断的完整流程。默认配置文件/etc/asterisk/extensions.conf中每个context是一个独立空间不同context之间的分机互不可见。企业最典型的结构是把内部分机放在一个context里外部线路单独一个context。我们先用一个最小拨号计划让分机能自测回音以及分机互拨[internal] ; 9001 为内置回声测试 exten 9001,1,Answer() same n,Echo() same n,Hangup() ; 规则匹配 6000 到 6999 的分机互拨 exten _6XXX,1,Dial(PJSIP/${EXTEN},30) same n,Playback(vm-goodbye) same n,Hangup()这里解释两句第一行exten 9001,1,Answer()当有人拨打9001时第一步接听。same n,表示继续上一条目的下一条应用。Echo()是Asterisk内置的语音回音测试能直接听到自己的声音用于验证通话路径是否通。第二段_6XXX是一个通配符模式匹配任何6000到6999的四位号码。Dial(PJSIP/${EXTEN},30)表示拨打PJSIP通道的同名分机30秒超时。如果对方未接听播放“再见”提示音然后挂断。拨号计划匹配规则中精确号码优先于模糊匹配所以拨9001一定走回声测试而不会落入_6XXX规则。4.3 软电话注册与实测配置完成后重启Asterisk生效systemctl restart asterisk再用CLI确认分机对象已经加载asterisk -rx pjsip show endpoints如果列出6001说明端点和认证已经正常加载。这时候在电脑或手机装一个软电话客户端。推荐两款MicroSIP轻量、免费、Windows和Linux都有适合测试。Zoiper功能更全支持更多协议个人使用免费。软电话里填写服务器地址Asterisk服务器的IP或域名用户名6001密码配置中的密码传输协议UDP保存并注册后软电话状态会变为在线。回到CLI输入asterisk -rx pjsip show contacts如果看到Contact状态为Avail说明注册成功。此时先拨打9001做回声测试能听到自己的声音说明信令和媒体通道都通了。再让6001呼叫6002两个分机就能互通。这一步是整个系统的地基。地基打好后续加外线、加IVR、加录音都是往这个框架里添砖加瓦。4.4 顺便一提语音流量分析能做什么调试过程中如果你用Wireshark抓包会发现RTP流里面是真正的语音编码数据。Wireshark的“Telephony - VoIP Calls”功能可以直接按通话维度展示SIP和RTP会话选中一条通话就能还原并播放录音。CTF流量分析里也经常出现VoIP题目核心思路就是把流量包中的RTP流提取出来转成音频文件再听内容。这个小技巧对排查通话质量问题也很有用不只是比赛用得着。5. 故障排查实录注册失败、单通与掉线背后的链路5.1 分机注册失败从认证状态逐段定位分机注册失败是最常见的第一道坎。现象通常是软电话显示“注册失败”或者“401 Unauthorized”。这里有几种可能第一用户名或密码不匹配。这是最多的情况。查看CLI输出asterisk -rvvv当软电话尝试注册时屏幕上会刷出大量SIP消息。如果看到SIP/2.0 403 Forbidden基本就是认证失败。检查pjsip.conf中username字段必须严格等于软电话填写的用户名密码需要与配置文件一致。注意有些软电话会把用户名写成“6001服务器IP”这其实不同用户名只要填6001。第二关联对象缺失。如果auth或aor对象没写全endpoint无法完成认证和绑定。CLI输入asterisk -rx pjsip show endpoint 6001检查输出中Auth和Aors字段是否已经正确关联。如果显示空白回去看配置文件确认auth6001-auth和aors6001-aor这些引用名字是否一致。第三防火墙拦截。UDP 5060端口需要在防火墙里放行。用tcpdump抓包tcpdump -i eth0 udp port 5060 -n如果只看到从软电话IP发来的包却没有任何返回包说明入站数据被防火墙或云安全组拦了。在NAT环境下还要确认路由器是否做了端口转发。这里分享一个排查顺序先看CLI日志再看防火墙再抓包。用排除法一步步缩小范围不要一上来就改一堆配置。5.2 注册成功但一拨就断RTP端口被忽略注册成功说明SIP信令没问题。但如果一打电话就立刻挂断或者对方振铃后一接通就断大概率是RTP媒体端口不通。Asterisk默认RTP端口范围在rtp.conf中定义。配置文件/etc/asterisk/rtp.conf[general] rtpstart10000 rtpend20000这就是为什么前面强调要放行UDP 10000-20000。在防火墙里执行ufw allow 10000:20000/udp云服务器还要在安全组里同步放行。测试时可以抓包观察tcpdump -i eth0 udp portrange 10000-20000 -n如果看到Asterisk发出RTP包但客户端回包到达不了或者出现ICMP端口不可达基本就是端口被防火墙丢弃。5.3 时通时断与高延迟频偏、丢包和编解码协商如果通话能建立但声音断断续续、或者延迟很大需要从网络质量和编解码两个维度排查。用Wireshark的“Telephony - RTP - Stream Analysis”功能可以直观看到RTP流的丢包率、抖动值、序列号连续性。网络层的主要问题是丢包和抖动语音对这两项极其敏感。企业内部WiFi环境尤其容易出现这个问题建议IP话机使用有线连接或者为语音流量单独配置SSID。编解码维度上如果协商到了一个带宽占用较大的编码格式例如G.722在带宽不足时也会出现卡顿。在pjsip.conf的endpoint中可以按带宽情况限制编码列表[6001] typeendpoint disallowall allowulaw allowalawulaw和alaw都是64kbps左右的编码带宽要求低兼容性好。如果对音质要求高可在内网条件下加入G.722。但公网跨地域时还是要谨慎。5.4 单通问题NAT协商的经典陷阱单通是SIP通话里最让人头疼的问题之一A能听到B的声音但B听不到A。表面上看通话已经建立媒体流大概率也走了问题出在SIP信令里的SDP会话描述协议部分所携带的IP地址不对。Asterisk在公网软电话在内网。客户端发出的SDP里它告诉服务器“把媒体流发到192.168.1.5”这是一个内网地址Asterisk无法把RTP包送达到这个地址就会造成B听不到A的声音。解决办法有两步第一步是关闭直接媒体强制所有媒体流经过Asterisk中转。在endpoint中[6001] typeendpoint direct_mediano这样即使客户端告诉对方一个私有地址Asterisk也会用自己的公网地址来中转媒体流。第二步是正确配置Asterisk对自身网络拓扑的认知。在pjsip.conf的全局段或者特定endpoint中[transport-udp] typetransport protocoludp bind0.0.0.0:5060 external_media_address你的公网IP local_net192.168.0.0/16local_net用于告诉Asterisk哪些是内网网段external_media_address告诉它在对外通信时使用哪个公网地址。这套配置解决了我当时遇到的单通问题也是云端部署最值得花时间研究的部分。5.5 频繁掉线注册周期和NAT超时不一致另一种常见现象是分机能用但每隔几分钟就掉线然后自动重注册。根本原因通常是NAT设备的会话老化时间比Asterisk的注册过期时间更短。Asterisk默认允许注册有效期最长3600秒但NAT设备可能30秒就丢弃空闲UDP映射。解决思路是缩短分机的注册刷新周期让分机在NAT映射过期前就发送保活包。在pjsip.conf的endpoint中设置[6001] typeendpoint timers_min_se90 timers_sess_expires300同时在aor中降低允许的最大过期时间[6001-aor] typeaor max_contacts1 remove_existingyes default_expiration120 minimum_expiration60 maximum_expiration3600 qualify_frequency60qualify_frequency60表示每60秒发送一次OPTIONS包探测分机在线状态这相当于一个周期性的心跳能保持NAT映射不被回收。这些都是我在实际部署中踩过的坑。每一项背后都对应着一个具体的网络机制理解了机制配置就不再是死记硬背。6. 上线前的安全加固把暴力破解挡在SIP端口之外6.1 为什么SIP服务器是攻击者的目标很多第一次部署Asterisk的人会有一个误区电话系统嘛有什么好攻击的实际上Asterisk默认暴露的SIP端口在全球互联网上每天都遭受大量扫描和暴力破解尝试。攻击者的目的多种多样打免费电话、拨打付费国际号码、利用服务器作为跳板发起进一步的攻击。我自己在公网部署后打开fail2ban日志看到的扫描记录里大量来源IP尝试用admin、123456这类密码做SIP认证。如果没有安全防护弱密码分机一旦被猜中账单损失和合规风险都不可忽视。6.2 端口与安全组最小化策略先把网络层收紧。除非你的外部合作伙伴确实需要直接拨打IP话机否则5060端口完全没有必要对所有公网IP开放。在云安全组和防火墙里把5060和RTP端口限制到可信IP范围。以下是一个相对稳妥的规则表来源目标端口允许动作办公室出口IPUDP 5060允许分公司出口IPUDP 5060允许办公室出口IPUDP 10000-20000允许其他UDP 5060拒绝其他UDP 10000-20000拒绝如果分机是在几个固定地点使用这样的白名单策略能极大减少攻击面。如果分机分布非常分散比如大量移动办公人员那就必须在口令强度和应用层防护上多下功夫。6.3 强口令与账号数量SIP分机的密码策略不能只靠系统自带的简单密码。我在初始配置时定了几个规则密码至少20位包含大小写字母、数字和符号分机号不连续、不长用一旦发现异常尝试立即禁用分机。管理上尽量减少暴露的敏感配置。Asterisk的manager接口AMI功能强大能远程执行CLI命令、查看通道状态如果配置不当就是后门。默认manager.conf监听在localhost即可不要暴露到公网[general] enabled yes bindaddr 127.0.0.1 port 5038如果确实需要远程管理请使用SSH隧道。6.4 fail2ban拦截暴力破解fail2ban是Asterisk场景下一件性价比极高的防护工具。它能监控Asterisk的安全日志发现多次认证失败后自动封禁来源IP。安装配置apt install fail2ban在/etc/fail2ban/jail.local中加入[asterisk] enabled true filter asterisk logpath /var/log/asterisk/security action iptables-allports maxretry 3 bantime 3600然后创建filter配置文件/etc/fail2ban/filter.d/asterisk.conf匹配Asterisk安全日志中的认证失败格式。具体的正则表达式会根据Asterisk版本有所不同我用的版本上匹配行是包含Authentication failed的条目。配置完成后systemctl restart fail2ban实测下来效果非常好封禁地址数量从最初的每天几十个逐步上升到几百个说明攻击还在持续但已经被有效隔离。还有一个细节是Asterisk自身的allowguest设置。确认pjsip.conf全局段中[global] allowguestno这行禁止未认证的访客呼叫进入拨号计划防止利用匿名来电绕过认证。6.5 数据备份与可恢复性安全不止于防御还包括数据可恢复。Asterisk的关键数据分布在几个位置/etc/asterisk全部配置文件这是重装后必须保留的核心。/var/lib/asterisk/astdb.sqlite3注册信息、设备状态的数据库。/var/spool/asterisk/voicemail语音留言文件。/var/spool/asterisk/monitor通话录音文件如果启用了录音功能。我习惯每天凌晨用tar打包/etc/asterisk和关键数据目录到异地存储保留最近30天。这样即使整台服务器不可用最多丢失一天内的配置变更恢复时可以直接从备份回放。备份脚本可以顺手把CDR话单也导出话单对分析业务流量、追溯异常呼叫都有用处。6.6 持续更新与日志监控Asterisk的更新频率不低安全修复会通过新版本发布。LTS版本的一个重要优势就是能收到长期的安全补丁。订阅Asterisk官方安全公告时常检查当前版本是否有漏洞修复然后走一遍编译安装流程。日志集中监控也很重要。我使用prometheus node_exporter采集系统基础指标再用logwatch把Asterisk日志里的错误摘要定期发到邮箱。这样哪天半夜有分机在异地登录或者认证失败突增都能尽早发现。7. 安装部署之后录音、IVR与队列的扩展方向分机互通之后Asterisk的能力才刚开始展现。很多团队装完第一台Asterisk都是先解决内部通信问题过一段时间就会遇到新的需求。最常见的扩展是三块通话录音、IVR自动话务员、呼叫队列。通话录音配置很直接在拨号计划中套用MixMonitor应用exten _6XXX,1,NoOp(开始录音) same n,MixMonitor(/var/spool/asterisk/monitor/${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${EXTEN}.wav) same n,Dial(PJSIP/${EXTEN},30) same n,Hangup()IVR自动话务员则是用一个带选项的拨号计划配合Playback和Goto实现让来电者按1转到销售、按2转到技术支持。呼叫队列需要加载app_queue模块在queues.conf中定义坐席组用队列策略支撑呼叫分配。这些功能每个都能单独写一篇长文关键是先把基础分机系统跑稳。Asterisk的学习路径是渐进的先把SIP注册、拨号计划、RTP通这三件事搞明白后面所有功能都是在这套骨架上的扩展。如果你问我对第一次部署有什么最后建议我最大的体会是不要一开始就追求大而全的配置先用最小配置跑通分机互拨再逐步叠加功能。遇到问题不要盲目改配置打开CLI日志、抓包、分析SDP、对照防火墙规则按链路一层层排查。电话系统的逻辑比Web服务更线性每一步都有对应的日志和报文搞清楚链路问题自然就定位了。祝你的第一台Asterisk服务器顺利上线。
网站建设高端定制企业官网