Интерфейс управления сервером Asterisk (Asterisk Manager API)

Интерфейс управления сервером Asterisk (Asterisk Manager API)

Интерфейс управления сервером Asterisk (далее Manager API) позволяет клиентским программам соединяться с серверным приложением Asterisk, отправлять ему команды и/или считывать события, происходящие в АТС, используя TCP/IP протокол. Те, кто занимается интеграцией различных задач, могут найти много полезного для себя, например, отслеживая поведение телефонных абонентов и управляя ими на основании каких-либо правил.

Для коммуникации между АТС Asterisk и подсоединенным Manager API клиентом используется простой текстовый построчный протоков вида: “параметр: значение”. Окончание строки определяется последовательностью CRLF. Для упрощения дальнейшего описания, мы будем использовать термин “пакет ” для описания набора строк вида “параметр: значение”, после которых идет пустая строка, содержащая только символы возврата каретки и перевода строки (CRLF).

Описание работы протокола.

Особенности работы протокола:

  • Перед отправкой команд серверу Asterisk, Вы должны установить manager API сессию (см. ниже).
  • Пакеты могут передаваться в любом направлении в любое время, после прохождения авторизации.
  • Первая строка в пакете должна содержать параметр “Action”, если она отправляется от клиента серверу и ,соответственно, “Event” или “Response”, когда пакет передается от Asterisk клиенту.
  • Порядок строк в пределах пакета не имеет значения, следовательно, Вы можете использовать для хранения одного пакета библиотеку Вашего языка программирования, где не требуется использования сортировки, тем самым увеличив производительность составления пакета данных.
  • Последовательность символов CRLF используется для отделения строк друг от друга, а пустая строка (два подряд идущих CRLF) указывает на окончание команды и Asterisk приступает к ее выполнению.

 

Типы пакетов.

Тип пакета определяется наличием одного из следующих значений параметра в паре “Параметр: значение”:

  • Action: Пакет отправляется подсоединенным клиентом серверу Asterisk, в значении параметра указывается требуемое действие, которое должно быть выполнено сервером Asterisk. Набор действий является ограниченным (но расширяемым) списком, который доступен клиенту, в зависимости от загруженных модулей сервера Asterisk и прав назначенных пользователю, от имени которого подсоединился клиент. За один раз (в пределах одного пакета) может быть указано только одно действие. Пакет “Action” содержит имя запрашиваемой операции, а также все требуемые параметры команды.
  • Response: Пакет содержащий ответ, отправленный сервером Asterisk, на последнюю команду, которую клиент отправил серверу.
  • Event: Пакет с данными относящимися к какому-либо событию сгенерированному сервером Asterisk или его загруженными модулями.

В основном, клиенты отправляют “Action” пакеты Asterisk серверу, Asterisk сервер производит требуемые операции и возвращает результат (часто это только сообщение об успехе или ошибке) в “Response” пакете. Так как нет никакой гарантии, относительно того, что ответы на команды будут приходить в той же последовательности, что и поступающие запросы, клиентские приложения включают в пакет параметр “ActionID” в каждый “Action” пакет запроса. Этот параметр сервер Asterisk вернет без изменений в ответном “Response” пакете. Таким образом, клиентское приложение может просто сопоставить каждому пакету типа “Action” соответствующий ответ “Response”, в том случае, если требуется отсылать несколько запросов сразу, не дожидаясь пока на каждый из отправленных запросов придет соответствующий “Response”ответ.

Пакеты типа “Event”используются в двух разных контекстах: С одной стороны они сообщают клиентам о изменениях различных состояний и событиях в Asterisk (например, создание нового канала или окончание сеанса связи по нему, вход агента в систему и его выход и т.д.) , с другой стороны, они используются для доставки результатов выполнения команд, которые запрашивают данные в виде списка (Запросы, генерирующие события). Когда клиент отправляет запрос, по которому в качестве ответа генерируются ответы в виде “Event” пакетов, тогда Asterisk отправляет ответный пакет, с признаком успешного выполнения команды и содержащий строку: “Response: Follows”. После этого asterisk может или вообще не отправить или отправить один или несколько “Event” пакетов, которые, собственно, и содержат запрашиваемую информацию, плюс финальный “Event” пакет, содержащий событие окончания данных, означающий, что все данные были отправлены. Все эти “Event” пакеты, отправляемые в ответ на “Action” запрос, содержат один и тот же ActionID, его значение совпадает с тем, что указанно в этом поле “Action” запроса, который вызвал их генерацию. Таким образом, Вы можете сопоставить все эти “Event”, как часть ответа на свой запрос, который их вызвал. Как пример запроса, в ответ на который вы получите в ответ “Event” пакеты, является запрос “Action: Status”, который вызовет генерацию “Event” пакетов, содержащих статус всех активных каналов. Когда статусы всех каналов будут переданы, будет передан финальный “Event” пакет содержащий значение StatusComplete.

Открытие manager API сессии и авторизация пользователя.

Для доступа к функционалу Asterisk Manager API пользователю необходимо установить TCP/IP соединение на порт, который используется для работы Manager API в asterisk (обычно 5038) и авторизироваться в Интерфейсе управления сервером Asterisk, используя запрос с командой ‘Login’. Для этого, сначала необходимо создать учетную запись пользователя на сервере Asterisk. Учетные записи пользователей для доступа к Manager API описываются в файле конфигурации /etc/asterisk/manager.conf. Учетная запись пользователя содержит адреса IP сетей, с которых разрешено подключение, пароль для авторизации и список прав доступа пользователя.

Существует ограниченный набор прав доступа пользователя, каждое из которых может предоставить права на чтение – “read”, запись – “write”, или на то и другое действие. Если клиент имеет право на чтение указанного класса объектов, то Asterisk будет отправлять ему события, порождаемые этим классом. Если клиент имеет право на запись для какого-либо класса объектов, то он может отправлять команды управления, касающиеся указанного класса.

Для регистрации в manager API, подключившийся клиент должен пройти авторизацию, Вы должны отправить “Action” запрос с типом запроса: “Login” и указав имя пользователя и пароль в качестве параметров. Пример:

Action: login
Username: admin
Secret: god

Если Вы не хотите получать события, которые генерирует сервер Asterisk, Вы можете включить в запрос строку с параметром “Events: off”, это выключит отправку ”Event” пакетов в данное соединение. Что эквивалентно запросу с типом запроса “Events”, который выключает отправку событий в текущее соединение. Пример:

Action: login
Username: admin
Secret: god
Events: off

Пакеты запросов (Action пакеты)

Когда Вы отправляете команду в Asterisk Manager Api, Вам может потребоваться указать дополнительные параметры, которые необходимы для выполнения команды. Например, это может быть номер телефона, по которому нужно произвести вызов или название канала, который необходимо разъединить и т.д.. Кроме того, если Ваш запрос заставляет сервер Asterisk выполнить команды в какой-либо точке плана набора, Вы можете передать значения переменных канала, которые будут доступны в плане набора (Стало доступно с принятием патча bug 1268). Передача переменных осуществляется таким же образом, как и передача параметров в пакете.

Для отправки команды в Asterisk, используется вот такой простой формат:

Action: <тип запроса><CRLF>
<Key 1>: <Value 1><CRLF>
<Key 2>: <Value 2><CRLF>

Variable: <Имя переменной 1>=<Значение переменной 1><CRLF>
Variable: < Имя переменной 2>=< Значение переменной 2><CRLF>

<CRLF>

Типы запросов, которые можно осуществлять через Manager API.

Список команд Вы можете получить, выполнив CLI команду: show manager commands:
(В Asterisk версии 1.4 и выше, используйте: manager show commands)

  • AbsoluteTimeout: Установка абсолютно максимального времени для вызова. ( необходимые привилегии: call,all)
  • AgentCallbackLogin: Установка статуса агента как зарегистрированного. ( необходимые привилегии: agent,all)
  • AgentLogoff: Установка статуса агента как _не_ зарегистрированного. (необходимые привилегии: agent,all)
  • Agents: Список агентов и их статусы. (необходимые привилегии: agent,all)
  • ChangeMonitor: Изменение имени файла для записи вызова для канала. (необходимые привилегии: call,all)
  • Command: Выполнение команды. ( необходимые привилегии: command,all)
  • DAHDIDialOffHook: Набор номера через DAHDI канал, при поднятой трубке.
  • DAHDIDNDoff: Установка “Do Not Disturb” статуса в OFF. (DAHDI канал)
  • DAHDIDNDon: Установка “Do Not Disturb” статуса в ON. (DAHDI канал)
  • DAHDIHangup: Завершение вызова по каналу DAHDI. .
  • DAHDIRestart: Полный рестарт DAHDI канала (завершение вызова),
  • DAHDIShowChannel Получение статусов DAHDI каналов.
  • DAHDITransfer: Перевод вызова (DAHDI канал).
  • DBGet: Получение значений из astDB. (необходимые привилегии: system,all)
  • DBPut: Вставка данных в astDB. (необходимые привилегии: system,all)
  • Events: Управление Manager API событиями поступающими в соединение.
  • ExtensionState: Проверка состояние екстеншена. ( необходимые привилегии: call,all)
  • GetVar: Получение значения переменной канала. ( необходимые привилегии: call,all)
  • Hangup: Завершение соединение на заданном канале. (необходимые привилегии: call,all)
  • IAXpeers: Список IAX пиров. ( необходимые привилегии: system,all)
  • ListCommands: Получение списка доступных команд для Manager API.
  • Logoff: Выход из Manager API.
  • MailboxCount: Получение числа сообщений в голосовом ящике.( необходимые привилегии: call,all)
  • MailboxStatus: Получение состояния голосового ящика. ( необходимые привилегии: call,all)
  • Monitor: Запись разговора на заданном канале. ( необходимые привилегии: call,all)
  • Originate: Совершение исходящего вызова. ( необходимые привилегии: call,all)
  • ParkedCalls: Список запаркованных вызовов.
  • Ping: В ответ получим “Pong”
  • QueueAdd: Добавление интерфейса в очередь вызовов. ( необходимые привилегии: agent,all)
  • QueuePause: Отмечает или снимает отметку временной недоступности участника, обрабатывающего очередь вызовов.. (необходимые привилегии: agent,all)
  • QueueRemove: Удаление интерфейса из очереди вызовов.( необходимые привилегии: agent,all)
  • Queues: Список очередей вызовов.
  • QueueStatus: Статус очереди вызова.
  • Redirect: Перенаправление вызова. ( необходимые привилегии: call,all)
  • SetCDRUserField: Установка поля UserField в CDR. ( необходимые привилегии: call,all)
  • SetVar: Установка переменной канала или глобальной переменной. ( необходимые привилегии: call,all)
  • SIPpeers: Список SIP пиров. (текстовый формат). ( необходимые привилегии: system,all)
  • SIPshowPeer: Получение данных SIP пира (текстовый формат). ( необходимые привилегии: system,all)
  • Status: Получение состояний активных каналов. ( необходимые привилегии: call,all)
  • StopMonitor: Останов записи разговора на заданном канале. ( необходимые привилегии: call,all)

Появилось в Asterisk 1.4.0

  • GetConfig: Получение заданного файла конфигурации. ( необходимые привилегии: config,all)
  • MeetmeMute: Выключение микрофона у участника конференции Meetme. ( необходимые привилегии: call,all)
  • MeetmeUnmute: Включение микрофона у участника конференции Meetme. ( необходимые привилегии: call,all)
  • Park: Парковка вызова. ( необходимые привилегии: call,all)
  • PauseMonitor: Временная приостановка записи вызова. ( необходимые привилегии: call,all)
  • PlayDTMF: Генерация DTMF сигнала на заданном канале. ( необходимые привилегии: call,all)
  • UpdateConfig: Перезапись файла конфигурации. (необходимые привилегии: config,all)
  • UnpauseMonitor: Возобновление остановленной записи вызова. ( необходимые привилегии: call,all)
  • UserEvent: Отправка пользовательского события в AMI (необходимые привилегии: user,all)
  • WaitEvent: Ожидание определенного события.

 

События Asterisk Manager API (Events)

Список находиться на отдельной странице: Asterisk AMI Events.

Ссылки по теме

  • AJAM Доступ к Manager API по http/https протоколу.
  • manager.conf Файл конфигурации Manager API: manager.conf.
  • Asterisk cmd UserEvent: Отправка пользовательского события в manager API.
  • Asterisk-java
  • Asterisk

Asterisk Manager: Events

Asterisk Manager: Events

Ниже представлен список ответов генерируемых Asterisk на различные события и состояния системы. Так как в официальной документации этот список не представлен, нам пришлось собирать его из различных источников, вплоть до исходных кодов Asterisk. Большая просьба, при обнаружении недокументированного здесь события, прислать его на нашу почту info@miko.ru, чтобы мы могли дополнить этот список.

Agent Status Events

‘Agentcallbacklogin’ Event

Описание:

[Получено из chan_agent.c]

Пример:

Event: Agentcallbacklogin
Agent: <agent>
Loginchan: <loginchan>
Uniqueid: <uniqueid>

‘Agentcallbacklogoff’ Event

Описание:

[Получено из chan_agent.c]

Пример:

Event: Agentcallbacklogoff
Agent: <agent>
Loginchan: <loginchan>
Logintime: <logintime>
Reason: Autologoff
Uniqueid: <uniqueid>

‘AgentCalled’ Event

Описание:

[Получено из app_queue.c]

Пример:

Event: AgentCalled
AgentCalled: <channel>
ChannelCalling: <channel>
CallerID: <callerid>
Context: <context>
Extension: <extension>
Priority: <priority>

‘AgentComplete’ Event

Описание:

[Получено из app_queue.c]

Пример:

Event: AgentComplete
Queue: <queue>
Uniqueid: <uniqueid>
Channel: <channel>
Member: <member>
MemberName: <membername>
HoldTime: <holdtime>
TalkTime: <talktime>
Reason: <reason>

‘AgentConnect’ Event

Описание:

[Получено из app_queue.c]

Пример:

Event: AgentConnect
Queue: <queue>
Uniqueid: <uniqueid>
Channel: <channel>
Member: <member>
MemberName: <membername>
Holdtime: <holdtime>
BridgedChannel: <bridgedchannel>

‘AgentDump’ Event

Описание:

[Получено из app_queue.c]

Пример:

Event: AgentDump
Queue: <queue>
Uniqueid: <uniqueid>
Channel: <channel>
Member: <member>
MemberName: <membername>

‘Agentlogin’ Event

Описание:

[Получено из chan_agent.c]

Пример:

Event: Agentlogin
Agent: <agent>
Channel: <channel>
Uniqueid: <uniqueid>

‘Agentlogoff’ Event

Описание:

[Получено из chan_agent.c]

Пример:

Event: Agentlogoff
Agent: <agent>
Logintime: <logintime>
Uniqueid: <uniqueid>

‘QueueMemberAdded’ Event

Описание:

  1. Sent on Action QueueAdd

[Получено из app_queue.c]

Пример:

Queue: testingLocation: 
Agent/AgentIdMembership: 
dynamicPenalty: 0
CallsTaken: 0
LastCall: 0S
tatus: 4
Paused: 1

‘QueueMemberPaused’ Event

Описание:

  1. Sent on Action: QueuePause

[Получено из app_queue.c]

Пример:

Event: QueueMemberPaused
Location: <location>
MemberName: <membername>
Paused: <paused>

‘QueueMemberStatus’ Event

Описание:

[Получено из app_queue.c]

As far as I know Possible values are:/*!

Device is valid but channel didn’t know state */

  1. define AST_DEVICE_UNKNOWN 0

/*! Device is not used */

  1. define AST_DEVICE_NOT_INUSE 1

/*! Device is in use */

  1. define AST_DEVICE_INUSE 2

/*! Device is busy */

  1. define AST_DEVICE_BUSY 3

/*! Device is invalid */

  1. define AST_DEVICE_INVALID 4

/*! Device is unavailable */

</code> – define AST_DEVICE_UNAVAILABLE 5

/*! Device is ringing */

  1. define AST_DEVICE_RINGING 6

/*! Device is ringing *and* in use */

  1. define AST_DEVICE_RINGINUSE 7

/*! Device is on hold */

  1. define AST_DEVICE_ONHOLD 8

Пример:

Event: QueueMemberStatus
Queue: <queue>
Location: <location>
MemberName: <membername>
Membership: <membership>
Penalty: <penalty>
CallsTaken: <callstaken>
LastCall: <lastcall>
Status: <status>
Paused: <paused>

Command Status Events


Call Status Events

‘Dial’ Event

Описание:

[Получено из app_dial.c]

Пример:

Event: Dial
Privilege: call,all
Subevent: Begin
Channel: SIP/mangotrunk-0000016c
Destination: SIP/261-0000016d
Calleridnum: 74997623634
Calleridname: 74997623634
Uniqueid: 1324068645.605
Destuniqueid: 1324068650.606
Dialstring: 261

‘ExtensionStatus’ Event

Описание:

[Получено из manager.c]

Пример:

Event: ExtensionStatus
Privilege: call,all
Exten: <ext>
Context: <context>
Hint: SIP/261
Status: <state>

‘NewAccountCode’ Event

Описание:

[Получено из manager.c]

Пример:

Event="NewAccountCode" 
Privilege="call,all" 
Channel="SIP/261-0000016d" 
Uniqueid="1324068650.606" 
Accountcode="miko" 
Oldaccountcode=""

‘MusicOnHold’ Event

Описание:

Occurs when a channel is placed on hold/unhold and music is played to the caller.

Пример:

Event: MusicOnHold
Channel: <Channel ID>
State: <Start/Stop>
Uniqueid: <Unique ID>

‘Join’ Event

Описание:

[Получено из app_queue.c]

Пример:

Event: JoinChannel: <channel>
CallerID: <callerid|unknown>
Queue: <queuename>
Position: <entryposition>
Count: <queuemembercount>

‘Leave’ Event

Описание:

[Получено из app_queue.c]

Пример:

Event: Leave
Channel: <channel>
Queue: <queuename>
Count: <queuemembercount>

Описание:

  1. Fired when two voice channels are linked together and voice data exchange commences.

Notes:

  1. Several Link events may be seen for a single call. This can occur when Asterisk fails to setup a native bridge for the call. As far as I can tell, this is when Asterisk must sit between two telephones and perform CODEC conversion on their behalf.

Пример:

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

‘Bridge’ Event

Описание:

Пример:

 Event: Bridge
 Privilege: call,all
 Bridgestate: Link
 Bridgetype: core
 Channel1: SIP/mangotrunk-0000016c
 Channel2: SIP/261-0000016d
 Uniqueid1: 1324068645.605
 Uniqueid2: 1324068650.606
 Callerid1: 74997623634
 Callerid2: 261

‘Bridge’ LocalBridge

Описание:

Пример:

 Event: LocalBridge
 privilege: call,all
 sequencenumber: "195711
 file: chan_local.c
 line: 922
 func: local_call
 channel1: Local/261@from-internal-xfer-7d7c;1
 channel2: Local/261@from-internal-xfer-7d7c;2
 uniqueid1: 1324888190.2065
 uniqueid2: 1324888190.2066
 context: from-internal-xfer
 exten: 261
 localoptimization: Yes

‘MeetmeJoin’ Event

Описание:

[Получено из app_meetme.c]

Пример:

Event: MeetmeJoin
Channel: <channel>
Uniqueid: <uniqueid>
Meetme: <meetme>
Usernum: <usernum>

‘MeetmeLeave’ Event

Описание:

[Получено из app_meetme.c]

Пример:

Event: MeetmeLeave
Channel: <channel>
Uniqueid: <uniqueid>
Meetme: <meetme>
Usernum: <usernum>

‘MeetmeStopTalking’ Event

Описание:

[Получено из app_meetme.c]

Notes:

  1. This requires the T option on the meetme application

Пример:

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

‘MeetmeTalking’ Event

Описание:

[Получено из app_meetme.c]

Notes:

  1. This requires the T option on the meetme application

Пример:

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

‘MessageWaiting’ Event

Описание:

[Получено из app_voicemail.c]

Пример:

Event: MessageWaiting
Mailbox: <mailbox>@<context>
Waiting: <count>
New: <number>
Old: <number>

Event: MessageWaiting
Mailbox: <context>
Waiting: <count>

‘Newcallerid’ Event

Описание:

[Получено из channel.c]

Пример:

Event: NewCallerid
Privilege: call,all
Channel=: SIP/mangotrunk-0000016c
Calleridnum: 74997623634 
Calleridname: 74997623634
Uniqueid: 1324068645.605 
Cid_callingpres: 0 (Presentation Allowed, Not Screened)

‘Newchannel’ Event

Описание: [Получено из channel.c]

Пример:

Event: Newchannel
Channel: Zap/2-1State:
Rsrvd
Callerid: <unknown>
Uniqueid: 1094154427.11

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

Event: Newchannel 
Privilege: call,all
Channel: SIP/mangotrunk-0000016c
Channelstate: 0
Channelstatedesc: Down
Calleridnum: 74997623634
Calleridname: 74997623634
Accountcode: miko 
Exten: info 
Context: from-trunk-sip-mangotrunk 
Uniqueid=: 1324068645.605

‘ParkedCall’ Event

Описание:

[Получено из res_features.c]

Пример:

Event: ParkedCall
Exten: <parkexten>
Channel: <channel>
From: <from>
Timeout: <timeout>
CallerID: <callerid>

‘Rename’ Event

Описание:

[Получено из channel.c: channel ‘rename’ event]

Пример:

Event: Rename
Oldname: <oldname>
Newname: <newname>
Uniqueid: <uniqueid>
 Event: Rename
 Privilege: call,all
 Sequencenumber: 196057
 File: channel.c
 Line: 6280
 Func: __ast_change_name_nolink
 Channel: SIP/263-0000050e<MASQ>
 Newname: Transfered/SIP/263-0000050e<ZOMBIE> 
 Uniqueid: 1324888172.2063

‘SetCDRUserField’ Event

Описание:

[Получено из app_setcdruserfield.c]

Пример:

Описание:

  1. Fired when a link between two voice channels is discontinued, for example, just before call completion.

Notes:

  1. Several Unlink events may be seen for a single call. This can occur when Asterisk fails to setup a native bridge for the call. As far as I can tell, this is when Asterisk must sit between two telephones and perform CODEC conversion on their behalf.

Пример:

Event: Unlink
Privilege: call,all
Channel1: SIP/mangotrunk-0000016c
Channel2: SIP/261-0000016d
Uniqueid1: 1324068645.605
Uniqueid2: 1324068650.606
Callerid1: 74997623634
Callerid2: 261

‘SoftHangupRequest’ Event

Описание:

It appears, in production environments, especially with call centers, that nothing enables us to know which side of the communication has cleared the call. HangupRequest manager event, to specify when/where a channel gets hung up. Events to let know which side (including CLI) of the call hangs up : HangupRequest and SoftHangupRequest

Пример:

Event: SoftHangupRequest
Privilege: call,all
Channel: SIP/261-00000000
Uniqueid: 1324234300.0
Cause: 16

‘HangupRequest’ Event

Описание:

It appears, in production environments, especially with call centers, that nothing enables us to know which side of the communication has cleared the call. HangupRequest manager event, to specify when/where a channel gets hung up. Events to let know which side (including CLI) of the call hangs up : HangupRequest and SoftHangupRequest

Пример:

 Event: HangupRequest
 Privilege: call,all
 Sequencenumber: 196035
 File: channel.c
 Line: 1553
 Func: ast_queue_hangup
 Channel: SIP/17-0000050f
 Uniqueid: 1324888173.2064

‘Hangup’ Event

Описание:

[Получено из channel.c]

Пример:

Event: Hangup
Privilege: call,all 
Channel: SIP/261-0000016d
Uniqueid: 1324068650.606
Calleridnum: 261
Calleridname: "unknown"
Cause: 16
Cause_txt: "Normal Clearing"

Cause Codes

  • UNALLOCATED = 1
  • NO ROUTE TRANSIT NET = 2
  • NO_ROUTE_DESTINATION = 3
  • CHANNEL_UNACCEPTABLE = 6
  • CALL_AWARDED_DELIVERED = 7
  • NORMAL_CLEARING = 16
  • USER_BUSY = 17
  • NO USER RESPONSE = 18
  • NO ANSWER = 19
  • CALL REJECTED = 21
  • NUMBER CHANGED = 22
  • DESTINATION OUT OF ORDER = 27
  • INVALID NUMBER FORMAT = 28
  • FACILITY REJECTED = 29
  • RESPONSE TO STATUS ENQUIRY = 30
  • NORMAL UNSPECIFIED = 31
  • NORMAL CIRCUIT CONGESTION = 34
  • NETWORK OUT OF ORDER = 38
  • NORMAL TEMPORARY FAILURE = 41
  • SWITCH CONGESTION = 42
  • ACCESS INFO DISCARDED = 43
  • REQUESTED CHAN UNAVAIL = 44
  • PRE EMPTED = 45
  • FACILITY NOT SUBSCRIBED = 50
  • OUTGOING CALL BARRED = 52
  • INCOMING CALL BARRED = 54
  • BEARERCAPABILITY NOTAUTH = 57
  • BEARERCAPABILITY NOTAVAIL = 58
  • BEARERCAPABILITY NOTIMPL = 65
  • CHAN NOT IMPLEMENTED = 66
  • FACILITY NOT IMPLEMENTED = 69
  • INVALID CALL REFERENCE = 81
  • INCOMPATIBLE DESTINATION = 88
  • INVALID MSG UNSPECIFIED = 95
  • MANDATORY IE MISSING = 96
  • MESSAGE TYPE NONEXIST = 97
  • WRONG MESSAGE = 98
  • IE NONEXIST = 99
  • INVALID IE CONTENTS = 100
  • WRONG CALL STATE = 101
  • RECOVERY ON TIMER EXPIRE = 102
  • MANDATORY IE LENGTH ERROR = 103
  • PROTOCOL ERROR = 111
  • INTERWORKING = 127
  • NOT DEFINED = 0

‘Masquerade’ Event

Описание:

[Получено из channel.c]

Пример:

 Event: Masquerade
 privilege: call,all
 sequencenumber: 196054
 file: channel.c
 line: 6722
 func: ast_do_masquerade
 clone: SIP/263-0000050e
 clonestate: Up
 original: Transfered/SIP/263-0000050e
 originalstate: Up

‘UnParkedCall’ Event

Описание:

[Получено из res_features.c]

Пример:


Log Status Events


System Status Events

‘ChannelUpdate’ Event

Описание: [Получено из channel.c]

Пример:

Event: ChannelUpdate 
Privilege: system,all 
Channel: SIP/261-00000164 
Uniqueid: 1324063501.597 
Channeltype: SIP" 
Sipcallid: A6F6B.zeArRKlaIrVSOlecZ0TvI931.2 
Sipfullcontact: sip:261@192.168.1.122:49256;transport=TCP

‘ChannelReload’ Event

Описание: [Получено из channel.c]

Пример:

Event: ChannelReload
Privilege: system,all
ChannelType: SIP
ReloadReason: RELOAD (Channel module reload)
Registry_Count: 2
Peer_Count: 24

‘Alarm’ Event:

Описание:

[Получено из chan_zap.c]

Пример:

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

‘AlarmClear’ Event:

Описание:

[Получено из chan_zap.c]

Пример:

Event: Alarm
ClearChannel: <channel>

‘DNDState’ Event:

Описание:

[Получено из chan_dahdi.c]

Пример:

Event: DNDState
Channel: Zap/1
Status: <enabled|disabled>

‘LogChannel’ Event

Описание:

[Получено из 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’ Event

Описание:

  1. Fired when a peer registers/unregisters with Asterisk

[Получено из 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: <Lagged|Reachable|Unreachable>
Time: 1000

‘Registry’ Event

Описание:

  1. Fired when Asterisk registers with a peer

[Получено из chan_sip.c, chan_iax2.c]

Notes: For an entry like:register ⇒ username:password:authname@sip.domain:port/local_contactDomain would reflect the value of sip.domain

Пример:

Event: Registry
Privilege: system,all
ChannelType: SIP
Domain: sip.pctel.ru
Status: Registered

‘Reload’ Event

Описание:

  1. Fired when the «RELOAD» console command is executed.

[Получено из manager.c]

Пример:

Event: Reload
Message: Reload Requested

‘Shutdown’ Event

Описание:

[Получено из asterisk.c]

Пример:

Event: Shutdown
Shutdown: <Uncleanly|Cleanly>
Restart: <True|False>

User Status Events

‘UserEvent’ Event

Описание:

[Получено из app_userevent.c]

Пример:

Event: <event>
Channel: <channel>
Uniqueid: <uniqueid>
Event: <event>
Channel: <channel>
Uniqueid: <uniqueid>

Verbose Status Events


CDR Events

‘Cdr’ Event

Описание:

[Получено из cdr_manager.c] Must be enabled in 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:

Config Events


Dtmf Events

‘DTMF’ Event

Описание:

Пример:

Event: DTMF
Privilege: dtmf,all
Channel: SIP/261-00000178
Uniqueid: 1324070764.625
Digit: 2
Direction: Received
Begin: Yes
End: No

Dialplan Events

‘VarSet’ Event

Описание:

Пример:

Event: VarSet 
Privilege: dialplan,all 
Channel: SIP/261-00000165 
Variable: SIPCALLID 
Value: l2DduFUlVvNX5L3p9Byg7PmT6nUBSbFX 
Uniqueid: 1324068124.598

‘Newexten’ Event

Описание:

  1. Fired whenever a pbx function (such as execution of dialplan) occurs

Пример:

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

Reporting Events

‘RTPReceiverStat’ Event

Описание

Пример:

    event="RTPReceiverStat"
    privilege="reporting,all"
    ssrc="528671737"
    receivedpackets="67"
    lostpackets="0"
    jitter="0.0061"
    transit="-0.0153"
    rrcount="0"

‘RTPReceiverStat’ Event

Описание

Пример:

    event="RTPSenderStat" 
    privilege="reporting,all" 
    ssrc="948632689" 
    sentpackets="63" 
    lostpackets="0"
    jitter="0" 
    srcount="0" 
    rtt="0.000000"

‘RTCPSent’ Event

Описание

Пример:

  Event=RTCPSent 
  Privilege=reporting,all 
  To=80.90.117.9:4001
  Ourssrc=1432569448 
  Sentntp=1324071081.1691504640 
  Sentrtp=32960
  Sentpackets=206
  Sentoctets=32960
  Reportblock= 
  Fractionlost=26
  Cumulativeloss=26 
  Iajitter=0.0152 
  Theirlastsr=0
  Dlsr=21.9560 (sec)

‘RTCPReceived’ Event

Описание

Пример:

Event=RTCPReceived 
Privilege=reporting,all 
From=80.90.117.9:4001 
Pt=201(Receiver Report) 
Receptionreports=1 
Senderssrc=0 
Fractionlost=0
Packetslost=0
Highestsequence=0 
Sequencenumbercycles=0 
Iajitter=0
Lastsr=0.0000000000 
Dlsr=0.0000(sec)

Originate Events


Undocumented

‘Newstate’ Event

Описание:

Пример:

   Event: Newstate
   Privilege: call,all
   Channel: SIP/mangotrunk-0000016c
   Channelstate: 4
   Channelstatedesc: Ring
   Calleridnum: 74997623634
   Calleridname: 74997623634
   Uniqueid: 1324068645.605 

   Event: Newstate
   Privilege: call,all
   Channel: SIP/mangotrunk-0000016c
   Channelstate: 6
   Channelstatedesc: Up
   Calleridnum: 74997623634
   Calleridname: 74997623634
   Uniqueid: 1324068645.605 

   Event: Newstate
   Privilege: call,all
   Channel: SIP/261-0000016d
   Channelstate: 5 
   Channelstatedesc: Ringing
   Calleridnum: 261
   Calleridname: Vasya 
   Uniqueid: 1324068650.606

‘ParkedCallsComplete’ Event

Описание:

Пример:

    [sent following an Action: ParkedCalls]

    Event: ParkedCallsComplete

‘QueueParams’ Event

Описание:

[sent following an Action: Queues]

Пример:

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

‘QueueMember’ Event

Описание:

  [sent following an Action: Queues if a queue has members]

Пример:

    Event: QueueMember
    Queue: sales
    Location: SIP/101
    Membership: dynamic
    Penalty: 0
    CallsTaken: 0
    LastCall: 0

‘QueueStatus’ Event

Описание

[sent following an Action: Queues to signify end of output]

Пример:

     Event: QueueStatus
     End

‘Status’ Event

Описание

Пример:

    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’ Event

Описание:

[sent on end of Status events after Action: status]

Пример:

    Event: StatusComplete

‘ZapShowChannels’ Event

Описание

[sent on Action: ZapShowChannels]

Пример:

    Event: ZapShowChannels
    Channel: 2
    Signalling: FXS Kewlstart
    Context: pstn_menu
    Alarm: No Alarm

‘ZapShowChannelsComplete’ Event

Описание

[send on Action: ZapShowChannels end]

Пример:

    Event: ZapShowChannelsComplete

‘SkypeBuddyStatus’ Event

Описание

Пример:

    Event: SkypeBuddyStatus
    Privilege: system,all
    Buddy: Skype/miko_team@sergey_b2
    Buddystatus: Online