Вебхуки
О механике
Зачем нужны вебхуки
Вебхуки — это инструмент для отправки автоматических уведомлений в сторонние системы при наступлении определённых событий в Motivity. Если подключить вебхуки с обеих сторон, будет проще отслеживать изменения в модулях, которые задействованы в текущих рабочих процессах.
В каких случаях использовать вебхук, а в каких — публичный API
Получать уведомления об изменениях на платформе можно двумя способами — через публичный API и вебхуки. Механики этих методов отличаются, поэтому они могут использоваться для разных целей:
С помощью публичного API данные запрашиваются вручную: администратор периодически отправляет запрос и проверяет, появились ли изменения. Это подойдёт для редких событий, которые важно проверять по расписанию
С помощью вебхуков система автоматически уведомляет об определённых изменениях. Это удобно для непредвиденных событий, когда нужно реагировать моментально (например, изменился статус учебного материала)
Если изменения критичны в момент их появления, то лучше настроить вебхук. Если можно проверять изменения периодически, то удобнее публичный API. Можно комбинировать оба метода: вебхуки — для мгновенных уведомлений, а API — для детальной проверки данных.
Подробно о публичном API — https://motivityy.atlassian.net/wiki/x/9IZX и API для регистрации пользователей на портале СД
Как выглядит общий процесс работы с вебхуками на стороне Motivity
Администратор создаёт и активирует вебхук по определённому триггеру на платформе
На платформе происходит событие, инициирующее срабатывание триггера
Для каждого пользователя, для которого наступило событие, формируется отдельный POST-запрос
Тип
application/json
, параметрheader
и соответствующее ему значение передаются в заголовке, если были указаны в настройках триггера
Запрос уходит на ранее указанный адрес
В теле запроса отправляется сообщение из поля JSON-запрос для триггера
Если в нём использовались переменные, они заменяются на соответствующие значения для каждого пользователя
Если переменная не заполнена в базе данных, отправляется
null
Если переменная указана некорректно (такая переменная не существует или не поддерживается для конкретного запроса), при попытке сохранить вебхук выводится ошибка и сохранение не происходит
Информация о запросе и ответе логируется в Панели управления → Логи → Лог исходящих вебхуков
Запрос отправляется однократно, вне зависимости от полученного ответа
Если было создано несколько вебхуков с одним триггером, запрос формируется для каждого из них
Вебхук отправляется, даже если уведомление с соответствующим триггером отключено в Панели управления → Уведомления → Центр уведомлений. На отправку вебхука влияет только выключение активности непосредственно в его настройках
Для администратора
Как настроить доступ к вебхукам
Доступ для администратора
Настроить доступ для администратора можно в Панели управления → Пользователи → Роли → Общие разрешения → Уведомления.
Разрешение | Возможность |
---|---|
Вебхуки |
|
Доступ для другой роли пользователей
Чтобы настроить доступ к модулю для конкретной роли, выполните следующие действия:
Перейдите в Панель управления → Пользователи → Роли
Выберите роль из списка или добавьте новую по кнопке Добавить
На странице редактирования роли перейдите во вкладку Разрешения →
[Название модуля]
и включите необходимые функцииВо вкладке Пользователи проверьте, что роль присвоена всем планируемым пользователям
Сохраните изменения
Подробно о создании и настройке ролей — Роли пользователей | Настройка ролей
Как добавить и настроить вебхук
Чтобы добавить вебхук, перейдите в Панель управления → Уведомления → Вебхуки и нажмите кнопку Добавить. Откроется страница, на которой можно задать основные настройки:
Настройки названия и показа вебхука
Название* — обязательное поле. Максимум 250 символов
Включить вебхук — установите или снимите
, чтобы включить или выключить вебхук на платформе
Настройки запроса и параметра
Ссылка* — обязательное поле. Укажите адрес, по которому должен отправляться POST-запрос при срабатывании триггера
Название параметра для заголовка запроса — это поле может использоваться для передачи токена безопасности (например, API Key) или в других целях
Значение параметра для заголовка запроса — добавьте значение, которое передаётся в указанном заголовке
header
Настройки триггера и JSON-запроса
Триггер* — обязательное поле. Выберите один вариант из списка, после сохранения вебхука изменить его нельзя
JSON-запрос для триггера* — обязательное поле. Подставляется автоматически для выбранного триггера
Пример JSON-запроса для триггера Библиотека. Публикация нового материала
{ "trigger": $trigger, "user": $user, "file": $file, "directory": $directory }
Что ещё важно помнить:
Идентификатор пользователя (студента, наставника, ответственного и др.) — это значение поля, которое выбрано на платформе в качестве уникального идентификатора
Параметр
trigger
добавлен в пример как обозначение наступившего события, для которого отправлен вебхукПараметр может быть заменён на любой другой параметр в соответствии с требованиями принимающей системы
Параметр может не использоваться, если разные вебхуки отправляются по разным адресам и дополнительная идентификация события не нужна
Переменные сгруппированы в объекты. Можно передавать в JSON весь объект или обратиться к его конкретному значению (например,
$user.id
)Если используется переменная, которая не заполнена в базе данных для конкретного события (например, отчество пользователя), для неё передаётся
null
Дата передаётся в формате ISO 8601 с указанием тайм-зоны
Как работать со списком вебхуков
Необязательно заходить на страницу редактирования каждого вебхука, чтобы проверить настройки. Для этого перейдите в список вебхуков в Панели управления → Уведомления → Вебхуки и изучите:
Активность — отображается как цвет ID:
Зелёный — активен
Серый — неактивен
Красный — удалён
Название
Триггер
Если вебхуков много, можно фильтровать их по активности и триггерам и искать нужные по названию. Ещё есть возможность массово активировать, деактивировать и удалять вебхуки в списке.
Остальные настройки доступны на странице создания/редактирования вебхука — Вебхуки | Как добавить и настроить вебхук
Если модуль был подключён на платформе, по нему был создан вебхук и после этого модуль был отключён, уже созданные вебхуки не удаляются, но не выводятся в списке. При повторном подключении модуля всё возвращается
Для каких модулей можно настроить вебхук
Модуль/механика | Тип пользователя | Триггер |
---|---|---|
Участник мероприятия | Напоминание о мероприятии за сутки | |
Доступен опрос о прошедшем мероприятии | ||
Проверяющий | Доступен новый чек-лист для проверки | |
Проверяемый | Доступен просмотр результатов проверки по чек-листу | |
Все пользователи | Публикация нового материала в библиотеке | |
Все пользователи | Публикация новости | |
Наставник | Изменение статуса задания | |
Наставник | Истекает дедлайн прохождения квеста студентом | |
Руководитель | Истекает дедлайн прохождения квеста сотрудником | |
Студент | Назначение квеста | |
Добавление материала | ||
Изменение статуса задания | ||
Истекает дедлайн прохождения квеста | ||
Завершение квеста | ||
Доступен опрос о пройденном задании | ||
Доступен опрос о пройденном этапе | ||
Доступен опрос о пройденном квесте | ||
Переназначение этапа | ||
Переназначение мероприятия | ||
Пользователь | Переназначение теста | |
Доступны результаты проверки | ||
Пользователь | Переназначение урока | |
Пользователь | Переназначение диалога | |
Пользователь | Публикация нового блога | |
Администратор служебного чата | Новое сообщение в служебном чате | |
Изменение сообщения в служебном чате | ||
Удаление сообщения в служебном чате | ||
Участник сообщества | Публикация новой записи в сообществе | |
Подписка | Подписчик автора | Публикация нового блога |
Публикация новой записи в сообществе | ||
Публикация новости | ||
Публикация новой записи в Пульсе | ||
Пользователь | У пользователя появился новый подписчик | |
Комментарии | Пользователь | Получение лайка к записи или комментарию |
Логирование
Подробно о логировании вебхуков — https://motivityy.atlassian.net/wiki/spaces/Documentation/pages/5734464#%D0%9B%D0%BE%D0%B3-%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D1%8F%D1%89%D0%B8%D1%85-%D0%B2%D0%B5%D0%B1%D1%85%D1%83%D0%BA%D0%BE%D0%B2
У вас остались вопросы?
Если вы не нашли ответ на свой вопрос, обратитесь в службу поддержки по почте help@motivity.ru или через телеграм-бот https://t.me/MotivityBotSupport_bot