События сообщений
Структура вебхуков для событий создания и обновления сообщений
Вебхуки сообщений используют "type": "message".
См. также Объект сообщения.
Поведение
Когда сообщение отправляется (например, после отправки сообщения в существующий диалог), сервис инициирует вебхук с событием create и статусом sent.
На этом этапе external_id имеет значение null, поскольку ответ от провайдера ещё не получен.
После успешной отправки сообщения инициируется вебхук update, в котором:
- статус меняется на
delivered - присваивается
external_id
Если отправить сообщение не удалось, статус меняется на error, а в поле details указывается причина ошибки (например, у получателя нет WhatsApp Business).
Для входящих сообщений приходит только один вебхук с событием create и статусом created.
Представление контакта в вебхуке зависит от направления сообщения:
- Исходящие сообщения из Pact содержат внутренний контакт с
internal_id, но никогда не содержатexternal_idилиexternal_public_id - Входящие сообщения содержат внешний контакт с
external_idиexternal_public_id, но никогда не содержатinternal_id
Создание
{
"event": "create",
"type": "message",
"object": {
"id": 123,
"external_id": "msg_123456",
"company_id": 1,
"conversation_id": 456,
"contact_id": 789,
"replied_to_id": null,
"created_at": "2024-01-15T10:30:00Z",
"external_created_at": "2024-01-15T10:30:00Z",
"income": true,
"status": "delivered",
"message": "Hello, this is a test message",
"reactions": null,
"details": null,
"delivery": null,
"deleted": false,
"contact": {
"id": 789,
"external_id": "123",
"external_public_id": "+79001234567",
"name": "John Doe",
"avatar_url": "https://example.com/avatars/user.jpg",
"phone": "+79001234567"
},
"conversation": {
"id": 456,
"company_id": 1,
"sender_name": "John Doe",
"sender_phone": "+79001234567",
"sender_external_id": "123456789",
"sender_external_public_id": "+79001234567",
"provider": "whatsapp",
"avatar_url": "https://example.com/avatars/user.jpg",
"created_at": "2024-01-15T09:00:00Z",
"last_updated_at": "2024-01-15T10:30:00Z",
"last_message_id": 123,
"operational_state": "active",
"replied_state": "replied",
"group": false
},
"attachments": [
{
"id": 101,
"message_id": 123,
"file_name": "image.jpg",
"mime_type": "image/jpeg",
"size": 102400,
"attachment_url": "https://cdn.example.com/attachments/image.jpg",
"preview_url": "https://cdn.example.com/attachments/small/image.jpg",
"aspect_ratio": 1.5
}
]
}
}