mysyslog.ru

22 Октябрь 2009

PHP + Asterisk AMI

написано в рубрике: voip — Метки: — constantine.malov @ 14:52

Asterisk Manager Interface (AMI) – интерфейс, позволяющей клиентам подключаться к работающему asterisk, и через набор заданных функций получать данные о его работе или менять его настройки. Звучит хорошо?

На практике все несколько тяжелее. Для включения AMI нужно настроить asterisk/manager.conf

  1. [general]
  2.  displaysystemname = no
  3.  enabled = yes
  4.  port = 5038
  5.  bindaddr = 127.0.0.1
  6.  [admin]
  7.  secret = secret5
  8.  deny = 0.0.0.0/0.0.0.0
  9.  permit = 127.0.0.1/255.255.255.255
  10.  read = all,system,call,log,verbose,command,agent,user,config
  11.  write = all,system,call,log,verbose,command,agent,user,config

После чего можно сделать вот так

  1. $ telnet 127.0.0.1 5038
  2. Trying 127.0.0.1…
  3. Connected to localhost.
  4. Escape character is ‘^]’.
  5. Asterisk Call Manager/1.0

вводим команды и после несколько раз нажимаем enter

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

получаем ответ

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

дальше можно сделать вот так

  1. Action: Queues
  2. ActionID: 2

и получить ответ

  1. supports has 0 calls (max unlimited) in ‘ringall’ strategy (0s holdtime), W:0, C:0, A:0, SL:0.0% within 0s
  2.    Members:
  3.       SIP/100 (Unavailable) has taken no calls yet
  4.       SIP/101 (Unavailable) has taken no calls yet
  5.       SIP/102 (Not in use) has taken no calls yet
  6.       SIP/103 (Unavailable) has taken no calls yet
  7.       SIP/104 (Not in use) has taken no calls yet
  8.    No Callers

Если посмотреть список доступных функций, то открывается массу возможностей по управлению asterisk в реальном времени без редактирования конфигов. Дело за малым – найти библиотеку для работы с AMI, чтобы самому не писать обвязку для работы с TCP сокетами и т.п. Библиотек много, кажется есть почти для каждого популярного языка программирования. Я выбрал для PHP asterisk-php-api, можно скачать с google code. Напишем пример для статистики по очередям

  1. <?php
  2. require "AsteriskManager.php";
  3. $params = array(’server’ => ‘127.0.0.1′, ‘port’ => ‘5038′);
  4. $ast = new Net_AsteriskManager($params);
  5. try {
  6.     $ast->connect();
  7. } catch (PEAR_Exception $e) {
  8.     echo $e;
  9. }
  10. try {
  11.     $ast->login(‘admin’, ’secret5′);
  12. } catch(PEAR_Exception $e) {
  13.     echo $e;
  14. }
  15. try {
  16.     $queuestatus = $ast->getQueues();
  17. } catch(PEAR_Exception $e) {
  18.     echo $e;
  19. }
  20.  
  21. echo $queuestatus;
  22. ?>

Вид конечно не очень, но все понятно, можно сделать страницу с авторефрешем и присматривать за работой очередей asterisk.

Нет комментариев

Еще нет комментариев.

RSS лента комментариев к этой записи. TrackBack URL

Извините, комментирование на данный момент закрыто.

Работает на WordPress