libamc

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

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

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

Ключевые особенности[править | править код]

  • Высокая производительность;
  • Оптимизированный код;
  • Может применяться в многопоточных приложениях, где и достигает максимальной производительности;
  • Поддерживает практически все функции AMI, включая:
  1. управление логическими каналами, очередями и модулями;
  2. телеконференции (meetme, confbridge);
  3. функции администрирования ядра Asterisk;
  4. правка конфгураций;
  5. контроль над DAHDI;
  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

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

Ссылки[править | править код]