libamc — реализует производительный класс для удаленного управления множеством АТС на базе Asterisk. Позволяет осуществлять мониторинг в реальном времени функцией Events.
Ключевые особенности Высокая производительность; Оптимизированный код; Может применяться в многопоточных приложениях, где и достигает максимальной производительности; Поддерживает практически все функции AMI, включая: управление логическими каналами, очередями и модулями; телеконференции (meetme, confbridge); функции администрирования ядра Asterisk; правка конфгураций; контроль над DAHDI; редактор плана набора; Не использует сторонних библиотек; Взаимодействие с серверами АТС производится только стандартным API ОС.
Высокая производительность;
Оптимизированный код;
Может применяться в многопоточных приложениях, где и достигает максимальной производительности;
Поддерживает практически все функции AMI, включая:
управление логическими каналами, очередями и модулями;
телеконференции (meetme, confbridge);
функции администрирования ядра Asterisk;
правка конфгураций;
контроль над DAHDI;
редактор плана набора;
Не использует сторонних библиотек;
Взаимодействие с серверами АТС производится только стандартным API ОС.
Получение информации о состоянии сервера:
#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 -lamc main.o -o voipstat
$ ./voipstat
Вывод:
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
Дополнительные примеры находятся в сопроводительной документации программы.