Что это такое
API групп WhatsApp от YCloud позволяет вашей компании создавать группы WhatsApp только по приглашению. Вы отправляете ссылку-приглашение каждому пользователю, и он сам решает, вступать ли в группу. Если для группы требуется подтверждение, вы можете рассмотреть запрос пользователя на вступление, прежде чем разрешить ему доступ. В этом руководстве рассматриваются настройка групп, управление ими и исходящие групповые сообщения. Групповые диалоги не отображаются во Входящих (Inbox).Перед началом работы
Перед началом интеграции убедитесь, что ваш рабочий номер телефона WhatsApp соответствует следующим требованиям:- У компании есть официальный бизнес-аккаунт (Official Business Account, OBA).
- Номер телефона использует WhatsApp Cloud API, а не приложение WhatsApp Business.
- Номер телефона не использует Multi-solution Conversations.
- У вашего аккаунта YCloud есть доступ к этому номеру телефона.
- У вас есть публичный URL-адрес HTTPS, на который YCloud может отправлять события Webhook.
- Перед отправкой ссылок-приглашений через шаблонное сообщение у вас должен быть одобренный шаблон приглашения в группу.
YCloud и WhatsApp проверяют соответствие номера телефона требованиям. Если он им не соответствует,
проверьте его статус OBA, настройку Cloud API и доступ в YCloud.
Поддерживаемые возможности и ограничения
В настоящее время YCloud поддерживает:- Создание, получение списка, получение информации и удаление групп.
- Получение и сброс ссылок-приглашений.
- Отправку утвержденного шаблона со ссылкой-приглашением отдельному пользователю WhatsApp.
- Просмотр списка, одобрение и отклонение запросов на вступление.
- Удаление участников.
- Обновление темы и описания группы.
- Обновление изображения профиля группы с помощью файла JPEG.
- Отправку в группу текстовых сообщений, медиафайлов, стикеров и поддерживаемых шаблонных сообщений.
- Получение событий Webhook о жизненном цикле группы, участниках, настройках и блокировке.
- В группе может быть до 8 участников.
- Один бизнес-номер телефона может создать до 10 000 групп.
- Группа может содержать только один рабочий номер телефона Cloud API.
- Один запрос YCloud может удалить до 8 участников.
- Тема группы может содержать до 128 символов.
- Описание группы может содержать до 2048 символов.
Как это работает
- Выберите, какие события групп YCloud должен отправлять на ваш эндпоинт Webhook.
- Отправьте запрос на создание группы. YCloud немедленно возвращает
requestId. - Дождитесь события Webhook о жизненном цикле, сообщающего об успешности создания.
- В случае успешного создания сохраните возвращенный
groupIdи ссылку-приглашение. Сохраняйте и используйтеgroupIdв точности так, как его возвращает YCloud. - Отправляйте ссылку-приглашение пользователям по одному.
- Если для группы требуется подтверждение, одобряйте или отклоняйте каждый запрос на вступление.
- Используйте события участников и API получения группы, чтобы поддерживать список участников в актуальном состоянии.
- Используйте события Webhook для подтверждения удаления группы, исключения участников и изменения настроек.
Настройка Webhook
Перед созданием группы подпишите ваш эндпоинт Webhook в YCloud на следующие события:
Когда YCloud отправляет событие, проверьте
YCloud-Signature, сохраните событие и своевременно верните ответ 2xx. Затем вы можете обработать его в фоновом режиме. YCloud может отправить одно и то же событие более одного раза, а разные события могут поступать не по порядку. Используйте id события, чтобы распознать доставку, которую вы уже обработали.
Для операции, инициированной через API, сопоставляйте Webhook с исходным запросом по requestId. Действия, инициированные участником, такие как вступление или выход, могут не содержать requestId. В этом случае используйте тип события, groupId, идентификатор участника и время события.
Создание группы
Выберите режим подтверждения вступления:whatsapp.group.lifecycle_update. Успешное событие group_create содержит окончательные groupId и inviteLink.
groupId точно в таком виде, в каком он указан в событии об успешном выполнении. Он чувствителен к регистру. Не декодируйте, не изменяйте и не генерируйте его самостоятельно.
Приглашение участников
Вы можете использовать ссылку-приглашение из Webhook о создании или получить её позже с помощью эндпоинта для ссылки-приглашения. Сбрасывайте ссылку только тогда, когда необходимо прекратить действие всех ранее предоставленных ссылок. После сброса пользователи не смогут присоединиться по старой ссылке. Чтобы отправить ссылку через WhatsApp, сначала подготовьте одобренный шаблон сообщения с приглашением. Затем отправьте этот шаблон конкретному пользователю:to или recipient. Он не отправляет сообщение в группу. Если вы укажете оба поля, YCloud использует to.
Обработка запросов на вступление
Для группыauto_approve дождитесь Webhook о добавлении участника, прежде чем регистрировать пользователя в качестве участника.
Для группы approval_required:
- Получите
group_join_request_createdили запросите ожидающие запросы. - Сохраните
joinRequestId, пока запрос все еще ожидает обработки. - Отправьте каждый ID на эндпоинт одобрения или отклонения.
- Проверьте как успешные, так и неуспешные элементы в ответе, включая
failedJoinRequestsиerrors. - Убедитесь, что человек присоединился, используя Webhook о добавлении участника или запросив данные группы.
Список групп и запросов на вступление
Список групп и список запросов на вступление возвращают результаты постранично. Курсор — это временное значение, обозначающее вашу позицию в списке. Параметрlimit управляет размером страницы, принимает значения от 1 до 1024 и по умолчанию равен 25. Передавайте after для следующей страницы или before для предыдущей.
Отправка сообщения в группу
ИспользуйтеPOST /whatsapp/groupMessages/sendDirectly для отправки одного сообщения текущим участникам группы. YCloud сначала получает данные группы и фиксирует снимок получателей для этого сообщения. Если в группе восемь участников, включая бизнес-отправителя, YCloud создает семь результатов для участников. Люди, присоединившиеся позже, не получат ранее отправленное сообщение и не будут добавлены в его историю.
Ответ на отправку подтверждает принятие сообщения. Используйте GET /whatsapp/groupMessages/{id} для получения результата на уровне группы, статуса доставки для каждого участника и окончательной стоимости. Статус status на уровне группы описывает общий результат отправки: принято YCloud, отправлено Meta или ошибка. Каждый элемент в recipients описывает одного участника и может иметь отдельный статус.
YCloud поддерживает сообщения типов text, image, video, audio, document, sticker и поддерживаемые template. Шаблоны аутентификации, а также шаблоны с интерактивными или коммерческими компонентами отклоняются.
Для маркетинговых шаблонов YCloud может использовать канал MM Lite, если WABA соответствует требованиям и как минимум для одного получателя задана цена MM Lite. В этом случае записи участников используют group_marketing_lite. Сервисные и утилитарные сообщения сохраняют group_utility и group_service и не используют MM Lite. Если для участника нет цены для выбранного канала, YCloud все равно отправляет сообщение в группу, если его можно отправить хотя бы одному участнику. При этом сумма для участника без цены не резервируется, а откат к цене другого канала не выполняется. Окончательный расчет основывается на цене, указанной в отчете о доставке.
Управление группой
Удаление участников
Вы можете удалить до восьми участников в одном запросе. Удалите дублирующиеся идентификаторы участников перед отправкой запроса. Некоторые участники могут быть удалены, в то время как удаление других завершится ошибкой, поэтому проверяйтеremovedParticipants, failedParticipants[].errors и верхнеуровневый статус errors в Webhook участников.
Обновление настроек
Вы можете обновитьsubject, description, JPEG profile_picture_file или любую комбинацию этих настроек. Отправляйте JSON при изменении только текста. Отправляйте multipart/form-data при загрузке фото профиля. Первоначальный ответ лишь подтверждает, что YCloud принял запрос. Дождитесь Webhook с настройками и проверьте каждую запись settings[], чтобы узнать, что именно было обновлено.
Удаление группы
Первоначальный ответ на удаление не подтверждает, что группа была удалена. Дождитесь Webhook жизненного цикла с параметромtype: "group_delete" и окончательным статусом status. После удаления группу нельзя использовать снова. События, которые уже были в процессе обработки, все еще могут прийти.
Безопасная обработка асинхронных результатов
- Сохраняйте
requestId, запрошенную операцию и собственный идентификатор вместе. - Если вы снова получаете то же событие
id, не применяйте одно и то же изменение дважды. - Убедитесь, что повторная обработка того же события не приводит к созданию дубликатов данных или побочных эффектов.
- Учитывайте, что события могут повторяться или приходить в нарушенном порядке.
- Запрашивайте данные группы повторно, если событие конфликтует с вашими текущими данными.
- Проверяйте ошибки верхнего уровня и ошибки на уровне отдельных элементов при частичном выполнении операций.
- Скрывайте ключи API, ссылки-приглашения, идентификаторы участников и персональные данные из общих логов приложения.
Ошибки и устранение неполадок
Запрос к API может завершиться ошибкой сразу или после того, как YCloud его принял:- При немедленном сбое проверьте стандартный ответ об ошибке YCloud.
Параметр верхнего уровня
error.codeпредставляет собой общий код YCloud, такой какBAD_REQUESTилиFORBIDDEN. Полеerror.whatsappApiErrorможет содержать дополнительные сведения от WhatsApp. Не определяйте логику работы приложения на основе сопоставления текстаmessage, предназначенного для чтения человеком. - При сбое, о котором сообщается позже, проверьте Webhook группы. В зависимости от
операции просмотрите
whatsappGroup.errors,failedParticipants[].errorsилиsettings[].errors.
К частым сбоям ссылок-приглашений также относятся сброшенная или просроченная ссылка, переполненная группа
или пользователь, который ранее был удален компанией. Не повторяйте неизмененные
запросы бесконечно.
Сквозной контрольный список
Перед запуском в рабочей среде выполните этот полный сценарий, используя подходящий тестовый номер телефона:- Подпишите тестовую конечную точку Webhook на все четыре типа событий группы.
- Создайте группу
approval_requiredи сохраните возвращенныйrequestId. - Дождитесь соответствующего события
group_createи сохраните егоgroupIdиinviteLink. - Отправьте одобренный шаблон сообщения с приглашением тестовому пользователю.
- Попросите пользователя отправить запрос на вступление.
- Получите запрос или список запросов, затем подтвердите его
joinRequestId. - Дождитесь события добавления участника.
- Запросите данные группы и убедитесь, что участник присутствует.
- Удалите тестового участника и подтвердите асинхронный результат.
- Удалите тестовую группу и подтвердите событие жизненного цикла.
Примеры в этом руководстве соответствуют текущему контракту YCloud API. Успешно выполните
шаги из этого контрольного списка перед использованием интеграции в рабочей среде.
Справочник по API
Примеры Webhook
События жизненного цикла
Обработка результатов создания и удаления групп.
События участников
Обработка вступлений, запросов на вступление, удалений и сбоев на уровне участников.
События настроек
Обработка результатов обновления темы и описания.
События статуса
Обработка событий блокировки группы и снятия блокировки.

