REST API для работы с WhatsApp
Мы добавили в Олчат REST API (программный интерфейс взаимодействия с сервером) для работы с WhatsApp. Теперь вы можете сформировать вебхук и использовать его для вызовов методов REST в своих сценариях автоматизации и при интеграции различных сервисов.
Получение вебхука
Создать вебхук можно в приложении Олчат — «•••» (меню вызова настроек коннектора) — Настройки коннектора — Вебхук — Сгенерировать новый:
После создания его можно скопировать в буфер, нажав на кнопку «Скопировать вебхук». При необходимости вебхук можно изменить, нажав на кнопку «Сгенерировать новый»:
Описание методов
Для простоты использования большая часть API (программных интерфейсов) допускает использование GET-запросов.
Указанные ниже технические ограничения по запросам изменить или убрать невозможно.
Для корректного срабатывания запросов в параметр «Номер телефона» необходимо вписывать значение через «7» в начале номера.
Отправка сообщения
GET https://olchat.infocom.io/rest/webhook/wa/\{\{token\}\}/v2/messages.text.send/
Позволяет отправить текстовое сообщение на указанный номер телефона в WhatsApp.
Ограничение: 5 запросов в 3 секунды.
Параметры
| Name | Type | Description |
|---|---|---|
| phone_number* | str | Номер телефона |
| text* | text | Тело сообщения |
| publish_to_open_line* | boolean | Публиковать сообщение в Открытую линию. true / false, по умолчанию false |
Отправка файла
GET ``https://olchat.infocom.io/rest/webhook/wa/\{\{token\}\}/v2/messages.file.send/
Позволяет отправить файл на указанный номер телефона в WhatsApp. В качестве файла указывается прямая ссылка на файл. Подробнее в статье Создание прямой ссылки на файл.
Ограничение: 5 запросов в 3 секунды.
Параметры
| Name | Type | Description |
|---|---|---|
| phone_number* | str | Номер телефона |
| text* | text | Текст |
| publish_to_open_line | boolean | Публиковать сообщение в Открытую линию. true / false, по умолчанию false |
| caption | str | Текст подписи под картинкой |
Проверка аккаунта на номере
GET ``https://olchat.infocom.io/rest/webhook/wa/\{\{token\}\}/v2/phone.check/
Позволяет проверить наличие на номере аккаунта WhatsApp.
Ограничение: 3 запроса в 1 секунду.
ВАЖНО! Не злоупотребляйте этим методом, так как высока вероятность блокировки вашего аккаунта со стороны WhatsApp.
Path Parameters
| Name | Type | Description |
|---|---|---|
| phone_number* | str | Номер телефона |
Проверка статуса линии
GET https://olchat.infocom.io/rest/webhook/wa/\{\{token\}\}/v2/line.status.get/
Позволяет проверить статус текущей линии.
Ограничение: 5 запросов в 3 секунды.
Проверка статуса сообщения
GET https://olchat.infocom.io/rest/webhook/wa/\{\{token\}\}/v2/messages.status.get/
Позволяет проверить статус сообщения.
Ограничение: 5 запросов в 3 секунды.
Path Parameters
| Name | Type | Description |
|---|---|---|
| phone_number* | str | Номер телефона |
| message_id* | str | ID сообщения |
Где можно использовать REST API
Предположим, что у вас есть сайт или интернет-магазин, который не интегрирован с Битрикс24, но нужно уведомить клиента, заполнившего форму WhatsApp, о том, что его заявка принята в работу или заказ оформлен.
Вы можете привязаться к событию заполнения формы и отправить запрос, содержащий метод отправки сообщения: https://olchat.infocom.io/rest/webhook/wa/\{\{token\}\}/v2/messages.text.send/.
- В качестве phone_number передайте в запрос номер телефона из формы.
- В качестве text – ваш текст сообщения, например: «Мы получили вашу заявку, номер вашего заказа №00001».
- В publish_to_open_line передайте true или false
Другие примеры использования REST API:
- Уведомление о записи на приём из сторонней системы (например, запись на приём у стоматолога).
- Отправка уведомления из 1С.
- Сообщение с номера телефона для интегратора.
Как добавить подпись к файлу, отправленному через REST API
Ниже приведен пример, написанный на Python с использованием библиотеки Requests:
import requests
webhook_url = "https://olchat.infocom.io/rest/webhook/wa/{{ваш token}}/v2/messages.file.send/"
payload = {
"phone_number": "7985...",
"text": "https://drive.google.com/uc?export=download&id=...",
"publish_to_open_line": True,
"caption": "Ваша корзина ждет! Завершите покупку и получите подарок"
}
response = requests.post(webhook_url, json=payload)Параметр publish_to_open_line может принимать значения:
- true — публиковать в чат Открытой линии;
- false — не публиковать в чат Открытой линии.
При выполнении этого скрипта в чате Открытой линии будет отображено следующее сообщение:
На стороне клиента это же сообщение будет выглядеть следующим образом:
Получение последних сообщений
Метод: messages.history.list
GET
https://olchat.infocom.io/rest/webhook/wa/\{\{token\}\}/v2/messages.history.list/
Возвращает список недавних входящих и/или исходящих сообщений по линии.
| Name | Type | Description |
|---|---|---|
| direction | string | Обязательный. incoming, outgoing или all |
| period_minutes | integer | Период в минутах (от 1 до 10080). По умолчанию 1440 (сутки) |
Особенности
- Возвращается только текстовое содержимое (медиафайлы не включаются).
- Максимальная глубина истории — 7 суток (10080 минут). Это ограничение платформы, увеличить его нельзя.
- Метод предназначен для получения свежих сообщений и определения времени последнего контакта. Для получения истории конкретного чата используйте метод chats.history.list.
- В ответе для каждого сообщения возвращается поле timestamp — Unix time в секундах.
Получение истории конкретного чата
Метод: chats.history.list
GET
https://olchat.infocom.io/rest/webhook/wa/\{\{token\}\}/v2/chats.history.list/
Возвращает историю сообщений указанного чата.
| Name | Type | Description |
|---|---|---|
| phone_number | string | Номер телефона |
| chat_id | string | Идентификатор чата WhatsApp (@c.us или @g.us) |
| limit | integer | Максимальное количество сообщений. По умолчанию 100 |
Особенности
- По умолчанию возвращается 100 сообщений.
- Необходимо указать хотя бы один из параметров:
phone_numberилиchat_id. При указании обоих приоритет имеетphone_number.