Владислав Авдеев
18.07.2019
379

Уведомления клиенту, с помощью сервисного кода

В данной статье рассмотрим функционал отправки клиенту уведомления в определенное время, настраиваемое с помощью сервисного кода. 1.       Во время разговора с клиентом, набирая какую либо комбинацию клавиш 2.       После разговора с клиентом, в таком случае отправка будет осуществляться на последний принятый/набранный телефон 3.       В любое время, с указанием времени, номера и сообщения клиенту. В данной […]

В данной статье рассмотрим функционал отправки клиенту уведомления в определенное время, настраиваемое с помощью сервисного кода.

Можно использовать функционал записи, для создания необходимого уведомления. Также можно использовать готовые записи.


1.       Во время разговора с клиентом, набирая какую либо комбинацию клавиш

2.       После разговора с клиентом, в таком случае отправка будет осуществляться на последний принятый/набранный телефон

3.       В любое время, с указанием времени, номера и сообщения клиенту.

В данной статье рассмотрим первый способ, второй и третий в следующей части, поскольку они гораздо проще:

Для этого нам необходимо во время разговора с клиентом, набрать заранее заданную комбинацию клавиш (например *5), а затем, надиктовать сообщение и набрать номер. После чего создать call файл на запланированную дату.

Данный функционал опирается на свойство Asterisk отрабатывать call файлы, тогда, когда время создания файла равняется или меньше времени на сервере телефонии. Все тесты проводились на системе: Asterisk 13, FreePBX 13.

Реализуем через сервисные коды.

Правим файл /etc/asterisk/features_applicationmap_custom.conf

notice => *5,self,Macro,notice-start

Для того, чтобы вызов сервисного кода проходил, вносим в /etc/asterisk/globals_custom.conf

DYNAMIC_FEATURES = notice

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

[macro-notice-start]
exten => s,1,Read(time,beep,20,1)
same => n,NoOp(==== ${notice} ====)

В качестве записи в Read нужно использовать готовую запись, уведомляющую о необходимости внести время звонка, в формате Год*Месяц*Число**Часы***Минуты, разделение * позволить заменить их на нужные символы.

Ввод времени организован, реализуем надиктовку сообщения оператором (если необходимо), записывать будем с помощью MixMonitor. Для начала необходимо создать папку, куда будем складывать записи.

Mkdir /usr/src/record_notice/

Chown asterisk. /usr/src/record_notice/

Затем в диалплане вносим изменения:

exten => s,1,Playback(beep);Предложение записать уведомление
same => n,Set(rec_name=rec_${UNIQUEID})
same => n,MixMonitor(/usr/src/record_notice/${rec_name}.wav,i(mixID));записываем в файл и сохраняем переменную MixMonitorsID
same => n,Wait(5);Время на запись уведомления
same => n,StopMixMonitor(${mixID});Останавливаем запись
same => n,Read(time,beep,20,1);Ввод даты и времени
Проверка записи

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

<?php
$client_num=$argv[1];
$record_name=$argv[2];
$time=$argv[3];
                        $fp = fopen("/usr/src/record_notice/$record_name.call", 'w');
                        fwrite($fp, "Channel: Local/$client_num@from-internal"."\n");
                        fwrite($fp, "MaxRetries: 2"."\n");
                        fwrite($fp, "RetryTime: 20"."\n");
                        fwrite($fp, "WaitTime: 20"."\n");
                        fwrite($fp, "Application: Playback"."\n");
                        fwrite($fp, "Data: /usr/src/record_notice/$record_name"."\n");
                        fwrite($fp, "Timeout: 30000"."\n");
                        fclose($fp);
 
 
$time=str_replace('***',':',$time);
$time=str_replace('**',' ',$time);
$time=str_replace('*','-',$time);
echo $time;
$touchfile=`touch -d "$time" /usr/src/record_notice/$record_name.call`;              
$mvfile=`mv /usr/src/record_notice/$record_name.call /var/spool/asterisk/outgoing`;
?>

Схема работы следующая:

При разговоре с клиентом, оператор набирает сервисный код *5, слышит предложение начитать уведомление в течение какого то времени, затем слышит предложение набрать дату и время уведомления, разделяемое в виде Год*месяц*число**Часы***Минуты. После ввода времени файл генерируется, ему назначается введенное время создания и перемещается в директорию /var/spool/asterisk/outgoing/ и при достижении нужного времени срабатывает, вызывая клиента и проигрывая ему начитанную запись.

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

 
avatar
  Подписаться  
Уведомление о

Остались вопросы?

Я - Першин Артём, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

Why Choose HUGE?

Unlimited pre-designed elements

Each and every design element is designed for retina ready display on all kind of devices

User friendly interface and design

Each and every design element is designed for retina ready display on all kind of devices

100% editable layered PSD files

Each and every design element is designed for retina ready display on all kind of devices

Created using shape layers

Each and every design element is designed for retina ready display on all kind of devices