Wazzup Help

Интеграция по API

Для интеграции с API Wazzup разработан набор методов для отправки сообщений, работы с сущностями пользователя, канала, контакта и сделки, получение событий веб-хуков.

API позволяет легко встроить дополнительный интерфейс с чатами Wazzup в любую CRM-систему, а также использовать счетчик неотвеченных.

В этой инструкции описаны все доступные методы для взаимодействия с Wazzup по API. Если в этой инструкции нет информации о какой-то функции, значит, она не реализована в Wazzup.

Оглавление

Счетчик неотвеченных и окно чатов

Получение API Key

  1. Зайдите в «Интеграции» в настройках личного кабинета.
  2. Нажмите .
  3. Выберите «Интеграция по API».
  4. Готово — теперь вы можете скопировать свой ключ API.

Открытие окна чатов

Чтобы открыть окно чата, отправьте POST запрос на роут https://api.wazzup24.com/v2/iframe:

1. Укажите ключ API в заголовке запроса «Authorization».

Headers-example

Authorization: Basic 32a817cbc1594bd5885574d8f0290cd3

Параметры запроса

ПараметрТипОписание
userObjectОбъект, который содержит информацию о пользователе
user.idInteger/StringId пользователя в crm-системе, открывающего окно с чатом
user.nameStringИмя пользователя. В дальнейшем используется в качестве имени отправителя
scopeStringКонтекст, в котором открывается окно, где:
"global" для общего чата
"card" для чата в карточке сущности
filterObject (Array)Массив объектов с чатами, которые нужно показать. Обязателен, когда scope = card
filter.chatTypeStringТип чата мессенджера. Доступные значения "whatsapp", "instagram", "telegram", "vk"
filter.chatIdStringId чата (аккаунт контакта в мессенджере):
для whatsapp — только цифры, без пробелов и спец. символов
для instagram — аккаунт без "@" вначале
filter.nameStringНеобязательный параметр, который содержит имя контакта
activeChatObjectЧат, активный при открытии Iframe
activeChat.chatTypeStringТип чата мессенджера. Доступные значения “whatsapp”, “instagram”, "telegram", "vk"
activeChat.chatId Integer/StringId чата (аккаунт контакта в мессенджере):
для whatsapp только цифры, без пробелов и спец. символов)
для instagram аккаунт без “@” вначале

Если контакта с указанными chatType и chatId нет в базе данных Wazzup — при открытии его в карточке контакта CRM-системы он будет создан. В качестве имени будет использовано значение name или  chatId, если первое отсутствует.

Пример тела запроса

```json

{
  "user": {
    "id": "222555",
    "name": "User Name"
  },
  "scope": "card",
  "filter": [
    {
      "chatType": "whatsapp",
      "chatId": "79998887766"
    }
  ],
  "activeChat": {
    "chatType": "whatsapp",
    "chatId": "79998887766"
  }
}

```

В ответе придет json с ссылкой для открытия окна чатов.

Пример успешного ответа

```
{
 "url": "https://12345678.wazzup24.com/chat/0e812899-e25b-4a18-a3e4-d1f5890f9de7?token=${token}"
}
```

В случае ошибки в ответе поступит json, содержащий свойство error, или http-код 500.

Пример ответа с ошибкой

```
{
 "error": {
   "code": "NO_SUCH_ACCOUNT"
 }
}
```

Если вы открываете ссылку в iframe, добавьте в тег атрибут allow=”microphone *”, чтобы из окна с чатами можно было записывать голосовые сообщения. Если атрибут не добавить, пользователь увидит ошибку при нажатии на значок микрофона для записи.

<iframe src="ссылка" allow="microphone *" ></iframe>

Счетчик неотвеченных

Для использования счётчика неотвеченных подключитесь к веб-сокету на https://api-ws.wazzup24.com.

При подключении сгенерируйте  событие apiV2IframeConnecting и отправьте объект, содержащий API key и id пользователя:

```

"apiKey": "32a817cbc1594bd5885574d8f0290cd3",
"userId": "2e0df379-0e3c-470f-9b36-06b9e34c3bdb"
}

```

После этого при изменениях в количестве неотвеченных сообщений данные будут приходить в событии apiV2Notify в виде объекта:

`{ counter: number }`

Пример с использованием `socket.io`:

```js

const socket = io.connect(`https://api-ws.wazzup24.com`);

socket.on('connect', () => {
  socket.emit('apiV2IframeConnecting', { apiKey, userId });
});

socket.on('apiV2Notify', (data) => {
  console.log('apiV2Notify', data);
  count.innerHTML = data.counter;
});

```

Доступные методы для работы с API

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

POST https://api.wazzup24.com/v2/send_message

Параметры запроса

ПараметрТипОписание
channelIdStringId канала (uuidv4), через который нужно отправить сообщение
chatTypeStringТип чата мессенджера-адресата. Доступные значения "whatsapp", "instagram", "telegram", "vk"
chatIdStringId чата (аккаунт контакта в мессенджере):
для whatsapp — только цифры, без пробелов и спец. символов
для instagram — аккаунт без "@" вначале
для telegram — приходит в вебхуках входящих сообщений
для vk — приходит в вебхуках входящих сообщений
textStringТекст сообщения (до 10000 символов). Обязателен, если не указан content
contentStringСсылка на файл для отправки. Обязателен, если не указан text
refMessageIdStringId сообщения для цитирования. Необязательный параметр

Пример тела запроса

```json

{

  "channelId": "3376e1c3-26a6-478b-b964-72bf01cc22cb",

  "chatType": "whatsapp",

  "chatId": "79998887766",

  "content": "https://example.com/images/img_01.png"

}

```

Результат запроса

HTTP/1.1 201 OK

```json

{ "messageId": "10d90130-38f6-421c-ada9-951f82884056" }

```

Пример отправки сообщения на PHP:

<?php
$apiKey = '6073085ffa3f410d9e27fb2b6592d325'; // Ключ авторизации интеграции по API
$defaultChannelId = '654bae5f-2981-41e1-8279-4cd6898511da';
$url = 'https://api.wazzup24.com/v2/send_message';
 
$curl = curl_init(); // Используем curl для запроса к Wazzup API
 
// Если в теле запроса не указан канал, то используем дефолтный
$channelId  = (empty($_POST['channel'])) ?  $defaultChannelId : $_POST['channel'];
$channelId  = $_POST['channel'];
$chatId = $_POST['contact'];
$chatType = $_POST['messenger_type'];
$text = $_POST['text'];
 
/**
* Тут может быть код для записи сообщения в БД
*/
 
// Формируем тело запроса
$post_data = json_encode(array(
   'channelId'=>$channelId,
   'chatId'=>$chatId,
   'chatType'=>$chatType,
   'text'=>$text
));
 
// Отправляем запрос в Wazzup
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
 'Authorization: Basic '. $apiKey,
 'Content-Type:application/json'
));
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS,$post_data);
 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
 
$server_response = curl_exec($curl);
$http_response_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
 
// Парсим ответ
$header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
$header = substr($server_response, 0, $header_size);
 
if ($http_response_code != 201) {
 error_log($header);
} else {
 // Если все ок, то вернется guid отправленного сообщения
 $res = json_decode($header);
 $msg_guid = $res->messageId;
}
 
curl_close ($curl);
?>

Ошибки при отправке сообщений

Код ошибкиОписание
MESSAGE_WRONG_CONTENT_TYPEНеверный тип контента. Возникает, если не удалось определить тип контента или он не поддерживается.
MESSAGE_ONLY_TEXT_OR_CONTENTВ сообщении может быть текст или контент. Отправлять одновременно текст и контент в WhatsApp и Instagram нельзя.
MESSAGE_NOTHING_TO_SENDТекст сообщения не найден.
MESSAGE_TEXT_TOO_LONGДлина текстового сообщения превышает 10 000 символов.
MESSAGE_CONTENT_CAN_NOT_BE_BLANKФайл с контентом не может быть пустым.
Возникает при отправке нетекстового сообщения, к которому не приложили контент.
MESSAGE_CONTENT_SIZE_EXCEEDEDКонтент превышает допустимый размер 10 MB.
MESSAGE_TEXT_CAN_NOT_BE_BLANKТекстовое сообщение не может быть пустым.
CHANNEL_NOT_FOUNDКанал, через который отправляется сообщение, не найден в интеграции.
CHANNEL_BLOCKEDКанал, через который отправляется сообщение, выключен.
MESSAGE_DOWNLOAD_CONTENT_ERRORНе удалось скачать контент по указанной ссылке.
MESSAGES_NOT_TEXT_FIRSTНа тарифе «Старт» нельзя написать первым.
MESSAGES_IS_SPAMWazzup оценил это сообщение, как спам.
CHAT_WRONG_CHAT_TYPEНеверный тип чата.
Возникает в случае, если вы отправляете исходящее сообщение в мессенджер, не входящий в список [INSTAGRAM, WHATSAPP, VK, TELEGRAM].
CHAT_MISSING_CHAT_TYPEchatType не передан.
Выберете тип чата из списка [INSTAGRAM, WHATSAPP, VK, TELEGRAM].
CHAT_INCORRECT_CHAT_ID_WHATSAPPНекорректный номер WhatsApp.
Номер телефона должен быть в международном формате: содержать от 9 до 16 цифр, для российских номеро начинаться с 7.
CHAT_MISSING_CHAT_IDchatId не передан.
VALIDATION_ERRORВалидационная ошибка параметра, переданного в запрос.
ACCOUNT_NOT_FOUNDАккаунт не найден в интеграции.
CONTACT_NOT_FOUNDКонтакт не найден среди контактов аккаунта — чат с таким номером телефона отсутствует.
CHANNEL_NO_MONEYКанал не оплачен и имеет статус «Не оплачен».
MESSAGE_CHANNEL_UNAVAILABLEКанал, с которого отправляется сообщение, недоступен.
У канала статус «Телефон недоступен» или «Подождите минутку».
CONTACT_DETAIL_NOT_FOUNDИнформация о контакте отсутствует.
MESSAGES_ABNORMAL_SENDТип чата не соответствует источнику контакта.
Например, такая ошибка может возникнуть, если вы пытаетесь отправить сообщение с канала WhatsApp на канал Instagram.
MESSAGES_INVALID_CONTACT_TYPEТип чата не соответствует источнику контакта Instagram.
Например, такая ошибка может возникнуть, если вы пытаетесь отправить сообщение с канала Instagram на канал WhatsApp.
MESSAGES_CAN_NOT_ADDСообщение не было отправлено. Возникла непредвиденная серверная ошибка.
REFERENCE_MESSAGE_NOT_FOUNDОшибка возникает при цитировании, если не удалось найти сообщение, к которому прикрепляется цитата.
Проверьте, что в качестве refId передан идентификатор сообщения, полученный от Wazzup.
UNKNOWN_ERRORНеизвестная ошибка.
Обратитесь в поддержку.

Получение списка каналов

GET https://api.wazzup24.com/v2/channels

Результат запроса

В ответе придет массив с информацией о каналах, указанных в настройках личного кабинета Wazzup в разделе «Интеграции»:

HTTP/1.1 200 OK

```

[

  {

    "channelId": string,

    "transport": "whatsapp",

    "plainId": "79865784457",

    "state": "active"

  }

]

```

Данные результата запроса

ПараметрТипОписание
channelIdStringId канала (uuidv4)
transportStringТип канала (мессенджер). Доступные значения:
whatsapp
instagram
plainIdStringНомер телефона или аккаунт instagram-канала
stateStringСостояние канала:
active — канал активен, все нормально
disabled — канал выключен
phoneUnavailable —  нет связи с телефоном
qr — необходимо отсканировать qr-код
openElsewhere — приложение открыли в другом месте
notEnoughMoney — канал не оплачен

Подключение веб-хуков и получение текущего значения url

PUT https://api.wazzup24.com/v2/webhooks

Пример тела запроса

```json

{

  "url": "https://example.com/webhooks"

}

```

В значении url укажите адрес для получения веб-хуков или null для отключения веб-хуков.

При подключении на указанный url будет отправлен тестовый запрос. Сервер должен вернуть 200 при успешном подключении веб-хуков.

В ответе придет вновь установленный адрес для веб-хуков и информация о том, отличался ли предыдущий url от переданного (в значении ключа webhooksUrlChanged).

HTTP/1.1 200 OK

```json

{

  "webhooksUrl": "https://example.com/webhooks",

  "webhooksUrlChanged": true

}

```

Проверка адреса для получения веб-хуков

GET https://api.wazzup24.com/v2/webhooks

HTTP/1.1 200 OK

```json

{

  "webhooksUrl": "https://example.com/webhooks"

}

```

Веб-хуки

Wazzup присылает веб-хуки трех типов.

Новые сообщения

Веб-хук пришлет JSON-объект с ключом messages, в значении которого лежит массив объектов со следующими параметрами:

ПараметрТипОписание
messageIdStringUUID сообщения
channelIdStringId канала
chatTypeStringТип чата мессенджера-адресата. Доступные значения "whatsapp", "instagram", "telegram", "vk"
chatIdStringId чата (аккаунт контакта в мессенджере):
для whatsapp только цифры, без пробелов и спец. символов, например “79124698489”
для instagram аккаунт без "@" вначале, например “wazzuptest”
dateTimeNumberВремя сообщения (unix time milliseconds)
typeNumberТип сообщения:
0 — сообщение неподдерживоемого типа                                   
1 — текст                                       
2 — изображение                                     
3 — аудио
4 — видео
5 — документ
21 — Пропущенный звонок от клиента
statusNumberСтатус успешной отправки сообщения или ошибки:
1 — отправлено (аналог одной серой галки)
2 — доставлено (аналог двух серых галок)
3 — прочитано (аналог двух голубых галок)                                            
13 — для whatsapp: клиент, которому адресовано сообщение, не установил приложение или привязал его к другому номеру
13 — для instagram: такой аккаунт Instagram не существует. Возможно, клиент изменил имя профиля
14 — слишком длинный текст сообщения
15 — фильтры Instagram не пропускают сообщение из-за ссылки
17 — размер файла не должен превышать 50 Mb
18 — сообщение не отправлено из-за подозрения на спам
19 — отправка прервана. С аккаунта поступило слишком много сообщений
21 — контент файла не подходит под параметры Instagram
66 — произошла ошибка. Информация уже направлена разработчикам Wazzup
99 — входящее сообщение
textStringТекст сообщения
contentStringСсылка на контент сообщения (может отсутствовать)
authorTypeNumberТип отправителя:
0 — телефон 
1 — интерфейс Wazzup                                           
3 — amoCRM                                            
4 — planfix                                            
5 — bitrix24                                            
6 — Zoho CRM                                           
7 — Salesforce                                            
8 — Hubspot
9 — API Wazzup  
99 — Входящее сообщение от клиента
authorNameStringИмя отправителя в whatsapp, если оно есть
instPostObjectОбъект с информацией о посте Instagram
imageSrc
StringСсылка на полноразмерное изображение
previewSrcStringСсылка на превью изображения

Наличие поля instPost говорит о том, что входящее сообщение фактически является комментарием к посту в Instagram. У сообщений Whatsapp и директа в Instagram этого поля нет.

Вид объекта с информацией о посте Instagram:

```

{
  id: '2430659146657243411_41370968890',
  src: 'https://www.instagram.com/p/CG7b52ejyET',
  sha1: 'dc8c036b4a0122bb238fc38dcb0391c125e916f2',
  likes: 0,
  author: 'wztestdlv',
  comments: 22,
  timestamp: 1603977171000,
  updatedAt: 1608905897958,
  authorName: '',
  description: 'Красота',
  previewSha1: '3a55c2920912de4b6a66d24568470dd4ad367c34',
  imageSrc: 'https://store.dev-wazzup24.com/dc8c036b4a0122bb238fc38dcb0391c125e916f2',
  previewSrc: 'https://store.dev-wazzup24.com/3a55c2920912de4b6a66d24568470dd4ad367c34'
}

```

Обновление статусов исходящих сообщений

Веб-хук пришлет JSON-объект с ключом statuses, в значении которого будет лежать массив объектов со следующими параметрами:

ПараметрТипОписание
messageIdStringId канала (uuidv4), через который нужно отправить сообщение
statusStringСтатус сообщения:
0 — сообщение в обработке
1 — отправлено (аналог одной серой галки)
2 — доставлено (аналог двух серых галок)  
3 — прочитано (аналог двух голубых галок)
13 — для whatsapp: клиент, которому адресовано сообщение, не установил приложение или привязал его к другому номеру      
13 — для instagram: такой аккаунт Instagram не существует. Возможно, клиент изменил имя профиля.
14 — слишком длинный текст сообщения
15 — фильтры Instagram не пропускают сообщение из-за ссылки
17 — размер файла не должен превышать 50 Mb
18 — сообщение не отправлено из-за подозрения на спам
19 — отправка прервана. С аккаунта поступило слишком много сообщений
21 — контент файла не подходит под параметры Instagram
66 — произошла ошибка. Информация уже направлена разработчикам Wazzup

Обновление состояния каналов

Веб-хук пришлет JSON-объект с ключом channels, в значении которого лежит массив объектов со следующими параметрами:

ПараметрТипОписание
channelIdStringId канала (uuidv4)
transportStringТип канала (мессенджер). Доступные значения:
whatsapp
instagram
plainIdStringНомер телефона или аккаунт instagram-канала
stateStringСостояние канала:
active — канал активен, все нормально
disabled — канал выключен
phoneUnavailable —  нет связи с телефоном
qr — необходимо отсканировать qr-код
openElsewhere — приложение открыли в другом месте
notEnoughMoney — канал не оплачен

Пример обработки данных на PHP, получаемых в веб-хуках

<?php
// Веб-хуки приходят в json, конвертируем его
$hook = json_decode(file_get_contents('php://input'));
 
// Состояния каналов
if (isset($hook->channels)) {
 foreach ($hook->channels as $channel) {
   // Перебор полей объекта. Тут с данными можно что-то сделать - например, положить в БД
   foreach ($channel as $key => $value) {
     error_log("$key : $value");
   }
 }
}
 
// Сообщения
if (isset($hook->messages)) {
 foreach ($hook->messages as $message) {
   // Перебор полей объекта. Тут с данными можно что-то сделать - например, положить в БД
   foreach ($message as $key => $value) {
     error_log("$key : $value");
   }
 }
}
 
// Статусы сообщений
if (isset($hook->statuses)) {
 foreach ($hook->statuses as $status) {
   // Перебор полей объекта. Тут с данными можно что-то сделать - например, положить в БД
   foreach ($status as $key => $value) {
     error_log("$key : $value");
   }
 }
}
 
?>

Изменение списка каналов в интеграции (приходит новый список каналов)

Веб-хук пришлет JSON-объект с ключом channelsList, в значении которого лежит массив объектов со следующими параметрами:

ПараметрТипОписание
channelIdStringId канала (uuidv4)
transportStringТип канала (мессенджер). Доступные значения:
whatsapp
instagram
plainIdStringНомер телефона или аккаунт instagram-канала
stateStringСостояние канала:
active — канал активен, все нормально
disabled — канал выключен
phoneUnavailable —  нет связи с телефоном
qr — необходимо отсканировать qr-код
openElsewhere — приложение открыли в другом месте
notEnoughMoney — канал не оплачен

Работа с сущностью пользователя

Получение списка пользователей

Пользователи — это профили, которые вы создаете в CRM для своих сотрудников. Это не ваши клиенты, а ваши менеджеры, сотрудники поддержки, бухгалтеры и т.д.

Для получения списка пользователей в интеграции отправьте GET запрос на https://api.wazzup24.com/v2/users.

Пример результата запроса

```json

[

{

  "id": "2e0df379-0e3c-470f-9b36-06b9e34c3bdb", // id пользователя

  "name": "User Name"                           // имя пользователя

},

...

]

```

Получение информации об отдельном пользователе

Для получения информации об отдельном пользователе в интеграции отправьте GET запрос на https://api.wazzup24.com/v2/users/{id пользователя}.

Пример результата запроса

```json

{

  "id": "2e0df379-0e3c-470f-9b36-06b9e34c3bdb", // id пользователя

  "name": "User Name"                           // имя пользователя

}

```

Обновление списка пользователей

Чтобы добавить нового пользователя или изменить имя у существующего реализован роут для обновления списка пользователей в интеграции.

Отправьте PATCH запрос на https://api.wazzup24.com/v2/users.

В теле запроса должен прийти массив с данными о пользователях. Пользователей сравниваем по id. Если такого пользователя нет в Wazzup — добавим, если есть — обновим данные для него.

Параметры запроса

ПараметрТипОписание
idanyИдентификатор пользователя. Строка до 64 символов или целое число
nameStringИмя пользователя. Строка до 150 символов
phoneStringНомер телефона в международном формате “79261234567”. Если номер телефона не пройдёт формальную валидацию — ошибки не будет и свойство phone просто удалится.

Поле «phone» не обязательное — можно не указывать. Номера телефонов указываются только для возможности добавить пользователя в мобильное приложение.

Если у пользователя в разделе «Моб. приложение» уже есть номер телефона — он не будет изменён методом PATCH. Его можно изменить только вручную в личном кабинете в разделе «Моб. приложение».

Пример тела запроса

```json

[

  {

    "id": "2e0df379-0e3c-470f-9b36-06b9e34c3bdb",

    "name": "User Name"

    "phone": "79261234567"

  },

  ...

]

```

Замена списка пользователей

Чтобы полностью заменить список пользователей в интеграции, отправьте PUT запрос на https://api.wazzup24.com/v2/users.

В теле запроса должен прийти массив с данными о пользователях. Имеющаяся информация о пользователях будет удалена, вместо нее будут использованы пришедшие данные.

Параметры запроса

ПараметрТипОписание
idanyИдентификатор пользователя. Строка до 64 символов или целое число
nameStringИмя пользователя. Строка до 150 символов
phoneStringНомер телефона в международном формате “79261234567”. Если номер телефона не пройдёт формальную валидацию — ошибки не будет и свойство phone просто удалится.

Поле «phone» не обязательное — можно не указывать. Номера телефонов указываются только для возможности добавить пользователя в мобильное приложение.

Если у пользователя в разделе «Моб. приложение» уже есть номер телефона — он не будет изменён методом PUT. Его можно изменить только вручную в личном кабинете в разделе «Моб. приложение».

Пример тела запроса

```json

[

  {

    "id": "2e0df379-0e3c-470f-9b36-06b9e34c3bdb",

    "name": "User Name"

    "phone": "79261234567"

  },

  ...

]

```

Удаление пользователя

Для удаления пользователя из интеграции отправьте DELETE запрос на https://api.wazzup24.com/v2/users/{id пользователя}.

Работа с контактами

Добавление и обновление списка контактов

Для добавления и обновления списка контактов отправьте PATCH запрос на https://api.wazzup24.com/v2/contacts.

При добавлении списка контактов информация о контактах из CRM загрузится в Wazzup. Это не создаст диалоги в общем чате. Диалог будет создаваться при отправке исходящего сообщения, получении входящего сообщения или при открытии чата в CRM из карточки контакта или сделки.

При обновлении списка контактов загружается массив с данными о контактах и контакты сравниваются по id. Если информации о контакте нет в Wazzup, то она будет добавлена. Если информация о контакте есть, данные для контакта будут обновлены.

ПараметрТипОписание
idanyId контакта в CRM-системе. Строка или число
responsibleUserIdanyId ответственного пользователя. Строка или число. Заполните это поле, чтобы диалог отобразился в окне чата Wazzup для ответственного за контакт. Работает при использовании настройки п. 3 «Только свои диалоги и диалоги из своих очередей».
nameStringИмя контакта
chatsObjectМассив объектов с данными для контакта, который содержит:
chatType — string
chatId — string или number
dealsObjectМассив с id сделок, связанных с контактом. Id сделки может быть string или number

Получение списка контактов

Для получения списка контактов, по которым была загружена информация из CRM в Wazzup, отправьте GET запрос на https://api.wazzup24.com/v2/contacts. В одном запросе можно получить до 100 записей.

Дополнительные параметры запроса

ПараметрТипОписание
offsetNumberСмещение по пагинации, целое неотрицательное число. По умолчанию — 0
orderByStringПоле для сортировки. По умолчанию id, также можно сортировать по name или responsibleUserId
orderDirectionStringНаправление для сортировки; asc (по умолчанию) или desc

Данные результата запроса

Придут в виде массива объектов со следующими параметрами:

ПараметрТипОписание
idanyId контакта в CRM-системе. Строка или число
responsibleUserIdanyId ответственного пользователя. Строка или число.
nameStringИмя контакта
chatsObjectМассив объектов с данными для контакта, который содержит:
chatType — string
chatId — string или number
dealsObjectМассив с id сделок, связанных с контактом. Id сделки может быть string или number

Получение информации об отдельном контакте

Для получения информации о загруженном из CRM в Wazzup отдельном контакте отправьте GET запрос на https://api.wazzup24.com/v2/contacts/{id контакта}.

Данные результата запроса придут в виде объекта со следующими параметрами:

ПараметрТипОписание
idanyId контакта в CRM-системе. Строка или число
responsibleUserIdanyId ответственного пользователя. Строка или число.
nameStringИмя контакта
chatsObjectМассив объектов с данными для контакта, который содержит:
chatType — string
chatId — string или number
dealsObjectМассив с id сделок, связанных с контактом. Id сделки может быть string или number

Удаление контакта

Для удаления информации о контакте из Wazzup отправьте DELETE запрос на https://api.wazzup24.com/v2/contacts/{id контакта}. Если в общем чате есть диалог с этим контактом — он там останется.

Работа со списком сделок

Получение списка сделок

Для получения списка сделок отправьте GET запрос на

https://api.wazzup24.com/v2/deals. В одном запросе можно получить до 100 записей.

Дополнительно можно передать в query string следующие параметры:

ПараметрТипОписание
offsetNumberСмещение по пагинации, целое неотрицательное число. По умолчанию — 0
orderByStringПоле для сортировки. По умолчанию id, также можно сортировать по name или responsibleUserId
orderDirectionStringНаправление для сортировки; asc (по умолчанию) или desc

Данные результата запроса

Придут в виде массива объектов со следующими параметрами:

ПараметрТипОписание
idNumberId сделки. Обязательное поле
responsibleUserIdanyId ответственного пользователя. Строка или число
nameStringНазвание сделки
closedBooleanФлаг, отмечающий закрытые сделки
contactsObjectМассив с id контактов, связанных со сделкой. Id контактов может быть string или number

Получение информации по отдельной сделке

Для получения информации об отдельной сделке отправьте GET запрос на https://api.wazzup24.com/v2/deals/{id сделки}

Данные результата запроса

Придут в виде объекта со следующими параметрами:

ПараметрТипОписание
idNumberId сделки. Обязательное поле
responsibleUserIdanyId ответственного пользователя. Строка или число
nameStringНазвание сделки
closedBooleanФлаг, отмечающий закрытые сделки
contactsObjectМассив с id контактов, связанных со сделкой. Id контактов может быть string или number

Обновление списка сделок

Для обновления списка сделок отправьте PATCH запрос на https://api.wazzup24.com/v2/deals.

В теле запроса придет массив с данными о сделках. Сделки сравниваются по id. Если такой сделки нет в Wazzup, то она будет добавлена, если есть, то данные для нее будут обновлены.

Параметры запроса

ПараметрТипОписание
idNumberId сделки. Обязательное поле
responsibleUserIdanyId ответственного пользователя. Строка или число. Заполните это поле, чтобы диалоги с контактами, связанными со сделкой, отобразились в окне чата Wazzup для ответственного за сделку. Работает при использовании настройки п. 3 «Только свои диалоги и диалоги из своих очередей».
nameStringНазвание сделки
closedBooleanФлаг, отмечающий закрытые сделки
contactsObjectМассив с id контактов, связанных со сделкой. Id контактов может быть string или number

Удаление сделки

Для удаления сделки отправьте DELETE запрос на

https://api.wazzup24.com/v2/deals/{id сделки}.

Интеграция с CRM + API

Вы можете добавить только одну интеграцию в личном кабинете. Подключить одновременно интеграции с CRM и по API нельзя. Но у каждой интеграции с CRM есть apiKey, который можно использовать для работы через API.

Есть ограничения. Такой “apiKey от интеграции с CRM” будет работать в роутах:

— GET /channels — получение списка каналов;

— POST /sendMessage — отправка сообщения. При этом в чатах в личном кабинете сообщение будет выглядеть, как отправленное из «материнской» СРМ;

— GET /webhooks — получение установленного адреса для вебхука;

— PUT /webhooks — установка адреса для вебхука.

Остальные роуты работать не будут.

Если установить адрес для вебхуков — они будут приходить так, как описано в инструкции выше. Если при отправке вебхуков мы будем наблюдать ошибки, то через некоторое количество попыток мы отключим вебхуки у конкретной интеграции по API, «материнская» интеграция с CRM продолжит работу.