Webhooks
Інформація
Webhook (також ще називають веб-зворотнім викликом (web callback) чи HTTP push API) - веб-програми, що працюють за допомогою зворотних дзвінків для надання іншим програмам інформації в реальному часі.
Webhook доставляє дані до інших програм одразу, а це означає, що ви отримуєте дані негайно. На відміну від типових API - інтерфейсів, де вам потрібно буде дуже часто опитувати дані, щоб отримувати їх в режимі реального часу. Це робить Webhook набагато раціональнішим як для провайдера, так і для споживача. Єдиний недолік Webhook - складність їх початкового налаштування.
Webhook іноді називають “Reverse APIs” (Перевернутий API), оскільки вони дають вам те, що становить специфікацію API, і ви повинні розробити API для використання Webhook. Webhook відправить HTTP-запит вашому додатку (зазвичай POST), і вам буде доручено його інтерпретувати.
Загальне
Кожен Webhook в LMS Collaborator відправляє POST-запит (Content type
: application / json
) з JSON в тілі коду.
Webhook має кілька полів за замовчуванням в тілі, ці поля будуть перенесені для будь-якого типу книги. Поля за замовчуванням:
Поле | Тип | Опис |
---|---|---|
web_hook_id | int без знака | Внутрішній ідентифікатор веб-перехоплювача |
web_hook_log_id | int без знака | Ідентифікатор виклику Webhook |
web_hook_url | строка | Кінцева URL-адреса веб-перехоплювача |
web_hook_type | строка | Тип Webhook |
secret | строка | Секрет, див. Розділ «Безпека» |
Захист
Кожен Webhook має свій секрет:
Цей секрет буде переданий в параметрах тіла (параметр secret) та у HTTP-заголовку X-Cbr-WebHook-Token. Таким чином, ви можете перевірити цей секрет у своїй логіці в кінцевій точці і дозволити тільки запити від Webhook.
Типи
На даний момент ми підтримуємо наступні Webhooks:
- Надіслати повідомлення - викличе будь-яке повідомлення користувача. Він працює тільки для повідомлень електронною поштою, тому, якщо ви вимкнете шаблон електронної пошти у шаблонах повідомлень (див. Налаштування шаблонів повідомлень), цей Webhooks не буде викликаний.
Поля:
Колонка | Тип | Опис |
---|---|---|
user.id | int без знака | Внутрішній ідентифікатор користувача |
user.uid | рядок | Зовнішній ідентифікатор користувача |
user.email | рядок | Внутрішній ідентифікатор користувача |
user.fullname | рядок | ПІБ користувача |
user.phone | рядок | Телефон користувача |
event | рядок | Ім'я події внутрішнього повідомлення |
subject | рядок | Тема повідомлення |
body | рядок | Тіло повідомлення (простий текст) |
- Призначити Завдання - буде викликатись, коли в LMS призначать Завдання Користувачеві (вручну адміністратором або автоматично за Правилами автоматизації або Траєкторіями)
Поля:
Поле | Тип | Опис |
---|---|---|
user_id | int без знака | Внутрішній ідентифікатор користувача |
task_id | int без знака | Ідентифікатор Завдання |
title | рядок | Назва Завдання |
url | рядок | URL-адреса Завдання |
type | рядок | Тип Завдання Можливі типи: Вебінари, Ресурси, 'separator', Курси, Опитування, Опитування 360, Програми, Комплексні тести, Практикуми, Вебінари, Чек-листи |
element_id | int без знака | Ідентифікатор елемента Завдання |
tags | рядок | Теги Завдання (через кому) |
parent_id | int без знака | Ідентифікатор батька Завдання |
program_id | int без знака | Ідентифікатор Програми Завдання (якщо Завдання є частиною Програми) |
points | int без знака | Бали за виконання Завдання |
- Відмінити призначення Завдання - буде викликано, коли адміністратор скасує призначення Завдання Користувачеві.
Поля:
Поле | Тип | Опис |
---|---|---|
user_id | int без знака | Внутрішній ідентифікатор Користувача |
task_id | int без знака | Ідентифікатор Завдання |
- Змінити статус Завдання - змінить статус Завдання будь-якого Користувача.
Поля:
Поле | Тип | Опис |
---|---|---|
user_id | int без знака | Внутрішній ідентифікатор Користувача |
task_id | int без знака | Ідентифікатор Завдання |
status | рядок | Статус Завдання. Можливі значення: "розпочато", "в процесі", "виконано", "очікує перевірки", "провалено" |
- Змінити рейтинг Користувача - буде викликати під час зміни рейтингу навчання Користувача (див. Рейтинг користувачів)
Поля:
Поле | Тип | Опис |
---|---|---|
user_id | int без знака | Внутрішній ідентифікатор користувача |
rating | int без знака | Значення рейтингу навчання |
Виправлення проблем
Ви можете знайти інформацію про запити Webhooks та відповіді в журналах.
Приклад
Приклад обробки кожного типу Webhooks можна знайти в
https://github.com/davintoo/webhooks-example-app
Ця програма розгорнута і запускається на Heroku
https://collaborator-web-hooks-example.herokuapp.com/