libamc — Википедия
Asterisk Client | |
---|---|
Разработчик | kod |
Написана на | C++ |
Операционная система | кроссплатформенная |
Аппаратная платформа | кроссплатформенная |
Последняя версия | 2.1.5-074 (12 февраля 2015) |
Состояние | Актуальный |
Лицензия | BSD |
Сайт | sourceforge.net/projects… |
libamc — реализует производительный класс для удаленного управления множеством АТС на базе Asterisk. Позволяет осуществлять мониторинг в реальном времени функцией Events().
Ключевые особенности
[править | править код]- Высокая производительность;
- Оптимизированный код;
- Может применяться в многопоточных приложениях, где и достигает максимальной производительности;
- Поддерживает практически все функции AMI Архивная копия от 6 октября 2014 на Wayback Machine, включая:
- управление логическими каналами, очередями и модулями;
- телеконференции (meetme, confbridge);
- функции администрирования ядра Asterisk;
- правка конфгураций;
- контроль над DAHDI Архивная копия от 6 октября 2014 на Wayback Machine;
- редактор плана набора;
- Не использует сторонних библиотек;
- Взаимодействие с серверами АТС производится только стандартным API ОС.
Пример использования
[править | править код]Получение информации о состоянии сервера:
#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
Дополнительные примеры находятся в сопроводительной документации программы.
Ссылки
[править | править код]- Официальный сайт Архивная копия от 26 февраля 2014 на Wayback Machine