http://blog.csdn.net/niino/article/details/5748805

要激活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

  1. [root@Freeiris2 ~]# telnet 127.0.0.1 5038
  2. Trying 127.0.0.1...
  3. Connected to localhost.localdomain (127.0.0.1).
  4. Escape character is '^]'.
  5. Asterisk Call Manager/1.0

现在,可以输入命令来登录,注意冒号后的空格

  1. Action: Login
  2. ActionID: 1
  3. Username: admin
  4. Secret: admin

敲两次回车确认,得到服务器的回复:

[c-sharp] view plaincopy

  1. Response: Success
  2. ActionID: 1
  3. Message: Authentication accepted

当然了,我们最关心的是如何通过脚本来实现自动化.在鉴权成功后,就可以进行数据包交换了.数据包包的类型在第一行定义.客户端发送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

===================================

http://blog.chinaunix.net/uid-26456800-id-3314719.html

测试原因,需要搭建一个voip的环境,原来的人马装了一台trixbox,我并不想单独为这个弄一台机器,所以就尝试在ubuntu上搭。 asterisk配置起来很复杂,折腾了半天没搞定,想要安freepbx,结果弄了1天多也没弄上,安装时死活连不上数据库(目前怀疑有可能是权限问 题),最后选用了asterisk-gui.感觉不错。安装过程也遇到了不少麻烦。记录如下:

 
1.安装软件。
sudo apt-get install asterisk
2. 去http://downloads.asterisk.org/pub/telephony/asterisk-gui/releases/下载最新的Asterisk GUI
 
3. 下载并解压缩
 
4. 安装Asterisk GUI
$ ./configure
$ make
$ sudo make install
 
4. 修改/etc/asterisk/http.conf 
enabled=yes 
bindaddr=0.0.0.0      #0.0.0.0表示本机的所有IP都可以访问  
bindport=8088 
enablestatic=yes 
 
修改/etc/asterisk/manager.conf
[general]
enabled = yes
webenabled = yes
port = 5038
bindaddr = 0.0.0.0   
 [admin]              #登录时的账户名称
secret=admin         #登录时的账户密码
read = system,call,log,verbose,command,agent,config,read,write,originate
write = system,call,log,verbose,command,agent,config,read,write,originate
 
6. 复制文件及创建连接 (这一步很重要,网上的很多教程都没有这一步,可能会导致"404 not found", 权限不够等问题)
 
$ sudo cp -Rfv /var/lib/asterisk/* /usr/share/asterisk/ 
$ sudo mv /var/lib/asterisk /var/lib/asterisk_original 
$ sudo ln -s /usr/share/asterisk  /var/lib/asterisk 
$ sudo chmod 777 /usr/share/asterisk/* -R 
 
7. 重启asterisk服务
此处务必要使用root, 否则虽然能启动asterisk,但是http server会总是disabled的状态。
同时asterisk -r是也需要root,否则会出现错误:Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?)
 
$ sudo /etc/init.d/asterisk restart 
$ sudo asterisk -r  
cuo w
进入asterisk操作界面后运行运行”http show status “可以查看Http服务状态
看到如下状态则成功了。
royn-VGN-Z690J*CLI> http show status
HTTP Server Status:
Prefix: 
Server Enabled and Bound to 0.0.0.0:8088
 
Enabled URI's:
/httpstatus => Asterisk HTTP General Status
/phoneprov/... => Asterisk HTTP Phone Provisioning Tool
/amanager => HTML Manager Event Interface w/Digest authentication
/arawman => Raw HTTP Manager Event Interface w/Digest authentication
/manager => HTML Manager Event Interface
/rawman => Raw HTTP Manager Event Interface
/static/... => Asterisk HTTP Static Delivery
/amxml => XML Manager Event Interface w/Digest authentication
/mxml => XML Manager Event Interface
 
Enabled Redirects:
  None.
 
8. 登陆页面
http://localhost:8088/static/config/index.html 
ID:admin Password: admin
此时页面会陷入死循环,不断刷新,显示:
 Your configuration will now be upgraded to work with the latest version of GUI. 
 
这是asterisk-gui和asterisk 1.8不兼容导致的。
修改 /var/lib/asterisk/static-http/config/js/index.js重新登陆即可。
if ( resp_lower.contains("branches/1.6") || resp_lower.contains("asterisk/1.6") || resp_lower.contains("svn-branch-1.6") || resp_lower.contains("svn-trunk-") )
..
改为
replace:
if
( resp_lower.contains("branches/1.6") ||
resp_lower.contains("asterisk/1.6") ||
resp_lower.contains("svn-branch-1.6") ||
resp_lower.contains("svn-trunk-") || resp_lower.contains("asterisk/1.8")
)
引用:
Ubuntu 11.10安装Asterisk 1.8和Asterisk GUI 2.01
0018390: Asterisk Gui Loop on First Installation
https://issues.asterisk.org/bug_view_advanced_page.php?bug_id=18390

成功進入了Asterisk 1.8 GUI 2.0 的解決方法

http://www.telecom-cafe.com/forum/viewthread.php?tid=3316

=================================

http://www.cnblogs.com/IcefishBingqing/p/3427112.html

Asterisk控制接口(AMI)允许管理客户端程序连接到一个asterisk实例并且可以通过TCP/IP流发送命令或读取事件。这在试图跟踪asterisk的状态或其中的电话客户端状态时很有用,AMI说明了客户端基于的一般(可能是动态的)规则。
一种简单的"key: value"协议用于已连接的管理客户端和asteriskPBX之间的信息传递。每行都用回车换行(/r/n)来结束。

协议特点:        
在发送命令前,你必须建立一个连接。
在认证后,数据包任何时间都可以在两个方向上互相传输。
数据包第一行为"Action"时表明是由管理客户端发送到asterisk,第一行为"Event"或"Response"表明有asterisk发送到管理客户端。数据包内各行顺序可以变化,对数据包没有影响。
回车换行由于区分每一行,空行(两个连续回车换行)用于表明命令结束,Asterisk开始处理命令。

数据包类型:        
数据包的类型通过一下几种关键字来划分
Action:一个由管理客户端发送到Asterisk的数据包,请求执行特定的动作。只有有限的几种动作供客户端使用,每个动作是由Asterisk服务器上的模块所决定的。一次只能执行一个动作,该动作数据包包含了动作名称以及执行所必需的参数。
Response:Asterisk对管理客户端动作的响应。
Event: 有关Asterisk核心或扩展模块发生事件的信息。

建立管理连接和用户身份验证:        

了与Asterisk进行管理通话,管理客户端必须建立到Asterisk服务器侦听端口(一般是5038)的TCP/IP连接,并使用登陆动作进行身份
验证。这就要求在Asterisk服务器上创建用户账户,用户账户在/etc/asterisk/manager.conf中配置。账户由允许登陆的主
机,登录密码以及被授予的权限列表组成。
登录和身份验证的经理,你必须发送一个" 登录 "行动,用您的用户名和秘密(密码作为参数)。 Here is an example:下面是一个例子:
Action: login
Username: admin
Secret: secret

你还可以通过"Events: off"阻止事件数据包发送到你的连接。例如:
Action: login
Username: admin
Secret: secret
Events: off

动作数据包:        
向Asterisk发送动作时,额外的关键字可以提供进一步的动作信息。例如,你可能希望指定号码或通道的断开。此外,如果您的操作会导致Asterisk来执行拨号规则中的条目,你可以传递变量给拨号规则。这与你传递关键字的方式是一样的。
向Asterisk发送动作数据包时,按照以下格式:
Action: <action type><CRLF>
<Key 1>: <Value 1><CRLF>
<Key 2>: <Value 2><CRLF>
...
Variable: <Variable 1>=<Value 1><CRLF>
Variable: <Variable 2>=<Value 2><CRLF>
...
<CRLF>

管理动作(          Action          ):        
通过CLI命令show manager commands的输出结果就是管理动作列表。
具体如下:
          AbsoluteTimeout          这个命令将要求Asterisk在指定秒数后挂断特定的通道,从而有效地结束通话。
参数:
Channel :哪些渠道挂断,如SIP/123-1c20
Timeout :到通道应挂断的秒数
例子:
请求信息
Action: AbsoluteTimeout
Channel: SIP/123-1c20
Timeout: 20

返回成功信息
Response: Success
Message: Timeout Set

返回失败信息
Response: Error
Message: No such channel

ChangeMonitor          更改记录某通道信息文件名。
参数:
Channel:通道名称
File:文件名

例子:
发送请求
ACTION: ChangeMonitor
Channel: SIP/x7065558529-1c20
File: 20050103-140105_cc51

返回失败信息
Response: Error
Message: No such channel

返回成功信息
Response: Success
Message: Stopped monitoring channel

Command          发送Asterisk CLI命令。
参数:
Command:Asterisk CLI 命令。

例子:
发送请求
ACTION: COMMAND
command: Show Channels

返回信息
Response: Follows
Channel (Context Extension Pri ) State Appl. Data
0 active channel(s)
--END COMMAND-

注意:返回的事件响应结果并不是发送一个回车换行(/r/n),而只发送回车(/n),如果你在中断处理程序中只等待回车换行,那么这条信息将会被被抛弃。
例如command返回信息如下:
Response: Follows/r/n
Channel Location State Application(Data)/n
SIP/x7065551212b-1af (None) Ringing AppDial((Outgoing Line))/n
SIP/x7065551212c-2aa 29@default:2 Ring Dial(SIP/x7065551212b)/n
2 active channels/n
1 active call/r/n
--END COMMAND--/r/n
/r/n

Events          事件控制流,用于启用/禁用发送给管理客户端的事件。
参数:
EventMask: 'on'表示所有事件均会被发送到管理客户端。
'off'表示所有时间都不会被发送。
'system,call,log'用于选择被发送的事件。
提示:有些事件是启用或禁已经在.conf文件中配置了, They might be disabled by default.他们可能是默认为禁用。

例子:
注意在此例子中EventMask事件没有立即返回的响应信息,只有在设备注销时才返回相关信息。
发送请求:
ACTION: EVENTS
EVENTMASK: ON
返回信息:
Event: PeerStatus
Peer: SIP/ChannelName
PeerStatus: Unregistered
Cause: Expired

当EventMask参数为'off'时会立即返回响应信息,如下:
发送:
ACTION: EVENTS
EVENTMASK: OFF
返回:
Response: Events Off

ExtensionState          检查分机的状态。
参数:Exten,Context,ActionID

例子:
发送:
ACTION: ExtensionState
Context: default
Exten: 2001
ActionID: 1

接收:
Response: Success
ActionID: 1
Message: Extension Status
Exten: 2001
Context: default
Hint: SIP/2001
Status: 0

Status状态代码:
-1 =扩展找不到
0 =空闲
1 =在使用
2 =忙
4 =不可用
8 =振铃
16 =正等待

GetVar:获取一个通道变量。
参数:Channel,Variable,actionID
ActionID是一个可选的参数匹配信息。

例子:
发送:
ACTION: GetVar
Channel: SIP/5060-44d225d0
Variable: extension
成功返回:
Response: Success
Value: 17065551419
失败返回:
Response: Error
Message: No such channel

Response: Success
varname: (null)

Hangup:挂断指定通道。
参数:Channel

例子:

发送:
ACTION: Hangup
Channel: SIP/x7065558529-99a0

接收:
Event: Unlink
Channel1: SIP/127.180.254.109-44df88e8
Channel2: SIP/x7065558529-99a0
Uniqueid1: 1124989110.20473
Uniqueid2: 1124989110.20474

Event: Hangup
Channel: SIP/x7065558529-99a0
Uniqueid: 1124989110.20474
Cause: 16

Event: Hangup
Channel: SIP/127.180.254.109-44df88e8
Uniqueid: 1124989110.20473
Cause: 16

Response: Success
Message: Channel Hungup

IAXpeers          显示iax信息列表。
例子:

发送:
Action: IAXPeers

接收:
Name/Username Host Mask Port Status
8002 (Unspecified) (D) 255.255.255.255 0 UNKNOWN
8001 192.168.0.91 (D) 255.255.255.255 4569 OK (5 ms)
2 iax2 peers [1 online, 1 offline, 0 unmonitored]

ListCommands          显示命令列表。
参数:ActionID

例子:
发送:
Action:ListCommands
接收:Response: Success
AbsoluteTimeout: Set Absolute Timeout (Priv: call,all)
AgentCallbackLogin: Sets an agent as logged in by callback (Priv: agent,all)
AgentLogoff: Sets an agent as no longer logged in (Priv: agent,all)
Agents: Lists agents and their status (Priv: agent,all)
ChangeMonitor: Change monitoring filename of a channel (Priv: call,all)
Command: Execute Asterisk CLI Command (Priv: command,all)
DBGet: Get DB Entry (Priv: system,all)
DBPut: Put DB Entry (Priv: system,all)
Events: Control Event Flow (Priv: )
ExtensionState: Check Extension Status (Priv: call,all)
Getvar: Gets a Channel Variable (Priv: call,all)
Hangup: Hangup Channel (Priv: call,all)
IAXnetstats: Show IAX Netstats (Priv: )
IAXpeers: List IAX Peers (Priv: )
ListCommands: List available manager commands (Priv: )
Logoff: Logoff Manager (Priv: )
MailboxCount: Check Mailbox Message Count (Priv: call,all)
MailboxStatus: Check Mailbox (Priv: call,all)
MeetmeMute: Mute a Meetme user (Priv: call,all)
MeetmeUnmute: Unmute a Meetme user (Priv: call,all)
Monitor: Monitor a channel (Priv: call,all)
Originate: Originate Call (Priv: call,all)
Park: Park a channel (Priv: call,all)
ParkedCalls: List parked calls (Priv: )
PauseMonitor: Pause monitoring of a channel (Priv: call,all)
Ping: Keepalive command (Priv: )
PlayDTMF: Play DTMF signal on a specific channel. (Priv: call,all)
QueueAdd: Add interface to queue. (Priv: agent,all)
QueuePause: Makes a queue member temporarily unavailable (Priv: agent,all)
QueueRemove: Remove interface from queue. (Priv: agent,all)
Queues: Queues (Priv: )
QueueStatus: Queue Status (Priv: )
Redirect: Redirect (transfer) a call (Priv: call,all)
SetCDRUserField: Set the CDR UserField (Priv: call,all)
Setvar: Set Channel Variable (Priv: call,all)
SIPpeers: List SIP peers (text format) (Priv: system,all)
SIPshowpeer: Show SIP peer (text format) (Priv: system,all)
Status: Lists channel status (Priv: call,all)
StopMonitor: Stop monitoring a channel (Priv: call,all)
UnpauseMonitor: Unpause monitoring of a channel (Priv: call,all)
UserEvent: Send an arbitrary event (Priv: user,all)
WaitEvent: Wait for an event to occur (Priv: )
ZapDialOffHook: Dial over channel while offhook (Priv: )
ZapDNDoff: Toggle channel Do Not Disturb status OFF (Priv: )
ZapDNDon: Toggle channel Do Not Disturb status ON (Priv: )
ZapHangup: Hangup Channel (Priv: )
ZapRestart: Fully Restart channels (terminates calls) (Priv: )
ZapShowChannels: Show status channels (Priv: )
ZapTransfer: Transfer Channel (Priv: )

Logoff          注销管理客户端。
例子:
发送:
ACTION: LOGOFF
接收:
Response: Goodbye
Message: Thanks for all the fish.

MailboxCount          检查语音信箱是否有新信息。
参数:MailBox,actionID
例子:
发送:
Action: MailboxCount
Mailbox: 2001@device
接收:
Response: Success
Message: Mailbox Message Count
Mailbox: 2001@device
NewMessages: 1
OldMessages: 0

MailboxStatus:检查语音信箱状态。
参数:MailBox,actionID
例子:
发送:
Action: MailboxStatus
Mailbox: 2001@device
接收:
Response: Success
Message: Mailbox Status
Mailbox: 2001@device
Waiting: 1

Monitor:监听某个通道。
参数:Channel, File, Format, Mix
例子:
发送:
ACTION: Monitor
Channel: SIP/x7062618529-643d
File: channelsavefile
Mix: 1

返回:
Response: Success
Message: Started monitoring channel

失败返回
Response: Error
Message: No such channel

Originate          产生一个呼叫。(privilege: call,all)        
参数:
Channel:呼叫连接产生的通道。
Context:呼叫连接所使用的Context(Context,Exten,Priority必须同时使用)
Exten: 呼叫连接所使用的分机(Context,Exten,Priority必须同时使用)

Priority:呼叫连接的优先级。(Context,Exten,Priority必须同时使用)
TimeOut:呼叫连接的超时(,单位为毫秒,默认为30000毫秒)
CallID:呼叫连接的来电显示。
Variable:通道变量设置。本地通道和连接通道都将被设置。
Account:呼叫所用密码。
Application:使用此次呼叫的应用程序。(使用参数和数据)
Data:应用程序参数所使用的数据。
Async:呼叫是否为异步。(允许多次调用不等待响应生成)
ActionID
求标识符。 It allows you to identify the response to
thisrequest.它允许您确定这一请求的响应信息。 You may use a number or a string. Useful
whenyou make several simultaneous requests.当您有用几个并发请求,您可以使用一个数字或字符串来区分。

事件的顺序:首先SGI通道鸣响,然后当他被接听后,通过上下文呼叫另一端的分机。注意超时只用于呼叫通道,呼叫分机时的超时另外指定。

使用异步导致1 OriginateResponse事件,包含了失败的原因。 Reason may be one of the following:原因可能是下列之一:
0 = no such extension or number 0 =没有这样的延长或编号
1 = no answer 1 =无应答
4 = answered 4 =回答
8 = congested or not available 8 =拥挤或不可用

例1(从SIP通道呼叫一个分机,这将导致外部呼叫无法产生直到sip通道挂断)
发送:
Action: Originate
Channel: SIP/101test
Context: default
Exten: 8135551212
Priority: 1
Callerid: 3125551212
Timeout: 30000
Variable: var1=23|var2=24|var3=25
ActionID: ABC45678901234567890

分机8135551212是外呼号码。这个例子表明了变量的使用方法

例2(从呼出通道呼叫一个本地分机,这将导致该分机不再响铃直到zap通道挂断)
发送:
Action: Originate
Channel: Zap/g2/8135551212
Context: default
Exten: 101
Priority: 1
Timeout: 30000
Callerid: 3125551212

101为一个本地分机号。

例3(运行系统命令)
发送:
Action: Originate
Channel: Local/1@dummy
Application: system
Data: /path/to/script

提示:如果你希望通道连接到任意分机和上下文,需要指定一个本地通道

ParkedCalls          设置显示保持的呼叫列表。
参数:ActionID
发送:
Action: PakedCalls

返回:
Response: Success
Message: Parked calls will follow

Event: ParkedCallsComplete
          Ping        
例子:
发送:
Action: ping
返回:
Response: Pong

QueueAdd          添加队列成员。
参数:
Queue:添加成员的队列名。
Interface: 成员名(例如sip/2001)
Penalty:数值,值越高越靠后。
Paused:暂停(true)或不暂停(false)
ActionID:(前面已介绍)

例子:
发送:
Action: QueueAdd
Queue: 200
Interface: sip/3001
Penalty: 1
Paused: true
返回:
Response: Success
Message: Added interface to queue

Event: QueueMemberAdded
Privilege: agent,all
Queue: 200
Location: sip/3001
MemberName: sip/3001
Membership: dynamic
Penalty: 1
CallsTaken: 0
LastCall: 0
Status: 5
Paused: 1

QueueRemove          移除队列成员。
参数:
Queue:移除成员的队列名。
Interface: 成员名(例如sip/2001)

例子:
发送:
Action: QueueRemove
Queue: 200
Interface: sip/3001
返回:
Response: Success
Message: Removed interface from queue

Event: QueueMemberRemoved
Privilege: agent,all
Queue: 200
Location: sip/3001
MemberName: sip/3001

Queues          返回全部队列的配置以及电话数据信息。
例子:
发送:
Action: Queues
返回:
200 has 0 calls (max unlimited) in 'ringall' strategy (0s holdtime), W:0, C:0, A:0, SL:0.0% within 0s
Members:
Local/2002@from-internal/n (Invalid) has taken no calls yet
Local/2003@from-internal/n (Invalid) has taken no calls yet
Local/2001@from-internal/n (Invalid) has taken no calls yet
No Callers

default has 0 calls (max unlimited) in 'ringall' strategy (0s holdtime), W:0, C:0, A:0, SL:0.0% within 0s
No Members
No Callers

QueueStatus          返回全部队列的电话数据信息。
例子:
发送:
Action: QueueStatus
返回:
Response: Success
Message: Queue status will follow

Event: QueueParams
Queue: 200
Max: 0
Calls: 0
Holdtime: 0
Completed: 0
Abandoned: 0
ServiceLevel: 0
ServicelevelPerf: 0.0
Weight: 0

Event: QueueMember
Queue: 200
Name: Local/2002@from-internal/n
Location: Local/2002@from-internal/n
Membership: static
Penalty: 0
CallsTaken: 0
LastCall: 0
Status: 4
Paused: 0

Event: QueueMember
Queue: 200
Name: Local/2003@from-internal/n
Location: Local/2003@from-internal/n
Membership: static
Penalty: 0
CallsTaken: 0
LastCall: 0
Status: 4
Paused: 0

Event: QueueMember
Queue: 200
Name: Local/2001@from-internal/n
Location: Local/2001@from-internal/n
Membership: static
Penalty: 0
CallsTaken: 0
LastCall: 0
Status: 4
Paused: 0

Event: QueueParams
Queue: default
Max: 0
Calls: 0
Holdtime: 0
Completed: 0
Abandoned: 0
ServiceLevel: 0
ServicelevelPerf: 0.0
Weight: 0

Event: QueueStatusComplete

Redirect          重定向一个呼叫。
参数:
Channel:重定向的通道。
ExtraChannel:重定向的第二通道(可选)
Exten:重定向的分机。
Context: 重定向的上下文。
Priority:重定向的优先级
ActionID:(可选)

例子(把两个呼叫重定向到meetme房间)
Action: Redirect
Channel: Zap/73-1
ExtraChannel: SIP/199testphone-1f3c
Exten: 8600029
Context: default
Priority: 1

8600029的上下文是default,并将进入meetme房间。

SetCDRUserField          设置用户的呼叫详细记录。
参数:UserField,Channel,Append

SetVar          设置通道变量。
参数:Channel, Variable, Value

例子:
发送:
Action: Setvar
Channel: Zap/1-1
Variable: AtestVariable
Value: This is now set

SIPpeers          显示sip用户列表。
例子:
发送:
Action: SIPpeers
返回
Response: Success
Message: Peer status list will follow

Event: PeerEntry
Channeltype: SIP
ObjectName: 3001
ChanObjectType: peer
IPaddress: -none-
IPport: 0
Dynamic: yes
Natsupport: yes
VideoSupport: no
ACL: no
Status: UNKNOWN
RealtimeDevice: no

Event: PeerEntry
Channeltype: SIP
ObjectName: 2003
ChanObjectType: peer
IPaddress: -none-
IPport: 0
Dynamic: yes
Natsupport: yes
VideoSupport: no
ACL: no
Status: UNKNOWN
RealtimeDevice: no

Event: PeerEntry
Channeltype: SIP
ObjectName: 2002
ChanObjectType: peer
IPaddress: -none-
IPport: 0
Dynamic: yes
Natsupport: yes
VideoSupport: no
ACL: no
Status: UNKNOWN
RealtimeDevice: no

Event: PeerEntry
Channeltype: SIP
ObjectName: 2001
ChanObjectType: peer
IPaddress: -none-
IPport: 0
Dynamic: yes
Natsupport: yes
VideoSupport: no
ACL: no
Status: UNKNOWN
RealtimeDevice: no

Event: PeerlistComplete
ListItems: 4

Status          返回所有开放通道或指定通道的状态。
参数:Channel (可选), ActionID (可选)
例子:
发送:
Action:Status

返回:
Response: Success
Message: Channel status will follow

Event: StatusComplete

StopMonitor          停止检测某通道。
参数:Channel
例子:
发送:
Action: StopMonitor
Channel: Zap/1-1

ZapDialOffhook          从空闲的ZAP通道拨打呼叫。
参数:
ZapChannel: ZAP 通道
Number: 所拨打的号码

ZapDNDoff          绑定ZAP通道而不影响其关闭状态
参数:ZAPChannel

ZapDNDon          绑定ZAP通道而不影响其开放状态
参数:ZAPChannel

ZapHangup          挂断ZAP通道。
参数:ZAPChannel

ZapTransfer          转拨ZAP通道。
参数:ZAPChannel

ZapShowChannels          显示所有ZAP通道信息。
参数:ActionID(可选)

Asterisk 1.2.1新增:
          AgentCallBackLogin          设置用户以回拨方式登录。
参数:
Agent:用户登录的ID
Exten: 用于回拨的分机
Context: 用于回拨的上下文
AckCall: 设置在用户回拨时进行验证
WrapupTime: 挂断重拨的最小间隔时间
ActionID:

例子:
发送:
Action: AgentCallBackLogin
Agent: 1234
Exten: 1234
Context: myqueues
AckCall: true
WrapupTime: 30
ActionID: 12345

AgentLogoff          注销一个用户。
参数:
Agent:用户登录Id

例子:
发送:
Action: AgentLogoff
Agent: 1234

Agents          显示所有用户信息。
例子:
发送:
Action: Agents

DBGet          查询数据库信息。
参数:Family,Key

发送:
Action: DBGet
Family: 
Key:

失败返回:
Response: Error
Message: Database entry not found

成功返回:
Response: Success
Message: Result will follow

Event: DBGetResponse
Family: 
Key: 
Val:

在Perl脚本中的运用:
use Asterisk::Manager;
my $astman = new Asterisk::Manager;
$astman->user('');
$astman->secret('');
$astman->host('');
$astman->connect || die $astman->error . "/n";

$astman->sendcommand(Action => 'DBGet', Family => '', Key => '');
my @result = $astman->sendcommand(Event => 'DBGetResponse');
$astman->disconnect;

my $value = $result[7]; -> Value 7 is the returned Value
          DBPut:更新数据库信息。
发送:
Action: DBPut
Family: 
Key: 
Value:  (note, as of Asterisk 1.4 The Manager API wants Val: )

返回:
Response: Success
Message: Updated database successfully

使用方法同DBGet一样。

QueuePause          停止/开启队列中某个成员的使用。
参数:
Queue: 成员所在队列名.(可选,如无此项将在成员所在的所有队列停止成员的使用)
Interface: 队列成员名 (如sip/1000, zap/1-1, agent/1000)
Paused: 停止或开启 (true or false)

SIPshowPeer          :显示指定          peer          信息        
参数: peer:指定的peer。

Asterisk 1.4.0新增:
          PlayDTMF          在指定通道上发送双音多频信号数字。
参数:
Channel:指定的通道
Digit:双音多频信号数字

发送:
Action: PlayDTMF
Channel: SIP/123-e2b2
Digit: 1

成功返回:
Response: Success
Message: DTMF successfully queued

失败返回:
Response: Error
Message: No such channel

UpdateConfig          更新配置文件。
参数:
SrcFilename: 要读取的配置文件(.conf)
DstFilename: 要更新的配置文件(.conf)
Reload: 是否重新加载(asterisk或者模块名称)
Action-XXXXXX: 采取的动作 (NewCat、RenameCat、DelCat、Update、Delete、Append)
Cat-XXXXXX: 操作对象
Var-XXXXXX: 采用的变量
Value-XXXXXX: 变量的值
Match-XXXXXX: 其他匹配信息

例1:(更新manager.conf)
action: updateconfig
reload: yes
srcfilename: manager.conf
dstfilename: manager.conf
action-000000: append
cat-000000: newuser
var-000000: secret
value-000000: nottelling
例2:(更新extension.conf,通过'>'增加前缀)
action:updateconfig
reload:yes
srcfilename: extensions.conf
dstfilename: extensions.conf
Action-000000:append
Cat-000000: ami-test
Var-000000: exten
Value-000000: >999,1,Dial(SIP/Bob)

例3:(删除manager.conf中的配置信息)
action: updateconfig
srcfilename: manager.conf
dstfilename: manager.conf
action-000000: delete
cat-000000: newuser
var-000000: secret
value-000000: nottelling
match-000000: nottelling

删除时必须设置'value'和'match',不设置'match'将会删除变量为'var'所有条目

GetConfig          显示配置文件内容,主要给AJAM和asterisk图形界面使用。
变量:FileName:显示的文件名(.conf)。

Asterisk          事件(          Event                            
以下的事件都在asterisk源码中定义。

用户状态事件:

'Agentcallbacklogin' 事件 :
描述:
[来源于chan_agent.c]

示例:
Event: Agentcallbacklogin
Agent: 
Loginchan: 
Uniqueid:

'Agentcallbacklogoff'事件
描述:
[来源于chan_agent.c]

示例:
Event: Agentcallbacklogoff
Agent: 
Loginchan: 
Logintime: 
Reason: Autologoff
Uniqueid:

Event: Agentcallbacklogoff
Agent: 
Loginchan: 
Logintime: 
Uniqueid:

'AgentCalled'事件
描述:
[来源于 app_queue.c]

示例:
Event: AgentCalled
AgentCalled: 
ChannelCalling: 
CallerID: 
Context: 
Extension: 
Priority:

'AgentComplete'事件
描述:
[来源于 app_queue.c]

示例:
Event: AgentComplete
Queue: 
Uniqueid: 
Channel: 
Member: 
MemberName: 
HoldTime: 
TalkTime: 
Reason:

'AgentConnect'事件
描述:
[来源于 app_queue.c]

示例:
Event: AgentConnect
Queue: 
Uniqueid: 
Channel: 
Member: 
MemberName: 
Holdtime: 
BridgedChannel:

'AgentDump'事件
描述:
[来源于 app_queue.c]

示例:
Event: AgentDump
Queue: 
Uniqueid: 
Channel: 
Member: 
MemberName:

'Agentlogin'事件
描述:
[来源于 chan_agent.c]

示例:
Event: Agentlogin
Agent: 
Channel: 
Uniqueid:

'Agentlogoff'事件
描述:
[来源于 chan_agent.c]

示例:
Event: Agentlogoff
Agent: 
Logintime: 
Uniqueid:

'QueueMemberAdded'事件
描述:

队列增加成员动作
[来源于 app_queue.c]

示例:
Queue: testing
Location: Agent/AgentId
Membership: dynamic
Penalty: 0
CallsTaken: 0
LastCall: 0
Status: 4
Paused: 1

'QueueMemberPaused'事件

描述:

响应动作: QueuePause
[来源于 app_queue.c]

示例:
Event: QueueMemberPaused
Location: 
MemberName: 
Paused:

'QueueMemberStatus'事件
描述:
[来源于 app_queue.c]

Status的值可能为:
/*设备是有效的,但不知道的通道状态*/
define AST_DEVICE_UNKNOWN 0

/*设备没有使用 */
define AST_DEVICE_NOT_INUSE 1

/*设备使用中 */
define AST_DEVICE_INUSE 2

/*设备忙 */
define AST_DEVICE_BUSY 3

/*设备无效 */
define AST_DEVICE_INVALID 4

/*设备不可用 */
define AST_DEVICE_UNAVAILABLE 5

/* 设备在响铃*/
define AST_DEVICE_RINGING 6

/*设备在响铃并在使用中*/
define AST_DEVICE_RINGINUSE 7

/*设备在等待 */
define AST_DEVICE_ONHOLD 8

示例:
Event: QueueMemberStatus
Queue: 
Location: 
MemberName: 
Membership: 
Penalty: CallsTaken: 
LastCall: 
Status: 
Paused:

-

命令状态事件:

呼叫状态事件:

'CDR'事件
描述:
[来源于 cdr_manager.c]

必须在 cdr_manager.conf 配置文件中有:

general
enabled = yes

示例:
Event: Cdr
AccountCode:
Source:
Destination:
DestinationContext:
CallerID:
Channel:
DestinationChannel:
LastApplication:
LastData:
StartTime:
AnswerTime:
EndTime:
Duration:
BillableSeconds:
Disposition:
AMAFlags:
UniqueID:
UserField:

'Dial'事件
描述:
[来源于 app_dial.c]

示例:
Event: Dial
Privilege: call,all
Source: Local/900@default-2dbf,2
Destination: SIP/900-4c21
CallerID: 
CallerIDName: default
SrcUniqueID: 1149161705.2
DestUniqueID: 1149161705.4

'ExtensionStatus'事件
描述:
[来源于 manager.c]

示例:
Event: ExtensionStatus
Exten: 
Context: 
Status:

'Hangup'事件
描述:
[来源于 channel.c]

示例:
Event: Hangup
Channel: SIP/101-3f3f
Uniqueid: 1094154427.10
Cause: 0

Cause 代码:

未分配 = 1
无到达路由 = 2
无路由目的地 = 3
无效通道 = 6
正在通话中 = 7
正常挂机 = 16
用户忙 = 17
无应答 = 18
无人接听 = 19
拒绝接听 = 21
号码已更改 = 22
目的次序不对 = 27
无效的数字格式 = 28
设备拒绝 = 29
查询响应 = 30
正常未指定 = 31
正常的呼叫拥塞 = 34
网络状态差 = 38
正常的临时故障 = 41
交换机拥塞 = 42
信息过时 = 43
请求通道无效 = 44
被抢占 = 45
无呼叫保持或呼叫等待 = 50
禁止呼出 = 52
禁止呼入 = 54
负载过重导致失效 = 57
负载过多导致不可达 = 58
负载过多导致为实现 = 65
通道未实现 = 66
设备未实现 = 69
无效的呼叫证明 = 81
不相容的目的地 = 88
无效的不明信息 = 95
IE浏览器关闭 = 96
不识别的信息类型 = 97
错误信息 = 98
无IE浏览器 = 99
无效的IE信息 = 100
呼叫状态错误 = 101
计时到达 = 102
强制性IE浏览器长度误差 = 103
协议错误 = 111
互通 = 127
未定义的 = 0

'MusicOnHold'事件
描述:
事件表示电话等待时,播放音乐
示例:

Event: MusicOnHold
Channel: 
State: 
Uniqueid:

'Join'事件
描述:
[来源于 app_queue.c]

示例:
Event: Join
Channel: 
CallerID: 
Queue: 
Position: 
Count:

'Leave'事件
描述:
[来源于 app_queue.c]

示例:
Event: Leave
Channel: 
Queue: 
Count:

'Link'事件
描述:
当两个通道已连接后开始交换声音数据时发生'link'事件

示例:

Event: Link
Channel1: SIP/101-3f3f
Channel2: Zap/2-1
Uniqueid1: 1094154427.10
Uniqueid2: 1094154427.11

'MeetmeJoin'事件
描述:
[来源于 app_meetme.c]

示例:
Event: MeetmeJoin
Channel: 
Uniqueid: 
Meetme: 
Usernum:

'MeetmeLeave'事件
描述:
[来源于 app_meetme.c]

示例:
Event: MeetmeLeave
Channel: 
Uniqueid: 
Meetme: 
Usernum:

'MeetmeStopTalking'事件
描述:
[来源于 app_meetme.c]

注意:
这要求在meetme应用中以选中T选

示例:

Event: MeetmeStopTalking
Privilege: call,all
Channel: SIP/200-ABC1
Uniqueid: 1234567890.1
Meetme: 400
Usernum: 2

'MeetmeTalking'事件
描述:
[来源于 app_meetme.c]

注意:
这要求在meetme应用中以选中T选项

示例:

Event: MeetmeTalking
Privilege: call,all
Channel: SIP/200-ABC1
Uniqueid: 1234567890.1
Meetme: 400
Usernum: 2

'MessageWaiting'事件
描述:
[来源于 app_voicemail.c]

示例:
Event: MessageWaiting
Mailbox: @
Waiting: 
New: 
Old:

Event: MessageWaiting
Mailbox: 
Waiting:

'Newcallerid'事件
描述:
[来源于 channel.c]

示例:
Event: Newcallerid
Channel: 
Callerid: 
Uniqueid:

'Newchannel'事件
描述:
[来源于 channel.c]

示例:
Event: Newchannel
Channel: Zap/2-1
State: Rsrvd
Callerid: 
Uniqueid: 1094154427.11

Event: Newchannel
Channel: SIP/101-3f3f
State: Ring
Callerid: 101
Uniqueid: 1094154427.10

'Newexten'事件
描述:
当一项PBX函数运行(例如执行拨号规则)时发生此事件。

示例:
Event: Newexten
Channel: SIP/101-00c7
Context: macro-ext
Extension: s
Priority: 3
Application: Goto
AppData: s-BUSY
Uniqueid: 1094154321.8

Event: Newexten
Channel: SIP/101-3f3f
Context: local_extensions
Extension: 917070
Priority: 1
Application: AGI
AppData: /etc/asterisk/agi/ks_doorman_pickup.py|channel_up
Uniqueid: 1094154427.10

Event: Newexten
Channel: SIP/101-3f3f
Context: local_extensions
Extension: 917070
Priority: 2
Application: Dial
AppData: Zap/G1/17070
Uniqueid: 1094154427.10

'ParkedCall'事件
描述:
[来源于 res_features.c]

示例:
Event: ParkedCall
Exten: Channel: 
From: 
Timeout: 
CallerID:

'Rename'事件
描述:
[来源于 channel.c: channel 'rename' event]

示例:
Event: Rename
Oldname: 
Newname: 
Uniqueid:

'SetCDRUserField'事件
描述:
[来源于 app_setcdruserfield.c]

示例:

'Unlink'事件
描述:

当两个连接的通道断开是发生此事件,通常为挂机时

示例:

Event: Unlink
Channel1: SIP/101-3f3f
Channel2: Zap/2-1
Uniqueid1: 1094154427.10
Uniqueid2: 1094154427.11

'UnParkedCall'事件
描述:
[来源于 res_features.c]

日志状态事件:

系统状态事件:

'Alarm'事件:
描述:
[来源于 chan_zap.c]

示例:
Event: Alarm
Alarm:<(Red|Yellow|Blue|No|Unknown)Alarm|Recovering|Loopback|Not Open|None>
Channel:

'AlarmClear'事件:
描述:
[来源于 chan_zap.c]

示例:
Event: AlarmClear
Channel:

'DNDState'事件:
描述:
[来源于 chan_dahdi.c]

示例:
Event: DNDState
Channel: Zap/1
Status:

'LogChannel'事件
描述:
[来源于 logger.c]

示例:
Event: LogChannel
Channel: /var/log/asterisk/messages
Enabled: Yes

Event: LogChannel
Channel: /var/log/asterisk/messages
Enabled: No
Reason: 13 - Permission denied

'PeerStatus'事件
描述:
当用户注册或注销时发生此事件
[来源于 chan_sip.c, chan_iax2.c]

示例:
Event: PeerStatus
Peer: SIP/2005
PeerStatus: Registered

Event: PeerStatus
Peer: SIP/2005
PeerStatus: Unregistered
Cause: Expired

Event: PeerStatus
Peer: IAX2/2007
PeerStatus: 
Time: 1000

'Registry'事件
描述:

当应户注册时发生的事件
[来源于 chan_sip.c, chan_iax2.c]

示例:
Event: Registry
Channel: SIP
Domain: sip.domain
Status: Registered

'Reload'事件
描述:
当 "RELOAD" 命令执行时发生此事件
[来源于 manager.c]

示例:
Event: Reload
Message: Reload Requested

'Shutdown'事件
描述:
[来源于 asterisk.c]

示例:
Event: Shutdown
Shutdown: 
Restart: [tr]

User Status          事件:

'UserEvent'事件
描述:
[来源于 app_userevent.c]

示例:
Event: 
Channel: 
Uniqueid:

Event: 
Channel: 
Uniqueid:

详细状态事件:        
'Newstate'事件
示例:
Event: Newstate
Channel: Zap/2-1
State: Dialing
Callerid: 101
Uniqueid: 1094154427.11

Event: Newstate
Channel: Zap/2-1
State: Up
Callerid: 101
Uniqueid: 1094154427.11

'ParkedCallsComplete:'事件
描述:
发生在ParkedCalls事件之后
示例:
Event: ParkedCallsComplete

'QueueParams:'事件
描述:
响应Queues动作的事件
示例:
Event: QueueParams
Queue: sales
Max: 0
Calls: 0
Holdtime: 0
Completed: 0
Abandoned: 0
ServiceLevel: 0
ServicelevelPerf: 0.0

'QueueMember'事件
描述:
响应Queues动作并且队列中有成员是发生的事件。
示例:
Event: QueueMember
Queue: sales
Location: SIP/101
Membership: dynamic
Penalty: 0
CallsTaken: 0
LastCall: 0

'QueueStatusEnd'事件
描述:
响应Queues动作表示输出结束。
示例:
Event: QueueStatusEnd

'Status'事件
示例:
Event: Status
Channel: Zap/2-1
CallerID: 101
Account:
State: Up
Link: SIP/101-5cf0
Uniqueid: 1094166088.26

Event: Status
Channel: SIP/101-5cf0

CallerID: 101
Account:
State: Up
Context: local_extensions
Extension: 917070
Priority: 2
Seconds: 11
Link: Zap/2-1
Uniqueid: 1094166088.25

'StatusComplete'事件
描述:
响应Status动作的事件,表示状态输出结束。
示例:
Event: StatusComplete

'ZapShowChannels'事件
描述:
响应ZapShowChannels动作的事件。
示例:
Event: ZapShowChannels
Channel: 2
Signalling: FXS Kewlstart
Context: pstn_menu
Alarm: No Alarm

'ZapShowChannelsComplete事件
描述:
响应ZapShowChannels动作的事件,表示输出结束。
示例:
Event: ZapShowChannelsComplete

动作响应(          Response                  
格式:
Response: ( Success或Error)
Message: (显示信息)

示例:
无动作或输入有误:
Response: Error
Message: Missing action in request

未知命令:
Response: Error
Message: Invalid/unknown command

无权限:
Response: Error
Message: Permission denied

成功:
Response: Success
Message: Zap channel status will follow

asterisk manager api 配置 (manager.conf)的更多相关文章

  1. facebook api之Business Manager API

    Business-scoped Users - The new user is tied to a particular business and has permissions scoped to ...

  2. Asterisk manager API(AMI)文档(中文版)

    Asterisk控制接口(AMI)允许管理客户端程序连接到一个asterisk实例并且可以通过TCP/IP流发送命令或读取事件.这在试图跟踪asterisk的状态或其中的电话客户端状态时很有用,AMI ...

  3. Tomcat Manager用户配置详解

      Tomcat Manager是Tomcat自带的.用于对Tomcat自身以及部署在Tomcat上的应用进行管理的web应用.Tomcat是Java领域使用最广泛的服务器之一,因此Tomcat Ma ...

  4. kafka manager安装配置和使用

    kafka manager安装配置和使用 .安装yum源 curl https://bintray.com/sbt/rpm/rpm | sudo tee /etc/yum.repos.d/bintra ...

  5. Sql Server Configuration Manager 网络配置为空,没有实例

    新用户一天内不准提问...Sql Server Configuration Manager 网络配置为空,没有实例无法设置ip和端口进行连接..

  6. linux===启动sdk manager下载配置sdk的时候报错的解决办法

    当启动sdk manager下载配置sdk的时候,报错如下: botoo@botoo-virtual-machine:/opt/android-sdk-linux/tools$ sudo  ./and ...

  7. Atitit.index manager api design 索引管理api设计

    Atitit.index manager api design 索引管理api设计 1. kw 1 1.1. 索引类型 unique,normal,fulltxt 1 1.2. 聚集索引(cluste ...

  8. Atitit.index manager api design 索引管理api设计

    Atitit.index manager api design 索引管理api设计 1. kw1 1.1. 索引类型 unique,normal,fulltxt1 1.2. 聚集索引(clustere ...

  9. Android SDK Manager和AVD Manager使用

    Android SDK Manager和AVD Manager使用(win7_64bit下测试) 目录 1.概述 2.本文用到的工具 3.安卓开发基础工具包下载 4.Android SDK Manag ...

随机推荐

  1. 阿里云服务器(Win 2008 R2 Standard)安装MSSM 2008 R2之1033和2052问题

    最近在给租用的阿里云服务器安装Sql Server 2008 R2 Express时,遭遇下面的问题.经过几番折腾后,终于解决问题,完成安装,这里总结分享我的解决方法,希望能给遇到相同问题的小伙伴们节 ...

  2. jquery动态插入行,不用拼写html,简洁版

    这个一个利用jquery实现动态插入输入行效果小功能,不用在javascript里拼写html字符串,更简洁.高效. html代码: <div class="fitem"&g ...

  3. Git命令详解【2】

    git的工作区   git 安装 sudo apt-get insall git 查看git 版本 git --version   git的配置 #配置用户名 git config --global ...

  4. 用3种方法在 operator= 中处理“自我赋值”

    假设你建立一个class 用来保存一个指针指向一块动态分配的位图. class Bitmap {......}; class Widget{ ... private: Bitmap* pb ; }; ...

  5. Burp Suite Walkthrough

    Burp Suite is one of the best tools available for web application testing. Its wide variety of featu ...

  6. 【原创】The Error in Android developing

    本文停止更新.... 鼠标渣渣 ,点一次 成两次  R.java文件不幸中枪  被拖动修改... 最后application编译运行时   解决方案:project-clean 问题解决了..   2 ...

  7. jQuery入门[3]-事件

    jQuery对事件的支持主要包括: bind()--为事件绑定处理程序,如: $("p").bind("mouseenter mouseleave", func ...

  8. [转] 小tip: 使用CSS将图片转换成黑白(灰色、置灰) ---张鑫旭

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=2547 //zxx: ...

  9. [转] js call

    call 方法  转自: http://www.cnblogs.com/sweting/archive/2009/12/21/1629204.html调用一个对象的一个方法,以另一个对象替换当前对象. ...

  10. yii2源码学习笔记(九)

    Application是所有应用程序类的基类,接下来了解一下它的源码.yii2\base\Application.php. <?php /** * @link http://www.yiifra ...