工程包主要有有两在部分组成AGI服务器和API Manager。
APIManager用来监控Asterisk服务器的事件,包手话机状态,座席状态等。
AGI Server是一个Agi服务器。Asterisk除了调用asterisk本身的应用外,还可以调用第三方的服务器,如果第三方应用和asterisk是同一个进程,可以用AGI协议发送命令。如果第三方应用和asterisk不在同一个机器,可以通过FastAgi协议来进行远程调用。
AsteriskManager主要作用是用来提供asterisk扩展APP的解决方案。
1.1 配置和运行
1:配置APIManager。
要运行API Manager,必须打开manager.conf。配置如下
[admin]
secret = amp111
;deny=0.0.0.0/0.0.0.0
permit=0.0.0.0/0.0.0.0
read = system,call,log,verbose,command,agent,user
write = system,call,log,verbose,command,agent,user
read:APIManager可以读取的事件类型.write: APIManager可以发送的命令
2:配置agi
在配置计划里加上agi(agi://agiserveraddress/aginame.agi),
1.2 AGIServer
拨号方案中,通过AGI接口编写实施脚本。脚本和Asterisk之间通过标准的输入输出进行交互。
执行AGI脚本时,Application应用就是'agi',脚本会一直等待直至AGI返回结果,AGI也可以带参数,类似http URL.
启动AGIServer之后,配置AGIName=Agiclass
agiName是调用的Agi名称.agiClass为此agi实际的java类
例:orig.agi=qflag.asterisk.agi.OrigAgi
2 架构及接口定义
架构图如下:
(图090910-1115)
AsteriskManager为第三方管理包。如果需要实现asterisk的某些功能,可以扩展以下接口:
AsteriskEventHandle = qflag.asterisk.AsteriskEventHandle
#默认的事件处理,此第三方包可以接收到asterisk的事件,并且已经在AsteriskEventHandle实现了处理机器,如果需要额外处理电话事件。从AsteriskEventHandle派生,并且修改相应的ACDConfig.property
AsteriskServer = qflag.asterisk.QflagAsteriskServer
#默认的AsteriskManagerServer。里面提供了AGIServer,APIManager,JTAPI manager。如果需要实现额处的功能,请从QflagAsteriskServer派生
AsteriskAgentManager = qflag.asterisk.file.FileAgentManager
#ACD队列中通过Agent名字获得相应的号码,如果要实现自己的ACD从AsteriskAgentManager派生
AsteriskAgentStatusManager = qflag.acd.manager.AgentStatusManager
#状态接口,获得Agent的各种状态,包括是否可以打电话,是否在线等。
对状态进行补充可以从AgentStatusManager派生