MAJORDOMO + VoIP

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

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

Re: MAJORDOMO + VoIP

Сообщение Alien » Вс дек 29, 2013 2:30 pm

А пинг и не нужен. Если вкратце, то нужно добавить в крон от астериска команду /usr/sbin/asterisk -rx "sip show peers" > /var/www/asterisk/online.txt к примеру. И парсить файл online.txt из мажордома на присутствие клиентов. В данный момент несколько ограничен по времени - позже опишу подробнее.
Ubuntu на Banana pi M2U Connect
ksgroup
Сообщения: 135
Зарегистрирован: Ср дек 19, 2012 10:35 am
Откуда: Ukraine/Kiev
Благодарил (а): 7 раз
Поблагодарили: 14 раз

Re: MAJORDOMO + VoIP

Сообщение ksgroup » Вс дек 29, 2013 5:11 pm

Alien писал(а):А пинг и не нужен. Если вкратце, то нужно добавить в крон от астериска команду /usr/sbin/asterisk -rx "sip show peers" > /var/www/asterisk/online.txt к примеру. И парсить файл online.txt из мажордома на присутствие клиентов. В данный момент несколько ограничен по времени - позже опишу подробнее.
Слушай, прекрасная идея!!! Это же проще простого! Вот что значит знания! Я просто что в астериске что в линуксе практически нулевой пользователь. Пойду воплощать.
CubieBoard A10 - основной сервер Majordomo
Raspberry Pi - цифровая мини АТС ASTERISK
Arduino - блок управления реле, электросчетчик, счетчики воды, управление вентиляционной системой, СКУД.
Alien
Сообщения: 191
Зарегистрирован: Пт дек 20, 2013 4:46 pm
Благодарил (а): 69 раз
Поблагодарили: 34 раза

Re: MAJORDOMO + VoIP

Сообщение Alien » Ср сен 17, 2014 6:58 pm

Еще идея. Учим Asterisk общаться с Алисой.

В Majordomo создаем сценарий AsteriskSay, с кодом: say($params['phrase'],1);

Теперь настройка Asterisk. В папке /var/lib/asterisk/agi-bin создаем скрипт saymjd.php с кодом:
#!/usr/bin/php -q
<?php
$text = $_SERVER["argv"][1];
$ph = fopen ('http://АДРЕС_СЕРВЕРА_МАЖОРДОМО/objects/?script=AsteriskSay&phrase='.$text,'r') or die($php_errormsg);
fclose ($ph);
exit(0);
?>

Теперь подправляем диалплан. В моем случае это extentions.ael, но ничто не мешает сделать обычный или lua. Кусок диалплана с обработкой звонков на мой МТС номер:
context ringroups-from-MTS {
s=> {
Verbose(Входящий звонок на МТС. Приветствие);
AGI(saymjd.php,"Входящий%20звонок%20на%20номер%20${CALLERID(dnid)}%20от%20${CALLERID(num)}");
Answer;
AGI(say.php,"Здравствуйте");
AGI(say.php,"Вас приветствует Сервер домашней автоматизации");
AGI(say.php,"Пробую Вас соединить с хозяевами");
Verbose(Входящий звонок на МТС. Обзвон абонентов);
Dial(SCCP/100&SCCP/101&SIP/102&SIP/103,20,${DIALOPTIONS}i);
Verbose(Входящий звонок на МТС. Нет доступных абонентов - голосовая почта);
AGI(say.php,"К сожалению Ваш звонок не может быть принят");
VoiceMail(100@default);
AGI(saymjd.php,"Звонок%20переадресован%20на%20голосовую%20почту");
Hangup;
}
}

Как результат Астериск сообщает через Алису о поступившем звонке с номера такого-то, поднимает трубку, общается со звонящим и пытается дозвониться до меня. Если я не поднял трубку, то Астериск через Алису сообщает о переадресации на голосовую почту и обрабатывает звонок.

Пока писал родилась вторая идея. Можно допилить еще напоминания Алисой о поступивших звонках и сообщениях на голосовой почте. Таким-же способом, через AGI.
За это сообщение автора Alien поблагодарил:
mirsum (Вт окт 06, 2015 11:33 pm)
Рейтинг: 1.27%
Ubuntu на Banana pi M2U Connect
PAV
Сообщения: 876
Зарегистрирован: Пт дек 06, 2013 11:30 am
Откуда: Москва
Благодарил (а): 57 раз
Поблагодарили: 79 раз

Re: MAJORDOMO + VoIP

Сообщение PAV » Вс апр 08, 2018 6:12 pm

Друзья, а можете на пальцах раскидать, что нужно сделать, чтобы Алиса звонила на номер 5 и говорила фразу "Привет"?
Разобрался вроде
eygen
Сообщения: 368
Зарегистрирован: Чт сен 25, 2014 5:37 pm
Откуда: Екатеринбург
Благодарил (а): 22 раза
Поблагодарили: 40 раз

Re: MAJORDOMO + VoIP

Сообщение eygen » Пн апр 09, 2018 9:26 am

PAV писал(а):
Вс апр 08, 2018 6:12 pm
Друзья, а можете на пальцах раскидать, что нужно сделать, чтобы Алиса звонила на номер 5 и говорила фразу "Привет"?
Разобрался вроде
Давай рассказывай что да как :P
PAV
Сообщения: 876
Зарегистрирован: Пт дек 06, 2013 11:30 am
Откуда: Москва
Благодарил (а): 57 раз
Поблагодарили: 79 раз

Re: MAJORDOMO + VoIP

Сообщение PAV » Пн апр 09, 2018 10:33 am

Смысл следующий:
Asterisk исполняет свои скрипты, которые находятся в папке /var/spool/asterisk/outgoing (т.е. звонит, согласно инструкции в файле).
Скрипт создает файл, который обрабатывает Asterisk.
Профит.

Создаем скрипт в МЖД

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

$calltmp = "/var/spool/asterisk/tmp/mjd";
$calldir = "/var/spool/asterisk/outgoing/mjd";
$callnumber = "SIP/200"; //Указываем внутренний на который звонить. Или внешний через донгл: Dongle/dongle0/holdother:0505555555
$dirmessage = "/var/www/cached/voice/";
$message = (md5("hello"); // тут, что нужно говорить или переменную - Алиса когда что-то говорит, преобразует текст в звуковой файл и обзывает его, как хеш md5, плюс добавляет _yandex  (если движок яндекса), сохраняет в /var/www/cached/voice/ и его можно оттуда достат
$message2 = ("_yandex"); // это, если движок яндекса, он вставляет после md5
$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$message2\n");
fwrite ($callfile,"Archive: Yes\n");
fclose($callfile);
copy ($calltmp,$calldir);
В Asterisk в extensions добавляем раздел

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

[majordomo]
exten => s,1,Answer
exten => s,n,Wait(1)
exten => s,n,Playback(${playfile})
exten => s,n,hangup
Теперь говорим Алисе сказать что-то (скажи hello) если шаблон настроен. Она должна сформировать звуковой файл в папке "/var/www/cached/voice/";
После этого выполняется скрипт, который создали ранее и Алиса звонит на указанный телефон и произносит, что нужно.
udvnl
Сообщения: 65
Зарегистрирован: Чт июн 21, 2018 11:03 am
Откуда: Минск
Благодарил (а): 12 раз
Поблагодарили: 19 раз

Re: MAJORDOMO + VoIP

Сообщение udvnl » Ср авг 21, 2019 10:25 am

Возобновлю тему.
Есть ли интересующиеся VoIP?
небольшая статья https://habr.com/ru/post/464309/
За это сообщение автора udvnl поблагодарили (всего 2):
Alien (Ср авг 21, 2019 11:02 am) • Svetлая (Чт авг 22, 2019 3:48 pm)
Рейтинг: 2.53%
udvnl
Сообщения: 65
Зарегистрирован: Чт июн 21, 2018 11:03 am
Откуда: Минск
Благодарил (а): 12 раз
Поблагодарили: 19 раз

Re: MAJORDOMO + VoIP

Сообщение udvnl » Ср авг 28, 2019 10:12 pm

Новая задумка по поводу voip + MajorDoMo
https://connect.smartliving.ru/profile/ ... rdomo.html
udvnl
Сообщения: 65
Зарегистрирован: Чт июн 21, 2018 11:03 am
Откуда: Минск
Благодарил (а): 12 раз
Поблагодарили: 19 раз

Re: MAJORDOMO + VoIP

Сообщение udvnl » Ср сен 11, 2019 12:26 pm

Реализовал, изменил текст в блоге, связи с найденным решением.
https://connect.smartliving.ru/profile/ ... rdomo.html
Ответить