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
- [root@Freeiris2 ~]# telnet 127.0.0.1 5038
- Trying 127.0.0.1...
- Connected to localhost.localdomain (127.0.0.1).
- Escape character is '^]'.
- Asterisk Call Manager/1.0
现在,可以输入命令来登录,注意冒号后的空格
- Action: Login
- ActionID: 1
- Username: admin
- Secret: admin
敲两次回车确认,得到服务器的回复:
[c-sharp]
- Response: Success
- ActionID: 1
- 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.感觉不错。安装过程也遇到了不少麻烦。记录如下:
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") ) |
=================================
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: loginUsername: adminSecret: secret你还可以通过"Events: off"阻止事件数据包发送到你的连接。例如:Action: loginUsername: adminSecret: secretEvents: 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-1c20Timeout :到通道应挂断的秒数例子:请求信息Action: AbsoluteTimeoutChannel: SIP/123-1c20Timeout: 20返回成功信息Response: SuccessMessage: Timeout Set返回失败信息Response: ErrorMessage: No such channel ChangeMonitor :更改记录某通道信息文件名。参数:Channel:通道名称File:文件名例子:发送请求ACTION: ChangeMonitorChannel: SIP/x7065558529-1c20File: 20050103-140105_cc51返回失败信息Response: ErrorMessage: No such channel返回成功信息Response: SuccessMessage: Stopped monitoring channel Command :发送Asterisk CLI命令。参数:Command:Asterisk CLI 命令。例子:发送请求ACTION: COMMANDcommand: Show Channels返回信息Response: FollowsChannel (Context Extension Pri ) State Appl. Data0 active channel(s)--END COMMAND-注意:返回的事件响应结果并不是发送一个回车换行(/r/n),而只发送回车(/n),如果你在中断处理程序中只等待回车换行,那么这条信息将会被被抛弃。例如command返回信息如下:Response: Follows/r/nChannel Location State Application(Data)/nSIP/x7065551212b-1af (None) Ringing AppDial((Outgoing Line))/nSIP/x7065551212c-2aa 29@default:2 Ring Dial(SIP/x7065551212b)/n2 active channels/n1 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: EVENTSEVENTMASK: ON返回信息:Event: PeerStatusPeer: SIP/ChannelNamePeerStatus: UnregisteredCause: Expired当EventMask参数为'off'时会立即返回响应信息,如下:发送:ACTION: EVENTSEVENTMASK: OFF返回:Response: Events Off ExtensionState :检查分机的状态。参数:Exten,Context,ActionID例子:发送:ACTION: ExtensionStateContext: defaultExten: 2001ActionID: 1接收:Response: SuccessActionID: 1Message: Extension StatusExten: 2001Context: defaultHint: SIP/2001Status: 0Status状态代码:-1 =扩展找不到0 =空闲1 =在使用2 =忙4 =不可用8 =振铃16 =正等待 GetVar:获取一个通道变量。参数:Channel,Variable,actionIDActionID是一个可选的参数匹配信息。例子:发送:ACTION: GetVarChannel: SIP/5060-44d225d0Variable: extension成功返回:Response: SuccessValue: 17065551419失败返回:Response: ErrorMessage: No such channel或Response: Successvarname: (null)Hangup:挂断指定通道。参数:Channel例子:发送:ACTION: HangupChannel: SIP/x7065558529-99a0接收:Event: UnlinkChannel1: SIP/127.180.254.109-44df88e8Channel2: SIP/x7065558529-99a0Uniqueid1: 1124989110.20473Uniqueid2: 1124989110.20474Event: HangupChannel: SIP/x7065558529-99a0Uniqueid: 1124989110.20474Cause: 16Event: HangupChannel: SIP/127.180.254.109-44df88e8Uniqueid: 1124989110.20473Cause: 16Response: SuccessMessage: Channel Hungup IAXpeers :显示iax信息列表。例子:发送:Action: IAXPeers接收:Name/Username Host Mask Port Status8002 (Unspecified) (D) 255.255.255.255 0 UNKNOWN8001 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: SuccessAbsoluteTimeout: 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: GoodbyeMessage: Thanks for all the fish. MailboxCount :检查语音信箱是否有新信息。参数:MailBox,actionID例子:发送:Action: MailboxCountMailbox: 2001@device接收:Response: SuccessMessage: Mailbox Message CountMailbox: 2001@deviceNewMessages: 1OldMessages: 0 MailboxStatus:检查语音信箱状态。参数:MailBox,actionID例子:发送:Action: MailboxStatusMailbox: 2001@device接收:Response: SuccessMessage: Mailbox StatusMailbox: 2001@deviceWaiting: 1Monitor:监听某个通道。参数:Channel, File, Format, Mix例子:发送:ACTION: MonitorChannel: SIP/x7062618529-643dFile: channelsavefileMix: 1返回:Response: SuccessMessage: Started monitoring channel失败返回Response: ErrorMessage: 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: OriginateChannel: SIP/101testContext: defaultExten: 8135551212Priority: 1Callerid: 3125551212Timeout: 30000Variable: var1=23|var2=24|var3=25ActionID: ABC45678901234567890分机8135551212是外呼号码。这个例子表明了变量的使用方法例2(从呼出通道呼叫一个本地分机,这将导致该分机不再响铃直到zap通道挂断)发送:Action: OriginateChannel: Zap/g2/8135551212Context: defaultExten: 101Priority: 1Timeout: 30000Callerid: 3125551212101为一个本地分机号。例3(运行系统命令)发送:Action: OriginateChannel: Local/1@dummyApplication: systemData: /path/to/script提示:如果你希望通道连接到任意分机和上下文,需要指定一个本地通道 ParkedCalls :设置显示保持的呼叫列表。参数:ActionID发送:Action: PakedCalls返回:Response: SuccessMessage: Parked calls will followEvent: ParkedCallsComplete Ping 例子:发送:Action: ping返回:Response: Pong QueueAdd :添加队列成员。参数:Queue:添加成员的队列名。Interface: 成员名(例如sip/2001)Penalty:数值,值越高越靠后。Paused:暂停(true)或不暂停(false)ActionID:(前面已介绍)例子:发送:Action: QueueAddQueue: 200Interface: sip/3001Penalty: 1Paused: true返回:Response: SuccessMessage: Added interface to queueEvent: QueueMemberAddedPrivilege: agent,allQueue: 200Location: sip/3001MemberName: sip/3001Membership: dynamicPenalty: 1CallsTaken: 0LastCall: 0Status: 5Paused: 1 QueueRemove :移除队列成员。参数:Queue:移除成员的队列名。Interface: 成员名(例如sip/2001)例子:发送:Action: QueueRemoveQueue: 200Interface: sip/3001返回:Response: SuccessMessage: Removed interface from queueEvent: QueueMemberRemovedPrivilege: agent,allQueue: 200Location: sip/3001MemberName: 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 0sMembers:Local/2002@from-internal/n (Invalid) has taken no calls yetLocal/2003@from-internal/n (Invalid) has taken no calls yetLocal/2001@from-internal/n (Invalid) has taken no calls yetNo Callersdefault has 0 calls (max unlimited) in 'ringall' strategy (0s holdtime), W:0, C:0, A:0, SL:0.0% within 0sNo MembersNo Callers QueueStatus :返回全部队列的电话数据信息。例子:发送:Action: QueueStatus返回:Response: SuccessMessage: Queue status will followEvent: QueueParamsQueue: 200Max: 0Calls: 0Holdtime: 0Completed: 0Abandoned: 0ServiceLevel: 0ServicelevelPerf: 0.0Weight: 0Event: QueueMemberQueue: 200Name: Local/2002@from-internal/nLocation: Local/2002@from-internal/nMembership: staticPenalty: 0CallsTaken: 0LastCall: 0Status: 4Paused: 0Event: QueueMemberQueue: 200Name: Local/2003@from-internal/nLocation: Local/2003@from-internal/nMembership: staticPenalty: 0CallsTaken: 0LastCall: 0Status: 4Paused: 0Event: QueueMemberQueue: 200Name: Local/2001@from-internal/nLocation: Local/2001@from-internal/nMembership: staticPenalty: 0CallsTaken: 0LastCall: 0Status: 4Paused: 0Event: QueueParamsQueue: defaultMax: 0Calls: 0Holdtime: 0Completed: 0Abandoned: 0ServiceLevel: 0ServicelevelPerf: 0.0Weight: 0Event: QueueStatusComplete Redirect :重定向一个呼叫。参数:Channel:重定向的通道。ExtraChannel:重定向的第二通道(可选)Exten:重定向的分机。Context: 重定向的上下文。Priority:重定向的优先级ActionID:(可选)例子(把两个呼叫重定向到meetme房间)Action: RedirectChannel: Zap/73-1ExtraChannel: SIP/199testphone-1f3cExten: 8600029Context: defaultPriority: 18600029的上下文是default,并将进入meetme房间。 SetCDRUserField :设置用户的呼叫详细记录。参数:UserField,Channel,Append SetVar :设置通道变量。参数:Channel, Variable, Value例子:发送:Action: SetvarChannel: Zap/1-1Variable: AtestVariableValue: This is now set SIPpeers :显示sip用户列表。例子:发送:Action: SIPpeers返回Response: SuccessMessage: Peer status list will followEvent: PeerEntryChanneltype: SIPObjectName: 3001ChanObjectType: peerIPaddress: -none-IPport: 0Dynamic: yesNatsupport: yesVideoSupport: noACL: noStatus: UNKNOWNRealtimeDevice: noEvent: PeerEntryChanneltype: SIPObjectName: 2003ChanObjectType: peerIPaddress: -none-IPport: 0Dynamic: yesNatsupport: yesVideoSupport: noACL: noStatus: UNKNOWNRealtimeDevice: noEvent: PeerEntryChanneltype: SIPObjectName: 2002ChanObjectType: peerIPaddress: -none-IPport: 0Dynamic: yesNatsupport: yesVideoSupport: noACL: noStatus: UNKNOWNRealtimeDevice: noEvent: PeerEntryChanneltype: SIPObjectName: 2001ChanObjectType: peerIPaddress: -none-IPport: 0Dynamic: yesNatsupport: yesVideoSupport: noACL: noStatus: UNKNOWNRealtimeDevice: noEvent: PeerlistCompleteListItems: 4 Status :返回所有开放通道或指定通道的状态。参数:Channel (可选), ActionID (可选)例子:发送:Action:Status返回:Response: SuccessMessage: Channel status will followEvent: StatusComplete StopMonitor :停止检测某通道。参数:Channel例子:发送:Action: StopMonitorChannel: 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:用户登录的IDExten: 用于回拨的分机Context: 用于回拨的上下文AckCall: 设置在用户回拨时进行验证WrapupTime: 挂断重拨的最小间隔时间ActionID:例子:发送:Action: AgentCallBackLoginAgent: 1234Exten: 1234Context: myqueuesAckCall: trueWrapupTime: 30ActionID: 12345 AgentLogoff :注销一个用户。参数:Agent:用户登录Id例子:发送:Action: AgentLogoffAgent: 1234 Agents :显示所有用户信息。例子:发送:Action: Agents DBGet :查询数据库信息。参数:Family,Key发送:Action: DBGetFamily: Key: 失败返回:Response: ErrorMessage: Database entry not found成功返回:Response: SuccessMessage: Result will followEvent: DBGetResponseFamily: 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: DBPutFamily: Key: Value: (note, as of Asterisk 1.4 The Manager API wants Val: )返回:Response: SuccessMessage: 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: PlayDTMFChannel: SIP/123-e2b2Digit: 1成功返回:Response: SuccessMessage: DTMF successfully queued失败返回:Response: ErrorMessage: 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: updateconfigreload: yessrcfilename: manager.confdstfilename: manager.confaction-000000: appendcat-000000: newuservar-000000: secretvalue-000000: nottelling例2:(更新extension.conf,通过'>'增加前缀)action:updateconfigreload:yessrcfilename: extensions.confdstfilename: extensions.confAction-000000:appendCat-000000: ami-testVar-000000: extenValue-000000: >999,1,Dial(SIP/Bob)例3:(删除manager.conf中的配置信息)action: updateconfigsrcfilename: manager.confdstfilename: manager.confaction-000000: deletecat-000000: newuservar-000000: secretvalue-000000: nottellingmatch-000000: nottelling删除时必须设置'value'和'match',不设置'match'将会删除变量为'var'所有条目 GetConfig :显示配置文件内容,主要给AJAM和asterisk图形界面使用。变量:FileName:显示的文件名(.conf)。 Asterisk 事件( Event ) : 以下的事件都在asterisk源码中定义。 用户状态事件: 'Agentcallbacklogin' 事件 :描述:[来源于chan_agent.c]示例:Event: AgentcallbackloginAgent: Loginchan: Uniqueid: 'Agentcallbacklogoff'事件描述:[来源于chan_agent.c]示例:Event: AgentcallbacklogoffAgent: Loginchan: Logintime: Reason: AutologoffUniqueid: Event: AgentcallbacklogoffAgent: Loginchan: Logintime: Uniqueid: 'AgentCalled'事件描述:[来源于 app_queue.c]示例:Event: AgentCalledAgentCalled: ChannelCalling: CallerID: Context: Extension: Priority: 'AgentComplete'事件描述:[来源于 app_queue.c]示例:Event: AgentCompleteQueue: Uniqueid: Channel: Member: MemberName: HoldTime: TalkTime: Reason: 'AgentConnect'事件描述:[来源于 app_queue.c]示例:Event: AgentConnectQueue: Uniqueid: Channel: Member: MemberName: Holdtime: BridgedChannel: 'AgentDump'事件描述:[来源于 app_queue.c]示例:Event: AgentDumpQueue: Uniqueid: Channel: Member: MemberName: 'Agentlogin'事件描述:[来源于 chan_agent.c]示例:Event: AgentloginAgent: Channel: Uniqueid: 'Agentlogoff'事件描述:[来源于 chan_agent.c]示例:Event: AgentlogoffAgent: Logintime: Uniqueid: 'QueueMemberAdded'事件描述:队列增加成员动作[来源于 app_queue.c]示例:Queue: testingLocation: Agent/AgentIdMembership: dynamicPenalty: 0CallsTaken: 0LastCall: 0Status: 4Paused: 1'QueueMemberPaused'事件描述:响应动作: QueuePause[来源于 app_queue.c]示例:Event: QueueMemberPausedLocation: 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: QueueMemberStatusQueue: Location: MemberName: Membership: Penalty: CallsTaken: LastCall: Status: Paused: - 命令状态事件: 呼叫状态事件: 'CDR'事件描述:[来源于 cdr_manager.c]必须在 cdr_manager.conf 配置文件中有:generalenabled = yes示例:Event: CdrAccountCode:Source:Destination:DestinationContext:CallerID:Channel:DestinationChannel:LastApplication:LastData:StartTime:AnswerTime:EndTime:Duration:BillableSeconds:Disposition:AMAFlags:UniqueID:UserField:'Dial'事件描述:[来源于 app_dial.c]示例:Event: DialPrivilege: call,allSource: Local/900@default-2dbf,2Destination: SIP/900-4c21CallerID: CallerIDName: defaultSrcUniqueID: 1149161705.2DestUniqueID: 1149161705.4'ExtensionStatus'事件描述:[来源于 manager.c]示例:Event: ExtensionStatusExten: Context: Status: 'Hangup'事件描述:[来源于 channel.c]示例:Event: HangupChannel: SIP/101-3f3fUniqueid: 1094154427.10Cause: 0Cause 代码:未分配 = 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无效的不明信息 = 95IE浏览器关闭 = 96不识别的信息类型 = 97错误信息 = 98无IE浏览器 = 99无效的IE信息 = 100呼叫状态错误 = 101计时到达 = 102强制性IE浏览器长度误差 = 103协议错误 = 111互通 = 127未定义的 = 0'MusicOnHold'事件描述:事件表示电话等待时,播放音乐示例:Event: MusicOnHoldChannel: State: Uniqueid: 'Join'事件描述:[来源于 app_queue.c]示例:Event: JoinChannel: CallerID: Queue: Position: Count: 'Leave'事件描述:[来源于 app_queue.c]示例:Event: LeaveChannel: Queue: Count: 'Link'事件描述:当两个通道已连接后开始交换声音数据时发生'link'事件示例:Event: LinkChannel1: SIP/101-3f3fChannel2: Zap/2-1Uniqueid1: 1094154427.10Uniqueid2: 1094154427.11'MeetmeJoin'事件描述:[来源于 app_meetme.c]示例:Event: MeetmeJoinChannel: Uniqueid: Meetme: Usernum: 'MeetmeLeave'事件描述:[来源于 app_meetme.c]示例:Event: MeetmeLeaveChannel: Uniqueid: Meetme: Usernum: 'MeetmeStopTalking'事件描述:[来源于 app_meetme.c]注意:这要求在meetme应用中以选中T选示例:Event: MeetmeStopTalkingPrivilege: call,allChannel: SIP/200-ABC1Uniqueid: 1234567890.1Meetme: 400Usernum: 2'MeetmeTalking'事件描述:[来源于 app_meetme.c]注意:这要求在meetme应用中以选中T选项示例:Event: MeetmeTalkingPrivilege: call,allChannel: SIP/200-ABC1Uniqueid: 1234567890.1Meetme: 400Usernum: 2'MessageWaiting'事件描述:[来源于 app_voicemail.c]示例:Event: MessageWaitingMailbox: @Waiting: New: Old: Event: MessageWaitingMailbox: Waiting: 'Newcallerid'事件描述:[来源于 channel.c]示例:Event: NewcalleridChannel: Callerid: Uniqueid: 'Newchannel'事件描述:[来源于 channel.c]示例:Event: NewchannelChannel: Zap/2-1State: RsrvdCallerid: Uniqueid: 1094154427.11Event: NewchannelChannel: SIP/101-3f3fState: RingCallerid: 101Uniqueid: 1094154427.10'Newexten'事件描述:当一项PBX函数运行(例如执行拨号规则)时发生此事件。示例:Event: NewextenChannel: SIP/101-00c7Context: macro-extExtension: sPriority: 3Application: GotoAppData: s-BUSYUniqueid: 1094154321.8Event: NewextenChannel: SIP/101-3f3fContext: local_extensionsExtension: 917070Priority: 1Application: AGIAppData: /etc/asterisk/agi/ks_doorman_pickup.py|channel_upUniqueid: 1094154427.10Event: NewextenChannel: SIP/101-3f3fContext: local_extensionsExtension: 917070Priority: 2Application: DialAppData: Zap/G1/17070Uniqueid: 1094154427.10'ParkedCall'事件描述:[来源于 res_features.c]示例:Event: ParkedCallExten: Channel: From: Timeout: CallerID: 'Rename'事件描述:[来源于 channel.c: channel 'rename' event]示例:Event: RenameOldname: Newname: Uniqueid: 'SetCDRUserField'事件描述:[来源于 app_setcdruserfield.c]示例:'Unlink'事件描述:当两个连接的通道断开是发生此事件,通常为挂机时示例:Event: UnlinkChannel1: SIP/101-3f3fChannel2: Zap/2-1Uniqueid1: 1094154427.10Uniqueid2: 1094154427.11'UnParkedCall'事件描述:[来源于 res_features.c] 日志状态事件: 系统状态事件: 'Alarm'事件:描述:[来源于 chan_zap.c]示例:Event: AlarmAlarm:<(Red|Yellow|Blue|No|Unknown)Alarm|Recovering|Loopback|Not Open|None>Channel: 'AlarmClear'事件:描述:[来源于 chan_zap.c]示例:Event: AlarmClearChannel: 'DNDState'事件:描述:[来源于 chan_dahdi.c]示例:Event: DNDStateChannel: Zap/1Status: 'LogChannel'事件描述:[来源于 logger.c]示例:Event: LogChannelChannel: /var/log/asterisk/messagesEnabled: YesEvent: LogChannelChannel: /var/log/asterisk/messagesEnabled: NoReason: 13 - Permission denied'PeerStatus'事件描述:当用户注册或注销时发生此事件[来源于 chan_sip.c, chan_iax2.c]示例:Event: PeerStatusPeer: SIP/2005PeerStatus: RegisteredEvent: PeerStatusPeer: SIP/2005PeerStatus: UnregisteredCause: ExpiredEvent: PeerStatusPeer: IAX2/2007PeerStatus: Time: 1000'Registry'事件描述:当应户注册时发生的事件[来源于 chan_sip.c, chan_iax2.c]示例:Event: RegistryChannel: SIPDomain: sip.domainStatus: Registered'Reload'事件描述:当 "RELOAD" 命令执行时发生此事件[来源于 manager.c]示例:Event: ReloadMessage: Reload Requested'Shutdown'事件描述:[来源于 asterisk.c]示例:Event: ShutdownShutdown: Restart: [tr] User Status 事件: 'UserEvent'事件描述:[来源于 app_userevent.c]示例:Event: Channel: Uniqueid: Event: Channel: Uniqueid: 详细状态事件: 'Newstate'事件示例:Event: NewstateChannel: Zap/2-1State: DialingCallerid: 101Uniqueid: 1094154427.11Event: NewstateChannel: Zap/2-1State: UpCallerid: 101Uniqueid: 1094154427.11'ParkedCallsComplete:'事件描述:发生在ParkedCalls事件之后示例:Event: ParkedCallsComplete'QueueParams:'事件描述:响应Queues动作的事件示例:Event: QueueParamsQueue: salesMax: 0Calls: 0Holdtime: 0Completed: 0Abandoned: 0ServiceLevel: 0ServicelevelPerf: 0.0'QueueMember'事件描述:响应Queues动作并且队列中有成员是发生的事件。示例:Event: QueueMemberQueue: salesLocation: SIP/101Membership: dynamicPenalty: 0CallsTaken: 0LastCall: 0'QueueStatusEnd'事件描述:响应Queues动作表示输出结束。示例:Event: QueueStatusEnd'Status'事件示例:Event: StatusChannel: Zap/2-1CallerID: 101Account:State: UpLink: SIP/101-5cf0Uniqueid: 1094166088.26Event: StatusChannel: SIP/101-5cf0CallerID: 101Account:State: UpContext: local_extensionsExtension: 917070Priority: 2Seconds: 11Link: Zap/2-1Uniqueid: 1094166088.25'StatusComplete'事件描述:响应Status动作的事件,表示状态输出结束。示例:Event: StatusComplete'ZapShowChannels'事件描述:响应ZapShowChannels动作的事件。示例:Event: ZapShowChannelsChannel: 2Signalling: FXS KewlstartContext: pstn_menuAlarm: No Alarm'ZapShowChannelsComplete事件描述:响应ZapShowChannels动作的事件,表示输出结束。示例:Event: ZapShowChannelsComplete 动作响应( Response ) 格式:Response: ( Success或Error)Message: (显示信息)示例:无动作或输入有误:Response: ErrorMessage: Missing action in request未知命令:Response: ErrorMessage: Invalid/unknown command无权限:Response: ErrorMessage: Permission denied成功:Response: SuccessMessage: Zap channel status will follow