Webhook служит для обработки входящих событий, ответов на асинхронные запросы и информацию об ошибках. Например, при приеме входящего сообщения в мессенджере, на указанный webhook отправляется POST-запрос:
{
"id":18,
"whatsapp_id":"191b80a9238",
"event_action":"message",
"event_date":"2022-09-07 18:29:37",
"status_code":null,
"event_data":
{
"message":
{
"id":"false_79999999999@c.us_3EB0436AE1E682FF3A37",
"ack":1,
"hasMedia":false,
"mediaKey":"",
"body":"212",
"type":"chat",
"timestamp":1662575377,
"from":"79991112233@c.us",
"to":"79999999999@c.us",
"isForwarded":false
}
}
}
Для подтверждения успешного приема события, webhook должен отправить JSON-объект, в котором должен быть указан идентификатор входящего события и статус OK
{
"result" : "OK",
"id" : 18
}
Если система не получит в ответ корректного сообщения, то запрос повторится 3 раза, через каждые 20 секунд.
Для установки ссылки на обработчик Webhook, зайдите в личный кабинет, выберите блок привязанного Whatsapp-месенджера, нажмите 3 точки и выберите редактировать.
В открывшемся окне укажите ссылку на скрипт-обработчик Webhook-a
Нажмите «Сохранить»
Для установления или деактивации WebHook-a по API используйте метод set-hook. Инициируем POST-запрос на адрес:
https://whatsgate.ru/api/v1/set-hook
В теле запроса передается объект:
{
"WhatsappID": "YOUR_WHATSAPP_ID",
"callback": "https://callback.my/script.handler"
}
Объект успешного ответа на запрос
{
"result": "OK"
}
Событие отправляется при любом входящем сообщении в чате или группе. Поле event_action содержит строку «message» Поле event_data содержит объект сообщения
{
"id":18,
"whatsapp_id":"191b80a9238",
"event_action":"message",
"event_date":"2022-09-07 18:29:37",
"status_code":null,
"event_data":
{
"message":
{
"id":"false_79999999999@c.us_3EB0436AE1E682FF3A37",
"ack":1,
"hasMedia":false,
"mediaKey":"",
"body":"212",
"type":"chat",
"timestamp":1662575377,
"from":"79991112233@c.us",
"to":"79999999999@c.us",
"isForwarded":false
}
}
}
Событие отправляется после успешной доставки сообщения, в том случае, если была отправлена асинхронная команда отправки сообщения.
Поле event_action содержит строку «sent» Поле event_data содержит объект сообщения, которое было доставлено
{
"id":19,
"whatsapp_id":"191b80a9238",
"event_action":"sent",
"event_date":"2022-09-07 18:29:37",
"status_code":null,
"event_data":
{
"message":
{
"id":"false_79999999999@c.us_3EB0436AE1E682FF3A37",
"ack":1,
"hasMedia":false,
"mediaKey":"",
"body":"212",
"type":"chat",
"timestamp":1662575377,
"from":"79999999999@c.us",
"to":"79991112233@c.us",
"isForwarded":false
}
}
}
Событие отправляется при прочтении сообщения получателем в чате или группе. Поле event_action содержит строку «ack» Поле event_data содержит объект сообщения, которое было прочитано
{
"id":19,
"whatsapp_id":"191b80a9238",
"event_action":"ack",
"event_date":"2022-09-07 18:29:37",
"status_code":null,
"event_data":
{
"message":
{
"id":"false_79999999999@c.us_3EB0436AE1E682FF3A37",
"ack":1,
"hasMedia":false,
"mediaKey":"",
"body":"212",
"type":"chat",
"timestamp":1662575377,
"from":"79999999999@c.us",
"to":"79991112233@c.us",
"isForwarded":false
}
}
}
Событие отправляется, когда клиент отсоединяется и закрывается. Это происходит в случаях, когда Вы удаляете клиент из личного кабинета сервиса, или отзываете привязку в приложении Whatsapp на телефоне. Поле event_action содержит строку «disconnect» Поле event_data содержит объект с полем reason, в котором указана причина дисконнекта.
{
"id":19,
"whatsapp_id":"191b80a9238",
"event_action":"disconnect",
"event_date":"2022-09-07 18:29:37",
"status_code":null,
"event_data":
{
"reason": "Client disconnected"
}
}
Событие отправляется когда происходит какая-либо ошибка. Например, когда Вы пытаетесь асинхронно отправить сообщение не из своего контакт-листа на тарифе Light. Поле event_action содержит строку «error» Поле event_data содержит объект с описанием ошибки.
{
"id":19,
"whatsapp_id":"191b80a9238",
"event_action":"error",
"event_date":"2022-09-07 18:29:37",
"status_code":null,
"event_data":
{
"error":"Specified number not in your contact list"
}
}
{
"id":"false_79999999999@c.us_3EB0436AE1E682FF3A37",
"ack":1,
"hasMedia":false,
"mediaKey":"",
"body":"212",
"type":"chat",
"timestamp":1662575377,
"from":"79999999999@c.us",
"to":"79991112233@c.us",
"isForwarded":false
}
Поля объекта сообщения: