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/