Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
kb:asterisk:ami [2014/11/14 22:32] 127.0.0.1 внешнее изменение |
kb:asterisk:ami [2018/05/16 14:23] (текущий) tpor [Полезные ссылки] |
||
---|---|---|---|
Строка 4: | Строка 4: | ||
Интерфейс управления сервером Asterisk (далее Manager API) позволяет клиентским программам соединяться с серверным приложением Asterisk, отправлять ему команды и/или считывать события, происходящие в АТС, используя TCP/IP протокол. Те, кто занимается интеграцией различных задач, могут найти много полезного для себя, например, отслеживая поведение телефонных абонентов и управляя ими на основании каких-либо правил. | Интерфейс управления сервером Asterisk (далее Manager API) позволяет клиентским программам соединяться с серверным приложением Asterisk, отправлять ему команды и/или считывать события, происходящие в АТС, используя TCP/IP протокол. Те, кто занимается интеграцией различных задач, могут найти много полезного для себя, например, отслеживая поведение телефонных абонентов и управляя ими на основании каких-либо правил. | ||
- | Для коммуникации между АТС Asterisk и подсоединенным Manager API клиентом используется простой текстовый построчный протоков вида: "параметр: значение". Окончание строки определяется последовательностью CRLF. Для упрощения дальнейшего описания, мы будем использовать термин "пакет " для описания набора строк вида "параметр: значение", после которых идет пустая строка, содержащая только символы возврата каретки и перевода строки (CRLF). | + | Для коммуникации между АТС Asterisk и подсоединенным Manager API клиентом используется простой текстовый построчный протокол вида: //"параметр: значение"//. Окончание строки определяется последовательностью CRLF. Для упрощения дальнейшего описания, мы будем использовать термин "пакет " для описания набора строк вида "параметр: значение", после которых идет пустая строка, содержащая только символы возврата каретки и перевода строки (CRLF). |
Строка 15: | Строка 15: | ||
Перед отправкой команд серверу Asterisk, Вы должны установить manager API сессию (см. ниже). | Перед отправкой команд серверу Asterisk, Вы должны установить manager API сессию (см. ниже). | ||
Пакеты могут передаваться в любом направлении в любое время, после прохождения авторизации. | Пакеты могут передаваться в любом направлении в любое время, после прохождения авторизации. | ||
- | Первая строка в пакете должна содержать параметр "Action", если она отправляется от клиента серверу и ,соответственно, "Event" или "Response", когда пакет передается от Asterisk клиенту. | + | Первая строка в пакете должна содержать параметр "**Action**", если она отправляется от клиента серверу и ,соответственно, "**Event**" или "**Response**", когда пакет передается от Asterisk клиенту. |
Порядок строк в пределах пакета не имеет значения, следовательно, Вы можете использовать для хранения одного пакета библиотеку Вашего языка программирования, где не требуется использования сортировки, тем самым увеличив производительность составления пакета данных. | Порядок строк в пределах пакета не имеет значения, следовательно, Вы можете использовать для хранения одного пакета библиотеку Вашего языка программирования, где не требуется использования сортировки, тем самым увеличив производительность составления пакета данных. | ||
Последовательность символов CRLF используется для отделения строк друг от друга, а пустая строка (два подряд идущих CRLF) указывает на окончание команды и Asterisk приступает к ее выполнению. | Последовательность символов CRLF используется для отделения строк друг от друга, а пустая строка (два подряд идущих CRLF) указывает на окончание команды и Asterisk приступает к ее выполнению. | ||
Строка 22: | Строка 22: | ||
- | Тип пакета определяется наличием одного из следующих значений параметра в паре “Параметр: значение”: | + | Тип пакета определяется наличием одного из следующих значений параметра в паре “//Параметр: значение//”: |
- | Action: Пакет отправляется подсоединенным клиентом серверу Asterisk, в значении параметра указывается требуемое действие, которое должно быть выполнено сервером Asterisk. Набор действий является ограниченным (но расширяемым) списком, который доступен клиенту, в зависимости от загруженных модулей сервера Asterisk и прав назначенных пользователю, от имени которого подсоединился клиент. За один раз (в пределах одного пакета) может быть указано только одно действие. Пакет “Action” содержит имя запрашиваемой операции, а также все требуемые параметры команды. | + | **Action**: Пакет отправляется подсоединенным клиентом серверу Asterisk, в значении параметра указывается требуемое действие, которое должно быть выполнено сервером Asterisk. Набор действий является ограниченным (но расширяемым) списком, который доступен клиенту, в зависимости от загруженных модулей сервера Asterisk и прав назначенных пользователю, от имени которого подсоединился клиент. За один раз (в пределах одного пакета) может быть указано только одно действие. Пакет “Action” содержит имя запрашиваемой операции, а также все требуемые параметры команды.\\ |
- | Response: Пакет содержащий ответ, отправленный сервером Asterisk, на последнюю команду, которую клиент отправил серверу. | + | **Response**: Пакет содержащий ответ, отправленный сервером Asterisk, на последнюю команду, которую клиент отправил серверу.\\ |
- | Event: Пакет с данными относящимися к какому-либо событию сгенерированному сервером Asterisk или его загруженными модулями. | + | **Event**: Пакет с данными относящимися к какому-либо событию сгенерированному сервером Asterisk или его загруженными модулями. |
В основном, клиенты отправляют “Action” пакеты Asterisk серверу, Asterisk сервер производит требуемые операции и возвращает результат (часто это только сообщение об успехе или ошибке) в “Response” пакете. Так как нет никакой гарантии, относительно того, что ответы на команды будут приходить в той же последовательности, что и поступающие запросы, клиентские приложения включают в пакет параметр “ActionID” в каждый “Action” пакет запроса. Этот параметр сервер Asterisk вернет без изменений в ответном “Response” пакете. Таким образом, клиентское приложение может просто сопоставить каждому пакету типа “Action” соответствующий ответ “Response”, в том случае, если требуется отсылать несколько запросов сразу, не дожидаясь пока на каждый из отправленных запросов придет соответствующий “Response”ответ. | В основном, клиенты отправляют “Action” пакеты Asterisk серверу, Asterisk сервер производит требуемые операции и возвращает результат (часто это только сообщение об успехе или ошибке) в “Response” пакете. Так как нет никакой гарантии, относительно того, что ответы на команды будут приходить в той же последовательности, что и поступающие запросы, клиентские приложения включают в пакет параметр “ActionID” в каждый “Action” пакет запроса. Этот параметр сервер Asterisk вернет без изменений в ответном “Response” пакете. Таким образом, клиентское приложение может просто сопоставить каждому пакету типа “Action” соответствующий ответ “Response”, в том случае, если требуется отсылать несколько запросов сразу, не дожидаясь пока на каждый из отправленных запросов придет соответствующий “Response”ответ. | ||
Строка 205: | Строка 205: | ||
===== Полезные ссылки ===== | ===== Полезные ссылки ===== | ||
+ | * [[http://wiki.askozia.ru/handbook:ami|Инструкция для подключения к AMI АТС]] | ||
* Описание протокола Asterisk Manager Interface (AMI) на русском [[http://asterisk.ru/knowledgebase/Asterisk+Manager+API]] | * Описание протокола Asterisk Manager Interface (AMI) на русском [[http://asterisk.ru/knowledgebase/Asterisk+Manager+API]] | ||
* Описание протокола Asterisk Manager Interface (AMI) на английском (полное)[[http://www.voip-info.org/wiki/view/Asterisk+manager+API]] | * Описание протокола Asterisk Manager Interface (AMI) на английском (полное)[[http://www.voip-info.org/wiki/view/Asterisk+manager+API]] |