Одобрение вступления в группу WhatsApp: включение и отключение через API
Чтобы включить или отключить одобрение вступления в группу WhatsApp через UnifyPort, отправьте POST /v1/accounts/{account_id}/groups/join-approval-mode с group_id и обязательным булевым полем enabled. Значение true включает требование одобрения, false отключает его. Это изменение настройки группы, а не массовое одобрение или отклонение ожидающих заявок.
Главное
- Изменение настройки должно быть явным действием администратора, а не побочным эффектом открытия очереди заявок.
- Передавайте JSON boolean, а не строку
"false", пропущенное значение флажка или самостоятельно придуманный переключатель. - Сейчас операция поддерживает
whatsapp, но не отдельный провайдерwhatsapp-protocolи не другие каналы. - Храните желаемую настройку, результат API и последующую проверку отдельно.
Сначала выберите действие: настройка или решение по заявке
В официальном описании управления группами WhatsApp Meta объясняет, как администраторы контролируют вступление при распространении ссылки-приглашения или открытии доступа к группе из сообщества. Настройка платформы и программа для рассмотрения заявок — разные уровни.
| Намерение оператора | Нужная операция |
|---|---|
| Требовать одобрения новых участников | Установить enabled: true |
| Отключить требование одобрения | Установить enabled: false |
| Принять или отклонить выбранные заявки | Отдельная операция обновления заявок |
| Получить URL приглашения | Чтение ссылки-приглашения |
Для решений по отдельным людям используйте руководство по очереди заявок WhatsApp. Для распространения приглашений — сравнение чтения и сброса ссылки. Ни один из этих процессов не должен незаметно менять правила вступления.
Сделайте явную форму включения и отключения
Справочник режима одобрения определяет group_id и обязательный boolean enabled. Матрица действий провайдеров ограничивает эту операцию WhatsApp. UnifyPort предоставляет неофициальный интерфейс подключённого аккаунта обмена сообщениями; это не запрос к WhatsApp Cloud API.
Выбирайте аккаунт и группу вместе. Получайте идентификатор через список групп, а не определяйте цель только по названию. Проверьте, что подключённый аккаунт является уполномоченным администратором группы, а ваше приложение разрешает этому оператору менять правила вступления. Ключ API рабочего пространства сам по себе не даёт прав администратора группы.
Рекомендуемое поведение формы:
- Показывать выбранный аккаунт и группу на экране подтверждения.
- Требовать явного выбора: включить или отключить одобрение.
- Сохранять неизвестное текущее состояние как неизвестное, а не отображать его как «выключено».
- Отправлять значение только после подтверждения, без записи при загрузке страницы или обновлении очереди.
- Сохранять
falseпри проверке и сериализации: проверка на truthiness может случайно отбросить значение отключения.
В публичном примере чтения группы поле режима одобрения не описано. Не придумывайте свойство ответа для предварительного заполнения формы. Если документированного чтения текущего значения нет, попросите администратора проверить настройку в WhatsApp, а локальное значение подпишите как «последняя запрошенная настройка».
Отправьте одно подтверждённое изменение
Ниже — пример серверного JavaScript с реальными полями запроса. Он не запускался в рамках этой статьи и намеренно не содержит автоматических повторов:
export async function setJoinApproval({ apiKey, accountId, groupId, enabled }) {
if (!apiKey || !accountId || !groupId || typeof enabled !== 'boolean') {
throw new Error('Account, group, credential and boolean choice required');
}
const response = await fetch(
`https://api.unifyport.ai/v1/accounts/${encodeURIComponent(accountId)}/groups/join-approval-mode`,
{
method: 'POST',
headers: { 'X-Api-Key': apiKey, 'Content-Type': 'application/json' },
body: JSON.stringify({ group_id: groupId, enabled })
}
);
const requestId = response.headers.get('X-Request-Id');
const body = await response.json();
return { httpStatus: response.status, requestId, body };
}
Храните ключ на сервере. Имена возвращаемых значений httpStatus, requestId и body относятся к приложению, а не являются новыми полями API. Документированный успешный ответ — 200 OK с data.ok: true. Сначала сохраните требуемое булево значение и результат, затем показывайте успех. Вызывающий код должен обрабатывать сетевые ошибки и ошибки разбора JSON. Отсутствие ответа означает неопределённость, а не «отключено».
Последовательно выполняйте изменения для одной пары аккаунт–группа внутри приложения. Если первый оператор запросил включение, а второй позже — отключение, запоздалый повтор первого запроса может вернуть устаревший выбор. Локальная блокировка или проверка ревизии — мера вашего приложения, не документированная возможность условной записи upstream API. Администраторы всё ещё могут менять настройку независимо через WhatsApp.
Проверяйте настройку отдельно от ожидающих заявок
Пустой список заявок не доказывает, что одобрение отключено: возможно, никто не ждёт. Событие group.join_request сообщает о заявке, а не подтверждает изменение настройки. Публичный контракт событий не обещает отдельный callback подтверждения режима одобрения.
После включения попросите администратора проверить настройку и проведите контролируемый тест приглашения до широкого распространения ссылки. Для модерации продолжайте опрашивать список заявок на вступление: документация прямо указывает, что push-сигналы доставляются по принципу best-effort.
Перед отключением просмотрите незавершённые заявки и назначьте ответственного за последующую сверку. Контракт настройки не определяет влияние отключения на существующие заявки. Не утверждайте, что оно принимает всех, отклоняет всех, удаляет текущих участников или сбрасывает ссылки. Для индивидуальных решений используйте отдельные операции модерации.
При тайм-ауте сохраните желаемое значение и диагностические сведения, проверьте настройку в WhatsApp и заново подтвердите решение перед повторной отправкой. Не отправляйте противоположное значение автоматически в качестве «отката»: другой администратор уже мог изменить политику.
Частые вопросы
Можно ли опустить enabled, чтобы ничего не менять?
Нет. Для этой операции обязателен boolean. Если изменение не нужно, не вызывайте её.
enabled=false отклоняет всех ожидающих?
Это не документировано. Отключение настройки и обработка существующих заявок — отдельные задачи.
Может ли обработчик модерации включать одобрение при каждом опросе?
Не следует. Опрос наблюдает состояние, а настройка политики является административной записью. Разделение не позволяет фоновому обработчику отменять осознанный выбор администратора.
Поддерживается ли операция для Telegram или LINE?
Согласно текущей матрице UnifyPort — нет. Общий формат маршрута не означает поддержку всех каналов.
Следующий шаг и источники
Реализуйте форму по справочнику настройки одобрения вступления. Проверьте оба булевых значения, отклонение строк, неизвестное начальное состояние, одновременные противоположные изменения и потерю ответа. Это рекомендуемые проверки, а не результаты проведённого тестирования.
Источники проверены 2026-11-02:
Превратите интеграцию сообщений в стабильный продуктовый pipeline.
Начните с отправки через единый API, затем возвращайте входящие сообщения в бизнес-систему стандартными событиями.