Asterisk权威-第13章自动呼叫分配(ACD)
- 格式:pdf
- 大小:1.97 MB
- 文档页数:38
Asterisk目录及配置文件/etc/asterisk/Asterisk主目录,包含其它关于Asterisk的配置文件;*zaptel.conf这个配置文件放在/etc,因为其它软件也可以使用Zaptel这个硬件及其驱动,所以不是放在/etc/asterisk里./usr/lib/asterisk/modules/这个目录包含所有可以加载Asterisk模块(应用程序\编辑器\格式和有用通道),在Asterisk启运时会加载这些模块(可以编辑modules.conf)./var/lib/asterisk/比较重要的是astdb文件与agi-bin目录;astdb包含Asterisk当地数据库信息.sounds/所有声音提示的文件在里面,包括Asterisk原代码中的sounds.txt文件mohmp3/如果配置了音乐保持,应用程序会在这个目录下查找mp3(用CBR从文件中去除身份标签).keys/使用公钥和私钥系统认证与一个由RSA数字签名形成的一对等连接.公钥和私钥的扩展名分别为.pub和.keyfirmware/这个目录含了很多Asterisk相兼容的设备固件,它只有iax/这个子目录,其中有Digium的IAXy的二进制固件镜像.images/只有在较多的支持并且利用图解式的图像设备被发布,这个目录将会与相应的目录有更大的关联./var/lib/asterisk/agi-bin agi-bin包含所有脚本,可以通过许多已经建立的AGI应用程序与Asterisk连接./var/spool/asteriskoutgoing/gcall/tmp/voicemail/================配置文件================/etc/asterisk/asterisk.conf主要配置文件,/etc/zaptel.conf硬件接口的基本层.修改这个配置文件要用modprobe装载Linux Kernel使用模块./etc/asterisk/zapata.conf为硬件配置Asterisk的接口./etc/asterisk/extensions.conf拨号方案./etc/asterisk/sip.conf SIP协议配置文件/etc/asterisk/iax.conf呼入和呼出IAX通道/etc/asterisk/extensions.conf拨号方案配置文件/etc/asterisk/moduprobe.conf加载模块配置文件Asterisk developer\'s documentation 翻译计划by serva今天,Asterisk已经成为一个VOIP业界使用最广泛的一个集成电信级别P BX的工具,IPPBX如今已经成为VOIP商家争夺的一块重要市场,在我们越来越熟悉使用Asterisk的同时,我们希望能够越来越深入的了解asterisk,特别是对于开发人员,如果有自己特定的需求,在复杂的asterisk文件夹和asteri sk的源代码文件中迷失了方向,不知所措。
一、实验目的1. 了解呼叫中心的基本概念和组成结构。
2. 掌握呼叫中心系统的基本功能和工作原理。
3. 熟悉呼叫中心系统的配置和使用方法。
4. 培养实际操作能力,提高对呼叫中心系统的分析和解决实际问题的能力。
二、实验内容1. 呼叫中心系统概述呼叫中心(Call Center)是一种以电话、网络、短信等通信方式为载体,为客户提供电话咨询服务、客户关系管理、售后服务等服务的综合信息系统。
呼叫中心系统由以下几部分组成:(1)硬件设备:电话交换机、服务器、工位电脑、耳机等。
(2)软件系统:呼叫管理系统、IVR系统、CRM系统、报表系统等。
(3)人员:客服代表、技术支持、管理人员等。
2. 呼叫中心系统功能(1)自动呼叫分配(ACD):将呼入电话自动分配给空闲的客服代表。
(2)交互式语音应答(IVR):通过语音识别、语音合成等技术实现自动语音交互。
(3)客户关系管理(CRM):对客户信息进行管理,提高客户满意度。
(4)技能分组:根据客服代表的技能和经验,将呼入电话分配给合适的客服代表。
(5)录音和质检:对客服代表的通话进行录音,以便进行质检和培训。
(6)报表分析:对呼叫数据进行分析,为管理者提供决策依据。
3. 实验环境实验设备:一台电脑、耳机、电话线。
实验软件:呼叫中心系统软件(如Asterisk、FreePBX等)。
4. 实验步骤(1)安装呼叫中心系统软件,配置基本参数。
(2)创建客服代表账号,设置权限。
(3)配置IVR系统,实现自动语音交互。
(4)设置ACD分配规则,实现自动呼叫分配。
(5)测试呼叫中心系统功能,包括自动呼叫分配、IVR、录音、质检等。
三、实验结果与分析1. 自动呼叫分配测试通过测试,验证了ACD分配规则的正确性。
当有呼入电话时,系统能够自动将电话分配给空闲的客服代表,提高了工作效率。
2. 交互式语音应答测试通过测试,验证了IVR系统的功能。
当客户拨打呼叫中心电话时,系统能够自动播放语音提示,引导客户进行操作。
BID与DIDBID(Board Inward Dialing)即(用户交换机)半自动中继方式。
企业拥有一个或几个接入电话号码;各分机只有一个由用户交换机分配的短号码,只能通过“接入号码+分机号码”或者“接入号码+人工转接”形式接入,即需要经过人工或自动话务台转接,分机之间可以通过短号码互相通话,不计市话费。
DID(Direct Inward Dialing)即(外线)直接拨入(用户交换机)的分机方式。
企业向电信运营商申请一个或几个号段号码;各分机拥有长短两个电话号码,即普通电话号码和普通电话号码后四位的分机号码,能通过直接拨入、“接入号码+分机号码”、“接入号码+人工转接”三种形式接入。
各分机之间可以通过拨打普通电话号码后四位的分机号码相互通话,不计市话费。
CENTREX 简介Centrex (CENTRal Exchange) 俗称虚拟小交换机,类似普通小交换机,相对于传统小交换机而言,它不需要您购置任何硬件设备,也不需要占用空间,CENTREX所需要的所有硬件都在电信公司的内部交换机内。
业务是电信局的交换机上,将某个社会团体用户(如公司、事业单位等)划为一个用户群,为其提供用户小交换机的功能,同时提供小交换机所不具备的更为丰富、灵活、便捷的电话通信服务。
“汇线通”用户群拥有一长一短两个电话号码;长号即外线直拔电话号码;短号即群内分机号码。
长短号并存分别使用,外来电可区别振铃。
什么是DECT技术?DECT 的英文全名是Digital Enhance Cordless Telephone,数位增强(泛欧式数位)无线电话系统(DECT),是根据泛欧地区共同通讯协定标准生产的移动产品。
泛欧式数位无线电话系统(DECT)规格发表于1992年,为欧洲的无线电话标准。
为了促销DECT至全世界,欧洲国家将DECT的[European]一字改成[Enhanced]以冲淡欧区域产的意味。
数位或增强无线电话通信系統(Digital Enhanced Cordless Telecommunications, DECT)以超微細(Pico cell)方式在高密(Digital Enhanced Cordless Telecommunications,DECT)以超微细(Pico cell)方式在高密度用户区提供服务,并使TDMA的技术将一个频道分割成12个语间通道,使用TDD双工模式,而每一个语音通道的编码速率为32kb/s。
第32章VoIP服务器——Asterisk可以自己用软件实现电话交换机?是的,这就是本章我们要讨论的话题。
如何在Linux下实现免费的电话交换机功能。
32.1用Linux实现免费电话大餐在架设自己的电话系统之前,我们先看看传统的电话网络是如何工作的。
传统的电话网络,叫做Public Switched Telephone Network,公共交换电话网络,简称PSTN,是一种全球联网的语音通信电路交换网络,通过中继和交换设备进行通讯。
不难看出,我们现在使用的IP计算机网络和PSTN颇有几分相似之处,在PSTN中呼叫一个电话号码相当于通过IP网络到达一个IP地址,在骨干PSTN网络中,也和IP协议一样使用复用机制来传递数据。
对于私有电话系统来说,也和IP计算机网络有着类似的原理。
公司的电话交换机直接对外(相当于IP网络中的公网地址),外部人员只能访问到电话交换机总机,由总机控制应该将这个连接转到哪个分机上(类似于IP中的NAT),内部的分机不是合法的电话号码(192.168.x.x?),只有通过公司的电话交换机才能与外界正常通讯。
在这里,公司的电话交换机,也就是通常所说的程控交换机,也叫PBX,Private Branch(telephone) eXchange的缩写,意思是私有/专有电话交换系统,传统的PBX使用PSTN网络连接并提供语音通话服务。
随着技术的发展,出现了基于IP网络的语音传输业务,即V oice over IP,简称V oIP,人们可以通过计算机网络(通常是指Internet或Intranet)进行语音通话,而后,又出现了基于IP网络的PBX,简称IPPBX,IPPBX不需要专用的网络,可以通过Internet和V oIP实现类似于传统电话系统的功能,而且,使用IPPBX进行通信,对内没有任何费用,只有网络建设成本,对外只需要支付接入到Internet的费用,没有任何额外的通话或漫游、长途费用,IPPBX的优势不言而喻,而通过一些硬件设备(比如调制解调器),IPPBX也可以和现有的传统PSTN网络互通。
Asterisk (已测)功能列表一.PBX功能1.电话接听呼入电话,自动应答,或者转接给分机2.电话转接分机之间,分机与外线进行转接3.语音信箱预忙或者无法接听时接入到语音信箱,信箱所有者可以通过互联网或者电话拨号的方式获取语音邮件4.留言录制预忙或者无法接听时录制留言5.电话管理增加号码,删除号码,某路电话,监听外线电话等6.各种协议电话互通支持多种电话协议(SIP,iax2,H.232等)及PSTN网络7.等待音乐播放支持多组等待音乐的定制,可以为不同的呼入以及不同的组或者个人设定不同的等待音乐,实现音乐判断,以及个性化定制8.话单输出系统可以输出详细清单,对于系统发生的所有呼叫都可以储存到特定地点,以文件或者数据库的方式9.根据各种规则设定呼出呼入权限设定可以设置每个分机的呼出呼入权限,控制分机外线流量10.电话路由功能可以通过配置,对外线电话或者特定电话进行路由设置,可以适应用户原有的拨号习惯11.用户添加注册增加新的用户,删除用户信息,更新用户信息等12.DialPlan定制可以定制各种用于服务和通话的呼叫方案,满足不同行业不同需求13.外线电话录音功能对所有外线电话可以进行录音,或者局部电话进行录音14.来电过虑通过设定过虑规则,或者设置黑名单的方式,屏蔽骚扰电话,影响正常工作的电话等。
二.VoiceCallCenter 功能1.座席功能支持Agent座席功能,可以对座席分组2.呼叫自动分配(支持六种分配策略)支持六种呼叫策略,满足各种呼叫中心的需求3.通话监听班长或者管理员可以通过一个终端或者一个座席拨打一个固定的电话号码,输入密码后监听每个agent的电话4.座席优先级设置通过对座席优先级的设定,可以影响分配策略,实现能者多劳,或者对业务熟练的多接听的手段5.通话录音可以对座席的所有通话进行录音。
以便任何时间抽查,审查,或者提出改革方案等三.IVR语音菜单功能1.语音点播对语音按键相应,播放不同的音乐或者执行不同的程式2.DTMF发送、接收、处理可以对DTMF码进行接收,发送,和处理,从而实现互动3.多级语音菜单主菜单下可以挂靠子菜单,子菜单下还可以挂靠子菜单4.语音交互5.VIP接入免菜单直接接入通过对方电话号码判断是否VIP,如果VIP则直接接入指定分机或者指定队列,实现VIP管理四.Conference功能1.加入会议建立一个会议,允许用户加入到会议中2.会议发言,旁听对于加入会议的人,只允许听,不允许说3.会议主持可以通过设定会议主持,其他与会者听,会议主持主持会议4.会议管理可以设定特定的管理密码和管理人员,管理整个会议5.会议录音可以将会议内容录音,以备后续应用和学习6.主动邀请(未测)主动邀请用户加入到会议7.会议留言进入会议后留言,给每个进入的用户播放8.关闭会议关闭会议室或者清空会议室五.脚本支持功能Asterisk支持很多脚本语言,例如 perl,python,shell设置C和pascal 语言都有支持六.补充和总结Asterisk 还有一些其他的PBX和其他语音支持系统所没有的一些功能,有很强大的呼叫函数支持。
asterisk sip配置说明1. 介绍extensions.conf中使用sip设备的语法是SIP/devicename,devicename名在下一节中说明。
如果用户在Internet上,可以使用SIP/username@domain形式,同时不要忘记打开D NS SRV功能。
如果定义了一个SIP代理,可以使用SIP/proxyhostname/user或者SIP/user@proxy hostname形式,proxyhostname的定义在下面的章节说明。
2. 在CLI中的查询命令:u sip show peers 显示所有的SIP peers(包括friends)u sip show users 显示所有的SIP users(包括friends)u sip show registry 显示注册到的主机状态u sip debug 显示所有的Sip信息u module reload chan_sip.so 重新装载sip的配置文件3. 设备命名命名一个设备之前,要先理解Asterisk是怎么处理呼入电话的:1) Asterisk取出SIP From: address中的username,使用它来匹配系统中定义的type=user的的设备名。
2) Asterisk检查INVITE请求中的IP地址和端口号,使用它来匹配系统中定义的t ype=peer的设备。
不要混淆extensions和设备名的概念。
设备需要一个唯一的名字。
设备名不能用于电话号码。
电话号码是拨号计划中的声明的一个extension。
注意:参数username并不是用户名的意思,在大多数情况下,它根本不是必须的。
在后边,我们把它重命名做defaultuser,因为他与defaultip合并使用。
4. 通用属性说明[general] ;通用属性context=default ;呼入电话默认使用的contextallowguest=no ; 允许或拒绝客户呼叫 (默认 yes)allowoverlap=no ; 允许重叠拨号(默认yes)allowtransfer=no ; 允许呼叫转接(默认yes)realm=mydomain.tld ; 认证的领域。
关于AsteriskAsterisk是一款实现用户电话交换机(PBX)功能的自由软件、开源软件。
Asterisk提供完善PBX 功能,可以连接多种不同的电话终端,包括普通电话机,IP电话机,软电话等,支持多种主流的IP电话协议和系统接口。
软件名称Asterisk-星号(*),在Unix(包括Linux)和DOS操作系统中是通配符,用来在查找中适配任何字符,寓意该软件广泛的适用性。
Asterisk软件提供很多以前只有昂贵的专业PBX系统才支持的功能,比如:语音信箱,会议电话,交互式语音提示和自动电话转接等。
由于该软件开放的性质,用户可以灵活的配置方便的扩展系统的功能,甚至编程开发自己所需功能的模块。
Asterisk通常都运行在Linux操作系统下,当然它也可以在其他系统,如BSD, Windows或OS X下编译并安装。
Asterisk服务器不需要任何特殊的硬件即可提供VoIP的服务,只需服务器有网络连接即可。
它支持主流VoIP协议,包括会话发起协议(SIP)、H.323,既可作为IP电话服务器也可以作IP 电话和PSTN之间的转接。
Asterisk系统还设计了一个新协议,IAX,用于在Asterisk服务器之间维护话路通道。
如果需要连接普通电话或PSTN中继线,运行Asterisk的服务器则需要安装相应的硬件接口板。
许多厂商都生产用于连接普通电话、T1、E1中继线、ISDN等的接口板。
由于是自由软件且具有丰富的系统功能,Asterisk提供给用户一个廉价并功能强大的PBX解决方案。
它被越来越多的用于代替传统专用的PBX,或被用于跨国VoIP电话以节省长途费用。
一些国家的VoIP电话公司已经开始支持Asterisk,提供IAX2接口或允许用户的Asterisk 服务器使用SIP协议连接。
截止2008年4月22日,Asterisk的最新版本是1.4.19.1版。
Asterisk功能说明及基本呼叫流程1.Asterisk内部核心:共分为6个部分A.PBX核心交换模块B.调度和IO管理模块C.应用调用模块D.编码转换模块E.动态模块加载器模块F.CDR生成模块(即时呼叫详细记录报告)2.Asterisk基本呼叫流程(1)通过Asterisk的一个电话呼叫在一个通道驱动接口上到达,如SIP通道。
asteri sk拨号方案的配置配置文件“extensi ons.conf”包含了Asterisk的拨号方案(dial plan)。
它的所有操作的控制和执行流程的主要方案。
它控制呼入和呼出是如何被处理和路由。
这里是你配置连接行为的地方。
"extensi ons.conf"的内容以“节”的形式组织。
它可以静态设置和定义,作为上下文被执行。
设置节有general和global s 两种形式,由系统管理员完全定义。
一种特殊类型的“contex ts”是macros,由用户自定义,命名前缀是“m acro-”,这是可重用的模式,如同编程语言里的“过程”。
extensi ons.conf中每一节都由 []中的节名开始。
这使得ext ensio ns.conf 具有和wind ows世界里传统的i ni文件非常相似的结构。
Asteri sk v1.2中的新东西:默认情况下,有一个新的选项“autofa ll through”被设置成了“yes”. 这个设置改变了以前的规则使得遇忙,阻塞,挂起的呼叫被立即终止。
如果你正在为IV R 写一个exte n sion.你必须使用“W aitEx ten”应用程序。
[genera l] extenti ons.conf文件的顶部,配置几个设置。
[global s] 接着,在[global s]节中,你可以定义全局变量/常量,以及他们的初始值。
Contex ts 和Extensi ons在[genera l]和[global s]之后,extenti ons.conf文件的剩余部分就是dia l plan的定义了。
dialpl an是由c o ntex t s的集合组成的。
Queues.confQueues.conf-[general];; Global settings for call queues;全局设置; Persistent Members; Store each dynamic member in each queue in the astdb so that; when asterisk is restarted, each member will be automatically; read into their recorded queues. Default is 'yes'.;把每一个QUEUE里面的成员都存到astDB里面,这样当asterisk重启的时候,每一个成员都能够自动的恢复到Queue当中,default='yes'persistentmembers = yes;; AutoFill Behavior; The old/current behavior of the queue has a serial type behavior; in that the queue will make all waiting callers wait in the queue; even if there is more than one available member ready to take; calls until the head caller is connected with the member they; were trying to get to. The next waiting caller in line then; becomes the head caller, and they are then connected with the; next available member and all available members and waiting callers; waits while this happens. The new behavior, enabled by setting; autofill=yes makes sure that when the waiting callers are connecting; with available members in a parallel fashion until there are; no more available members or no more waiting callers. This is; probably more along the lines of how a queue should work and; in most cases, you will want to enable this behavior. If you; do not specify or comment out this option, it will default to no; to keep backward compatibility with the old behavior.;会记住每一个成员和用户当前的状态,自动去尝试连接坐席,并自动更新用户当前的状态.比如之前还有几个人在等待.下一个等待的用户将会变成第一个用户,然后他们会连接到第一个可用的分机。
Asterisk 入门教程subscriber:加入某个group,从而遵从某一个call restricionsubscriber group:可以使用1种call restriction。
call restriction:将numbering plan中各项取出,各自组成成不同的呼叫限制方案numbering plan:通用,是一个整体的计划,里面包括长途,本地,等各种形式的方案-------------------------------------------------------------以上,用于拨入号码的预处理,实际上是一种过滤,下面才是真正的呼叫处理。
--------------------------------------------------------------route:一种策略,根据号码匹配的模式,选择走哪个trunk。
trunk:实际上做通一个链路,供route选择。
analog的,一个POTS就是一条analog trunkanalog的数量由设备定,ip trunk没有限制数量,并且一个ip trunk连到对方IPPBX后,对方的subscriber 数量是不确定的,由那个IP PBX决定。
Asterisk,开始吧--------------------------------------------------------------什么是asterisk?开源电话平台Asterisk 通过了电话的开源平台。
基本上就是一个软件的PBX。
最初是Digium 公司的Mark Spencer 编写的,这个公司就是他创立的,专门生产并销售Asterisk使用的硬件。
Asterisk 简直就是一场电话的革命。
为什么使用Asterisk?现在电信行业的混乱,因为各种专利技术应用在各种层次的网络上,导致很大的混乱。
Asterisk 就是答案——给电信行业普遍的混乱环境带来秩序的革命。
Asterisk拨号方案常用函数说明(1)Answer()应用于接听正在响铃通道,它不需要任何参数.(2)Playback()应用在通道上播放事先录制好的语音文件.指定一个文件名(不带扩展名),可以使用绝对路径与相对路径.(3)Hangup()应用在于挂断一个正在活动的通道.(4)Background()它也播放事先录制好的语音文件,但它等待按键,然后执行对应extension.防止Background()后超出按键范围,使用i来解决问题.防止Background长时间没有选择,使用t来决解问题.(5)Goto()Goto应用使得在拨号方案的不同部分有序的转移非常容易. Goto()应用有三个参量分别是context,extension,和priority.即Goto(context,extension,priority)(6)Dial()Dial()有4个参数.(a)第一个是:呼叫的被叫地.如:SIP/50000或Zap/1.可以同时拨打多个通道如: exten =>601,1,Dial(Zap/1&SIP/50000&IAX/60000)(b)第二个是:超时,单位"秒".给定超时参量Dial会一直对被叫地进行呼叫,直到超时后才放弃,如果没有给定,将直到接听或主叫挂机,如果呼叫在超时前接听,通道就被桥接,拨号完。
成补充:如果超时后被叫地没有应答,则会继续Dial()的extension下一个priority.如果被叫地通道忙,Dial()将转到priority n+101(n是Dial()被调用的priority),如果存在的话,将能够处理被叫地忙的方式接叫未接电话.(c)第三个是:可选择参量,它会可以影响到Dial()的行为,如: exten =>601,1,Dial(SIP/50000,30,Ttwr) 其中T表示允许主叫用户按"#"转接呼叫;t表示允许被叫用户按"#"转接呼叫;r表示为被叫用户产生振铃声;w用户按"*"键开始录音(d)最后一个是:URL参量.如: exten =>601,1,Dial([email=SIP/60000@]SIP/60000@[/email]) exten => 602,1,Dial(Zap/1/5732381) 任何参量都可以为空如: exten => 601,1,Dial(SIP/60000,,T) 或 exten => 601,1,Dial(SIP/60000)AddQueueMember: Dynamically adds queue membersADSIProg: Load Asterisk ADSI Scripts into phoneAGI: Executes an AGI compliant applicationAMD: Attempts to detect answering machinesAnswer: Answer a channel if ringingAppendCDRUserField: Append to the CDR user fieldAuthenticate: Authenticate a userBackGround: Play an audio file while waiting for digits of an extension to go to.BackgroundDetect: Background a file with talk detectBusy: Indicate the Busy conditionChangeMonitor: Change monitoring filename of a channelChanIsAvail: Check channel availabilityChannelRedirect: Redirects given channel to a dialplan target.ChanSpy: Listen to a channel, and optionally whisper into itCongestion: Indicate the Congestion conditionContinueWhile: Restart a While loopControlPlayback: Play a file with fast forward and rewindDAHDIBarge: Barge in (monitor) DAHDI channelDAHDIRAS: Executes DAHDI ISDN RAS applicationDAHDIScan: Scan Zap channels to monitor callsDAHDISendKeypadFacility: Send digits out of band over a PRIDateTime: Says a specified time in a custom formatDBdel: Delete a key from the databaseDBdeltree: Delete a family or keytree from the databaseDeadAGI: Executes AGI on a hungup channelDial: Place a call and connect to the current channelDictate: Virtual Dictation MachineDirectory: Provide directory of voicemail extensionsDISA: DISA (Direct Inward System Access)DumpChan: Dump Info About The Calling ChannelEAGI: Executes an EAGI compliant applicationEcho: Echo audio, video, or DTMF back to the calling partyEndWhile: End a while loopExec: Executes dialplan applicationExecIf: Executes dialplan application, conditionallyExecIfTime: Conditional application execution based on the current timeExitWhile: End a While loopExtenSpy: Listen to a channel, and optionally whisper into itExternalIVR: Interfaces with an external IVR applicationFlash: Flashes a DAHDI trunkForkCDR: Forks the Call Data RecordGetCPEID: Get ADSI CPE IDGosub: Jump to label, saving return addressGosubIf: Conditionally jump to label, saving return addressGoto: Jump to a particular priority, extension, or contextGotoIf: Conditional gotoGotoIfTime: Conditional Goto based on the current timeHangup: Hang up the calling channelHasNewVoicemail: Conditionally branches to priority + 101 with the right options set HasVoicemail: Conditionally branches to priority + 101 with the right options setIAX2Provision: Provision a calling IAXy with a given templateICES: Encode and stream using 'ices'ImportVar: Import a variable from a channel into a new variableLog: Send arbitrary text to a selected log levelLookupBlacklist: Look up Caller*ID name/number from blacklist databaseLookupCIDName: Look up CallerID Name from local databaseMacro: Macro ImplementationMacroExclusive: Exclusive Macro ImplementationMacroExit: Exit From MacroMacroIf: Conditional Macro ImplementationMailboxExists: Check to see if Voicemail mailbox existsMeetMe: MeetMe conference bridgeMeetMeAdmin: MeetMe conference AdministrationMeetMeCount: MeetMe participant countMilliwatt: Generate a Constant 1004Hz tone at 0dbm (mu-law)MixMonitor: Record a call and mix the audio during the recordingMonitor: Monitor a channelMorsecode: Plays morse codeMP3Player: Play an MP3 file or streamMusicOnHold: Play Music On Hold indefinitelyNBScat: Play an NBS local streamNoCDR: Tell Asterisk to not maintain a CDR for the current callNoOp: Do NothingPage: Pages phonesPark: Park yourselfParkAndAnnounce: Park and AnnounceParkedCall: Answer a parked callPauseMonitor: Pause monitoring of a channel PauseQueueMember: Pauses a queue memberPickup: Directed Call PickupPlayback: Play a filePlayTones: Play a tone listPrivacyManager: Require phone number to be entered, if no CallerID sent Progress: Indicate progressQueue: Queue a call for a call queueQueueLog: Writes to the queue_logRandom: Conditionally branches, based upon a probabilityRead: Read a variableReadFile: ReadFile(varname=file,length)RealTime: Realtime Data LookupRealTimeUpdate: Realtime Data RewriteRecord: Record to a fileRemoveQueueMember: Dynamically removes queue membersResetCDR: Resets the Call Data RecordRetryDial: Place a call, retrying on failure allowing optional exit extension.Return: Return from gosub routineRinging: Indicate ringing toneSayAlpha: Say AlphaSayDigits: Say DigitsSayNumber: Say NumberSayPhonetic: Say PhoneticSayUnixTime: Says a specified time in a custom formatSendDTMF: Sends arbitrary DTMF digitsSendImage: Send an image fileSendText: Send a Text MessageSendURL: Send a URLSet: Set channel variable(s) or function value(s)SetAMAFlags: Set the AMA FlagsSetCallerID: Set CallerIDSetCallerPres: Set CallerID PresentationSetCDRUserField: Set the CDR user fieldSetGlobalVar: Set a global variable to a given valueSetMusicOnHold: Set default Music On Hold classSetTransferCapability: Set ISDN Transfer CapabilitySIPAddHeader: Add a SIP header to the outbound callSIPDtmfMode: Change the dtmfmode for a SIP callSLAStation: Shared Line Appearance StationSLATrunk: Shared Line Appearance TrunkSMS: Communicates with SMS service centres and SMS capable analogue phonesSoftHangup: Soft Hangup ApplicationSpeechActivateGrammar: Activate a GrammarSpeechBackground: Play a sound file and wait for speech to be recognizedSpeechCreate: Create a Speech StructureSpeechDeactivateGrammar: Deactivate a GrammarSpeechDestroy: End speech recognitionSpeechLoadGrammar: Load a GrammarSpeechProcessingSound: Change background processing soundSpeechStart: Start recognizing voice in the audio streamSpeechUnloadGrammar: Unload a GrammarStackPop: Remove one address from gosub stackStartMusicOnHold: Play Music On HoldStopMixMonitor: Stop recording a call through MixMonitorStopMonitor: Stop monitoring a channelStopMusicOnHold: Stop Playing Music On HoldStopPlayTones: Stop playing a tone listSystem: Execute a system commandTestClient: Execute Interface Test ClientTestServer: Execute Interface Test ServerTransfer: Transfer caller to remote extensionTryExec: Executes dialplan application, always returningTrySystem: Try executing a system commandUnpauseMonitor: Unpause monitoring of a channelUnpauseQueueMember: Unpauses a queue memberUserEvent: Send an arbitrary event to the manager interfaceVerbose: Send arbitrary text to verbose outputVMAuthenticate: Authenticate with Voicemail passwordsVoiceMail: Leave a Voicemail messageVoiceMailMain: Check Voicemail messagesWait: Waits for some timeWaitExten: Waits for an extension to be enteredWaitForRing: Wait for Ring ApplicationWaitForSilence: Waits for a specified amount of silenceWaitMusicOnHold: Wait, playing Music On HoldWhile: Start a while loopZapateller: Block telemarketers with SITZapBarge: Barge in (monitor) Zap channelZapRAS: Executes Zaptel ISDN RAS applicationZapScan: Scan Zap channels to monitor calls ZapSendKeypadFacility: Send digits out of band over a PRIAddQueueMember: Dynamically adds queue membersADSIProg: Load Asterisk ADSI Scripts into phoneAGI: Executes an AGI compliant applicationAMD: Attempts to detect answering machinesAnswer: Answer a channel if ringingAppendCDRUserField: Append to the CDR user fieldAuthenticate: Authenticate a userBackGround: Play an audio file while waiting for digits of an extension to go to. BackgroundDetect: Background a file with talk detectBusy: Indicate the Busy conditionChangeMonitor: Change monitoring filename of a channelChanIsAvail: Check channel availabilityChannelRedirect: Redirects given channel to a dialplan target.ChanSpy: Listen to a channel, and optionally whisper into itCongestion: Indicate the Congestion conditionContinueWhile: Restart a While loopControlPlayback: Play a file with fast forward and rewindDAHDIBarge: Barge in (monitor) DAHDI channelDAHDIRAS: Executes DAHDI ISDN RAS applicationDAHDIScan: Scan Zap channels to monitor calls DAHDISendKeypadFacility: Send digits out of band over a PRIDateTime: Says a specified time in a custom formatDBdel: Delete a key from the databaseDBdeltree: Delete a family or keytree from the databaseDeadAGI: Executes AGI on a hungup channelDial: Place a call and connect to the current channelDictate: Virtual Dictation MachineDirectory: Provide directory of voicemail extensionsDISA: DISA (Direct Inward System Access)DumpChan: Dump Info About The Calling ChannelEAGI: Executes an EAGI compliant applicationEcho: Echo audio, video, or DTMF back to the calling partyEndWhile: End a while loopExec: Executes dialplan applicationExecIf: Executes dialplan application, conditionallyExecIfTime: Conditional application execution based on the current time ExitWhile: End a While loopExtenSpy: Listen to a channel, and optionally whisper into itExternalIVR: Interfaces with an external IVR applicationFlash: Flashes a DAHDI trunkForkCDR: Forks the Call Data RecordGetCPEID: Get ADSI CPE IDGosub: Jump to label, saving return addressGosubIf: Conditionally jump to label, saving return addressGoto: Jump to a particular priority, extension, or contextGotoIf: Conditional gotoGotoIfTime: Conditional Goto based on the current timeHangup: Hang up the calling channelHasNewVoicemail: Conditionally branches to priority + 101 with the right options set HasVoicemail: Conditionally branches to priority + 101 with the right options set IAX2Provision: Provision a calling IAXy with a given templateICES: Encode and stream using 'ices'ImportVar: Import a variable from a channel into a new variableLog: Send arbitrary text to a selected log levelLookupBlacklist: Look up Caller*ID name/number from blacklist database LookupCIDName: Look up CallerID Name from local databaseMacro: Macro ImplementationMacroExclusive: Exclusive Macro ImplementationMacroExit: Exit From MacroMacroIf: Conditional Macro ImplementationMailboxExists: Check to see if Voicemail mailbox existsMeetMe: MeetMe conference bridgeMeetMeAdmin: MeetMe conference AdministrationMeetMeCount: MeetMe participant countMilliwatt: Generate a Constant 1004Hz tone at 0dbm (mu-law)MixMonitor: Record a call and mix the audio during the recordingMonitor: Monitor a channelMorsecode: Plays morse codeMP3Player: Play an MP3 file or streamMusicOnHold: Play Music On Hold indefinitelyNBScat: Play an NBS local streamNoCDR: Tell Asterisk to not maintain a CDR for the current callNoOp: Do NothingPage: Pages phonesPark: Park yourselfParkAndAnnounce: Park and AnnounceParkedCall: Answer a parked callPauseMonitor: Pause monitoring of a channelPauseQueueMember: Pauses a queue memberPickup: Directed Call PickupPlayback: Play a filePlayTones: Play a tone listPrivacyManager: Require phone number to be entered, if no CallerID sent Progress: Indicate progressQueue: Queue a call for a call queueQueueLog: Writes to the queue_logRandom: Conditionally branches, based upon a probabilityRead: Read a variableReadFile: ReadFile(varname=file,length)RealTime: Realtime Data LookupRealTimeUpdate: Realtime Data RewriteRecord: Record to a fileRemoveQueueMember: Dynamically removes queue membersResetCDR: Resets the Call Data RecordRetryDial: Place a call, retrying on failure allowing optional exit extension. Return: Return from gosub routineRinging: Indicate ringing toneSayAlpha: Say AlphaSayDigits: Say DigitsSayNumber: Say NumberSayPhonetic: Say PhoneticSayUnixTime: Says a specified time in a custom formatSendDTMF: Sends arbitrary DTMF digitsSendImage: Send an image fileSendText: Send a Text MessageSendURL: Send a URLSet: Set channel variable(s) or function value(s)SetAMAFlags: Set the AMA FlagsSetCallerID: Set CallerIDSetCallerPres: Set CallerID PresentationSetCDRUserField: Set the CDR user fieldSetGlobalVar: Set a global variable to a given valueSetMusicOnHold: Set default Music On Hold class SetTransferCapability: Set ISDN Transfer CapabilitySIPAddHeader: Add a SIP header to the outbound callSIPDtmfMode: Change the dtmfmode for a SIP callSLAStation: Shared Line Appearance StationSLATrunk: Shared Line Appearance TrunkSMS: Communicates with SMS service centres and SMS capable analogue phones SoftHangup: Soft Hangup ApplicationSpeechActivateGrammar: Activate a GrammarSpeechBackground: Play a sound file and wait for speech to be recognized SpeechCreate: Create a Speech Structure SpeechDeactivateGrammar: Deactivate a Grammar SpeechDestroy: End speech recognitionSpeechLoadGrammar: Load a Grammar SpeechProcessingSound: Change background processing sound SpeechStart: Start recognizing voice in the audio stream SpeechUnloadGrammar: Unload a GrammarStackPop: Remove one address from gosub stack StartMusicOnHold: Play Music On HoldStopMixMonitor: Stop recording a call through MixMonitor StopMonitor: Stop monitoring a channelStopMusicOnHold: Stop Playing Music On HoldStopPlayTones: Stop playing a tone listSystem: Execute a system commandTestClient: Execute Interface Test ClientTestServer: Execute Interface Test ServerTransfer: Transfer caller to remote extensionTryExec: Executes dialplan application, always returningTrySystem: Try executing a system commandUnpauseMonitor: Unpause monitoring of a channel UnpauseQueueMember: Unpauses a queue memberUserEvent: Send an arbitrary event to the manager interface Verbose: Send arbitrary text to verbose outputVMAuthenticate: Authenticate with Voicemail passwordsVoiceMail: Leave a Voicemail messageVoiceMailMain: Check Voicemail messagesWait: Waits for some timeWaitExten: Waits for an extension to be enteredWaitForRing: Wait for Ring ApplicationWaitForSilence: Waits for a specified amount of silence WaitMusicOnHold: Wait, playing Music On HoldWhile: Start a while loopZapateller: Block telemarketers with SITZapBarge: Barge in (monitor) Zap channelZapRAS: Executes Zaptel ISDN RAS applicationZapScan: Scan Zap channels to monitor calls ZapSendKeypadFacility: Send digits out of band over a PRI你可以得到当前系统可用的App 命令集合通过在CLI里面输入"show applications "和"showapplication <name>" 在1.6版本之前,或者使用"core show applications" 和"core showapplication <name>" 在版本1.4中注意:标题特殊字符含义标题特殊字符或文字颜色代表了不同含义+ 绿色:是增加的/功能的函数~ 黄色:表示弃用的函数- 红色:移处或不在原先版本中使用的函数∙ADSI 相关命令∙DAHDI (was ZAP)相关命令∙SIP命令∙SMS短消息命令∙vISDN 命令∙主叫来电演示命令(Caller presentation (ID, Name etc) )∙呼叫控制命令∙声音处理命令∙外部应用命令∙字符串及变量处理命令∙常规命令∙录音及监听功能命令∙扩展应用集成命令∙控制流程和超时命令∙数据库处理命令∙无线电技术及中继链接(Amateur Radio/Repeater Linking )∙警告监控及总站(Alarm Monitoring/Central Station )∙计费相关的命令∙语音信箱及会议相关命令∙队列及ACD管理相关命令/index.php?q=content/asterisk-%E6%8B%A8%E5%8F%B7%E6%96%B9 %E6%A1%88dialplan%E5%91%BD%E4%BB%A4%E6%89%8B%E5%86%8C。
asterisk拨号方案的配置配置文件“extensions.conf”包含了Asterisk的拨号方案(dial plan)。
它的所有操作的控制和执行流程的主要方案。
它控制呼入和呼出是如何被处理和路由。
这里是你配置连接行为的地方。
"extensions.conf"的内容以“节”的形式组织。
它可以静态设置和定义,作为上下文被执行。
设置节有general 和globals 两种形式,由系统管理员完全定义。
一种特殊类型的“contexts”是macros,由用户自定义,命名前缀是“macro-”,这是可重用的模式,如同编程语言里的“过程”。
extensions.conf中每一节都由[]中的节名开始。
这使得extensions.conf具有和windows世界里传统的ini文件非常相似的结构。
Asterisk v1.2中的新东西:默认情况下,有一个新的选项“autofallthrough”被设置成了“yes”. 这个设置改变了以前的规则使得遇忙,阻塞,挂起的呼叫被立即终止。
如果你正在为IVR 写一个extension.你必须使用“WaitExten”应用程序。
[general] extentions.conf文件的顶部,配置几个设置。
[globals] 接着,在[globals]节中,你可以定义全局变量/常量,以及他们的初始值。
Contexts 和Extensions在[general]和[globals]之后,extentions.conf文件的剩余部分就是dialplan的定义了。
dialplan是由contexts的集合组成的。
每个context是由extensions的集合组成。
Extension 模式当你在context中定义extension时,你不仅使用文字数字,字母,还要匹配extension 模式。
Context包括的内容一个extension context可以嵌套另一个,参考一下下面的范例:Context "default":Extension Description101 Mark Spencer102 Wil Meadows0 OperatorContext "local":Extension Description_9NXXXXXX Local callsinclude => "default"Context "longdistance":Extension Description_91NXXNXXXXXX Long distance callsinclude => "local"这里我们定义三种extension第一种content:default 允许拨打三个电话extension: Mark, Wil, and the Operator.第二种content:local 一个扩展模式:允许拨打7位数字号码(本地呼叫),同时也包括“default”context,这样也允许用户拨打Mark,Wil,或者是操作员。
Asterisk权威文档(第三版)Chapter 26 ————Security(安全)我们总是竭尽全力去寻找安全,然而当我们得到安全时却又恨之入骨!————John SteinbeckAsterisk系统的安全至关重要,特别是当系统接入互联网时。
一旦系统被入侵,攻击者们可以通过利用该系统实现免费的电话以赚取大量非法钱财。
本章将就如何保障你的网络电话部署安全性提供一些建议。
扫描有效账户如果你将Asterisk系统接入公共网络,几乎可以肯定你会做的其中一件事是扫描有效账户。
示例26-1包含了来自于众多Asterisk系统作者的项目之一的日志条目。
扫描往往先查找常见账户,之后才继续扫描在编账户。
就像命名交换机扩展项一样命名SIP账户是很常见的,我们说的扫描就基于这一事实。
而这就是我们下面第一条提示所要解释的关于Asterisk系统安全的问题:提示1:使用非数字用户名作为你的VoIP账户将使它更难以被猜测,举个例子,在本书部分章节中,我们使用SIP电话本身的MAC地址作为它在Asterisk系统中的账户名。
例26-1账户扫描的日志摘录[Aug 22 15:17:15] NOTICE[25690] chan_sip.c: Registration from'"123"<sip:123@127.0.0.1>' failed for '203.86.167.220:5061' - No matching peerfound[Aug 22 15:17:15] NOTICE[25690] chan_sip.c: Registration from'"1234"<sip:1234@127.0.0.1>' failed for '203.86.167.220:5061' - No matching peerfound[Aug 22 15:17:15] NOTICE[25690] chan_sip.c: Registration from* The real IP address has been replaced with 127.0.0.1 in the log entries.'"12345"<sip:12345@127.0.0.1>' failed for '203.86.167.220:5061' - No matching peerfound[Aug 22 15:17:15] NOTICE[25690] chan_sip.c: Registration from'"123456"<sip:123456@127.0.0.1>' failed for '203.86.167.220:5061' - No matchingpeer found[Aug 22 15:17:15] NOTICE[25690] chan_sip.c: Registration from'"test"<sip:test@127.0.0.1>' failed for '203.86.167.220:5061' - No matching peerfound[Aug 22 15:17:15] NOTICE[25690] chan_sip.c: Registration from'"sip"<sip:sip@127.0.0.1>' failed for '203.86.167.220:5061' - No matching peer found[Aug 22 15:17:15] NOTICE[25690] chan_sip.c: Registration from'"user"<sip:user@127.0.0.1>' failed for '203.86.167.220:5061' - No matching peerfound[Aug 22 15:17:16] NOTICE[25690] chan_sip.c: Registration from'"admin"<sip:admin@127.0.0.1>' failed for '203.86.167.220:5061' - No matching peerfound[Aug 22 15:17:16] NOTICE[25690] chan_sip.c: Registration from'"pass"<sip:pass@127.0.0.1>' failed for '203.86.167.220:5061' - No matching peerfound[Aug 22 15:17:16] NOTICE[25690] chan_sip.c: Registration from'"password"<sip:password@127.0.0.1>' failed for '203.86.167.220:5061' - No matchingpeer found[Aug 22 15:17:16] NOTICE[25690] chan_sip.c: Registration from'"testing"<sip:testing@127.0.0.1>' failed for '203.86.167.220:5061' - No matching peerfound[Aug 22 15:17:16] NOTICE[25690] chan_sip.c: Registration from'"guest"<sip:guest@127.0.0.1>' failed for '203.86.167.220:5061' - No matching peerfound[Aug 22 15:17:16] NOTICE[25690] chan_sip.c: Registration from'"voip"<sip:voip@127.0.0.1>' failed for '203.86.167.220:5061' - No matching peerfound[Aug 22 15:17:16] NOTICE[25690] chan_sip.c: Registration from'"account"<sip:account@127.0.0.1>' failed for '203.86.167.220:5061' - No matchingpeer found...[Aug 22 15:17:17] NOTICE[25690] chan_sip.c: Registration from'"100"<sip:100@127.0.0.1>' failed for '203.86.167.220:5061' - No matching peer found[Aug 22 15:17:17] NOTICE[25690] chan_sip.c: Registration from'"101"<sip:101@127.0.0.1>' failed for '203.86.167.220:5061' - No matching peer found[Aug 22 15:17:17] NOTICE[25690] chan_sip.c: Registration from'"102"<sip:102@127.0.0.1>' failed for '203.86.167.220:5061' - No matching peer found[Aug 22 15:17:17] NOTICE[25690] chan_sip.c: Registration from'"103"<sip:103@127.0.0.1>' failed for '203.86.167.220:5061' - No matching peer found[Aug 22 15:17:17] NOTICE[25690] chan_sip.c: Registration from'"104"<sip:104@127.0.0.1>' failed for '203.86.167.220:5061' - No matching peer found[Aug 22 15:17:17] NOTICE[25690] chan_sip.c: Registration from'"105"<sip:105@127.0.0.1>' failed for '203.86.167.220:5061' - No matching peer found账户扫描利用尝试注册时服务器端返回的信息不同来判断某个账户存在与否。
朗视_IPPBX_队列中暂停和取消暂停座席关键词速读:朗视, Yeastar, 朗视IPPBX, 座席, 队列适用型号:朗视S系列/U系列IPPBX适用软件版本:任意版本适用硬件版本:all方案背景:当有座席需要暂时离开座位时,一般都是建议用退出座席,回来后用登入座席,但是退出队列后,座席在队列内的计时及接听电话数会被清零。
易造成,座席重新加入到队列后,电话全都跑这个座席了,达不到话务平均分配,而很多呼叫中心的座席,都是依据接电话的个数来绩效考核的。
所以不能使用退出座席的方法来临时拒接电话。
具体方案:通过查看《Asterisk权威指南第3版中文》第13章自动呼叫分配(ACD),说明,其中有暂停和取消暂停座席通过尝试,可以使用暂停座席的方式,暂停后,座席原有的计时继续,接听电话个数也保留;取消暂停座席后,由于话务平均的概念,这个座席会优先被分配。
S系列IPPBX:本例座席分机拨打67000*为暂停座席,67001*为恢复座席,而如果用户希望从API 操作暂停和恢复座席,那么需要把脚本改成不带*的,即脚本可以改成67000、67001(注意号码不要冲突),然后使用“分机拨打外线号码”的方式来操作!1.自定义extensions.conf:[queues]exten = 6700,1,UserEvent(UpdateCallee,callee: 6700)exten = 6700,2,Gotoif($[${APIDIALSTATUS}==BUSY]?h,1)exten = 6700,3,Set(YSGROUPEXTEN=6700)exten = 6700,n,Set(CDR(orgdst)=6700)exten = 6700,n,Set(CDR(onlyext)=yes)exten = 6700,n,Goto(queue_6700,6700,1)exten =6700*,1,Macro(queue-login,queue-6700,,Local/${SRCEXTENSION}@only-dialexte nsion-q6700,hint:${SRCEXTENSION}@default)exten =6700**,1,Macro(queue-logout,queue-6700,Local/${SRCEXTENSION}@only-dialext ension-q6700)exten =67000*,1,Macro(queue-pause,queue-6700,Local/${SRCEXTENSION}@only-dialext ension-q6700)exten =67001*,1,Macro(queue-unpause,queue-6700,Local/${SRCEXTENSION}@only-dial extension-q6700)exten = h,1,Hangup()[macro-queue-pause]exten = s,1,Wait(1)exten = s,n,PauseQueueMember(${ARG1},${ARG2})exten = s,n,Playback(queue_pause)exten = s,n,Playback(vm-goodbye)exten = s,n,Hangup()[macro-queue-unpause]exten = s,1,Wait(1)exten = s,n,UnpauseQueueMember(${ARG1},${ARG2})exten = s,n,Playback(queue_unpause)exten = s,n,Playback(vm-goodbye)exten = s,n,Hangup()2.语音默认调用FTP位置(中文):/ysapps/pbxcenter/var/lib/asterisk/sounds/zh/3.座席暂停后,通过CLI 命令queue show queue-6700,显示如下:U系列IPPBX:1.自定义extensions.conf:[queues]exten = 680,1,Goto(queue-680,680,1)exten = 680*,1,Macro(queue-login,queue-680,,${CONTEXT:13})exten = 680**,1,Macro(queue-logout,queue-680,${CONTEXT:13})exten = 6800*,1,PauseQueueMember(queue-680,SIP/${CONTEXT:13})exten = 6800*,n,Playback(queue_pause)exten = 6800*,n,Playback(vm-goodbye)exten = 6801*,1,UnpauseQueueMember(queue-680,SIP/${CONTEXT:13})exten = 6801*,n,Playback(queue_unpause)exten = 6801*,n,Playback(vm-goodbye)2.语音默认调用位置:/var/lib/asterisk/sounds/N系列,使用FXS模拟口,被叫是DAHDI/端口号,N系列分机从601到624,端口是01-24,即分机号600为具体端口号,如果座席使用SIP话机就要用PJSIP了(这个方法比较笨,没找到对应实际的变量,或者也可以增加下号码段的判断,FXS用的600开始,SIP是500开始),:自定义extensions.conf:[queues]exten = 661,1,Goto(queue-661,661,1)exten = 661*,1,Macro(queue-login,queue-661,,${SRCEXTENSION})exten = 661**,1,Macro(queue-logout,queue-661,${SRCEXTENSION})exten = 6610*,1,Macro(queue-pause,queue-661,${SRCEXTENSION})exten = 6611*,1,Macro(queue-unpause,queue-661,${SRCEXTENSION})[macro-queue-pause]exten = s,1,Wait(1)exten = s,n,Set(ARG00=$[${ARG2}-600])exten = s,n,PauseQueueMember(${ARG1},DAHDI/${ARG00}) exten = s,n,Playback(queue_pause)exten = s,n,Playback(vm-goodbye)exten = s,n,Hangup()[macro-queue-unpause]exten = s,1,Wait(1)exten = s,n,Set(ARG00=$[${ARG2}-600])exten = s,n,UnpauseQueueMember(${ARG1},DAHDI/${ARG00}) exten = s,n,Playback(queue_unpause)exten = s,n,Playback(vm-goodbye)exten = s,n,Hangup()。