Что такое WhatsApp API?

Что такое APIВотсап?

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

В мессенджере Ватсап Апи предоставляется возможность интеграции опции автоматической пересылки сообщений в программное обеспечение или сетевой ресурс. Официально разработчики мессенджера никакой поддержки в такой сфере и использовании программы в подобных целях не оказывают, даже выступают против стороннего программного обеспечения. Это объясняется стремлением обеспечить заявленный высокий уровень защищенности мессенджера и переписок.

Но в любом случае область таких разработок процветает и в сети есть множество программных средств для организации этого процесса. На текущий момент особой популярностью пользуется WhatsMate.

WhatsMate.png

Встраивание Апи происходит не напрямую в приложении мессенджера, в при помощи серверов программных средств ВатсМэйт, которые представляют собой третье независимое лицо.  Для работы с инструментами Апи необходимо обладать специальными знаниями в программировании на популярных языках пхп и питон.

WhatsAppBusinessAPI

785.png

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

Возможности:

  • Создание «Профиля компании», который будет содержать подробные сведения об организации, полезной для клиентов: шапку-фото, фактический адрес, описание, контактную информацию и адрес веб-сайта.
  • Эффективная организация коммуникации с клиентами. Благодаря качественным инструментам для общения Вы можете оправлять данные в удобном для просмотра виде и месте, есть возможность отвечать на сомнения и вопросы покупателей, осуществлять всестороннюю поддержку.

Читайте также:  Что означают одна и две галочки Whatsapp? Значки в Whatsapp

API для разработки бота для Ватсап на php и python

Вотсап API в бизнес секторе создается исключительно от имени фирм, это повышает узнаваемость бренда, упрощает поиск. Подобные сервисы популярны в социальных сетях, мессенджерах и называются чат-ботами.

Бот может работать круглосуточно и при этом ему не требуется платить заработную плату. Максимально быстро (в течение 2-3 минут) приходит автоматический ответ из чата компании, при условии, что проблема стандартизированная. В случае, когда вопрос охватывает сверх базового функционала опросника, то бот предложит перезвонить удобным способом: самостоятельно оператору по единому номеру или указать свой мобильный телефон и время. Все вопросы и ответы автоматически архивируются и благодаря этому можно контролировать работу, совершенствовать ответы, расширять функционал.

Весь размещенный контент не является официальными и не подтвержден разработчиками Ватсапа. Рекомендации и помощь по разным сферам решения вопроса есть в специальных профильных темах на ГитХаб.

Проекты на Github (дать несколько ссылок на темы с сайта github.com):

  • com/tgalal/yowsup;
  • ru/programming/php/whatsapp-api-the-library-works-with-messenger/;
  • com/mgp25/Chat-API.

Whatsapp шлюз что это и список сервисов

Шлюз – это программное средство, которое помогает осуществлять отправку сообщений в приложении при помощи коммуникации Ватсап со сторонними ресурсами.

Для установки Апи требуется наличие шлюза, обеспечивающего взаимодействие приложения с внешними ресурсами. Делается это следующим образом:

  • Разрабатывается базовая форма, предназначенная для заполнения пользователем, чтобы бот в дальнейшем мог обработать информацию.
  • Необходимо предусмотреть обязательный ввод контактов, чтобы иметь возможность в дальнейшем связаться с клиентом.
  • Можно осуществить одноразовую или регулярную рассылку.

Официальные ресурсы мессенджера не планируют публиковать руководство по настройке и использованию этих сервисов и организации взаимодействия.

Список популярных сервисов для создания бота:

  • API Bot.
  • chat-api.com.
  • com.
  • api-messenger.com.

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

Приветствую! Нарисовалась у меня задача: нужно интегрировать в CRM систему мессенджеры, а то трудно анализировать работу менеджеров, когда они общаются с клиентами используя один общий «рабочий» телефон. И первым делом нужно было подключить WhatsApp, как один из самых популярных мессенджеров у нашей целевой аудитории.

Анализ ситуации…

Казалось, требуется всего лишь отправлять и принимать сообщения. А столько подводных камней…

1. Официальный API

Официального API в релизе тогда ещё не было. Но Facebook успел прислать ссылку на форму, для подключения официального API, находящегося в тестировании.

2. Сторонний сервис. Подключение через WhatsApp WEB

Рассматривал вариант «серого» способа, использование неофициального сервиса, который отправляет сообщения через WEB интерфейс, подключается сканированием QR кода. Но это зависимость от чужого API, в любой момент может всё отвалиться, да и передавать чужому сервису номера клиентов не хотелось. А ещё писать под чужой авторский API, да ещё который придётся переписывать, при переезде на другой сервис, тоже такое себе удовольствие. Ну и ещё требуется держать телефон включенным (хотя некоторые сервисы за доп плату решали эту проблему 🙂

3. Ручной режим

Посадить человека, пускай копипастит сообщения клиентам. Шутки шутками, а из этой идеи родилось решение!

Решение

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

Есть такая программка для автоматизации действий под Android, называется Tasker, одна из первых подобных программ. Но я в ней не разобрался с первого раза… Поискал аналоги, наткнулся на программу Automagic. В ней события, действия и ветвления рисуются как блок схема. ОффтопПередаю привет конструктору HiAsm, благодаря которому когда то научился понимать концепцию программирования. И вот в ней я то и придумал решение, root права нам не нужны. Получилось методом научного тыка нарисовать скрипт отправки сообщения, далее буду называть поток, так именуется каждый отдельный нарисованный алгоритм в данной программе. А теперь разберём его работу:Скриншот потока отправки сообщения в WhatsApp

  1. Каждые 5 секунд периодичным таймером генерируется событие и передаётся следующему блоку.
  2. Блок HTTP Request спрашивает у сервера, есть ли в очереди следующее сообщение, которое нужно отправить? Бэкенд написан на PHP.
  3. Парсим ответ сервера JSON.
  4. Если от сервера в ответе пришла метка, что нужно отправить сообщение, идём дальше.
  5. Проверяем, включен ли экран устройства, если нет, отправляем уведомление, с целью разбудить телефон. Если же экран включен, и не выполняется другой поток, проверяющий статус, доставлено ли сообщение, то:
  6. Генерируем ссылку и открываем её, что бы инициировать диалог с полученным от сервера номером телефона в WhatsApp’е
  7. Самое интересное. Блок Control UI. В нём в виде кода реализована логика проверки успешности открытия чата (проверка регистрации в мессенджере), вставка текста в окно ввода и клацанье по кнопке Отправить.Код писал с мобильного, как заработал, больше не трогал
    sleep(2000);  // 2 секунды на запуск вацапа   sle = 200; ch_c = 0; ch = false; is_sended = false;   sleep(sle); ch = existsElementById("com.whatsapp:id/entry"); // Проверяем, появилась ли на экране кнопка отправить sleep(sle); if (ch == false) {   ch = existsElementById("com.whatsapp:id/entry"); // Снова проверяем   ch_c = ch_c + 1;   sleep(1500); }  if (ch == false) {   ch = existsElementById("com.whatsapp:id/entry");    ch_c = ch_c + 1;   sleep(5500); }  ch = existsElementById("com.whatsapp:id/entry"); sleep(sle); setText2ById("com.whatsapp:id/entry",text); // Вставляем сообщение sleep(sle);  clickById("com.whatsapp:id/send");  // Жмём кнопку отправить sleep(sle); back(); sleep(sle); back(); status = 2;  if(ch == true) {  // Если всё хорошо, запоминаем, для отправки на сервер   is_sended = true;   status = 1; } 
  8. Отправляем результаты отправки сообщения на сервер.
  9. Возвращаемся на домашний экран.

Приём сообщений

Принимать сообщения на много проще. Ставим событие на уведомление от мессенджера. Как только приходит уведомление, помечаем его прочитанным, и отправляем его на сервер как есть. Тот уже спарсит адресата и текст.Скриншот алгоритма приёма сообщений

Плюсы, минусы, доработка и планы

Основную функцию отправки сообщения алгоритм выполняет отлично. Так как не используется WEB интерфейс, схватить баню от мессенджера тут меньше рисков, как мне кажется. Арендовал слабенький виртуальный сервер, установил туда Android и перенёс всё. На отправку одного сообщения новому контакту уходит ~5 сек. Для проверки доставки и прочтения сообщения, разработал отдельный поток, но он в черновом варианте и иногда не срабатывает. Поэтому о нём позже. В данный момент не реализована функция приёма медиа сообщений (фото, аудио, вложения), но это можно выгружать из WhatsApp, используя кнопку поделиться сообщением в будущем. Чуть позже хочу сверху виртуальной машины, где запущен мессенджер, написать SIP транк, через который можно будет звонить через WhatsApp как через SIP ^.^ что может сэкономить расходы на связь. Ещё хочу делать скриншоты аватарок и отправлять их на сервер, для прикрепления миниатюры к контакту в CRM системе. Ну и вообще самое интересное: Данный способ обёртывания в API подойдёт почти для любого приложения под Android 🙂 Всё изначально разрабатывал и запускал на Android 9, xiaomi mi 9 se, root прав нет. UPD: Пример на Python3.8 в качестве бекенда доступен на GitHub, доработан алгоритм ловли уведомлений и код отправки из комментариев от Скрин из примера

Если используете отправку из WhatsApp, то какой API?

  • 33,3%Официальный API
  • 25,9%Через WhatsApp WEB (QR код)
  • 24,1%Отправляю вручную
  • 16,7%Придумал своё

Проголосовали 54 пользователя. Воздержались 72 пользователя.

Отправка¶

Для отправки WHATSAPP-сообщения необходимо вызвать POST /whatsapp/messages, передавая в теле параметры сообщения с указанием данных авторизации в заголовке.

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

Параметр Тип данных Описание и Допустимые значения
from string
to string
text(optional) string
validity(optional) integer Указывается только в случае отправки сообщения по шаблону. Возможное значние – сутки.
contentUrl(optional) string
contentName(optional) string
contentType(optional) string MimeType контентаСуществующий Mime Type
callbackUrl(optional) string
callbackData(optional) string Данные, которые будут указаны в обратном вызове со статусом сообщения.
templateId(optional) string Идентификатор шаблона в системе поставщика
templateParams(optional) object
languageCode(optional) string Код языка, по умолчанию ‘EN’

MIMEType¶

Медиа Расширения файлов Ограничения размера Комментарий
audio 16Mb codecs=opus
document 100 Mb
image 16 Mb GIF-изображения автоматически будет преобразован в MP4-видео на стороне WhatsApp
video 5 Mb Поддерживаются только H.264 и AAC видео-кодеки
voice auidio/ogg .ogg 16 Mb

Пример запроса¶

curl -X POST /whatsapp/messages   -H 'Authorization: Key QWxhZGRpbjpvcGVuIHNlc2FtZQ=='   -H 'Content-Type: application/json'   -d '{      "messages": [          {              "from": "MyCompany",             "to": "79034567890",             "text": "Code: 1234"         },         {           "from":"MyCompany",           "to":"79034567888",           "templateId": "account_activated",           "templateParams":{             "1": "+7(495) 646 00 54",             "2": "https://devino.online"           },           "languageCode": "ru",           "validity":86400,           "callbackUrl":"https://test_callback_url.site"         }             ] }' https://api.devino.online/whatsapp/messages 

Пример ответа¶

{     "result": [         {             "code": "OK",             "messageId": "3482512350952730368"         },         {             "code": "OK",             "messageId": "3482512350952730369"         }             ] } 

Параметры ответа¶

Параметр Тип данных Описание и допустимые значения
code string
reasons(optional) Array[String, String] Массив ошибок, произошедших во время обработки сообщения. Указывается только при code=REJECTED
reasons.key string Код ошибки.
reasons.ref(optional) string Ссылка на параметр, в котором произошла ошибка.
messageId(optional) string Идентификатор сообщения.Указывается только при code=OK
description(optional) string Описание ошибки. Указывается только при code=REJECTED

Коды ошибок¶

Key Ref Описание
billing.error Payment is required
forbidden Отправка запрещена
unknown Unknown error
invalid messages[i].to Неправильно указан номер телефона
invalid messages[i].validity Неправильно указан срок жизни
invalid messages[i].callbackUrl Неправильно указан URL
invalid messages[i].contentUrl Неправильно указан URL контента
invalid messages[i].contentType Неправильно тип контента
invalid messages[i].from Неправильно указан отправитель
invalid messages[i].languageCode Неправильно указан код языка
length.too.long messages[i].to Превышена максимальная длина номера телефона
length.too.long messages[i].text Превышена максимальная длина текста сообщения
length.too.long messages[i].languageCode Слишком длинный код языка
length.too.short messages[i].contentName Слишком короткое имя контента
length.too.short messages[i].languageCode Слишком короткий код языка
must.be.not.null messages[i].to Получатель не указан
must.be.not.null messages Массив messages не может быть пустым
must.be.not.null messages[i].from Отправитель не указан
must.be.not.null messages[i] Поле текста и контента не указано
not.available messages[i].from некорректный адрес отправителя
too.many.messages messages Превышен максимальный размер массива messages

Webhook статусов¶

Для получения статусов WHATSAPP-сообщений необходимо при отсылке сообщения методом POST /whatsapp/messages указать параметр callbackUrl.

Параметры получения статуса¶

Параметр Тип данных Описание
messageId long Индификатор сообщения
ts long Timestamp с миллисекундами получения статуса
status string Статус сообщения
errorCode integer Код ошибки
ip string IP адрес
browser string Имя браузера
os string Название операционной системы
userAgent string UserAgent
options string Данные, которые были указаны в callbackData при отправке запроса

Пример получения статуса¶

[     {         "messageId": 1,         "ts": 0,         "status": "DELIVERED",         "errorCode": 0,         "ip": "127.0.0.1",         "browser": "string",         "os": "string",         "userAgent": "string",         "options": "string"     } ] 

Коды ошибок¶

Код Описание
2000 Не определен оператор получателя
2001 Отклонено как спам
2002-2004 Ошибка тарификации
2005 Недостаточно средств
2006-2008 Ошибка тарификации
2009 Отклонено как дубликат
2010, 2011 Исткело время жизни
2012 Ошибка тарификации
2017 Отклонено как спам
2300 Превышен лимит длины текста сообщения
2301 За короткий промежуток времени было отправлено слишком много сообщений. Повторите отправку
2302 Отклонено как спам
2303 Указанный MIME-Type не поддерживается или изображение слишком больше (более или равно 5МБ)
2304 Превышен лимит длины текста сообщения
2305 Пользователь не использовал или более не использует WhatsApp
2307 Возникает при попытке отправить сообщение на номер телефона бизнес-аккаунта, с которого производится отправка
2308 Количество указанных параметров шаблона не соответствует их ожидаемому количеству
2309, 2310 Шаблон не существует для указанного языка или локали
2311 Превышение длины параметра шаблона
2312 Сообщение отправлено вне диалога и без указания шаблона
2313 Неизвестная ошибка

Webhook входящих сообщений¶

Внимание

Для получения входящих WhatsApp-сообщений необходимо:

  • связаться с менеджером компании или обратиться в техническую поддержку,
  • сообщить URL, на который система будет отправлять входящие WhatsApp-сообщения.

Параметры получения входящего сообщения¶

Параметр Тип данных Описание
incomingMessageId long Индификатор сообщения
to string Адрес получателя
from string Адрес отправителя
ts long Timestamp с миллисекундами получения сообщения
text(optional) string Текст сообщения
contentUrl(optional) string URL на контент в сообщении
contentType(optional) string Тип контента в сообщении
contentName(optional) string Имя контента в сообщении
profileName(optional) string Имя профиля отправителя
whatsAppGeoLocation(optional) WhatsAppGeolocation Содержит в себе геопозицию, отправленную пользователем
whatsAppContacts(optional) List[WhatsAppContact] Список контактов, отправленных пользователем

WhatsAppGeolocation¶

Информация

Входящие сообщения с текущими геоданными в настоящее время не поддерживаются.

Параметр Тип данных Описание
latitude double Широта
longitude double Долгота
address string Адрес, по которому находится пользователь
addressName string Название местонахождения пользователя
addressurl string URL, откуда пользователь получил свои геоданные

WhatsAppContact¶

Информация

Все элемены Массивов имеют тип данных string.

Параметр Тип данных Описание
addresses Массив Полные адреса контакта. Каждый адрес может содержать поля street, city, state, zip, country, countryCode и type.
birthday string День рождения контакта в формате YYYY-MM-DD.
emails Массив Email-адреса. Каждый адрес может содержать email и type.
contactName Массив Полное имя контакта. Каждый объект contactName может содержать поля firstName, middleName, lastName, formattedName, namePrefix и nameSuffix.
contactCompany Массив Информация о месте работы контакта. Каждый объект может содержать поля company, department и title.
phones Массив Номера телефонов контакта. Каждый объект может содержать поля phone, waId и type.
urls Массив URL контакта. Каждый объект может содержать поля url и type.

Пример получения входящего сообщения¶

{     "incomingMessageId": 0,     "to": "str",     "from": "str",     "text": "str",     "contentUrl": "str",     "contentType": "str",     "contentName": "str",     "profileName": "str",     "ts": 0 } 

Используемые источники:

  • https://what-is-app.ru/whatsapp/chto-takoe-whatsapp-api/
  • https://habr.com/ru/post/487182/
  • https://docs.devino.online/ru/http/whatsapp/

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий