ВидеоКонф(ВКС)  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Скрипт звонилка для автопроверки АТС под Linux.

Проблемы и их решения Asterisk как такового

Модераторы: april22, Zavr2008

Скрипт звонилка для автопроверки АТС под Linux.

Сообщение Ferrum » 20 июл 2017, 12:26

Добрый день нет ли у кого готового скрипта с программными пакетами для тестирование АТС ?, задача такая звоним раз в 5 минут с одного аккаунта на софтфоне на второй аккаунт, в случае не удачи совершаем действие (например посылаем СМС).
Аватар пользователя
Ferrum
 
Сообщений: 333
Зарегистрирован: 25 ноя 2011, 15:16

Re: Скрипт звонилка для автопроверки АТС под Linux.

Сообщение april22 » 20 июл 2017, 13:05

Call файл ?! не пойдет ?!
Своими вопросами , вы загоняете меня в ГУГЛЬ.
april22
 
Сообщений: 2187
Зарегистрирован: 09 июл 2012, 09:47

Re: Скрипт звонилка для автопроверки АТС под Linux.

Сообщение Ferrum » 20 июл 2017, 13:51

Да пойдет, есть некое количество идей как это реализовать с использованием AMI и БД, хотел посмотреть как у других это сделано.
Аватар пользователя
Ferrum
 
Сообщений: 333
Зарегистрирован: 25 ноя 2011, 15:16

Re: Скрипт звонилка для автопроверки АТС под Linux.

Сообщение Repz » 20 июл 2017, 14:30

да просто сделано, в цыкле опрашиваем бд на наличие новых записей в таблице, если нашли - Originate, пишем в хеш название Channel и Uniqueid, ловим Hangup, при совпадении Channel и/или Uniqueid (по вкусу) смотрим Cause, в зависимости от Cause выполняем дальнейшие действия.
Repz
 
Сообщений: 169
Зарегистрирован: 04 мар 2015, 12:35

Re: Скрипт звонилка для автопроверки АТС под Linux.

Сообщение Ferrum » 01 авг 2017, 08:35

Итак сделал такую систему, может пригодиться кому, указывайте на недочеты и что еще можно добавить.

У нас должно быть установлено два Астерикса первый основной который мы и будем проверять, второй который будет делать тестовый звонок.

Так же мы будем использовать БД MySQL и AMI

Данные в БД

Код: выделить все
-- Структура таблицы `pbx_test`
--

CREATE TABLE `pbx_test` (
  `id` int(11) NOT NULL,
  `time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Индексы сохранённых таблиц
--

--
-- Индексы таблицы `pbx_test`
--
ALTER TABLE `pbx_test`
  ADD PRIMARY KEY (`id`),
  ADD KEY `id` (`id`);

--
-- AUTO_INCREMENT для сохранённых таблиц
--

--
-- AUTO_INCREMENT для таблицы `pbx_test`
--
ALTER TABLE `pbx_test`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;


php скрипт который будет дергать AMI

Код: выделить все
<?php

# --- define globals ---
$strhost = "127.0.0.1";
$strport = "5038";
$timeout = "10";

$errno=0 ;
$errstr=0 ;

$sconn = fsockopen ($strhost, $strport, $errno, $errstr, $timeout) or die("Connection to $strhost:$strport failed");

if (!$sconn) { echo "$errstr ($errno)<br>\n"; }

  else {

  fputs ($sconn, "Action: login\r\n");
  fputs ($sconn, "Username: *******\r\n");
  fputs ($sconn, "Secret: ***********\r\n");
  fputs ($sconn, "Events: off\r\n\r\n");
  usleep(300);

  fputs ($sconn, "Action: Originate\r\n");
  fputs ($sconn, "Channel: SIP/PBX1/888\r\n");
  fputs ($sconn, "Callerid: 888\r\n");
  fputs ($sconn, "Timeout: 30000\r\n");
  fputs ($sconn, "Context: testpbx\r\n");
  fputs ($sconn, "Exten: 700\r\n");
  fputs ($sconn, "Priority: 1\r\n\r\n");
  fputs ($sconn, "Async: yes\r\n\r\n" );
  fputs ($sconn, "Action: Logoff\r\n\r\n");
  usleep (300);

  fclose ($sconn);

  }

?>


php скрипт который сравнивает данные и производит действие (например шлет письмо)

Код: выделить все
#!/usr/bin/php
<?php
    // определяем начальные данные
    $db_host = '127.0.0.1';
    $db_name = '*****';
    $db_username = '*************';
    $db_password = '****************';

    // соединяемся с сервером базы данных
    $connect_to_db = mysql_connect($db_host, $db_username, $db_password)
    or die("Could not connect: " . mysql_error());

    // подключаемся к базе данных
    mysql_select_db($db_name, $connect_to_db)
    or die("Could not select DB: " . mysql_error());

    // выбираем значения из таблицы
    $qr_result = mysql_query("SELECT * FROM pbx_test ORDER BY id DESC LIMIT 1")
    or die(mysql_error());

     // выводим данные таблицы MySQL
    while($data = mysql_fetch_array($qr_result)){
    $settime = $data['time'] ; }

    // закрываем соединение с сервером  базы данных
    mysql_close($connect_to_db);

   // выводим системное время
    $systemtime=date("Y-m-d H:i:s");

  // сравниваем время
    $seconds = strtotime($systemtime) - strtotime($settime);
  //  echo $seconds;

  // Если разница более 150 сек выполняем действие
    if ($seconds > 150) mail("123@123.123", "PBX_Alarm", "Alarm Alarm");

?>


В диалплане проверяемого сервера

Код: выделить все
exten => 888,1,NoCDR()
exten => 888,2,Set(timetest=${STRFTIME(${EPOCH},,%Y%m%d%H%M%S)})
exten => 888,3,MYSQL(Connect connid ****** **** ********* *******)
exten => 888,4,MYSQL(Query resultid ${connid} INSERT INTO pbx_test (`id`, `time`) VALUES (NULL, ${timetest}))
exten => 888,5,MYSQL(Disconnect ${connid})
exten => 888,6,Hangup


php скрипты добавляем в cron, у меня период в 2 минуты стоит.
Аватар пользователя
Ferrum
 
Сообщений: 333
Зарегистрирован: 25 ноя 2011, 15:16

Re: Скрипт звонилка для автопроверки АТС под Linux.

Сообщение Ferrum » 01 авг 2017, 11:35

Правка по скрипту для ami

Код: выделить все
<?php

# --- define globals ---
$strhost = "127.0.0.1";
$strport = "5038";
$timeout = "10";

$errno=0 ;
$errstr=0 ;

$sconn = fsockopen ($strhost, $strport, $errno, $errstr, $timeout) or die("Connection to $strhost:$strport failed");

if (!$sconn) { echo "$errstr ($errno)<br>\n"; }

  else {

  fputs ($sconn, "Action: login\r\n");
  fputs ($sconn, "Username: *************\r\n");
  fputs ($sconn, "Secret: **************\r\n");
  fputs ($sconn, "Events: off\r\n\r\n");
  // usleep(300);

  fputs ($sconn, "Action: Originate\r\n");
  fputs ($sconn, "Channel: SIP/PBX1/888\r\n");
  fputs ($sconn, "Callerid: 888\r\n");
  fputs ($sconn, "Timeout: 30000\r\n");
  fputs ($sconn, "Context: testpbx\r\n");
  fputs ($sconn, "Exten: 700\r\n");
  fputs ($sconn, "Priority: 1\r\n\r\n");
  fputs ($sconn, "Async: yes\r\n\r\n" );
  fputs ($sconn, "Action: Logoff\r\n\r\n");
  sleep (1);

  fclose ($sconn);

  }

?>
Аватар пользователя
Ferrum
 
Сообщений: 333
Зарегистрирован: 25 ноя 2011, 15:16

Re: Скрипт звонилка для автопроверки АТС под Linux.

Сообщение shader » 01 авг 2017, 12:28

а для чего это всё?
shader
 
Сообщений: 117
Зарегистрирован: 09 авг 2013, 10:33

Re: Скрипт звонилка для автопроверки АТС под Linux.

Сообщение fecyt » 01 авг 2017, 12:40

Если цель - проверить отвечает ли астериск на звонки, можно было воспользоваться sipp и запускать его кроном.
fecyt
 
Сообщений: 148
Зарегистрирован: 17 янв 2017, 18:51


Вернуться в Конфигурация и настройка Asterisk

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16

© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH