Вау! Создайте интеграцию с WhatsApp. Начните бесплатно. Регистрация
WhatsApp API

Ученик выходит из группы WhatsApp, когда доступ кончается

Ученики перестают видеть уроки в чате группы, когда их доступ заканчивается. Когда доступ к курсу кончается, ваш бэкенд может проверить, что ученик ещё в группе, и удалить его через Whapi.Cloud. Этот сценарий показывает интеграторам, как собрать такой поток через WhatsApp API.

Запускает ваш бэкенд или платёжный вебхук Id группы WhatsApp уже сохранён
Телефон со списком участников учебной группы WhatsApp в момент, когда доступ ученика закончился.
Сценарий

Когда нужен этот поток

Место на курсе — это группа WhatsApp

Используйте этот поток, когда ученики сидят в группе WhatsApp и место, которое вы забираете, — это членство в этой группе.

Id группы WhatsApp уже сохранён

Используйте этот поток, когда id группы WhatsApp уже сохранён и вы только проверяете, что ученик ещё в списке.

Конец доступа приходит из ваших систем

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

Телефон с карточкой группы WhatsApp, где бывшего ученика уже нет в списке участников.
Опыт клиента

Ученика больше нет в группе

До автоматизации ученики с истёкшим доступом остаются в группе, видят уроки и чат, платный контент утекает, а поддержка получает жалобы.

Когда доступ заканчивается, ученика больше нет в учебной группе WhatsApp. Интеграторы собирают этот результат через WhatsApp API.

Поток

От конца доступа к удалению из группы

1

Доступ к курсу закончился

Ваш бэкенд или платёжный вебхук сообщает, что доступ этого ученика закончился, и называет группу WhatsApp, в которой он был.

2

Проверьте, что ученик в списке

GET /groups/{GroupID}

getGroup возвращает группу и её участников по сохранённому id, чтобы вы сопоставили ученика до удаления.

3

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

DELETE /groups/{GroupID}/participants

removeGroupParticipant удаляет найденного участника. Передайте тот же id группы и этот id контакта в participants.

Что нужно заранее

Перед запуском потока

Номер WhatsApp, подключённый к каналу, и удаляет ученика. Каждый запрос использует API-токен этого номера. Канал должен быть авторизован, а номеру нужно право удалять участника.

Дополнительно — глубже по этому потоку

Реализация API

Сначала подтвердите ученика, затем удалите его

Доступ к курсу уже закончился вне Whapi.Cloud. Прочитайте сохранённую группу, чтобы убедиться, что ученик ещё участник, и затем удалите его из группы.

Получите API-токен бесплатно после регистрации на whapi.cloud и подставьте его в код вместо Your_Token из примеров.

Проверьте, что ученик в списке

Прочитайте сохранённую группу и её участников, чтобы сопоставить ученика до удаления.

curl --request GET \
     --url https://gate.whapi.cloud/groups/GROUP_ID \
     --header 'accept: application/json' \
     --header 'authorization: Bearer Your_Token'
$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://gate.whapi.cloud/groups/GROUP_ID",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
    "accept: application/json",
    "authorization: Bearer Your_Token"
  ],
]);

$response = curl_exec($curl);
curl_close($curl);
echo $response;
import requests

url = "https://gate.whapi.cloud/groups/GROUP_ID"
headers = {
    "accept": "application/json",
    "authorization": "Bearer Your_Token",
}

response = requests.get(url, headers=headers)
print(response.text)
const url = 'https://gate.whapi.cloud/groups/GROUP_ID';

const response = await fetch(url, {
  method: 'GET',
  headers: {
    accept: 'application/json',
    authorization: 'Bearer Your_Token',
  },
});

console.log(await response.text());
OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .url("https://gate.whapi.cloud/groups/GROUP_ID")
  .get()
  .addHeader("accept", "application/json")
  .addHeader("authorization", "Bearer Your_Token")
  .build();

Response response = client.newCall(request).execute();
using RestSharp;

var options = new RestClientOptions("https://gate.whapi.cloud/groups/GROUP_ID");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("authorization", "Bearer Your_Token");
var response = await client.GetAsync(request);

Console.WriteLine("{0}", response.Content);
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://gate.whapi.cloud/groups/GROUP_ID", nil)
	req.Header.Set("accept", "application/json")
	req.Header.Set("authorization", "Bearer Your_Token")

	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()
	out, _ := io.ReadAll(res.Body)
	fmt.Println(string(out))
}

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

Удалите найденного участника, чтобы его больше не было в группе курса.

curl --request DELETE \
     --url https://gate.whapi.cloud/groups/GROUP_ID/participants \
     --header 'accept: application/json' \
     --header 'authorization: Bearer Your_Token' \
     --header 'content-type: application/json' \
     --data '
{
  "participants": ["12345678901"]
}'
$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://gate.whapi.cloud/groups/GROUP_ID/participants",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "DELETE",
  CURLOPT_POSTFIELDS => "{\"participants\":[\"12345678901\"]}",
  CURLOPT_HTTPHEADER => [
    "accept: application/json",
    "authorization: Bearer Your_Token",
    "content-type: application/json"
  ],
]);

$response = curl_exec($curl);
curl_close($curl);
echo $response;
import requests

url = "https://gate.whapi.cloud/groups/GROUP_ID/participants"
payload = {"participants": ["12345678901"]}
headers = {
    "accept": "application/json",
    "authorization": "Bearer Your_Token",
    "content-type": "application/json",
}

response = requests.delete(url, json=payload, headers=headers)
print(response.text)
const url = 'https://gate.whapi.cloud/groups/GROUP_ID/participants';

const response = await fetch(url, {
  method: 'DELETE',
  headers: {
    accept: 'application/json',
    authorization: 'Bearer Your_Token',
    'content-type': 'application/json',
  },
  body: JSON.stringify({
    participants: ['12345678901'],
  }),
});

console.log(await response.text());
OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"participants\":[\"12345678901\"]}");
Request request = new Request.Builder()
  .url("https://gate.whapi.cloud/groups/GROUP_ID/participants")
  .delete(body)
  .addHeader("accept", "application/json")
  .addHeader("authorization", "Bearer Your_Token")
  .addHeader("content-type", "application/json")
  .build();

Response response = client.newCall(request).execute();
using RestSharp;

var options = new RestClientOptions("https://gate.whapi.cloud/groups/GROUP_ID/participants");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("authorization", "Bearer Your_Token");
request.AddHeader("content-type", "application/json");
request.AddStringBody("{\"participants\":[\"12345678901\"]}", DataFormat.Json);
var response = await client.DeleteAsync(request);

Console.WriteLine("{0}", response.Content);
package main

import (
	"fmt"
	"io"
	"net/http"
	"strings"
)

func main() {
	body := strings.NewReader(`{"participants":["12345678901"]}`)
	req, _ := http.NewRequest("DELETE", "https://gate.whapi.cloud/groups/GROUP_ID/participants", body)
	req.Header.Set("accept", "application/json")
	req.Header.Set("authorization", "Bearer Your_Token")
	req.Header.Set("content-type", "application/json")

	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()
	out, _ := io.ReadAll(res.Body)
	fmt.Println(string(out))
}
Когда шаг ломается

Разберите сбои на каждом шаге

После конца доступа ученик может остаться в группе, если группы нет, участник не найден или вызов API не прошёл. Повторите этот шаг или отправьте алерт команде.

Доступ кончился, а ученик всё ещё в группе?

Группы может не быть, участник может не найтись или вызов может упасть. Повторите удаление или отправьте алерт команде, чтобы ученик не продолжал видеть группу. Клиенты часто отмечают, что поддержка отвечает. Не стесняйтесь попросить помощь.

Напишите в поддержку, если что-то пошло не так

Разбор по шагу API

Код Что это значит Что делать
400 Wrong request parameters
404 Specified group not found
500 Internal Error
Код Что это значит Что делать
400 Wrong request parameters
401 Need channel authorization for remove participant
403 You do not have permissions for this action
404 Specified group or participant not found
500 Internal Error
Вопросы

Вопросы операторов

Повторите удаление или отправьте алерт команде. Группы может не быть, участник может не найтись или вызов API мог не пройти. Не считайте ученика удалённым, пока этот шаг не прошёл.
Нет. Результат в том, что ученика больше нет в группе WhatsApp. Поток читает участников этой группы и удаляет одного человека.
Нет. Id группы WhatsApp уже сохранён. getGroup подтверждает, что ученик среди участников. Затем removeGroupParticipant удаляет этого участника.
Нет. Этот поток запускается, когда доступ к курсу кончается, и ветка — удаление из группы. Он не принимает заявку и не отправляет ссылку-инвайт.
Это решает ваш бэкенд или платёжный вебхук. Whapi.Cloud удаляет участника после этого события. Сервис не решает, что курс закончился.
Поддерживаемые функции WhatsApp

Всё, что нужно для создания автоматизации WhatsApp

Whapi.Cloud предоставляет доступ к полному набору функций WhatsApp — сообщениям, медиа, группам, каналам, вебхукам и не только. Создавайте ботов, автоматизации и интеграции без функциональных ограничений.

Выбор разработчиков

Нам доверяют 3 300+ разработчиков и SaaS-команд

Разработчики по всему миру используют Whapi.Cloud для создания автоматизаций, ботов, CRM-интеграций, массовых рассылок и продвинутых WhatsApp-воркфлоу. Наша инфраструктура обрабатывает миллионы API-запросов с высокой стабильностью — и этот показатель растёт каждый месяц.

Иконка функции

5,5K+

активных API-каналов

Иконка функции

21M+

API-запросов в месяц

«Всё просто, интуитивно и легко. Документация понятная, и вся нужная информация всегда под рукой. Отличная работа.»

Roberto K. / Web-разработчик

«Мы подключили WhatsApp к нашим процессам через n8n всего за несколько минут. Без кода, без сложностей — всё заработало с первого раза.»

Martin P. / Разработчик

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

Oscar T. / CTO

Декоративный пузырь