MAJORDOMO + VoIP
Модератор: immortal
-
- Сообщения: 191
- Зарегистрирован: Пт дек 20, 2013 4:46 pm
- Благодарил (а): 72 раза
- Поблагодарили: 38 раз
Re: MAJORDOMO + VoIP
А пинг и не нужен. Если вкратце, то нужно добавить в крон от астериска команду /usr/sbin/asterisk -rx "sip show peers" > /var/www/asterisk/online.txt к примеру. И парсить файл online.txt из мажордома на присутствие клиентов. В данный момент несколько ограничен по времени - позже опишу подробнее.
Ubuntu на Banana pi M2U Connect
-
- Сообщения: 135
- Зарегистрирован: Ср дек 19, 2012 10:35 am
- Откуда: Ukraine/Kiev
- Благодарил (а): 7 раз
- Поблагодарили: 14 раз
Re: MAJORDOMO + VoIP
Слушай, прекрасная идея!!! Это же проще простого! Вот что значит знания! Я просто что в астериске что в линуксе практически нулевой пользователь. Пойду воплощать.Alien писал(а):А пинг и не нужен. Если вкратце, то нужно добавить в крон от астериска команду /usr/sbin/asterisk -rx "sip show peers" > /var/www/asterisk/online.txt к примеру. И парсить файл online.txt из мажордома на присутствие клиентов. В данный момент несколько ограничен по времени - позже опишу подробнее.
CubieBoard A10 - основной сервер Majordomo
Raspberry Pi - цифровая мини АТС ASTERISK
Arduino - блок управления реле, электросчетчик, счетчики воды, управление вентиляционной системой, СКУД.
Raspberry Pi - цифровая мини АТС ASTERISK
Arduino - блок управления реле, электросчетчик, счетчики воды, управление вентиляционной системой, СКУД.
-
- Сообщения: 191
- Зарегистрирован: Пт дек 20, 2013 4:46 pm
- Благодарил (а): 72 раза
- Поблагодарили: 38 раз
Re: MAJORDOMO + VoIP
Еще идея. Учим 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.
В 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.
- Рейтинг: 1.16%
Ubuntu на Banana pi M2U Connect
-
- Сообщения: 949
- Зарегистрирован: Пт дек 06, 2013 11:30 am
- Откуда: Москва
- Благодарил (а): 68 раз
- Поблагодарили: 94 раза
Re: MAJORDOMO + VoIP
Друзья, а можете на пальцах раскидать, что нужно сделать, чтобы Алиса звонила на номер 5 и говорила фразу "Привет"?
Разобрался вроде
Разобрался вроде
-
- Сообщения: 393
- Зарегистрирован: Чт сен 25, 2014 5:37 pm
- Откуда: Екатеринбург
- Благодарил (а): 25 раз
- Поблагодарили: 52 раза
-
- Сообщения: 949
- Зарегистрирован: Пт дек 06, 2013 11:30 am
- Откуда: Москва
- Благодарил (а): 68 раз
- Поблагодарили: 94 раза
Re: MAJORDOMO + VoIP
Смысл следующий:
Asterisk исполняет свои скрипты, которые находятся в папке /var/spool/asterisk/outgoing (т.е. звонит, согласно инструкции в файле).
Скрипт создает файл, который обрабатывает Asterisk.
Профит.
Создаем скрипт в МЖД
В Asterisk в extensions добавляем раздел
Теперь говорим Алисе сказать что-то (скажи hello) если шаблон настроен. Она должна сформировать звуковой файл в папке "/var/www/cached/voice/";
После этого выполняется скрипт, который создали ранее и Алиса звонит на указанный телефон и произносит, что нужно.
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);
Код: Выделить всё
[majordomo]
exten => s,1,Answer
exten => s,n,Wait(1)
exten => s,n,Playback(${playfile})
exten => s,n,hangup
После этого выполняется скрипт, который создали ранее и Алиса звонит на указанный телефон и произносит, что нужно.
-
- Сообщения: 91
- Зарегистрирован: Чт июн 21, 2018 11:03 am
- Откуда: Минск
- Благодарил (а): 30 раз
- Поблагодарили: 30 раз
-
- Сообщения: 91
- Зарегистрирован: Чт июн 21, 2018 11:03 am
- Откуда: Минск
- Благодарил (а): 30 раз
- Поблагодарили: 30 раз
Re: MAJORDOMO + VoIP
Новая задумка по поводу voip + MajorDoMo
https://connect.smartliving.ru/profile/ ... rdomo.html
https://connect.smartliving.ru/profile/ ... rdomo.html
-
- Сообщения: 91
- Зарегистрирован: Чт июн 21, 2018 11:03 am
- Откуда: Минск
- Благодарил (а): 30 раз
- Поблагодарили: 30 раз
Re: MAJORDOMO + VoIP
Реализовал, изменил текст в блоге, связи с найденным решением.
https://connect.smartliving.ru/profile/ ... rdomo.html
https://connect.smartliving.ru/profile/ ... rdomo.html