По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Желание использовать данные с внешних сервисов это вполне обычная практика. Так как многие из этих сервисов доступны по HTTP(S) (REST API, например), то в этой статье мы хотим показать простой способ обращения к этим сервисам по cURL и обработку данных в случае, если сервер вернет JSON. Все взаимодействия будут выполняться из диалплана. Простой cURL запрос В диалплане Asterisk существует функция CURL, которая позволяет получить содержимое WEB или FTP страницы. Синтаксис запроса следующий: CURL(url,post-data) url - URL, к которому мы будем выполнять обращение; post-data - по умолчанию будет выполнен GET – запрос. Если в данном параметре будут указаны различные значения, то будет выполнен POST запрос с указанными в переменной данными; Например: exten => _X.,1,Set(C_RESULT=${CURL(//merionet.ru/rest?num=84991234567)}) Здесь мы выполним GET запрос по указанному URL, а результат сохраним в переменной C_RESULT. Использование HTTPS в запросах Иногда, HTTPS запросы могут не срабатывать, так как удаленная сторона будет проверять наш SSL – сертификат. Если поставить параметр ssl_verifypeer=0, то такой проверки не будет: same => n,Set(CURLOPT(ssl_verifypeer)=0) Как воспользоваться этим в диалплане? Легко. С помощью функции GotoIf мы можем определить действие, которое отработает на базе результата cURL: exten => _X.,1,Set(C_RESULT=${CURL(//merionet.ru/rest?num=84991234567)}) same => n,GotoIf($["${C_RESULT}" = "1"]?res1:res2) same => n(res1),Verbose(CURL Result = 1) same => n,Hangup same => n(res2),Verbose(CURL Result != 1) same => n,Hangup Указанный код отправит GET - запрос на rest, в котором в параметре num передаст номер звонящего (можно указать соответствующую переменную диалплана Asterisk). В случае, если результатом выполнения запроса будет 1, то мы перейдем к выполнению шага res1, а противоположном случае, res2. res_json для обработки JSON ответов На самом деле, для API, является обычной практикой возврат ответа в виде JSON. Поэтому, нам следует преобразовать эти данные перед обработкой их. Для этого мы воспользуемся модулем res_json из JSON библиотеки, который создан для расширения базовых возможностей диалплана с точки зрения обработки JSON. Почитайте материал об установке данного модуля по этой ссылке. exten => _X.,1,Set(C_RESULT=${CURL(//merionet.ru/rest.json)}) same => n,Set(result=${JSONELEMENT(C_RESULT, result/somefield)}) same => n,GotoIf($["${result}" = "1"]?res1:res2) same => n(res1),Verbose(CURL Result = 1) same => n,Hangup same => n(res2),Verbose(CURL Result != 1) same => n,Hangup Для теста, создайте у себя на web – сервере файл rest.json со следующим содержанием: { "result": { "somefield": 1 } }
img
Одной из наиболее часто встречающихся проблем при звонке на внутренний номер (Extension), зарегистрированный IP-АТС Asterisk, является перевод звонка сразу на голосовую почту. Простой пример – клиент звонит в Вашу компанию, набирает внутренний номер сотрудника (будем считать, что он его знает), с которым хочет связаться, но вместо того, чтобы услышать ответ на другом конце, слышит предложение оставить голосовое сообщение. Если клиенты систематически не могут связаться с нужным сотрудником и попадают прямиком на Voicemail, то это повод для администратора IP-АТС проверить настройки. Обычно, перевод звонка на голосовую почту, означает что внутренний номер, с которым зарегистрирован телефон, находится в статусе DND (Do Not Disturb) или вовсе не зарегистрирован. Включен ли режим DND? Первым делом, необходимо проверить, не включен ли на телефоне пользователя, до которого не могут дозвониться, режим DND. Для этого можно использовать специальный сервисный код (feature code) , который по умолчанию имеет значение *76. Это действие поможет узнать включен ли DND или нет. Зарегистрирован ли внутренний номер на IP - PBX? Для того, чтобы проверить зарегистрирован ли телефон, необходимо перейти по следующему пути Reports → Asterisk Info, далее переходи на вкладку Peers Теперь ищем внутренний номер телефона, до которого не могут дозвониться и проверяем статус его регистрации, он должен быть в статусе OK. Если же отображается какой-либо другой статус, то необходимо проверить правильность параметров внутреннего номера как на самой IP-АТС, так и на оконечном устройстве. Отметим, что маршрутизацией звонка, в случае, если внутренний номер сотрудника не отвечает, занят или вовсе недоступен по техническим причинам Вы можете в настройках самого экстеншена. Для этого, необходимо перейти во вкладку Applications → Extensions, выбрать нужный внутренний номер для редактирования и во вкладке Advanced, в самом низу настроить опции Optional Destinations.
img
Сегодня хотим предложить крутой функционал, который тебе захочется установить на своей IP – АТС Asterisk прямо сейчас! Речь пойдет про отправку записи разговора на адрес электронной почты со всеми причитающимися метаданными звонка. Работает это примерно вот так: ваш сотрудник поговорил по телефону, положил трубку, после чего, ответственному по электронной почте приходит письмо с записью разговора, датой и временем звонка, а также номерами А и Б. Настроить эту «фичу» очень легко. Приступаем к настройке. Bash скрипт для Asterisk Сам по себе скрипт написан на bash. Скрипт будет инициироваться сразу после окончания звонка и в него будут переданы нужные для работы переменные. Но об этом чуть позже: #!/bin/bash dt=$(date '+%m/%d/%Y %r'); echo -e "Привет! Появилась новая запись разговоров на нашем сервере Asterisk Звонок был совершен $dt Нам позвонил этот номер - $5 Вызов принял - $7 Запись разговора во вложении " | mail -a /var/spool/asterisk/monitor/$1/$2/$3/$6 -s "Новая запись разговоров" info@merionet.ru Пробежимся по переменным, которые будут относится к звонку и будут передаваться (все кроме $dt) с Asterisk: $1 - год звонка; $2 - месяц звонка; $3 - день звонка; $4 - дата и время в формате строки; $5 - источник звонка (звонящий); $6 - имя файла аудио – записи разговора; $7 - куда был совершен вызов; $dt - генерируем дату звонка; Переходим в консоль сервера Asterisk. Первым делом создаем файл с расширением .sh в него мы поместим наш скрипт: touch /var/lib/asterisk/bin/rectoemail.sh Даем файлу нужные права и разрешения: chown asterisk:asterisk rectoemail.sh chmod 774 rectoemail.sh Теперь открываем сам файл скрипта для редактирования: vim /var/lib/asterisk/bin/rectoemail.sh И добавляем скрипт в файл. Для того, чтобы сделать это, скопируйте скрипт из статьи. В режиме редактирования через vim нажмите «o» на клавиатуре, затем нажмите правую кнопку мыши – скрипт будет добавлен в файл. После этого, нажмите Esc на клавиатуре и комбинацию :x! + Enter для сохранения изменений. Готово. Доработка в FreePBX Теперь нужно поставить наш скрипт на автоматический запуск. Переходим в раздел Settings → Advanced Settings. Убеждаемся, что параметры Display Readonly Settings и Override Readonly Settings установлены в значение Yes. Теперь находим параметр Post Call Recording Script и добавляем в его поле следующую строчку: bash /var/lib/asterisk/bin/rectoemail.sh ^{YEAR} ^{MONTH} ^{DAY} ^{TIMESTR} ^{FROMEXTEN} ^{CALLFILENAME}.^{MIXMON_FORMAT} ^{ARG3} Готово. Сохраняем настройки и переходим к тестам:
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59