Создание ясновидящего чат‑бота для WhatsApp

Создание «ясновидящего» – чат‑бота, который отвечает на вопросы пользователей предсказаниями, гаданиями или советами – стало популярным способом развлечь друзей и подписчиков в мессенджерах. Ниже представлен пошаговый гайд, как реализовать такого бота в WhatsApp, используя официальный WhatsApp Business API и современные инструменты обработки естественного языка (NLP).


Содержание

  1. Подготовка окружения и получение доступа к API
  2. Проектирование диалоговой логики
  3. Выбор и настройка модели NLP
  4. Развёртывание бота на сервере
  5. Тестирование и отладка
  6. Юридические и этические аспекты
  7. Полезные советы и улучшения

Подготовка окружения и получение доступа к API

Для работы с WhatsApp необходим официальный WhatsApp Business API. Вот что нужно сделать:

  • Зарегистрировать бизнес‑аккаунт в Facebook Business Manager.
  • Получить одобрение от WhatsApp (проверка компании, верификация номера телефона).
  • Выбрать хостинг провайдера (например, Twilio, MessageBird, 360dialog) или развернуть собственный сервер с использованием официального whatsapp-business-api Docker‑образа.
  • Настроить вебхуки для получения входящих сообщений и отправки ответов.
  • Получить тестовый номер ( sandbox ) для отладки перед запуском в продакшн.

Пример минимальной конфигурации вебхука на Node.js:

const express = require('express');
const app = express;
app.use(express.json);

app.post('/webhook', (req, res) => {
 const msg = req.body.entry[0].changes[0].value.messages[0];
 const from = msg.from; // номер отправителя
 const text = msg.text.body; // текст сообщения

 // Здесь будет логика бота
 const reply = generateFortune(text);

 // Отправляем ответ через API
 sendWhatsAppMessage(from, reply);
 res.sendStatus(200);
});

app.listen(3000,  => console.log('Webhook listening on port 3000'));

Проектирование диалоговой логики

Прежде чем писать код, продумайте, как будет выглядеть диалог:

  • Приветствие – короткое сообщение с инструкцией («Напиши свой вопрос, и я посмотрю в будущее…»)
  • Получение запроса – пользователь пишет вопрос или тему (любовь, работа, здоровье).
  • Обработка намерения – определить, относится ли сообщение к гаданию или требуется уточнение.
  • Генерация ответа – сформировать предсказание (можно использовать готовые шаблоны или нейросеть).
  • Завершение сессии – предложить задать ещё один вопрос или попрощаться.

Для простоты можно реализовать конечный автомат с тремя состояниями: GREETING, WAITING_FOR_QUESTION, ANSWERING.


Выбор и настройка модели NLP

Чтобы бот выглядел «ясновидящим», нужно понимать смысл вопроса и подбирать подходящий ответ. Есть несколько подходов:

  1. Rule‑based (правила) – простые шаблоны и ключевые слова. Подходит для демо‑версии.
  2. Классификация намерений – обучить модель (например, Rasa NLU или Dialogflow) распознавать категории: love, career, health, general.
  3. Генерация текста – использовать небольшую языковую модель (GPT‑2, GPT‑Neo, или локальную модель типа ruGPT3) для создания мистических предсказаний.

Пример использования transformers (Python) для генерации ответа:

from transformers import AutoTokenizer, AutoModelForCausalLM
import torch

tokenizer = AutoTokenizer.from_pretrained("sberbank-ai/rugpt3small_based_on_gpt2")
model = AutoModelForCausalLM.from_pretrained("sberbank-ai/rugpt3small_based_on_gpt2")

def generate_fortune(prompt: str) -> str:
 input_ids = tokenizer.encode(f"Вопрос: {prompt}
Ответ:", return_tensors="pt")
 output = model.generate(
 input_ids,
 max_length=100,
 temperature=0.8,
 top_p=0.9,
 do_sample=True,
 pad_token_id=tokenizer.eos_token_id
 )
 text = tokenizer.decode(output[0], skip_special_tokens=True)
 # Извлекаем только часть после "Ответ:"
 return text.split("Ответ:")[-1].strip

Для повышения «мистичности» можно добавить в промпт фразы вроде:

«Ты древний оракул, отвечай загадочно, используя символы и метафоры».


Развёртывание бота на сервере

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

  • Выбор платформы: Heroku, Render, Railway, VPS (Ubuntu/Docker) или облачные функции (AWS Lambda, Google Cloud Functions).
  • Контейнеризация (рекомендуется): упаковать приложение в Docker‑образ, чтобы обеспечить одинаковое окружение.
  • Переменные окружения: хранить токены API, ключи доступа к модели и другие секреты в .env файле или в системе секретов провайдера.
  • Масштабирование: при росте числа пользователей можно добавить несколько инстансов и балансировщик нагрузки.

Пример Dockerfile для Python‑бота:

FROM python:3.11-slim

WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

ENV PORT=8080
EXPOSE 8080

CMD ["python", "bot.py"]

Тестирование и отладка

Перед запуском в продакшн проведите несколько этапов тестирования:

  1. Сandbox‑режим – отправляйте тестовые сообщения с официального номера WhatsApp Sandbox и проверяйте ответы.
  2. Юнит‑тесты – проверяйте функции классификации намерений и генерации текста.
  3. Нагрузочное тестирование – смоделировать одновременные запросы (например, с помощью locust или k6) чтобы убедиться, что сервис выдерживает нагрузку.
  4. Обратная связь от реальных пользователей – запустите закрытый бета‑тест с друзьями или коллегами, соберите замечания о точности и «мистичности» ответов.

Если ответы кажутся слишком шаблонными, попробуйте увеличить разнообразие обучающих данных или добавить случайные элементы (например, выбор из списка мистических фраз).


При работе с предсказаниями важно помнить о следующих моментах:

  • Отказ от ответственности – явно указывайте, что ответы носят развлекательный характер и не являются профессиональными советами (юридическими, медицинскими, финансовыми и т.д.).
  • Конфиденциальность данных – не сохраняйте личную информацию пользователей без их согласия; соблюдайте GDPR и местные законы о защите данных.
  • Запрещённый контент – избегайте генерации ответов, которые могут содержать дискриминацию, угрозы, ложную информацию о здоровье или другие вредные материалы.
  • Политика WhatsApp – соблюдайте Условия использования WhatsApp Business API; рассылка спама или нежелательных сообщений приводит к блокировке аккаунта.

Рекомендуется разместить короткое disclaimer в приветственном сообщении:

«Я – виртуальный оракул. Мои ответы предназначены только для развлечения и не заменяют профессиональную консультацию.»


Полезные советы и улучшения

  • Персонализация – используйте имя пользователя (если он представился) для более личного ответа.
  • Мультимедиа – дополняйте текстовые предсказания изображениями таро, астрологическими картами или короткими аудио‑записями с «мистическим» голосом.
  • Аналитика – подключите логирование запросов и ответов (без личных данных) чтобы выявлять популярные темы и улучшать модель.
  • Обратная связь – добавьте кнопки «Нравится» / «Не нравится» (через интерактивные сообщения) для быстрой оценки качества ответов.
  • Регулярное обновление модели – периодически дообучайте модель на новых данных, чтобы предсказания оставались свежими и интересными.

Следуя этим шагам, вы сможете создать собственного «ясновидящего» в WhatsApp, который будет удивлять друзей загадочными предсказаниями, оставаясь при этом безопасным и соответствующим правилам платформы. Удачной разработки и мистических диалогов!