[Сценарий] Учим Majordomo говорить по телефону Asterisk
Добавлено: Пн апр 09, 2018 10:36 am
У кого стоит сервер Asterisk, можно научить Алису проговаривать не только в колонки, но и звонить по нужным номерам и проговаривать все по телефону.
Смысл следующий:
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
После этого выполняется скрипт, который создали ранее и Алиса звонит на указанный телефон и произносит, что нужно.