为了与Asterisk进行管理通话,管理客户端必须建立到Asterisk服务器侦听端口(一般是5038)的TCP/IP连接,并使用登陆动作进行身份验证。这就要求在Asterisk服务器上创建用户账户,用户账户在/etc/asterisk/manager.conf中配置。账户由允许登陆的主机,登录密码以及被授予的权限列表组成。
1.通过配置/etc/asterisk/manager.conf文件,使得Asterisk开启AMI监听端口,默認端口是5038,配置如下
[general]
displaysystemname = yes
enabled = yes
;webenabled = yes
port = 5038
2.配置客戶端登錄AMI埠的用戶名和密碼,測試機配置如下
[admin]
secret = admin
;deny=0.0.0.0/0.0.0.0
;permit=209.16.236.73/255.255.255.0
;read = system,call,log,verbose,agent,user,config,dtmf,reporting,cdr,dialplan
;write = system,call,agent,user,config,command,reporting,originate
;read =system,call,dtmf,cdr,dialplan
read =call,dialplan
write = system,call,agent,user,config,command,reporting,originate
3.Asterisk,下面是帶CLI命令行啟動方式
$asterisk -vvvvvc
4.坐席签入,拨号方案配置如下(/etc/asterisk/extensions.conf):
[user]
exten => _0.,1,mixmonitor(/record/${STRFTIME(${EPOCH},,%Y%m%d)}/${STRFTIME(${EPOCH},,%Y%m%d%H%M%S)}_${CALLERID(num)}_${EXTEN:0}.wav,bv(4)V(4)W(4))
exten => _0.,n,dial(SIP/${EXTEN}@shenzhen,45)
exten => _0.,n,hangup
exten => _1.,1,mixmonitor(/record/${STRFTIME(${EPOCH},,%Y%m%d)}/${STRFTIME(${EPOCH},,%Y%m%d%H%M%S)}_${CALLERID(num)}_${EXTEN:0}.wav,bv(4)V(4)W(4))
exten => _1.,n,dial(SIP/${EXTEN}@heilong,45)
exten => _1.,n,hangup
exten => _555X,1,Macro(user-callerid,)
exten => _555X.,1,Answer
exten => _555X.,n,Wait(1)
exten => _555X.,n,ChanSpy(SIP/${EXTEN:3})
exten => _555X.,n,Hangup
exten => *789,1,NooP(${EXTEN})
exten => *789,n,AgentLogin()
exten => queue1, 1, Answer
exten => queue1, n, mixmonitor(/record/${STRFTIME(${EPOCH},,%Y%m%d)}/${STRFTIME(${EPOCH},,%Y%m%d%H%M%S)}_${CALLERID(num)}_${EXTEN:0}.wav,bv(4)V(4)W(4))
exten => queue1, n, Ringing
exten => queue1, n, Queue(MyQueue)
exten => queue1, n, Hungup
5.客户端登錄AMI監聽端口
51 本機測試登錄命令:telnet 10.236.22.116 5038 進行連接
5.2通過配置的manager.conf檔中用戶名和密碼登錄AMI介面,AMI命令以回車換行為結束符,所以按兩次回車鍵用於發送命令,登錄命令如下:
Action: login
Username: admin
Secret: admin
5.发起呼叫
Action: Originate
channel: LOCAL/015003061027@user
context: user
exten: queue1
priority: 1
callerid: 10016
Async: 1
ActionID: 1
6.用户接通后,转给队列成员接听。