要激活AMI,需要在/etc/asterisk/manager.conf中,[general]块下设置enabled=yes
然后添加用户,比如
[admin]
secret = admin
deny = 0.0.0.0/0.0.0.0
permit = 127.0.0.1/255.255.255.0
read = all,system,call,log,verbose,command,agent,user,config
write = all,system,call,log,verbose,command,agent,user,config
重启asterisk,用telnet连接到AMI
现在,可以输入命令来登录,注意冒号后的空格
敲两次回车确认,得到服务器的回复:
当然了,我们最关心的是如何通过脚本来实现自动化.在鉴权成功后,就可以进行数据包交换了.数据包包的类型在第一行定义.客户端发送Action包,服务器响应Response或者发送Event包.另外数据包中行的顺序是不相关的.每一行使用CR(回车)或LF(换行)来结束.整个数据包使用一个额外的回车或换行来结束.一个AMI终端通常为每一个Action发送一个随机但是唯一的ActionID,服务器使用这个ActionID在Response中来管理重叠的数据包流(packet stream).
服务器发送终端Event数据包,可以关联任何事件,每一个事件就是一行,包括终端初始化Action.这种情况下,服务器发送"Response:Follows",紧接初始action的ActionID事件(行)后,接着是一个关闭事件(通常是 actionnameComplete).
如果你的终端不需要事件响应,他可以通过包含"Events:off"语句在鉴权数据包中,来关闭这些通知.这样设置后,AMI将只回应终端初始化的actions.
If your client has no need for events, it can turn off these notifications by including Events: off
in the authentication packet. Once set, the AMI sends only responses to actions initiated by the client.
下面是可用命令表:
Asterisk manager commands