知乎专栏 |
http://www.asteriskpbx.com/
[root@netkiller ~]# dnf install asterisk asterisk-pjsip
[root@netkiller ~]# ls /etc/asterisk/ acl.conf cdr.conf dnsmgr.conf modules.conf say.conf adsi.conf cdr_custom.conf dsp.conf musiconhold.conf sla.conf aeap.conf cdr_manager.conf dundi.conf muted.conf smdi.conf agents.conf cdr_syslog.conf enum.conf osp.conf sorcery.conf alarmreceiver.conf cel_beanstalkd.conf extconfig.conf phoneprov.conf stasis.conf amd.conf cel.conf extensions.conf prometheus.conf statsd.conf ari.conf cel_custom.conf features.conf queuerules.conf stir_shaken.conf ast_debug_tools.conf cli_aliases.conf followme.conf queues.conf telcordia-1.adsi asterisk.adsi cli.conf http.conf resolver_unbound.conf udptl.conf asterisk.conf cli_permissions.conf indications.conf res_parking.conf users.conf ccss.conf codecs.conf logger.conf res_stun_monitor.conf vpb.conf cdr_beanstalkd.conf confbridge.conf manager.conf rtp.conf [root@netkiller ~]#
[root@netkiller ~]# cp /etc/asterisk/asterisk.conf{,.original}
[root@netkiller ~]# cp /etc/asterisk/extensions.conf{,.original} [root@netkiller ~]# cat /etc/asterisk/extensions.conf [from-internal] exten = 100,1,Answer() same = n,Wait(1) same = n,Playback(hello-world) same = n,Hangup()
[root@netkiller ~]# cp /etc/asterisk/pjsip.conf{,.original} [root@netkiller ~]# cat /etc/asterisk/sip.conf [general] context=default [6001] type=friend context=from-internal host=dynamic secret=unsecurepassword disallow=all allow=ulaw
[root@netkiller ~]# vim /etc/asterisk/pjsip.conf [root@netkiller ~]# cat /etc/asterisk/pjsip.conf [transport-udp] type=transport protocol=udp bind=0.0.0.0 [6001] type=endpoint transport=transport-udp context=from-internal disallow=all allow=ulaw allow=gsm auth=6001 aors=6001 [6001] type=auth auth_type=userpass username=6001 password=unsecurepassword [6001] type=aor max_contacts=1
[root@netkiller ~]# systemctl enable asterisk [root@netkiller ~]# systemctl start asterisk [root@netkiller ~]# systemctl status asterisk ● asterisk.service - Asterisk PBX and telephony daemon. Loaded: loaded (/usr/lib/systemd/system/asterisk.service; disabled; preset: disabled) Active: active (running) since Sat 2025-03-01 18:34:36 CST; 10s ago Main PID: 3321189 (asterisk) Tasks: 42 (limit: 100479) Memory: 32.3M CPU: 493ms CGroup: /system.slice/asterisk.service └─3321189 /usr/sbin/asterisk -f -C /etc/asterisk/asterisk.conf Mar 01 18:34:38 netkiller asterisk[3321189]: [Mar 1 18:34:38] WARNING[3321189]: loader.c:2487 load_modules: Module 'app_> Mar 01 18:34:38 netkiller asterisk[3321189]: [Mar 1 18:34:38] WARNING[3321189]: loader.c:2487 load_modules: Module 'app_> Mar 01 18:34:38 netkiller asterisk[3321189]: [Mar 1 18:34:38] ERROR[3321189]: loader.c:2508 load_modules: Error loading > Mar 01 18:34:38 netkiller asterisk[3321189]: [Mar 1 18:34:38] ERROR[3321189]: loader.c:2508 load_modules: Error loading > Mar 01 18:34:38 netkiller asterisk[3321189]: [Mar 1 18:34:38] ERROR[3321189]: loader.c:2508 load_modules: Failed to reso> Mar 01 18:34:38 netkiller asterisk[3321189]: [Mar 1 18:34:38] ERROR[3321189]: loader.c:2508 load_modules: res_stir_shake> Mar 01 18:34:38 netkiller asterisk[3321189]: [Mar 1 18:34:38] ERROR[3321189]: loader.c:2508 load_modules: cdr_syslog dec> Mar 01 18:34:38 netkiller asterisk[3321189]: [Mar 1 18:34:38] ERROR[3321189]: loader.c:2508 load_modules: Failed to reso> Mar 01 18:34:38 netkiller asterisk[3321189]: [Mar 1 18:34:38] ERROR[3321189]: loader.c:2508 load_modules: res_http_media> Mar 01 18:34:38 netkiller asterisk[3321189]: Asterisk Ready.
[root@netkiller ~]# ss -lnp | grep asterisk u_str LISTEN 0 2 /run/asterisk/asterisk.ctl 30717648 * 0 users:(("asterisk",pid=3322611,fd=5)) udp UNCONN 0 0 0.0.0.0:56265 0.0.0.0:* users:(("asterisk",pid=3322611,fd=8)) udp UNCONN 0 0 0.0.0.0:4520 0.0.0.0:* users:(("asterisk",pid=3322611,fd=17)) udp UNCONN 0 0 0.0.0.0:5060 0.0.0.0:* users:(("asterisk",pid=3322611,fd=10)) udp UNCONN 0 0 [::]:43446 [::]:* users:(("asterisk",pid=3322611,fd=9))
[root@netkiller ~]# asterisk -rx "pjsip list auths" I/OAuth: <AuthId/UserName.............................................................> ========================================================================================== Auth: 6001/6001 Objects found: 1
cd /usr/local/src/ wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-22-current.tar.gz tar zxvf asterisk-22-current.tar.gz cd asterisk-22.2.0/ ./configure make menuselect
netkiller@shenzhen:~$ apt-cache search Asterisk asterisk-app-dtmftotext - Text entry application for Asterisk asterisk-app-fax - Softfax application for Asterisk asterisk-app-misdn-v110 - V.110 protocol handler for Asterisk asterisk-chan-capi - Common ISDN API 2.0 implementation for Asterisk asterisk-chan-misdn - mISDN support for Asterisk asterisk-oh323 - oh323 channel driver for Asterisk asterisk-prompt-de - German voice prompts for the Asterisk PBX asterisk-prompt-es-co - Colombian Spanish voice prompts for Asterisk asterisk-prompt-fr - French voice prompts for Asterisk asterisk-prompt-it - Italian voice prompts for the Asterisk PBX asterisk-prompt-se - Swedish voice prompts for Asterisk asterisk-rate-engine - Asterisk least cost routing module asterisk-sounds-extra - Additional sound files for the Asterisk PBX destar - management interface for the Asterisk PBX gastman - GUI tool for Asterisk administration and monitoring iaxmodem - software modem with IAX2 connectivity kiax - IAX VoIP softphone libiax-dev - implementation of the Inter-Asterisk eXchange protocol (devel) libiax0 - implementation of the Inter-Asterisk eXchange protocol op-panel - switchboard type application for the Asterisk PBX asterisk-prompt-es - Spanish prompts for the Asterisk PBX asterisk - Open Source Private Branch Exchange (PBX) asterisk-bristuff - Open Source Private Branch Exchange (PBX) - BRIstuff-enabled version asterisk-classic - Open Source Private Branch Exchange (PBX) - original Digium version asterisk-config - config files for asterisk asterisk-dev - development files for asterisk asterisk-doc - documentation for asterisk asterisk-h323 - asterisk H.323 VoIP channel asterisk-sounds-main - sound files for asterisk asterisk-web-vmail - Web-based (CGI) voice mail interface for Asterisk netkiller@shenzhen:~$
配置文件说明
asterisk.conf:主配置文件,通知Asterisk环境目录位置,包含其他所有配置文件所包含的目录,缺省Asterisk会在/etc/asterisk/目录下找到,也可以通过命令参数使用不同的asterisk.conf agents.conf:配置代理通道 h323.conf:配置H323通道 iax.conf:配置IAX通道 mgcp.conf:配置MGCP(媒体网关控制协议,应用于多媒体网关单元之间) modem.conf:配置ISDN,不是modem phone.conf:配置linux电话设备 sip.conf:配置SIP通道,可以添加sip用户,设置用户名,密码,拨号规则等。 sip_notify.conf:配置SIP 消息通知 skinny.conf:配置Cisco SCCP通道 vpb.conf:配置Voicetronix卡通道(是澳大利亚的开放源码的CTI专业制造厂商) zapata.conf:配置ZAP Digium卡通道 extensions.conf:Asterisk的具体拨号方案,它所有的操作控制和执行流程的主要方案,它控制呼入呼出如何别处理和路由。 extensions.ael:扩展拨号方案语言 features.conf:配置呼叫停泊,parking.conf文件名字已被修改为features.conf , 自定义按键配置,同时还有一些系统默认的功能键 extconfig.conf:通过res_data方式部署扩展配置,例如通过ODBC alarmreceiver.conf:警报接收配置 enum.conf:电话号码映射查找配置 dundi.conf:分布式全球号码发现(DUNDi)是一个对等(P2P)协议,用于提供等价于那些由电子号码(ENUM)提供的服务。DUNDi有一个超过 ENUM的优点就是它更有弹力,因为也它缺乏一个故障中心点。DUNDi能够被用于增加DNS和它与IP语音(VOIP)服务一起发展。 festival.conf:文本语音转换配置 indications.conf:铃音清晰度配置 meetme.conf:会议配置 musiconhold.conf:音乐保持配置 queues.conf:队列配置 voicemail.conf:语音邮件配置,设置语音存储文件格式,分机号对应的语音邮箱密码和邮箱地址。 alarmreceiver.conf:警报接收配置 alsa.conf:致力于为Linux 提供高质量的声音子系统 cdr_odbc.conf,cdr_pgsql.conf:通话详单数据库存储配置 codecs.conf:Asterisk编码配置文件 dnsmgr.conf:DNS管理(new in Asterisk v1.2) http.conf:内置http server配置,可以配置绑定的端口,可以访问的IP等。 logger.conf:配置系统日志 manager.conf:配置管理接口,设置管理员账号、密码、登录端口、访问权限等。 modules.conf:配置可加载模块 odbc.conf:ODBC驱动配置 oss.conf:open source software配置 privacy.conf:私密配置 res_odbc.conf:实时数据库加载配置,可以把配置文件放在数据库中 rpt.conf:循环应用配置 rtp.conf:配置RTP(实时)端口 say.conf:读出标准的数字和日期(new in Asterisk v1.4) users.conf:用户定义配置文件 adsi.conf,asterisk.adsi,telcordia-1.adsi:配置模拟显示服务接口 capi.conf:CAPI是计算机辅助面对面访问(Computer Assisted Personal Interviewing)的简称,是使用基于计算机的问卷的一种调研技术,CAPI可以像CATI一样控制复杂的逻辑,而且,它可以在各种各样的场所使用,购物中心,论坛或者其它公共场所,只要是被访者可以接触到电脑的地方。例如,在定点街访项目,借助端对端网络,它可以从容的管理问卷,控制配额,以及管理数据库,且不需要数据库服务器。 在面对面访问中,问卷可以由访问人员直接采用电脑,被访者同时可以查看的方式进行访问,也可以是被访者自己的电脑上看到电子问卷,自己操作访问。 sirrix.conf:配置Sirrix ISDN通道 cdr_mysql.conf:配置通话详单在mysql中存储 prepaid.conf:预付费卡配置 ldap.conf:访问x.500目录访问的标准协议 bonjour.conf:苹果服务发现接口支持 enumagi.conf:电话号码映射查找配置文件 zeroconf.conf:zeroconf是一个轻量级的服务发现协议,适用于注册和寻找附近的可用协议、设备等等。 他是bonjour的开源名称,bonjour是苹果公司力推的一个service echotraining=yes ;回音练习(会话前发个声音,用于测试回声)有关配置文件的语法规则,等以后再表。红色标出部分为自己首先要配置的部分。
extensions.conf
[root@netkiller ~]# cat /etc/asterisk/extensions.conf [from-internal] exten = 100,1,Answer() same = n,Wait(1) same = n,Playback(hello-world) same = n,Hangup()
[from-internal] exten => 10010,1,Dial(PJSIP/1111) /*当拨打10010时转到分机1111中*/ exten => 10086,1,Dial(PJSIP/6666) /*当拨打10086时转到分机6666中*/ exten => 110,1,Answer() /*当拨打110时自动接听*/ same => Wait(1) same => n,Playback(hello-world) same => n,Hangup()
asterisk -rx “core restart now” asterisk -rvvvvv
netkiller*CLI> pjsip show auths I/OAuth: <AuthId/UserName.............................................................> ========================================================================================== Auth: 6001/6001 Objects found: 1 netkiller*CLI>
netkiller*CLI> dialplan show 6001@from-internal There is no existence of 'from-internal' context Command 'dialplan show 6001@from-internal' failed.
sip show peers
[root@netkiller ~]# cat /etc/asterisk/sip.conf [general] context=default bindport=5060 tcpbindaddr=0.0.0.0 tcpenable=yes externip=139.9.54.211 localnet=192.168.0.0/255.255.255.0; nat=force_rport,comedia canreinvite=no qualify=yes ;directmedia=no nat=yes transport=udp [6000] type=friend context=default username=6000 secret=6000 host=dynamic ;transport=tcp ;transport=udp ;nat=yes ;directmedia=no disallow=all allow=ulaw allow=alaw allow=g722 allow=g729 ;allow=h263 ;allow=h264 [6001] type=friend context=default username=6001 secret=6001 host=dynamic ;transport=udp ;nat=yes ;directmedia=no disallow=all allow=ulaw allow=alaw allow=g722 allow=g729 ;allow=h263 ;allow=h264 [6002] type=friend context=default username=6002 secret=6002 host=dynamic ;transport=udp ;nat=yes ;directmedia=no disallow=all allow=ulaw allow=alaw allow=g722 allow=g729 ;allow=h263 ;allow=h264 [6003] type=friend context=default username=6003 secret=6003 host=dynamic ;transport=udp ;nat=yes ;directmedia=no disallow=all allow=ulaw allow=alaw allow=g722 allow=g729 ;allow=h263 ;allow=h264 [6004] type=friend context=default username=6004 secret=6004 host=dynamic ;transport=udp ;nat=yes ;directmedia=no disallow=all allow=ulaw allow=alaw allow=g722 allow=g729 ;allow=h263 ;allow=h264
[root@netkiller ~]# cat /etc/asterisk/extensions.conf [general] static=yes writeprotect=no [default] exten => 6001,1,Dial(SIP/6001) exten => 6002,1,Dial(SIP/6002) exten => 6003,1,Dial(SIP/6003) exten => 6000,1,Dial(SIP/6000) exten => 6004,1,Dial(SIP/6004)
asterisk -rx "core restart now"
[root@netkiller asterisk]# cat pjsip.conf [transport-udp] type=transport protocol=udp bind=0.0.0.0 [6000] type=endpoint transport=transport-udp context=from-internal disallow=all allow=ulaw auth=auth aors=aors [auth] type=auth auth_type=userpass username=neo password=chen [aors] type=aor max_contacts=3 [6001] type=endpoint transport=transport-udp context=from-internal disallow=all allow=ulaw allow=gsm auth=6001 aors=6001 [6001] type=auth auth_type=userpass password=6001 username=unsecurepassword [6001] type=aor max_contacts=1 [6002] type=endpoint transport=transport-udp context=from-internal disallow=all allow=ulaw auth=6002 aors=6002 [6002] type=auth auth_type=userpass username=6002 password=unsecurepassword [6002] type=aor max_contacts=2 [6003] type=endpoint transport=transport-udp context=from-internal disallow=all allow=ulaw auth=6003 aors=6003 [6003] type=auth auth_type=userpass username=6003 password=unsecurepassword [6003] type=aor max_contacts=3