Создание списка заявок, по вызовам абонентов
В данной статье рассмотрим возможный механизм, простого создания заявок от абонентов, используя голосовое меню, а также оповещение о новых заявках в Telegram. Для дополнительной информации также добавим механизмы проверки, обращался ли данный клиент ранее и выполнена ли прошлая заявка. Входящие вызовы направляем на голосовое меню, в котором указываем выбор пунктов заявок. При отсутствии нужного выбора […]
В данной статье рассмотрим возможный механизм, простого создания заявок от абонентов, используя голосовое меню, а также оповещение о новых заявках в Telegram.
Для дополнительной информации также добавим механизмы проверки, обращался ли данный клиент ранее и выполнена ли прошлая заявка.
Входящие вызовы направляем на голосовое меню, в котором указываем выбор пунктов заявок. При отсутствии нужного выбора распределяем на оператора. В разговоре оператор узнает необходимую информацию и инициирует создание заявки, к которой можно будет прикрепить определенную голосовую запись, для пояснения.
В диалплане прописываем создание тикета, по закрепленным номерам, направление на них указываем в Custom Destination.
В самом контексте необходимо добавить пару запросов в базу:
- Проверка на раннее обращение клиента, для уведомления (или использования в других системах)
- Создание нового обращения и запись его в базу
Когда обращение в базу внесено, то отправлять заявку в Telegram или на почту.
Создадим таблицу в базе asteriskcdrdb, так как в нашей системе подключение по ODBC к ней уже настроено.
create table tickets ( num varchar(80) NOT NULL, date datetime NOT NULL DEFAULT '0000-00-00 00:00:00', reason varchar(80) NOT NULL );
Создаем запрос в базу, на существование записи по клиенту.
[get_ticket] dsn=asteriskcdrdb readsql=SELECT num, reason, date from tickets where num like '%${ARG1}%' order by date desc limit 1;
И запрос на добавление новой записи:
[put_ticket] dsn=asteriskcdrdb writesql=INSERT INTO tickets VALUES ('${ARG1}',NOW(),${ARG2});
После добавления перечитаем конфиги:
core reload
Прописываем обращение к функциям в диалплане и отправку в группу Telegram. Как создать и настроить подключение к боту Telegram можно почитать в этой статье:
[tickets] exten => 1,1,ExecIf($[${LEN(${CALLERID(num)})} = 11]?Set(CALLERID(num)=${CALLERID(num):1})) same => n,Set(mark=${ODBC_get_ticket(${CALLERID(num)})}) same => n,GotoIf($["${mark}" = ""]?nope) same => n,Set(reason=${CUT(mark,\,,2)}) same => n,Set(date=${CUT(mark,\,,3)}) same => n,System(/usr/bin/curl -X GET https://api.telegram.org/bot<botTocken>/sendMessage -F chat_id=-<chat_id> -F text="Создана заявка по теме reg. trouble. Номер клиента: ${CALLERID(num)}. Ранее обращался: ${date}, по причине: ${reason}." & disown -h) same => n,Set(ODBC_put_ticket(${CALLERID(num)},reg.trouble)=) same => n,Hangup same => n(nope),System(/usr/bin/curl -X GET https://api.telegram.org/bot<botTocken>/sendMessage -F chat_id=-<chat_id> -F text="Создана заявка по теме reg. trouble. Номер клиента: ${CALLERID(num)}. Ранее не обращался" & disown -h) same => n,Set(ODBC_put_ticket(${CALLERID(num)},reg.trouble)=) same => n,Hangup
Аналогично прописываем другие обращения, меняться будут лишь причины
… same => n,System(/usr/bin/curl -X GET https://api.telegram.org/bot<botTocken>/sendMessage -F chat_id=-<chat_id> -F text="Создана заявка по теме call.trouble. Номер клиента: ${CALLERID(num)}. Ранее обращался: ${date}, по причине: ${reason}." & disown -h) same => n,Set(ODBC_put_ticket(${CALLERID(num)},call.trouble)=) same => n,Hangup same => n(nope),System(/usr/bin/curl -X GET https://api.telegram.org/bot<botTocken>/sendMessage -F chat_id=-<chat_id> -F text="Создана заявка по теме call.trouble. Номер клиента: ${CALLERID(num)}. Ранее не обращался" & disown -h) same => n,Set(ODBC_put_ticket(${CALLERID(num)},call.trouble)=) same => n,Hangup
Соответственно если нужно больше, добавляем.
В данном случае при вызове, создается заявка в группу Telegram и вносится запись в базу.
Рассмотрим случай, когда клиент не выбрал никакого пункта или решил поговорить с оператором, для создания своей заявки.
После разговора с оператором, необходимо выполнить ту же отправку в группу, но при этом прикрепить запись разговора, чтобы выполняющий заявку человек мог узнать подробности разговора. Отправку можем инициировать по завершению разговора с оператором. Использовать будем hangup_handler.
Для этого, отправку на группу операторов будем осуществлять через Custom Destination:
Необходимо это, чтобы прописать метку, на которую будем опираться после разговора оператора, таким образом нам необходимо внести эту метку, а также изменения в макрос, срабатывающий при подъеме трубки.
Метка в контексте tickets:
exten => _XXX,1,Set(__hndlr=yes) same => n,ExecIf($[${LEN(${CALLERID(num)})} = 11]?Set(__num=${CALLERID(num):1}));Наследуемая переменная для номера, чтобы использовать его далее same => n,Goto(ext-queues,${EXTEN},1) same => n,Hangup
Дополнение в макросе подъема трубки macro-auto-blkvm:
… same => n,ExecIf($["${hndlr}" = "yes"]?Set(CHANNEL(hangup_handler_push)=tickets_hndlr,s,1(${CALLERID(num)}))) …
После разговора сработает handler и отправит обработку далее, в ней укажем запись в базу и отправку в Telegram:
[tickets_hndlr] exten => s,1,DumpChan() same => s,ExecIf($[${LEN(${num})} = 11]?Set(num=${num:1})) same => n,Set(mark=${ODBC_get_ticket(${num})}) same => n,GotoIf($["${mark}" = ""]?nope) same => n,Set(reason=${CUT(mark,\,,2)}) same => n,Set(date=${CUT(mark,\,,3)}) same => n,System(/usr/bin/curl -X GET https://api.telegram.org/ bot<botTOCKEN>/sendMessage -F chat_id=-639074316 -F text="Создана заявка по теме custom.reason. Номер клиента: ${num}. Ранее обращался: ${date}, по причине: ${reason}. Запись будет отправлена ниже." & disown -h) same => n,System(/usr/bin/curl -X POST -H "Content-Type: multipart/form-data" -F document=@"/var/spool/asterisk/monitor/${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MON_FMT}" https://api.telegram.org/ bot<botTOCKEN>/sendDocument?chat_id=-639074316 & disown -h) same => n,Set(ODBC_put_ticket(${num},custom.reason)=) same => n,Return() same => n(nope),System(/usr/bin/curl -X GET https://api.telegram.org/ bot<botTOCKEN>/sendMessage -F chat_id=-639074316 -F text="Создана заявка по теме custom.reason. Номер клиента: ${num}. Ранее не обращался. Запись будет отправлена ниже." & disown -h) same => n,System(/usr/bin/curl -X POST -H "Content-Type: multipart/form-data" -F document=@"/var/spool/asterisk/monitor/${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MON_FMT}" https://api.telegram.org/bot<botTOCKEN>/sendVoice?chat_id=-639074316 & disown -h) same => n,Set(ODBC_put_ticket(${num},custom.reason)=) same => n,Return()
Заявки создаются, в дальнейшем можем создать способ принятия заявок и отметок к ходу работ по ним.
Остались вопросы?
Я - Виталий Шелест, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- DECT
- Linux
- Вспомогательный софт при работе с Asterisk
- Интеграция с CRM и другими системами
- Интеграция с другими АТС
- Использование Elastix
- Использование FreePBX
- Книга
- Мониторинг и траблшутинг
- Настройка Asterisk
- Настройка IP-телефонов
- Настройка VoIP-оборудования
- Новости и Статьи
- Подключение операторов связи
- Разработка под Asterisk
- Установка Asterisk
VoIP оборудование
ближайшие курсы
Новые статьи
10 доводов в пользу Asterisk
Распространяется бесплатно.
Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.
Безопасен в использовании.
Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.
Надежен в эксплуатации.
Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.
Гибкий в настройке.
Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.
Имеет огромный функционал.
Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.
Интегрируется с любыми системами.
То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.
Позволяет телефонизировать офис за считанные часы.
В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.
Отличная масштабируемость.
Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.
Повышает управляемость бизнеса.
Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.
Снижает расходы на связь.
Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.