[Модуль] Asterisk (app_asterisk)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Alien
Сообщения: 191
Зарегистрирован: Пт дек 20, 2013 4:46 pm
Благодарил (а): 72 раза
Поблагодарили: 38 раз

Re: Модуль Asterisk

Сообщение Alien » Пн авг 22, 2016 9:58 am

Почему нет? Как минимум два варианта :)
Первый - штатными средствами астериск. Создаем файл дозвона. Как пример:

Код: Выделить всё

// При красном статусе формируем файл для дозвона и оповещения
if (gg("Security.stateColor") == "red") {
$calltmp = "/var/spool/asterisk/tmp/security_red.call";
$calldir = "/var/spool/asterisk/outgoing/security_red.call";
$callnumber = "SIP/200";
$dirmessage = "/var/www/cached/voice/";
$message = (md5("Статус системы безопасности изменился на ".gg("Security.stateTitle").". ".implode(". ",gg("Security.stateDetails"))));

$callfile = fopen ($calltmp, "w");
fwrite ($callfile,"Channel: $callnumber\n");
fwrite ($callfile,"Callerid: 299\n");
fwrite ($callfile,"MaxRetries: 2\n");
fwrite ($callfile,"RetryTime: 60\n");
fwrite ($callfile,"WaitTime: 60\n");
fwrite ($callfile,"Context: majordomo\n");
fwrite ($callfile,"Extension: s\n");
fwrite ($callfile,"Priority: 1\n");
fwrite ($callfile,"Set: playfile=$dirmessage$message\n");
fwrite ($callfile,"Archive: Yes\n");
fclose($callfile);
copy ($calltmp,$calldir);
};
 
Второй через модуль. Примерно так:

Код: Выделить всё

$param = array (
    "command" => "Command",
    "option" => "('dongle ussd dongle0 *110*10#')",
);

$response = callMethod ('Asterisk.Action',$param);

if ($response['Response'] != 'Success')
    {
say ('Не удалось выполнить комманду',1);
    } else
    {
say("Удачное выполнение комманды",1);
}
 
В данном случае должно отправить ussd, но что мешает отправить originate? Сам не пробовал. Освобожусь - попробую. Если нужно будет подправлю модуль, чтоб наверняка ;)
Ubuntu на Banana pi M2U Connect
TokiMe
Сообщения: 2
Зарегистрирован: Вс авг 21, 2016 6:44 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Модуль Asterisk

Сообщение TokiMe » Пн авг 22, 2016 11:43 pm

ну тогда от коробочных сигнализаций с уведомлением по смс или дозвоном вообще отличия не будет)) хотелось бы видеть версию чтоб наверняка (:
Alien
Сообщения: 191
Зарегистрирован: Пт дек 20, 2013 4:46 pm
Благодарил (а): 72 раза
Поблагодарили: 38 раз

Re: Модуль Asterisk

Сообщение Alien » Вт авг 23, 2016 9:14 am

Нужно - сделаем :) Я модуль под себя писал - спроса не было. Но раз появился интерес, то будем допиливать. В принципе он может все, но многое я не проверял :)
Сам модуль это шлюз к AMI asterisk, то есть открыты все возможности, а как их использовать, какие скрипты/методы ваять - наше дело.
Так что всегда рад услышать хотелки и отчеты о багах.
К сожалению ограничен по времени, но буду стараться. Придет зима - времени побольше будет и я активнее возьмусь.
Ubuntu на Banana pi M2U Connect
Alien
Сообщения: 191
Зарегистрирован: Пт дек 20, 2013 4:46 pm
Благодарил (а): 72 раза
Поблагодарили: 38 раз

Re: Модуль Asterisk

Сообщение Alien » Сб авг 27, 2016 7:53 pm

Итак, через метод Asterisk.Action работает отправка USSD и СМС.
В самом методе была ошибка - забыл ; в строке return $response;
К примеру сценарий для отправки смс:

Код: Выделить всё

$params = array (
    "command" => "Command",
    "option" => "dongle sms dongle0 0501234567 тестовая смс",
);

$response = callMethod ('Asterisk.Action',$params);

if ($response['Response'] != 'Success')
    {
say ('Не удалось выполнить команду',1);
    } else
    {
say("Удачное выполнение команды",1);
}
 
То есть при необходимости оповещения через смс вызываете Asterisk.Action с параметрами "Command" и "option".
Звонок Originate еще проверю и отпишусь.
Ubuntu на Banana pi M2U Connect
DmitryR
Сообщения: 2
Зарегистрирован: Пт дек 30, 2016 1:17 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Модуль Asterisk

Сообщение DmitryR » Пт дек 30, 2016 1:22 pm

Alien,

спасибо за модуль. Я только осваиваюсь в majordomo, но Ваш модуль стал первым для установки.

Большая просьба, если возможно добавить функцию вывода полей из базы таблицы cdr mysql. В настройках Имя поля в таблице CDR, имя на странице статистики в модуле.

Просто у меня диалплан написан на скриптах, и в dst попадает название макроса транка, а не номер. Для их отображения в таблицу добавлены поля пользователя, которые и хотелось бы видеть на странице статистики модуля.

Буду очень признателен.
Alien
Сообщения: 191
Зарегистрирован: Пт дек 20, 2013 4:46 pm
Благодарил (а): 72 раза
Поблагодарили: 38 раз

Re: Модуль Asterisk

Сообщение Alien » Пт дек 30, 2016 1:38 pm

Была у меня в самом начале такая реализация, с изменяемыми наименованиями таблицы и колонок. Оказалось несколько непрактично и я привел все к стандартам из основных мануалов по астериску. Так новичкам проще понимать что откуда берется и с чем связано.
Если у Вас в dst попадает название макроса, то куда попадает номер? Покажите структуру таблицы.
Если что-либо действительно необходимо и востребовано, то можно подумать над реализацией.
Ubuntu на Banana pi M2U Connect
DmitryR
Сообщения: 2
Зарегистрирован: Пт дек 30, 2016 1:17 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Модуль Asterisk

Сообщение DmitryR » Сб дек 31, 2016 5:33 am

Для этих целей я сделал поля
dst_nb (номер)
trunk (канал по которому был осуществлен звонок, тут может быть МГТС, Мультифон, SIP)
в планах caller_name (имя абонента после обработки скриптами номера телефона. Поиск в телефонной книге Google, 2gis, TRueCaller)
duration_sn реальна продолжительность звонка. А то сейчас Asterisk помещает общую продолжительность сессии, в независимости от того, ответил или нет абонент.

Бегло посмотрел Ваши исходники, но пока не разобрался где формируется sql запрос и происходит выборка по полям, чтобы подсунуть туда свои имена столбцов.
Denis_k
Сообщения: 587
Зарегистрирован: Сб мар 19, 2016 7:24 pm
Благодарил (а): 299 раз
Поблагодарили: 27 раз

Re: Модуль Asterisk

Сообщение Denis_k » Вт июн 13, 2017 11:56 am

возможно не совсем сюда, но все же:
никто не ставил Asterisk на тот же сервер, на котором установлен МД? например на raspberry pi2/3, для домашнего использования или для интеграции устройств управляемых по звонку на телефонный номер (шлагбаумы/ворота)
MD на raspberry pi3
Alien
Сообщения: 191
Зарегистрирован: Пт дек 20, 2013 4:46 pm
Благодарил (а): 72 раза
Поблагодарили: 38 раз

Re: Модуль Asterisk

Сообщение Alien » Вт июн 13, 2017 12:32 pm

А почему нет? У меня стоит на одной машине. На raspberry не ставил, но в инете примеры есть: https://softnastroy.com/content/ustanov ... ry-pi.html или http://ablex.ru/2013/04/ip-ats-freepbx- ... pberry-pi/ навскидку.
А дальше дело техники. Модуль перехватывает события asterisk и обрабатывает как захотите.
Ubuntu на Banana pi M2U Connect
Denis_k
Сообщения: 587
Зарегистрирован: Сб мар 19, 2016 7:24 pm
Благодарил (а): 299 раз
Поблагодарили: 27 раз

Re: Модуль Asterisk

Сообщение Denis_k » Вт июн 13, 2017 7:42 pm

Примеры установки на малину в сети видел, но интересует именно работа МД и Asterisk на одном устройстве, одновременно. И так за каждым ТВ по raspberry, не хотелось бы плодить количество устройств, особенно с учетом то, что функций у них будет минимум.
MD на raspberry pi3
Ответить