# REST API для работы с WhatsApp

Мы добавили в Олчат REST API (программный интерфейс взаимодействия с сервером) для работы с WhatsApp. Теперь вы можете сформировать вебхук и использовать его для вызовов методов REST в своих сценариях автоматизации и при интеграции различных сервисов.

## Получение вебхука

Создать вебхук можно в приложении Олчат — «•••» (меню вызова настроек коннектора) — Настройки коннектора — Вебхук — Сгенерировать новый:

<figure><img src="https://2213176759-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LcuJc7XlLhpPyLWZz1s%2Fuploads%2F8TiRJ7McekxpqBOipjQZ%2Fimage.png?alt=media&#x26;token=ae9268da-5829-4ad1-bfcb-23d3ceb60ee1" alt=""><figcaption></figcaption></figure>

После создания его можно скопировать в буфер, нажав на кнопку «Скопировать вебхук». При необходимости вебхук можно изменить, нажав на кнопку «Сгенерировать новый»:

<figure><img src="https://2213176759-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LcuJc7XlLhpPyLWZz1s%2Fuploads%2FDF0NtIttAm2R7dyDQipF%2Fimage.png?alt=media&#x26;token=72e5a722-00e2-4666-bdbf-40e4d0089d2c" alt=""><figcaption></figcaption></figure>

## Описание методов

Для простоты использования большая часть API (программных интерфейсов) допускает использование GET-запросов.&#x20;

{% hint style="info" %}
Указанные ниже технические ограничения по запросам изменить или убрать невозможно.&#x20;
{% endhint %}

{% hint style="info" %}
Для корректного срабатывания запросов в параметр «Номер телефона» необходимо вписывать значение через «7» в начале номера.
{% endhint %}

## Отправка сообщения

<mark style="color:blue;">`GET`</mark> `https://olchat.infocom.io/rest/webhook/wa/{{token}}/sendText`

Позволяет отправить текстовое сообщение на указанный номер телефона в WhatsApp.

Ограничение: 5 запросов в 3 секунды.

#### Параметры

| Name                                             | Type | Description                                                  |
| ------------------------------------------------ | ---- | ------------------------------------------------------------ |
| phone\_number<mark style="color:red;">\*</mark>  | str  | Номер телефона                                               |
| body<mark style="color:red;">\*</mark>           | text | Тело сообщения                                               |
| send\_to\_imol<mark style="color:red;">\*</mark> | Y\|N | Отправка в чат Открытой Линии. Может принимать значение Y\|N |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

## Отправка файла

<mark style="color:blue;">`GET`</mark> `https://olchat.infocom.io/rest/webhook/wa/{{token}}/sendFile`

Позволяет отправить файл на указанный номер телефона в WhatsApp. В качестве файла указывается прямая ссылка на файл. Подробнее в статье [#sozdanie-pryamoi-ssylki-na-fail](https://docs.olchat.io/roboty-i-aktiviti/sozdanie-pryamoi-ssylki-na-fail#sozdanie-pryamoi-ssylki-na-fail "mention").

Ограничение: 5 запросов в 3 секунды.

#### Параметры

| Name                                             | Type | Description                                                  |
| ------------------------------------------------ | ---- | ------------------------------------------------------------ |
| phone\_number<mark style="color:red;">\*</mark>  | str  | Номер телефона                                               |
| body<mark style="color:red;">\*</mark>           | url  | Прямая ссылка на файл                                        |
| send\_to\_imol<mark style="color:red;">\*</mark> | Y\|N | Отправка в чат Открытой Линии. Может принимать значение Y\|N |
| caption                                          | str  | Текст подписи под картинкой                                  |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

## Проверка аккаунта на номере

<mark style="color:blue;">`GET`</mark> `https://olchat.infocom.io/rest/webhook/wa/{{token}}/checkPhone`

Позволяет проверить наличие на номере аккаунта WhatsApp.

Ограничение: 3 запроса в 1 секунду.

ВАЖНО! Не злоупотребляйте этим методом, так как высока вероятность блокировки вашего аккаунта со стороны WhatsApp.

#### Path Parameters

| Name                                            | Type | Description    |
| ----------------------------------------------- | ---- | -------------- |
| phone\_number<mark style="color:red;">\*</mark> | str  | Номер телефона |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

## Проверка статуса линии

<mark style="color:blue;">`GET`</mark> `https://olchat.infocom.io/rest/webhook/wa/{{token}}/checkStatus`

Позволяет проверить статус текущей линии.

Ограничение: 5 запросов в 3 секунды.

## Проверка статуса сообщения

<mark style="color:blue;">`GET`</mark> `https://olchat.infocom.io/rest/webhook/wa/{{token}}/checkMessageStatus`

Позволяет проверить статус сообщения.

Ограничение: 5 запросов в 3 секунды.

#### Path Parameters

| Name                                            | Type | Description    |
| ----------------------------------------------- | ---- | -------------- |
| phone\_number<mark style="color:red;">\*</mark> | str  | Номер телефона |
| message\_id<mark style="color:red;">\*</mark>   | str  | ID сообщения   |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

## Где можно использовать REST API

Предположим, что у вас есть сайт или интернет-магазин, который не интегрирован с Битрикс24, но присутствует необходимость уведомить клиента, заполнившего форму WhatsApp, о том, что его заявка принята в работу или заказ оформлен.

Вы можете привязаться к событию заполнения формы и отправить запрос, содержащий метод отправки сообщения: **<https://olchat.infocom.io/rest/webhook/wa/\\{{token\\}}/sendText>.**

* В качестве **phone\_number** передайте в запрос номер телефона из формы.
* В качестве **body** – ваш текст сообщения, например: «Мы получили вашу заявку, номер вашего заказа №00001».
* В **send\_to\_imol** передайте Y или N.

Другие примеры использования REST API:

1. Уведомление о записи на приём из сторонней системы (например, запись на приём у стоматолога).
2. Отправка уведомления из 1С.
3. Сообщение с номера телефона для интегратора.

## Как добавить подпись к файлу, отправленному через REST API

Ниже приведен пример, написанный на Python с использованием библиотеки Requests:

```
import requests

webhook_url = "https://olchat.infocom.io/rest/webhook/wa/{{ваш token}}/sendFile/"

payload = {
   'phone_number': '7985...',
   'body': 'https://drive.google.com/uc?export=dow...eezby';,
   'send_to_imol': 'Y',
   'caption': 'Ваша корзина ждет! Завершите покупку и получите подарок'
}

response = requests.post(webhook_url, json=payload)
```

{% hint style="info" %}
Переменная '**send\_to\_imol**' может иметь значение:

* '**Y**' - публиковать в чат Открытой линии.
* '**N**' - не публиковать в чат Открытой линии.
  {% endhint %}

При выполнении этого скрипта в чате Открытой линии будет отображено следующее сообщение:

<figure><img src="https://2213176759-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LcuJc7XlLhpPyLWZz1s%2Fuploads%2Fn30pSuskgNIO8E8DTVIO%2Fimage%20(2107).png?alt=media&#x26;token=5f6d57d5-8f88-454d-8c2b-1a9209f72645" alt=""><figcaption></figcaption></figure>

На стороне клиента это же сообщение будет выглядеть следующим образом:

<figure><img src="https://2213176759-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LcuJc7XlLhpPyLWZz1s%2Fuploads%2FoQT29UgRQGXW1sDp9RVe%2Fimage%20(2106).png?alt=media&#x26;token=f6b577bd-bc67-424c-b5bc-2d9258dd4697" alt=""><figcaption></figcaption></figure>

## Получение последних входящих сообщений

<mark style="color:blue;">`GET`</mark>`https://olchat.infocom.io/rest/webhook/wa/{{token}}/lastIncomingMessages`

Возвращает последние входящие сообщения из чата Открытой линии, привязанного к сущности CRM.

Ограничени&#x435;**:** 5 запросов в 3 секунды.

**Параметры запроса (передаются в query string):**

* minutes — **int** — количество минут назад, за которые нужно получить сообщения.

Это обязательный параметр со значением по умолчанию 1440 (сутки). Допустимый диапазон: от 1 до 10080 (7 суток).&#x20;

## Получение последних исходящих сообщений

<mark style="color:blue;">`GET`</mark>`https://olchat.infocom.io/rest/webhook/wa/{{token}}/lastOutgoingMessages`

Возвращает последние исходящие сообщения из чата Открытой линии, привязанного к сущности CRM (системы управления взаимоотношениями с клиентами).

Ограничени&#x435;**:** 5 запросов в 3 секунды.

Параметры запроса (передаются в query string):

* minutes — **int** — количество минут назад, за которые нужно получить сообщения.

Это обязательный параметр со значением по умолчанию 1440 (сутки). Допустимый диапазон: от 1 до 10080 (7 суток).&#x20;

### **Особенности получения последних сообщений**

* Возвращается только текст (медиафайлы — фото, видео, документы — не возвращаются).
* В ответе присутствует поле timestamp с датой и временем каждого сообщения (в формате Unix timestamp или ISO 8601 — уточняется в реальном ответе).
* Работает только для чатов, привязанных к контактам, компаниям или сделкам.
* Максимальная глубина истории поиска — 7 дней (10080 минут). Это жёсткое ограничение Bitrix24, его нельзя увеличить.
* Если требуется знать дату самого последнего сообщения за более длительный период — рекомендуется сохранять timestamp последнего сообщения в кастомное поле CRM при каждом новом входящем или исходящем сообщении (через вебхуки или обработчики событий).
* Методы не предназначены для полной выгрузки истории чата. Они подходят только для получения свежих сообщений и определения времени последнего контакта.
