MAATRIX / Блог / VPS для WhatsApp-бота: официальный Cloud API

VPS для WhatsApp-бота: официальный Cloud API

Блог MAATRIX · 2026-07-07

WhatsApp-бот отличается от Telegram: платформа работает через официальный Cloud API от Meta, а вебхукам нужен публичный HTTPS-адрес. Разберём правильный путь: приём вебхуков за nginx с TLS, проверка подписи и честно — о рисках неофициальных библиотек.

Официальный Cloud API против неофициальных обёрток

['У WhatsApp два пути. Первый — официальный WhatsApp Cloud API от Meta: вы регистрируете приложение, получаете номер и токен, платите за диалоги по тарифам Meta. Второй — неофициальные библиотеки, эмулирующие WhatsApp Web (например, на базе веб-клиента).', 'Второй путь дешевле и проще на старте, но нарушает условия WhatsApp: номер могут заблокировать в любой момент без предупреждения. Для бизнеса это неприемлемо. Ниже — путь через официальный Cloud API.', '
  • Cloud API — легально, стабильно, но платно по диалогам.
  • Неофициальные обёртки — риск бессрочного бана номера.
  • Вебхуки — WhatsApp требует публичный HTTPS-эндпоинт.
']

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.

Арендовать VPS для WhatsApp-бота

Что потребуется от VPS

['Для Cloud API боту нужен публичный домен с валидным TLS-сертификатом — Meta шлёт вебхуки только на HTTPS. Значит, на VPS ставим веб-сервер, домен и certbot.', "
sudo apt update && sudo apt install -y nginx python3-venv git ufw certbot python3-certbot-nginx\nsudo ufw allow OpenSSH\nsudo ufw allow 'Nginx Full'\nsudo ufw enable
", 'Направьте A-запись домена на IP сервера и выпустите сертификат:', '
sudo certbot --nginx -d bot.example.com
']

Приём вебхука на Flask

['Cloud API требует два обработчика: GET для верификации эндпоинта и POST для входящих сообщений. Минимальный сервер на Flask:', '
python3 -m venv ~/wa/.venv && source ~/wa/.venv/bin/activate\npip install flask requests gunicorn
', "
from flask import Flask, request\nimport os\napp = Flask(__name__)\nVERIFY = os.environ['VERIFY_TOKEN']\n\n@app.get('/webhook')\ndef verify():\n    if request.args.get('hub.verify_token') == VERIFY:\n        return request.args.get('hub.challenge'), 200\n    return 'forbidden', 403\n\n@app.post('/webhook')\ndef incoming():\n    data = request.get_json()\n    # разбор data['entry'][0]['changes'][0]['value']['messages']\n    print(data)\n    return 'ok', 200
", 'Запускаем через gunicorn на localhost, наружу проксирует nginx:', '
gunicorn -w 2 -b 127.0.0.1:8000 app:app
']

nginx как reverse proxy

['nginx принимает HTTPS от Meta и проксирует на gunicorn. certbot уже добавил TLS-блок; добавьте location для вебхука:', '
server {\n    listen 443 ssl;\n    server_name bot.example.com;\n    location /webhook {\n        proxy_pass http://127.0.0.1:8000;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n    }\n    # ssl_certificate ... (добавлено certbot)\n}
', '
sudo nginx -t && sudo systemctl reload nginx
']

Отправка сообщений и проверка подписи

['Ответ пользователю — POST-запрос к graph.facebook.com с токеном Cloud API:', '
curl -s -X POST \\\n  "https://graph.facebook.com/v20.0/${PHONE_NUMBER_ID}/messages" \\\n  -H "Authorization: Bearer ${WA_TOKEN}" \\\n  -H \'Content-Type: application/json\' \\\n  -d \'{"messaging_product":"whatsapp","to":"79001234567","type":"text","text":{"body":"Привет из бота"}}\'
', 'Обязательно проверяйте подпись входящих вебхуков заголовком X-Hub-Signature-256 — иначе кто угодно сможет слать вам фейковые события.', "
import hmac, hashlib\ndef valid(body: bytes, sig: str, secret: str) -> bool:\n    mac = hmac.new(secret.encode(), body, hashlib.sha256).hexdigest()\n    return hmac.compare_digest('sha256=' + mac, sig)
"]

Где брать сервер и частые ошибки

['WhatsApp-боту нужен стабильный сервер с белым IP и валидным TLS — на нём держится доставка вебхуков. На тарифах MAATRIX это AMD EPYC + NVMe от $8/мес, root-доступ для nginx и certbot, локации UK и США для стабильного доступа к Graph API. Ежедневные бэкапы сохранят конфиг и токены. Оплата картой РФ, СБП, криптой или токеном MAAT.', '
  • Неофициальная библиотека — риск бессрочного бана бизнес-номера.
  • Вебхук без TLS — Meta не подключит эндпоинт; сертификат обязателен.
  • Нет проверки подписи — приём поддельных событий.
  • Медленный ответ на POST — Meta ретраит вебхук; отвечайте 200 сразу, обработку выносите в очередь.
']

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.

Арендовать VPS для WhatsApp-бота

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

Можно ли сделать WhatsApp-бота бесплатно?

Сам сервер и код — да, но Cloud API от Meta тарифицирует диалоги. Часть сервисных сообщений бесплатна, платные диалоги считаются по прайсу Meta для вашего региона.

Почему не взять библиотеку на WhatsApp Web?

Она нарушает условия WhatsApp: номер могут заблокировать без предупреждения и без возврата. Для бизнеса используйте официальный Cloud API.

Обязателен ли домен для WhatsApp-бота?

Да. Cloud API доставляет вебхуки только на публичный HTTPS-адрес с валидным сертификатом, поэтому домен и TLS необходимы.