img

Asterisk: отправка SMS после звонка

Наверняка кто-то из вас хоть раз в жизни получал SMS после звонка в определенную компанию.

icon strelka icons icons

узнай больше на курсе

Базовый курс по Asterisk
Двухнедельный онлайн курс по Asterisk от Мерион Нетворкс. 5 блоков обучения с домашним заданием. Именной сертификат с уникальным номером при успешной сдаче экзамена
Укажите вашу электронную почту
Неверный адрес электронной почты
Нажимая на кнопку, вы соглашаетесь на обработку персональных данных
Готово!
Отправили доступы на вашу
электронную почту
DevOps-инженер с нуля
Стань DevOps-инженером с нуля и научись использовать инструменты и методы DevOps
Укажите вашу электронную почту
Неверный адрес электронной почты
Нажимая на кнопку, вы соглашаетесь на обработку персональных данных
Готово!
Отправили доступы на вашу
электронную почту
Полный курс по сетевым технологиям
Полный курс по сетевым технологиям от Мерион Нетворкс - учим с нуля сетевых инженеров и DevOPS специалистов
Укажите вашу электронную почту
Неверный адрес электронной почты
Нажимая на кнопку, вы соглашаетесь на обработку персональных данных
Готово!
Отправили доступы на вашу
электронную почту

Обычно, это просьба оценить работу операторов. Так, например, это сделано у GSM операторов. Также это может быть SMS с благодарностью за обращение от компании или же об актуальных акциях и предложениях.

Сегодня я хотел бы рассказать о том, как Вы можете реализовать подобную функцию с использованием FreePBX

Статья написана по мотивам существующей на данном ресурсе публикации "Оценка оператора после звонка"

У данного метода есть один недостаток - для его работы нужен chan_dongle и тариф с безлимитными SMS. Для тех, у кого нет пресловутого chan_dоngle, есть другой метод, который я постараюсь объяснить.

Для особо нетерпеливых прошу Вас заглянуть в контакты, возможно, я уже там появился :)
Asterisk: отправка SMS после звонка

В данном методе мы не будем ломать диалплан FreePBX и использовать тяжелую артиллерию в виде MySQL. Итак, приступим.

Для начала открываем конфигурационные файлы, а именно:

/etc/asterisk/extensions_custom.conf

Вносим в него такой кусочек диалплана. В коде я дал комментарии зачем нужны некоторые части:

[send-sms]
exten => _.,1,NoOp(Start sms)
exten => _.,n,DIAL(SIP/${EXTEN},,trg) ;опция g позволяет "проваливаться вниз". ВНИМАНИЕ агент должен использовать вашу технологию (sip или pjsip)
exten => _X.,n,GotoIf($[${DIALSTATUS}=BUSY]?busy:answered) //проверяем, был ли отвечен вызов, вот здесь мы или пропускаем клиента дальше если с ним уже говорили или нет.
exten => _X.,n(busy),Hangup()
exten => _X.,n(answered),Goto(sms,${EXTEN},1)

[sms]
exten => _X.,1,NoOp(Statrt SendSms)
exten => _X.,n,Answer()
        same => n,Set(COUNT=1); установка счетчика. По идее, он тут не нужен, но сделан на всякий аварийный случай. Вдруг заклинит и клиента заспамит смс? :)
        same => n,Set(RECIVER=Имя донгла в системе); если используете донгл 
        same => n,Set(RECIPIENT=${CALLERID(num)})
        same => n,Set(TEXT="Спасибо что обратились в нашу компанию Рога и копыта"); текст смс
        same => n,GotoIf($["${RECIPIENT:0:2}" != "79"]?end); это проверка на принадлежность к мобильным номерам. Уточните формат входящих CALLERID(num) на вашей АТС -  с 7 или 8? 
        same => n,System(/usr/sbin/asterisk -rx 'dongle sms ${RECIVER} 7${RECIPIENT:1} ${TEXT}'); тут отправка с донгла.
        same => n,Set(COUNT=$[${COUNT} + 1]); увеличение счетчика (который не нужен, а вдруг)
        same => n,GotoIf($["${COUNT}" > "1"]?end); проверка и отправка на завершение
exten => _X.,n(end),Goto(macro-hangupcall,s,1); Конец

Обратите внимание на пометки в диалплане. В частности, Агент должен использовать вашу технологию подключения. Входящие форматы на ваши транки, 7 или 8. Если он еще не унифицирован, то рекомендую это сделать и привести в норму стандарта E164. Если входящие у вас содержат + то, вместо ${RECIPIENT:0:2} сделайте ${RECIPIENT:0:3}

На этом, настройка конфигурационного файла extensions_custom.conf закончена. Теперь открываем файл queues_post_custom.conf и вставляем туда такую строку:

member=Local/4015781@send-sms/n,0,4015781,hint:4015781@ext-local

Где 4015781 номер существующего Агента в очереди. После этого, закрываем файл, перезагружаем диалплан командой dialplan reload и тестируем.

Применять можно, например, для отправки благодарности клиенту с напоминанием времени работы или адреса компании.

Чтобы не огорчить тех, кто не использует донглы или использует GoIP или другие Gsm шлюзы, на мой взгляд, есть более "красивый" метод:

Идем в один из множества веб сервисов для SMS рассылок (названия писать не буду), регистрируемся у них и берем их готовые библиотеки для доступа к API. Я покажу на примере PHP API одной известной компании:

#!/usr/bin/php -q
<?php
#парсим данные из AGI
require(′phpagi.php′); 
$agi = new AGI(); 
$phone = $agi->request[′agi_arg_1′];
text = $agi->request[′agi_arg_2′];
$sender = ′INFORM′;
// !!! Замените API-ключ на свой.
$apikey = ′XXXXXXXXXXXXYYYYYYYYYYYYZZZZZZZZXXXXXXXXXXXXYYYYYYYYYYYYZZZZZZZZ′;
$url = ′https://smspilot.ru/api.php′
	′?send=′.urlencode( $text )
	.′&to=′.urlencode( $phone )
	.′&from=′.$sender
	.′&apikey=′.$apikey
	.′&format=json′;

$json = file_get_contents( $url );
echo $json.′
′; $j = json_decode( $json ); if ( !isset($j->error)) { echo ′SMS успешно отправлена server_id=′.$j->send[0]->server_id; } else { trigger_error( $j->description_ru, E_USER_WARNING ); }

Используем AGI. И в представленном диалплане меняем одну строку, а именно:

same => n,System(/usr/sbin/asterisk -rx 'dongle sms ${RECIVER}  ${TEXT}'); тут отправка с донгла.

на:

same => n,AGI(sendsms.php, 7${RECIPIENT:1}, "${TEXT}")

И на этом - все. Чем данный способ лучше? Могу точно сказать, что в подобных сервисах для компаний есть возможность в качестве отправителя зарегистрировать название организации – это явно плюс в копилку лояльности клиента :)

Это значит, что не нужен донг и SMS клиенту приходит не с безликих цифр, а от имени вашей компании в поле отправитель. Это, безусловно, повышает доверие и лояльность получателя SMS.

Надеюсь, что данный метод будет полезен и найдёт применение в ваших бизнес-процессах. Удачи!

Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
icon strelka icons icons

узнай больше на курсе

Базовый курс по Asterisk
Двухнедельный онлайн курс по Asterisk от Мерион Нетворкс. 5 блоков обучения с домашним заданием. Именной сертификат с уникальным номером при успешной сдаче экзамена
Подробнее о курсе
DevOps-инженер с нуля
Стань DevOps-инженером с нуля и научись использовать инструменты и методы DevOps
Подробнее о курсе
Полный курс по сетевым технологиям
Полный курс по сетевым технологиям от Мерион Нетворкс - учим с нуля сетевых инженеров и DevOPS специалистов
Подробнее о курсе
Онлайн-курс по сетевой безопасности
Изучи основы сетевой безопасности и прокачай скилл системного администратора и сетевого инженера
Подробнее о курсе
Онлайн-курс по кибербезопасности
Полный курс по кибербезопасности от Мерион Нетворкс - учим с нуля специалистов по информационной безопасности. Пора стать безопасником!
Подробнее о курсе
Этичный хакинг
Научись работать с Kali Linux, изучи самые распространенные уязвимости, разверни виртуальную лабораторию для пентестинга
Подробнее о курсе
Еще по теме:
img
Мы создали калькулятор инсталляции IP - АТС Asterisk. При планировании сервера и необходимого оборудования заполните соответствующие поля для расчета производительности, шлюзов и плат
img
Скачать руководство администратора Cisco UCM/CME на русском языке
img
Скачать руководство администратора FreePBX на русском языке
img
Рассказываем как рассчитать пропускную способность для IP-вызовов Cisco
img
Рассказываем как настроить отправку СМС сообщений из контакт-центра Октелл через Ростелеком СМС Реклама
Весенние скидки
30%
50%
60%
До конца акции: 30 дней 24 : 59 : 59