Перейти к основному содержанию

Что это такое

YCloud WhatsApp Groups API позволяет вашей компании создавать группы WhatsApp, доступные только по приглашению. Вы отправляете ссылку-приглашение каждому пользователю, и тот сам решает, присоединяться ли. Если для группы требуется одобрение, вы можете проверить запрос пользователя на вступление, прежде чем разрешить ему войти в группу. В этом руководстве рассматриваются настройка групп и управление ими. Отправка сообщений в группы и получение сообщений из групп пока недоступны. Групповые диалоги не отображаются во Входящих (Inbox).

Перед началом работы

Перед интеграцией убедитесь, что ваш рабочий номер телефона WhatsApp соответствует следующим требованиям:
  • У компании есть официальный бизнес-аккаунт (Official Business Account, OBA).
  • Номер телефона использует WhatsApp Cloud API, а не приложение WhatsApp Business App.
  • Номер телефона не использует Multi-solution Conversations.
  • Ваш аккаунт YCloud имеет доступ к номеру телефона.
  • У вас есть публичный HTTPS URL, на который YCloud может отправлять события Webhook.
  • Перед отправкой ссылок-приглашений через шаблонное сообщение у вас должен быть одобренный шаблон приглашения в группу.
YCloud управляет необходимыми подписками на платформе WhatsApp. Вам требуется лишь настроить конечную точку Webhook в YCloud и выбрать события групп YCloud, которые вы хотите получать.
YCloud и WhatsApp проверяют номер телефона на соответствие требованиям. Если он не подходит, проверьте статус OBA, настройку Cloud API и доступ в YCloud.

Поддерживаемые возможности и ограничения

YCloud в настоящее время поддерживает:
  • Создание, вывод списком, получение и удаление групп.
  • Получение и сброс ссылок-приглашений.
  • Отправку одобренного шаблона с ссылкой-приглашением отдельному пользователю WhatsApp.
  • Просмотр, одобрение и отклонение запросов на вступление.
  • Удаление участников.
  • Обновление темы и описания группы.
  • Обновление аватара группы файлом в формате JPEG.
  • Получение вебхуков жизненного цикла группы, участников, настроек и блокировок.
Платформа WhatsApp накладывает следующие ограничения:
  • В группе может быть не более 8 участников.
  • С одного рабочего номера телефона можно создать не более 10 000 групп.
  • В группе может находиться только один рабочий номер телефона Cloud API.
  • Один запрос YCloud может удалить до 8 участников.
  • Тема группы может содержать до 128 символов.
  • Описание группы может содержать до 2048 символов.
Эти API не поддерживают закрепление и открепление сообщений.

Как это работает

  1. Выберите события групп, которые YCloud должен отправлять на вашу конечную точку Webhook.
  2. Отправьте запрос на создание группы. YCloud сразу же вернет requestId.
  3. Дождитесь вебхука жизненного цикла, сообщающего, прошло ли создание успешно.
  4. В случае успешного создания сохраните возвращенный groupId и ссылку-приглашение. Сохраняйте и используйте groupId ровно в том виде, в каком его возвращает YCloud.
  5. Отправляйте ссылку-приглашение каждому человеку по отдельности.
  6. Если группа требует одобрения, одобряйте или отклоняйте каждый запрос на вступление.
  7. Используйте события участников и API получения группы, чтобы поддерживать список участников в актуальном состоянии.
  8. Используйте события Webhook для подтверждения удаления группы, удаления участников и изменения настроек.
Ответ 200 с кодом status: "pending" означает только то, что YCloud получил запрос. Сама операция завершится позже. Используйте соответствующее событие Webhook, чтобы узнать, завершилась ли она успешно.

Настройка вебхуков

Перед созданием группы подпишите вашу конечную точку Webhook в YCloud на следующие события: Когда YCloud отправляет событие, проверьте YCloud-Signature, сохраните событие и незамедлительно верните ответ 2xx. Затем вы можете обработать его в фоновом режиме. YCloud может отправить одно и то же событие несколько раз, а разные события могут поступать не по порядку. Используйте id события, чтобы определить доставку, которую вы уже обработали. Для операции, инициированной через API, сопоставьте Webhook с исходным запросом по requestId. Действия, инициированные участником (например, вступление или выход), могут не содержать requestId. В этом случае используйте тип события, groupId, идентификатор участника и время события.

Создание группы

Выберите режим подтверждения вступления:
Создание группы завершается асинхронно. Первый ответ лишь подтверждает, что YCloud принял запрос:
Дождитесь whatsapp.group.lifecycle_update. Успешное событие group_create содержит окончательные groupId и inviteLink.
Сохраняйте и используйте groupId точно в таком виде, в каком он появляется в событии об успехе. Он чувствителен к регистру. Не декодируйте, не изменяйте и не генерируйте его самостоятельно.

Приглашение участников

Вы можете использовать ссылку-приглашение из Webhook о создании или получить её позже с помощью эндпоинта invite-link. Сбрасывайте ссылку только тогда, когда необходимо прекратить действие всех ранее опубликованных ссылок. После сброса пользователи не смогут присоединиться по старой ссылке. Чтобы отправить ссылку через WhatsApp, сначала подготовьте одобренный шаблон приглашения. Затем отправьте этот шаблон отдельному пользователю:
Этот эндпоинт отправляет шаблонное сообщение человеку, указанному в to или recipient. Он не отправляет сообщение в группу. Если указаны оба поля, YCloud использует to.

Обработка запросов на вступление

Для группы с типом auto_approve дождитесь Webhook о добавлении участника, прежде чем сохранять пользователя в качестве участника. Для группы с типом approval_required:
  1. Получите group_join_request_created или запросите ожидающие запросы.
  2. Сохраните joinRequestId, пока запрос находится в состоянии ожидания.
  3. Отправьте каждый ID на эндпоинт одобрения или отклонения.
  4. Проверьте как успешные, так и неуспешные элементы в ответе, включая failedJoinRequests и errors.
  5. Подтвердите вступление пользователя с помощью Webhook о добавлении участника или запросив данные группы.
Пользователь может отозвать ожидающий запрос. Если одобрение завершилось ошибкой из-за того, что запрос больше не существует, обновите список ожидающих запросов вместо бесконечных повторных попыток с тем же ID.

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

Список групп и список запросов на вступление возвращают результаты постранично. Курсор — это временное значение, отмечающее вашу позицию в списке. Параметр limit управляет размером страницы, принимает значения от 1 до 1024 и по умолчанию равен 25. Передавайте after для перехода к следующей странице или before для перехода к предыдущей странице.
Не сохраняйте курсор как постоянный идентификатор. Если он недействителен или истек, начните снова с первой страницы.

Управление группой

Удаление участников

В одном запросе можно удалить до восьми участников. Перед отправкой удалите повторяющиеся идентификаторы участников. Некоторые участники могут быть удалены успешно, тогда как для других произойдет ошибка, поэтому проверяйте 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) вместе.
  • Если вы повторно получаете то же событие id, не применяйте одно и то же изменение дважды.
  • Убедитесь, что повторная обработка того же события не приводит к дублированию данных или побочным эффектам.
  • Учитывайте, что события могут повторяться или приходить не по порядку.
  • Запрашивайте данные группы повторно, если событие конфликтует с вашими текущими данными.
  • Проверяйте ошибки верхнего уровня и ошибки на уровне отдельных элементов при частичном выполнении операций.
  • Скрывайте ключи API, ссылки-приглашения, идентификаторы участников и персональные данные в общих журналах приложения.

Ошибки и устранение неполадок

API-запрос может завершиться сбоем сразу или после того, как YCloud его принял:
  • В случае мгновенного сбоя проверьте стандартный ответ об ошибке YCloud. Поле верхнего уровня error.code представляет собой общий код YCloud, такой как BAD_REQUEST или FORBIDDEN. Поле error.whatsappApiError может содержать дополнительные сведения от WhatsApp. Не определяйте логику поведения вашего приложения путем сопоставления человекочитаемого текста message.
  • Если сбой зафиксирован позже, проверьте Webhook группы. В зависимости от операции изучите whatsappGroup.errors, failedParticipants[].errors или settings[].errors.
Частые причины сбоев при переходе по ссылке-приглашению также включают сброшенную или истекшую ссылку, заполненную группу либо пользователя, ранее удаленного компанией. Не повторяйте неизмененные запросы бесконечно.

Комплексный чек-лист

Перед запуском в продакшене используйте подходящий тестовый номер телефона, чтобы выполнить этот полный сценарий:
  1. Подпишите тестовый эндпоинт Webhook на все четыре типа событий группы.
  2. Создайте группу approval_required и сохраните возвращенный requestId.
  3. Дождитесь соответствующего события group_create и сохраните его groupId и inviteLink.
  4. Отправьте одобренный шаблон приглашения тестовому пользователю.
  5. Попросите пользователя отправить запрос на вступление.
  6. Получите или запросите список запросов, затем одобрите его joinRequestId.
  7. Дождитесь события добавления участника.
  8. Запросите данные группы и убедитесь, что участник присутствует.
  9. Удалите тестового участника и подтвердите асинхронный результат.
  10. Удалите тестовую группу и подтвердите событие жизненного цикла.
Примеры в этом руководстве соответствуют текущему контракту YCloud API. Успешно пройдите этот чек-лист перед использованием интеграции в рабочей среде.

Справочник по API

Примеры Webhook

События жизненного цикла

Обработка результатов создания и удаления групп.

События участников

Обработка вступлений, запросов на вступление, удалений и ошибок на уровне участников.

События настроек

Обработка результатов обновления темы и описания.

События статуса

Обработка событий блокировки группы и снятия блокировки.