libamc — Википедия

Asterisk Client
Разработчик kod
Написана на C++
Операционная система кроссплатформенная
Аппаратная платформа кроссплатформенная
Последняя версия 2.1.5-074 (12 февраля 2015)
Состояние Актуальный
Лицензия BSD
Сайт sourceforge.net/projects…

libamc — реализует производительный класс для удаленного управления множеством АТС на базе Asterisk. Позволяет осуществлять мониторинг в реальном времени функцией Events().

Ключевые особенности

[править | править код]
  • Высокая производительность;
  • Оптимизированный код;
  • Может применяться в многопоточных приложениях, где и достигает максимальной производительности;
  • Поддерживает практически все функции AMI Архивная копия от 6 октября 2014 на Wayback Machine, включая:
  1. управление логическими каналами, очередями и модулями;
  2. телеконференции (meetme, confbridge);
  3. функции администрирования ядра Asterisk;
  4. правка конфгураций;
  5. контроль над DAHDI Архивная копия от 6 октября 2014 на Wayback Machine;
  6. редактор плана набора;

Пример использования

[править | править код]

Получение информации о состоянии сервера:

#include <iostream> #include <amc.h>  //---AMC-declaration--- amc ami; //  int main(int argc, char *argv[]) {   string host = "10.1.1.1";   unsigned    short int port = 5038;   string     usr  = "vve",     ps   = "evv";    if(   ! ami.connect(host, port)     )   { cout << ami.err << endl;      return -1;    }   cout   << "Connected to "   << host   << endl;    if(   ! ami.login(host, port,               usr, ps)     )   { cout << ami.err << endl;     ami.disconnect(host, port);      return -1;   }   cout << "Logged in " << host << endl;   cout << endl;    sys_status st;    if(   ! ami.core_status(host, port, st)     )   { cout << ami.err << endl;   } else {     cout << "1-StD: "           << st.startup_date << endl;     cout << "1-StT: "           << st.startup_time << endl;     cout << "1-RlD: "           << st.reload_date << endl;     cout << "1-Rlt: "          << st.reload_time << endl;     cout << "1-Cur: "          << st.current_calls << endl;   }   if(ami.logoff(host, port))     cout << "Logged off "           << host << endl;   if(ami.disconnect(host, port))     cout << "Disconnected from "           << host << endl;   return 1; } 

Компиляция:

 $ gcc -c main.C  $ gcc -lamc main.o -o voipstat  $ ./voipstat 

Вывод:

 Connected to 10.1.1.1  Logged in 10.1.1.1    1-StD: 2012-11-29  1-StT: 08:47:45  1-RlD: 2014-02-01  1-RlT: 09:51:28  1-Cur: 7    Logged off 10.1.1.1  Disconnected from 10.1.1.1 

Дополнительные примеры находятся в сопроводительной документации программы.