Дмитрий Барышников
29.05.2020
4023

Реализация всплывающих окон по звонку в Slack

В данной статье рассмотрим такой функционал как, реализация всплывающих окон и отображение их в Windows 10, при входящих сообщениях, а также реализуем отправку файлов записей разговоров из очередей. Ознакомится с функционалом отправки пропущенных звонков вы можете, ознакомившись с постом Отправка уведомлений о пропущенных вызовах в slack Настройка уведомлений. Для начала разберемся с всплывающими окнами. Загрузим […]

В данной статье рассмотрим такой функционал как, реализация всплывающих окон и отображение их в Windows 10, при входящих сообщениях, а также реализуем отправку файлов записей разговоров из очередей.

Ознакомится с функционалом отправки пропущенных звонков вы можете, ознакомившись с постом Отправка уведомлений о пропущенных вызовах в slack

Информер! Тестирование проводилось на системах FreePBX 13 + Asterisk 13 + CentOS 7.

Настройка уведомлений.

Для начала разберемся с всплывающими окнами. Загрузим десктопное приложение на slack в Windows, для этого воспользуемся приложением Microsoft Store.

Загрузка Slack
Установка Slack

После этого запускаем приложение и проходим аутентификацию и переходим в настройки профиля. Preferences à Notifications. В данном разделе выбираем, какие настройки оповещений использовать, мы будем использовать настройку «All new messages» (для всех новых сообщений). Пролистываем вниз, в графе Flash window when a notification is received выставляем значение «Always». В графе Deliver notifications via выбираем «Windows Action Center» и в графе When I’m not active on desktop выставляем «значение immediately, even if I’m active».

Настройки
Настройки уведомлений — 1
Настройки уведомлений — 2
Информер! Обращу внимание, что если вы установите slack не из магазина Microsoft, то приложение не сможет отправлять уведомления вам в Windows.

После всех настроек, сделаем тестовую отправку, например сообщения о пропущенном вызове. Можно выполнить curl запрос прям из консоли Linux, если нет желания выполнять проверочный звонок.  С первого раза сообщение не придёт, т.к. после первой отправки slack внесётся в реестр доверенных приложений для отправки уведомлений. Для того, чтобы убедится, что slack имеет право отправлять уведомления, перейдём в настройки Windows à Система à Уведомления и Действия  и там мы должны увидеть, что для slack разрешено отправлять уведомления.

Уведомления в Windows
Права на отправку уведомлений

Настройка отправки записей разговоров.

Для начала нам необходимо создать своего бота, через которого будет выполнятся отправка файлов. Для этого перейдем по ссылке https://api.slack.com/apps и нажмём кнопку Create new APP. Появится следующее сообщение.

После этого перейдем в раздел OAuth & Permissions. В данном разделе нам потребуется записать Bot User OAuth Access Token, который нам пригодится для отправки запроса.

Токен для бота
Информер! Не используйте OAuth Access Token, иначе сообщения будут приходить не от имени бота, а от имени вашего аккаунта.

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

Справка прав для бота

После чего slack вас попросит утановить бота и добавить его в чат, делаем по аналогии как делали с incoming WebHook.

Теперь перейдем к настройке со стороны asterisk. Немного модернизируем наш контекст ext-queues и отправка уведомлений о пропущенных, а также отправку файлов, обернем в AGI скрипты. В директории /var/lib/asterisk/agi-bin/ создаем два файла fileslack.php (для отправки файлов) и missedslack.php (для отправки уведомлений о пропущенных). Текст скриптов далее.

fileslack.php
#!/usr/bin/php -q
<?php
require('phpagi.php');
$agi = new AGI(); //подключаем файл phpagi.php – 1 и 2 строки обязательны в любом скрипте
$record = $agi->request['agi_arg_1']; // путь до файла с именем
`/usr/bin/curl   https://slack.com/api/files.upload -F token=xoxb-ваш-токен -F channels=ID_Канала -F file=\@$record -F title=Звонок_из_очереди`;
?>
 
missedslack.php
#!/usr/bin/php -q
<?php
require('phpagi.php');
$agi = new AGI(); //подключаем файл phpagi.php – 1 и 2 строки обязательны в любом скрипте
$cid = $agi->request['agi_callerid']; // берем из AGI номер звонящего
$queue = $agi->request['agi_arg_2']; // номер очереди
`/usr/bin/curl -X POST --data-urlencode 'payload={"channel":"#asterisk","username":"Asterisk Allert","text":" <https://Ваш_адрес/callback.php?phone=$cid&agent=$queue|Перезвонить> \n  Пропущенный в очереди $queue пропущен от $cid","icon_emoji":":warning:"}' https://hooks.slack.com/services/ваш_API`;
?>
Инфомер! Не забудьте дать права на исполнение скрипта, а также выдать владельца asterisk. Chmod +x и chown asterisk.asterisk

Теперь внесем правки в контекст ext-queues

[ext-queues]
exten => h,1,NoOp( ================== lost call in queues ================== )
same => n,ExecIf($["${FORWARD_CONTEXT}"!="from-internal"]?AGI(missedslack.php, ${CALLERID(num)}, ${NODEST})
same => n,ExecIf($["${FORWARD_CONTEXT}"="from-internal"]?AGI(fileslack.php, ${MIXMONITOR_FILENAME})
same => n,Macro(hangupcall,)

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

Проверка выполнения скрипта
Отправка файла в Slack

На этом настройка всплывающих окон и отправка файлов в slack, окончены.

Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments

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

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

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

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

ближайшие Вебинары

ONLINE

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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.