Уведомления в Slack

Последние изменения: 18.04.2024

Общая логика настройки уведомлений о новых обращениях и ответов клиентов описана тут. Другие инструкции:

Прежде чем приступить к настройкам, рекомендуем ознакомиться со статьей об общей логике правил автоматизации в Омнидеске или посмотреть краткое видеоруководство по правилам

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

В примерах с кодом запроса мы используем метод блоков, рекомендованный Slack. В разделе «Дополнительные возможности» также есть пример запроса по методу Attachment.

Предварительная настройка

1. В аккаунте Slack перейдите к форме создания Slack-приложения. В модальном окне выберите Create an app From scratch, укажите название приложения и выберите рабочую область, в которую оно будет добавлено.

b4a0f22aab7842b2d973ce1ac72b30fd.png

2. Перейдите в раздел Incoming Webhooks и активируйте входящие вебхуки. Внизу страницы кликните на Add New Webhook to Workspace.

ca400c19b33ac902fee2b680391e9d24.gif

3. На открывшейся странице выберите канал, в который будут поступать уведомления из Омнидеска, или сотрудника, чтобы уведомления поступали в личные сообщения от имени создателя приложения. Нажмите на кнопку «Разрешить».

a87aea6cbdbdb846d3040c96efa9319f.png

Если вы хотите отправлять уведомления в личные сообщения, то потребуется создать отдельный вебхук-URL для каждого сотрудника.

4. Скопируйте полученный вебхук URL. Он нужен для отправления уведомлений в Slack из Омнидеска.

ecaea9d6291bda90e6990b4a7414e46b.png

Создание правил в Омнидеске

5. Создайте в Омнидеске правила, которые будут отправлять уведомления в Slack. Перейдите в аккаунт администратора — раздел «Каналы» — подраздел «Правила».

а. Для получения уведомлений в Slack о поступлении новых обращений создайте правило для входящих обращений:

d1dd94f1240fe6375c9ccbe260a89101.png

В блоке «производить действие» выберите вариант «Выполнить вебхук», затем укажите метод 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"
        }
    ]
}

Пример отображения:

805e1b78aa8325f6596d33937515973f.png

б. Для получения уведомлений в Slack о поступлении новых ответов в обращениях и чатах создайте правило для изменённых обращений:

cb83bdc266cbbbec2e631733cf92f203.png

В блоке «производить действие» выберите вариант «Выполнить вебхук», затем укажите метод 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"
        }
    ]
}

Пример отображения:

1db0cd6a56c96b3effa85210ce2dc0e3.png

На этом настройка закончена, теперь вы будете получать уведомления в 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"
        }
    ]
}

Замените [кастомное_поле] на ваш вариант, выбрав дополнительное поле данных из списка переменных, кликнув на ссылку «переменные» справа от кастомного запроса в правиле.

Пример отображения:

5a73e4d71a93da17d4332f670dfd7f98.png

Сделайте уведомления более информативными с API Slack

7. Добавьте в запрос нужные элементы

Можно добавлять emoji, изображения, гиперссылки, разделители и т. д. Подробная информация о синтаксисе запросов есть в официальной документации Slack.

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

5e969a9cdbfbf0b715c9afe7aa4d2a14.png

Пример кода запроса:

{      
    "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.

Пример отображения:

842fab41fab8928339c8ee5e8c8974ec.png

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/.

Пример отображения:

d7e9eb758d0457c8c552c8de5470985c.png

PRO подсказка: Если переходить на внешние ссылки через кнопки, Slack отображает предупреждение:

e84870f6fbc11eaea6628f6d4793dae6.png

Чтобы убрать это уведомление и разрешить переход по таким ссылкам, откройте страницу приложений, выберите приложение, которое вы создали для передачи уведомлений из Омнидеска, и перейдите в раздел Interactivity & Shortcuts.

Переведите ползунок в активное состояние. В поле request URL пропишите ссылку на канал, в который будут поступать уведомления, а после сохраните изменения. Ссылку на канал можно получить в браузерной версии Slack.

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

8fb39f5e3937f870b181ce3741a2dd1f.png
251387a7414f386bed6314332fbe67db.png

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
            }
        ]
    }
 ]
}

Пример отображения:

24830db0020de6b9065fcdf89c517b0a.png

10. Используйте официальный конструктор блоков

Конструктор блоков упростит работу с кодом запроса и поможет подобрать нужные элементы.

d749771d816553ef0a515d04cab0cde6.gif

11. Настройте аватарку бота

Добавить аватарку для вашего бота, от имени которого будут приходить уведомления, можно тут: api.slack.com/apps. Кликните на нужное приложение и перейдите в раздел Display Information.

5d84edd69db25cad2fcc0045d117ab88.png

Пример отображения:

faa62c0d0cb54c4144aab07e9626b702.png

12. Добавьте упоминание в мессенджере

а. Упоминания всех, участников канала, определенной группы или тех, кто в канале и онлайн работают через указание, соответственно, @everyone, @channel, @group @here в тексте. Также можно использовать такой формат упоминания: <!channel>

б. Конкретного сотрудника можно упоминать через указание после @ его ID внутри угловых скобок <>, то есть в виде <@[User_ID]>, где вместо [User_ID] надо подставить ID пользователя в мессенджере.

Получить ID нужного сотрудника в Slack можно, зайдя в его профиль:

6b19f1ea1ec9c5aa68867981cc50826a.png

13. Упоминайте в Slack ответственного сотрудника

Тегать сотрудника в Slack можно через <@[User_ID]>. Но чтобы реализовать такую логику, сначала надо, чтобы ответственный был назначен — то есть обращения должны распределяться между сотрудниками правилами.

а. Настройте правила распределения

Примеры правил для автоматического распределения обращений есть в отдельном разделе базы знаний тут. Или можете, например, использовать такое правило для входящих обращений, чтобы равномерно назначать ответственными в обращении всех доступных сотрудников, кроме руководителя и тех, у кого доступ «только просмотр»:

c500198a204dd287bfcbaabee659b63c.png


б. Создайте правила для отправки вебхука с упоминанием ответственного

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

4b3748e437a922b0bbdbde63bc56ae1e.png

Используйте следующий текст кастомного запроса (как получить 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"
        }
    ]
}

Пример отображения:

dc07654084d47dc805a2592c0138b13e.png

Для отправки уведомления с упоминанием ответственного в Slack при поступлении нового ответа в обращении также понадобятся отдельные правила для каждого сотрудника. Вот пример такого правила для измененных обращений:

ae8a1d0ca1096b95eca6230e511911cf.png

Используйте следующий текст кастомного запроса:

{ 
"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].

Пример отображения:

b0b3532dc3fec3252d6f93d95d554979.png

PRO подсказка: Для более быстрого добавления правил используйте функцию дублирования и затем редактируйте только данные упоминаемого сотрудника. Объедините правила, созданные для всех сотрудников, в одну группу. Разместите созданную группу правил после правила из пункта а, которое назначает ответственного в обращении.

При отправке уведомлений в личные сообщения вам надо в Slack добавить отдельные вебхуки для каждого получателя (см. пункт 2 этой инструкции) и указывать именно их в правилах в поле вебхук-URL. Обратите внимание, что в этом случае уведомления будут приходить в личную переписку в Slack от имени создателя приложения и что создатель приложения также будет видеть поступившие сотруднику уведомления.

5c3a7f353633a47ab391dbfdec3cd70b.png

Помогла ли вам статья?