Общая логика настройки уведомлений о новых обращениях и ответов клиентов описана тут. Другие инструкции:
звуковые и браузерные уведомления (по 2 минуты на выполнение)
уведомления на почту (2 минуты на выполнение)
уведомления в Telegram (10 минут на выполнение)
уведомления в Mattermost (5 минут на выполнение)
уведомления в Discord (5 минут на выполнение)
Прежде чем приступить к настройкам, рекомендуем ознакомиться со статьей об общей логике правил автоматизации в Омнидеске или посмотреть краткое видеоруководство по правилам
Для получения уведомлений в Slack необходимо создать Slack-приложение и настроить правила в Омнидеске.
В примерах с кодом запроса мы используем метод блоков, рекомендованный Slack. В разделе «Дополнительные возможности» также есть пример запроса по методу Attachment.
Предварительная настройка
1. В аккаунте Slack перейдите к форме создания Slack-приложения. В модальном окне выберите Create an app → From scratch, укажите название приложения и выберите рабочую область, в которую оно будет добавлено.
2. Перейдите в раздел Incoming Webhooks и активируйте входящие вебхуки. Внизу страницы кликните на Add New Webhook to Workspace.
3. На открывшейся странице выберите канал, в который будут поступать уведомления из Омнидеска, или сотрудника, чтобы уведомления поступали в личные сообщения от имени создателя приложения. Нажмите на кнопку «Разрешить».
Если вы хотите отправлять уведомления в личные сообщения, то потребуется создать отдельный вебхук-URL для каждого сотрудника.
4. Скопируйте полученный вебхук URL. Он нужен для отправления уведомлений в Slack из Омнидеска.
Создание правил в Омнидеске
5. Создайте в Омнидеске правила, которые будут отправлять уведомления в Slack. Перейдите в аккаунт администратора — раздел «Каналы» — подраздел «Правила».
а. Для получения уведомлений в Slack о поступлении новых обращений создайте правило для входящих обращений:
В блоке «производить действие» выберите вариант «Выполнить вебхук», затем укажите метод POST. В поле «URL для отправки запроса» вставьте вебхук URL, который вы скопировали в Slack.
Ниже выберите вариант «Кастомный запрос» в формате JSON и добавьте код запроса:
{ "text": "Создано новое обращение № [case_number]: [case_subject]", "blocks": [ { "type": "section", "text": { "type": "mrkdwn", "text": "Создано *новое обращение* № <[case_url] | *[case_number]*>" } }, { "type": "section", "fields": [ { "type": "mrkdwn", "text": "*Отправитель*\n[user_full_name] \n [user_email]" }, { "type": "mrkdwn", "text": "*Группа*\n[case_group]" } ] }, { "type": "section", "text": { "type": "mrkdwn", "text": "*[case_subject]:*\n\n[case_description|text]" } }, { "type": "divider" } ] }
Пример отображения:
б. Для получения уведомлений в Slack о поступлении новых ответов в обращениях и чатах создайте правило для изменённых обращений:
В блоке «производить действие» выберите вариант «Выполнить вебхук», затем укажите метод POST. В поле «URL для отправки запроса» вставьте вебхук URL, который вы скопировали в Slack.
Ниже выберите вариант «Кастомный запрос» в формате JSON и добавьте код запроса:
{ "text": "Новый ответ в обращении № [case_number]: [case_subject]", "blocks": [ { "type": "section", "text": { "type": "mrkdwn", "text": "*Новый ответ* в обращении № <[case_url] | *[case_number]*>" } }, { "type": "section", "fields": [ { "type": "mrkdwn", "text": "*Отправитель*\n[user_full_name] \n [user_email]" }, { "type": "mrkdwn", "text": "*Группа*\n[case_group]" } ] }, { "type": "section", "text": { "type": "mrkdwn", "text": "*[case_subject]:*\n\n[last_message|text]" } }, { "type": "divider" } ] }
Пример отображения:
На этом настройка закончена, теперь вы будете получать уведомления в Slack и не пропустите новые сообщения от пользователей.
PRO подсказка: В новых чатах тема обращения формируется на основе первого сообщения от пользователя:
иногда такое сообщение может быть довольно длинным и ломать верстку вашего уведомления;
текст самого сообщения в таком случае будет дублировать тему.
Чтобы избежать этого, лучше создавать отдельные правила для входящих обращений по каналу email и по синхронным каналам, а в тексте кода запроса для уведомления о новых чатах не использовать переменную [case_subject].
Дополнительные возможности
6. Используйте переменные
Добавьте в код вебхука нужные вам переменные с данными из Омнидеска (телефон пользователя, компанию, текст заметки, данные кастомных полей и т. п.), чтобы уведомления максимально отвечали вашим задачам.
Пример кода запроса:
{ "text": "Новый ответ в обращении № [case_number]: [case_subject]", "blocks": [ { "type": "section", "text": { "type": "mrkdwn", "text": "*Новый ответ* в обращении № <[case_url] | *[case_number]*>" } }, { "type": "section", "fields": [ { "type": "mrkdwn", "text": "*Отправитель*\n[user_full_name] \n [user_email]\n[user_phone]" }, { "type": "mrkdwn", "text": "*Группа*\n[case_group]" } ] }, { "type": "section", "fields": [ { "type": "mrkdwn", "text": "*Компания*\n[user_company]" }, { "type": "mrkdwn", "text": "*Приоритет*\n[case_priority]" } ] }, { "type": "section", "fields": [ { "type": "mrkdwn", "text": "*Статус клиента*\n[кастомное_поле]" }, { "type": "mrkdwn", "text": "*Ответственный*\n[assigned_full_name]" } ] }, { "type": "section", "text": { "type": "mrkdwn", "text": "*[case_subject]*\n\n[last_message|text]" } }, { "type": "divider" } ] }
Замените [кастомное_поле] на ваш вариант, выбрав дополнительное поле данных из списка переменных, кликнув на ссылку «переменные» справа от кастомного запроса в правиле.
Пример отображения:
Сделайте уведомления более информативными с API Slack
7. Добавьте в запрос нужные элементы
Можно добавлять emoji, изображения, гиперссылки, разделители и т. д. Подробная информация о синтаксисе запросов есть в официальной документации Slack.
К примеру, настройте отдельное правило для входящих обращений, чтобы отслеживать новые обращения от важных клиентов. Допустим, будем повышать приоритет таких обращений и отправлять уведомление с нужной информацией в Slack. Чтобы точно не пропустить уведомление, добавим логотип компании клиента, разделитель и иконку с восклицательным знаком.
Пример кода запроса:
{ "text": "Новое обращение № [case_number] от VIP Клиента", "blocks": [ { "type": "context", "elements": [ { "type": "mrkdwn", "text": ":warning: *Новое обращение № <[case_url] | [case_number]> от VIP Клиента*" } ] }, { "type": "section", "fields": [ { "type": "mrkdwn", "text": "*Отправитель*\n<https://[домен].omnidesk.ru/staff/users/record/[user_id]|[user_full_name]> \n[user_email]" }, { "type": "mrkdwn", "text": "*Группа*\n[case_group]" } ] }, { "type": "divider" }, { "type": "section", "text": { "type": "mrkdwn", "text": "*[case_subject]:*\n\n[case_description|text]" }, "accessory": { "type": "image", "image_url": "[ссылка на изображение]", "alt_text": "VIP Компания" } }, { "type": "divider" } ] }
Вместо [домен] укажите имя вашего аккаунта в Омнидеске. По клику на имя пользователя вы сможете перейти к его профилю в Омнидеске.
Укажите ссылку на нужное вам изображение вместо [ссылка на изображение] в параметре image_url.
Пример отображения:
8. Добавьте кнопки
С их помощью можно быстро перейти на страницу обращения, к профилю пользователя в Омнидеске, в вашу базу знаний, к списку всех обращений и т. д.
Пример кода запроса:
{ "text": "Новый ответ в обращении № [case_number]: [last_message|text]", "blocks": [ { "type": "section", "text": { "type": "mrkdwn", "text": "*Новый ответ* в обращении № *[case_number]*" } }, { "type": "section", "fields": [ { "type": "mrkdwn", "text": "*Отправитель*\n[user_full_name] \n [user_email]" }, { "type": "mrkdwn", "text": "*Группа*\n[case_group]" } ] }, { "type": "section", "text": { "type": "mrkdwn", "text": "*[case_subject]:*\n[last_message|text]" } }, { "type": "actions", "elements": [ { "type": "button", "text": { "type": "plain_text", "text": "Ответить" }, "style": "primary", "url": "[case_url]" }, { "type": "button", "text": { "type": "plain_text", "text": "Профиль пользователя" }, "url": "https://[домен].omnidesk.ru/staff/users/record/[user_id]" }, { "type": "button", "text": { "type": "plain_text", "text": "Ваш сайт" }, "style": "danger", "url": "https://yoursite.ru/" } ] }, { "type": "divider" } ] }
Вместо [домен] необходимо указать домен вашего аккаунта в Омнидеске. По клику на кнопку с именем пользователя вы сможете перейти к его профилю в Омнидеске.
Замените внутри кавычек текст “Ваш сайт” на нужный и укажите ссылку на него вместо https://yoursite.ru/.
Пример отображения:
PRO подсказка: Если переходить на внешние ссылки через кнопки, Slack отображает предупреждение:
Чтобы убрать это уведомление и разрешить переход по таким ссылкам, откройте страницу приложений, выберите приложение, которое вы создали для передачи уведомлений из Омнидеска, и перейдите в раздел Interactivity & Shortcuts.
Переведите ползунок в активное состояние. В поле request URL пропишите ссылку на канал, в который будут поступать уведомления, а после сохраните изменения. Ссылку на канал можно получить в браузерной версии Slack.
Если вы используете интерактивные инструменты для вашего рабочего процесса в Slack, то укажите ссылку, в адрес которой будет отправляться HTTP запрос.
9. Используйте метод Secondary Attachment
Slack предоставляет Secondary Attachment Method как вторичный метод передачи данных. Содержание такого уведомления может быть свернуто, скрыто и урезано, в отличие от метода блоков, который мы рассмотрели в основной части статьи.
Пример кода запроса:
{ "attachments":[ { "fallback":"Новый ответ в обращении № <[case_url]|[case_number]>", "pretext":"*Новый ответ* в обращении № *<[case_url]|[case_number]>*", "color":"#4CA9E4", "fields":[ { "title":"Отправитель", "value":"[user_full_name] [user_email]", "short":true }, { "title":"Группа", "value":"[case_group]", "short":true }, { "title":"[case_subject]", "value":"[last_message|text]", "short":false } ] } ] }
Пример отображения:
10. Используйте официальный конструктор блоков
Конструктор блоков упростит работу с кодом запроса и поможет подобрать нужные элементы.
11. Настройте аватарку бота
Добавить аватарку для вашего бота, от имени которого будут приходить уведомления, можно тут: api.slack.com/apps. Кликните на нужное приложение и перейдите в раздел Display Information.
Пример отображения:
12. Добавьте упоминание в мессенджере
а. Упоминания всех, участников канала, определенной группы или тех, кто в канале и онлайн работают через указание, соответственно, @everyone, @channel, @group @here в тексте. Также можно использовать такой формат упоминания: <!channel>
б. Конкретного сотрудника можно упоминать через указание после @ его ID внутри угловых скобок <>, то есть в виде <@[User_ID]>, где вместо [User_ID] надо подставить ID пользователя в мессенджере.
Получить ID нужного сотрудника в Slack можно, зайдя в его профиль:
13. Упоминайте в Slack ответственного сотрудника
Тегать сотрудника в Slack можно через <@[User_ID]>. Но чтобы реализовать такую логику, сначала надо, чтобы ответственный был назначен — то есть обращения должны распределяться между сотрудниками правилами.
а. Настройте правила распределения
Примеры правил для автоматического распределения обращений есть в отдельном разделе базы знаний тут. Или можете, например, использовать такое правило для входящих обращений, чтобы равномерно назначать ответственными в обращении всех доступных сотрудников, кроме руководителя и тех, у кого доступ «только просмотр»:
б. Создайте правила для отправки вебхука с упоминанием ответственного
Для каждого из сотрудников создайте правило, которое будет отправлять уведомление с упоминанием в Slack. При поступлении нового обращения понадобится такое правило для входящих обращений:
Используйте следующий текст кастомного запроса (как получить ID пользователя в Slack, описано в пункте 12 этой статьи):
{ "text": "Новое обращение № [case_number]: [case_subject]", "blocks": [ { "type": "section", "text": { "type": "mrkdwn", "text": "*Новое обращение* № <[case_url] | *[case_number]*>" } }, { "type": "section", "fields": [ { "type": "mrkdwn", "text": "*Ответственный*\n<@[юзер id]>" }, { "type": "mrkdwn", "text": "*Приоритет*\n[case_priority]" } ] }, { "type": "section", "text": { "type": "mrkdwn", "text": "*[case_subject]*\n\n[case_description|text]" } }, { "type": "divider" } ] }
Пример отображения:
Для отправки уведомления с упоминанием ответственного в Slack при поступлении нового ответа в обращении также понадобятся отдельные правила для каждого сотрудника. Вот пример такого правила для измененных обращений:
Используйте следующий текст кастомного запроса:
{ "text": "Новый ответ в обращении № [case_number]: [case_subject]", "blocks": [ { "type": "section", "text": { "type": "mrkdwn", "text": "*Новый ответ* в обращении № <[case_url] | *[case_number]*>" } }, { "type": "section", "fields": [ { "type": "mrkdwn", "text": "*Ответственный*\n<@[юзер_ид]>" }, { "type": "mrkdwn", "text": "*Приоритет*\n[case_priority]" } ] }, { "type": "section", "text": { "type": "mrkdwn", "text": "*[case_subject]*\n\n[last_message|text]" } }, { "type": "divider" } ] }
Обратите внимание, что для получения текста ответа в обращении в параметре “text” нужно использовать переменную [last_message|text].
Пример отображения:
PRO подсказка: Для более быстрого добавления правил используйте функцию дублирования и затем редактируйте только данные упоминаемого сотрудника. Объедините правила, созданные для всех сотрудников, в одну группу. Разместите созданную группу правил после правила из пункта а, которое назначает ответственного в обращении.
При отправке уведомлений в личные сообщения вам надо в Slack добавить отдельные вебхуки для каждого получателя (см. пункт 2 этой инструкции) и указывать именно их в правилах в поле вебхук-URL. Обратите внимание, что в этом случае уведомления будут приходить в личную переписку в Slack от имени создателя приложения и что создатель приложения также будет видеть поступившие сотруднику уведомления.