Библиотека · Ассистенты и боты в мессенджерах

AI-мессенджеры — Telegram, Slack, WhatsApp и Teams на автопилоте

Строитель65 минОбновлено: октябрь 2026
56 из 105 в библиотеке

Время: ~25 мин теории + 40 мин практики


Суть урока

Мессенджеры — это уже не чаты. Это полноценные бизнес-платформы: продажи, поддержка, онбординг, командная работа. Проблема одна — всё это требует живых людей, которые устают, болеют и уходят в отпуск. AI меняет уравнение. В этом уроке строим умных ботов для Telegram, Slack, WhatsApp и Microsoft Teams: клиент пишет → Claude анализирует → отвечает за секунды → если сложно → эскалирует менеджеру.

🎨 Образ: Идеальный менеджер сообщества — не спит, отвечает мгновенно, помнит каждого клиента, ведёт 500 разговоров одновременно. Это не человек. Это AI-бот в твоём мессенджере.


Ключевые концепции

  • Telegram Bot API — официальный интерфейс для ботов; python-telegram-bot — стандарт на Python
  • Webhook vs Polling — два способа получать сообщения: webhook быстрее и дешевле в продакшне
  • Slack Bolt SDK — официальный SDK: события, шорткаты, slash-команды в одном месте
  • WhatsApp Business API — три пути: Twilio (надёжный), 360dialog (специализированный), Meta Cloud API (прямой)
  • Microsoft Teams — уведомления через webhook в приложении Workflows и официальный Teams MCP от Microsoft (preview)
  • ManyChat — no-code конструктор сценариев для личных сообщений (Instagram, WhatsApp, Messenger, Telegram и др.)
  • Unified Messaging Hub — одна точка входа для всех каналов; Claude триажирует и маршрутизирует
  • Escalation logic — когда бот отвечает сам, когда передаёт живому человеку

Теория

Каждый мессенджер — для какого бизнеса

🎨 Образ: Мессенджеры как торговые точки в разных частях города. Telegram — деловой квартал, Slack — корпоративный офисный центр, WhatsApp — районный рынок где все знают друг друга, Teams — штаб-квартира крупной компании.

Мессенджер Аудитория Лучшее для Сложность
Telegram RU/СНГ, IT, блогеры Сообщества, контент, лиды, продажи Низкая
Slack Команды, SaaS, B2B Внутренние процессы, уведомления, DevOps Средняя
WhatsApp Латамерика, Европа, глобально Клиентская поддержка, малый бизнес Средняя
Teams Корпоративный B2B Enterprise клиенты, интеграция с O365 Высокая

Правило выбора: иди туда, где уже есть твоя аудитория. Не создавай новый канал — встраивайся в существующий.


Telegram Bot: от нуля до умного ассистента

Шаг 1: Создание бота

Напиши /newbot в @BotFather → введи имя и username → получи токен. Этот токен = доступ к управлению ботом.

Шаг 2: Базовая интеграция с Claude

python
import os
import logging
from telegram import Update
from telegram.ext import (
    Application, CommandHandler, MessageHandler,
    filters, ContextTypes
)
import anthropic
from dotenv import load_dotenv

load_dotenv()

claude = anthropic.Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])
BOT_TOKEN = os.environ["TELEGRAM_BOT_TOKEN"]

# Хранение истории разговора в памяти
# В продакшне замени на Redis или SQLite
conversation_history: dict[int, list] = {}

SYSTEM_PROMPT = """Ты AI-ассистент агентства недвижимости Acme Realty.
Отвечаешь на вопросы о недвижимости в Эквадоре: цены, районы, процесс покупки.
Тон: дружелюбный эксперт, не продажник.
Если вопрос требует консультации менеджера — скажи об этом явно и предложи оставить контакт.
Отвечай кратко: 1–3 предложения если вопрос простой, до 5 абзацев если сложный.
Язык: русский."""


async def cmd_start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    """Команда /start — приветствие нового пользователя."""
    user = update.effective_user
    await update.message.reply_text(
        f"Привет, {user.first_name}! 👋\n\n"
        "Я помогу с вопросами о недвижимости в Куэнке, Эквадор. "
        "Спросите о ценах, районах, процессе покупки — отвечу мгновенно.\n\n"
        "Если нужна личная консультация — просто скажите."
    )


async def cmd_contact(update: Update, context: ContextTypes.DEFAULT_TYPE):
    """Команда /contact — сбор контактных данных."""
    await update.message.reply_text(
        "Оставьте ваш email или телефон для обратной связи, "
        "и менеджер свяжется с вами в течение 2 часов в рабочее время."
    )
    # В реальном боте здесь ConversationHandler для получения и сохранения контакта


async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
    """Основной обработчик входящих сообщений."""
    user_id = update.effective_user.id
    user_text = update.message.text

    # Инициализируем историю если первое сообщение
    if user_id not in conversation_history:
        conversation_history[user_id] = []

    # Добавляем сообщение пользователя
    conversation_history[user_id].append({
        "role": "user",
        "content": user_text
    })

    # Ограничиваем историю: последние 10 сообщений
    if len(conversation_history[user_id]) > 10:
        conversation_history[user_id] = conversation_history[user_id][-10:]

    # Показываем "печатает..." для хорошего UX
    await context.bot.send_chat_action(
        chat_id=update.effective_chat.id,
        action="typing"
    )

    # Запрос к Claude (актуальные модели: страница «Актуальное сейчас»)
    response = claude.messages.create(
        model="claude-sonnet-5-5",
        max_tokens=1024,
        system=SYSTEM_PROMPT,
        messages=conversation_history[user_id]
    )

    assistant_reply = "".join(b.text for b in response.content if b.type == "text")

    # Сохраняем ответ в историю
    conversation_history[user_id].append({
        "role": "assistant",
        "content": assistant_reply
    })

    await update.message.reply_text(assistant_reply)


async def handle_error(update: object, context: ContextTypes.DEFAULT_TYPE):
    """Логируем ошибки."""
    logging.error("Exception while handling update:", exc_info=context.error)


def main():
    app = Application.builder().token(BOT_TOKEN).build()

    app.add_handler(CommandHandler("start", cmd_start))
    app.add_handler(CommandHandler("contact", cmd_contact))
    app.add_handler(MessageHandler(
        filters.TEXT & ~filters.COMMAND, handle_message
    ))
    app.add_error_handler(handle_error)

    print("Telegram bot запущен (polling mode)...")
    app.run_polling(allowed_updates=Update.ALL_TYPES)


if __name__ == "__main__":
    main()

Telegram: четыре главных паттерна бота

1. FAQ-бот — отвечает на типовые вопросы о продукте, ценах, доставке. System prompt содержит всю базу знаний. Берёт на себя типовые вопросы и снимает заметную часть нагрузки со службы поддержки.

2. Квалификатор лидов — задаёт серию вопросов новому пользователю (бюджет, сроки, задачи), определяет "температуру" лида и либо предлагает встречу, либо отправляет в nurture-цепочку.

3. Бот записи на встречу — интегрируется с Calendly через API, предлагает свободные слоты и создаёт бронирование прямо в чате. Клиент не покидает Telegram.

4. Контент-паблишер — Claude генерирует пост по расписанию, бот публикует в канал. Планирование контента на неделю занимает 20 минут один раз в понедельник.


Slack: автоматизация командных процессов

Slack с Bolt SDK — это не просто чат. Это платформа для умных командных ботов.

Типичные сценарии:

  • Standup-резюме: бот собирает ответы из опроса, Claude форматирует сводку → постит в канал
  • PR-уведомления: когда открывается Pull Request, Claude читает diff и пишет краткое резюме изменений
  • Задачи через команду: /task Сделать лендинг → Claude создаёт задачу в Notion/Linear → возвращает ссылку
  • @mention-ответы: бот "слушает" каналы и отвечает при обращении через @упоминание
python
from slack_bolt import App
from slack_bolt.adapter.socket_mode import SocketModeHandler
import anthropic
import os

app = App(token=os.environ["SLACK_BOT_TOKEN"])
claude = anthropic.Anthropic()


@app.event("app_mention")
def handle_mention(event, say):
    """Отвечает когда к боту обращаются через @mention."""
    user_text = event["text"]

    # Убираем @упоминание бота из текста
    clean_text = user_text.split(">", 1)[-1].strip() if ">" in user_text else user_text

    response = claude.messages.create(
        model="claude-sonnet-5-5",
        max_tokens=512,
        system="Ты ассистент команды разработки. Отвечай кратко и конкретно.",
        messages=[{"role": "user", "content": clean_text}]
    )

    say(f"<@{event['user']}> {''.join(b.text for b in response.content if b.type == 'text')}")


@app.command("/standup")
def handle_standup(ack, say, command):
    """
    /standup — генерирует форму стендапа.
    Пользователь заполняет, бот собирает ответы и делает резюме.
    """
    ack()
    say({
        "blocks": [
            {
                "type": "section",
                "text": {
                    "type": "mrkdwn",
                    "text": f"*Стендап {command['user_name']}*\n"
                            "Ответь на три вопроса:"
                }
            },
            {
                "type": "input",
                "block_id": "done",
                "element": {
                    "type": "plain_text_input",
                    "action_id": "done_input",
                    "placeholder": {"type": "plain_text", "text": "Что сделал вчера?"}
                },
                "label": {"type": "plain_text", "text": "Сделано"}
            }
        ]
    })


@app.command("/summarize")
def handle_summarize(ack, say, command):
    """
    /summarize [текст] — суммаризирует длинное сообщение.
    Полезно для больших PR-описаний или документов в каналах.
    """
    ack()
    text_to_summarize = command.get("text", "")

    if not text_to_summarize:
        say("Укажи текст после команды: `/summarize [твой текст]`")
        return

    response = claude.messages.create(
        model="claude-haiku-4-5",
        max_tokens=300,
        messages=[{
            "role": "user",
            "content": f"Суммаризируй этот текст в 3–5 пунктах:\n\n{text_to_summarize}"
        }]
    )

    say(f"📋 *Краткое содержание:*\n{''.join(b.text for b in response.content if b.type == 'text')}")


if __name__ == "__main__":
    handler = SocketModeHandler(app, os.environ["SLACK_APP_TOKEN"])
    print("Slack bot запущен...")
    handler.start()

WhatsApp Business API: самый большой охват

WhatsApp — один из самых массовых мессенджеров в мире, им пользуются миллиарды людей. Для бизнесов в Латинской Америке и Европе — часто единственный предпочитаемый канал.

Учти правила Meta: с 15 января 2026 Meta не пускает в WhatsApp Business Platform AI-ассистентов общего назначения (вроде ChatGPT); для отдельных стран есть исключения. Бот, который отвечает клиентам твоего собственного бизнеса, — другой случай, но перед запуском сверь действующие правила WhatsApp Business и условия своего провайдера.

Три пути подключения:

Провайдер Плюсы Минусы Цена
Twilio Надёжный, документация отличная Платите и провайдеру, и Meta по тарифу Twilio + сборы Meta
360dialog Специализируется на WhatsApp Меньше документации по тарифу 360dialog + сборы Meta
Meta Cloud API Прямой доступ, без наценки провайдера Сложная верификация бизнеса только сборы Meta

С 1 июля 2025 Meta берёт плату за каждое доставленное шаблонное сообщение (зависит от категории сообщения и страны получателя); ответы клиенту внутри окна обслуживания бесплатны. Актуальные ставки смотри на странице Meta и у своего провайдера.

Код через Twilio + Claude:

python
from flask import Flask, request
from twilio.twiml.messaging_response import MessagingResponse
from twilio.rest import Client
import anthropic
import os

app = Flask(__name__)
twilio_client = Client(
    os.environ["TWILIO_ACCOUNT_SID"],
    os.environ["TWILIO_AUTH_TOKEN"]
)
claude = anthropic.Anthropic()

# История разговоров (в продакшне: Redis с TTL 24h)
wa_conversations: dict[str, list] = {}

WA_SYSTEM = """Ты AI-ассистент компании в WhatsApp.
Отвечай кратко (WhatsApp — не email).
Если вопрос требует менеджера — скажи: 'Передаю вас специалисту, ожидайте ответа в течение часа.'
Будь дружелюбным, но профессиональным."""


@app.route("/webhook/whatsapp", methods=["POST"])
def whatsapp_webhook():
    """Обрабатывает входящие сообщения WhatsApp."""
    from_number = request.form.get("From", "")
    body = request.form.get("Body", "").strip()

    if not body:
        return str(MessagingResponse())

    # История разговора
    if from_number not in wa_conversations:
        wa_conversations[from_number] = []

    wa_conversations[from_number].append(
        {"role": "user", "content": body}
    )

    # Ограничиваем контекст последними 8 сообщениями
    history = wa_conversations[from_number][-8:]

    # Claude генерирует ответ
    response = claude.messages.create(
        model="claude-sonnet-5-5",
        max_tokens=512,
        system=WA_SYSTEM,
        messages=history
    )

    reply = "".join(b.text for b in response.content if b.type == "text")

    wa_conversations[from_number].append(
        {"role": "assistant", "content": reply}
    )

    # Если Claude передаёт менеджеру — уведомляем внутри компании
    if "специалисту" in reply.lower() or "передаю" in reply.lower():
        notify_manager(from_number, body, reply)

    # Отвечаем пользователю
    resp = MessagingResponse()
    resp.message(reply)
    return str(resp)


def notify_manager(customer_number: str, question: str, bot_reply: str):
    """Уведомляем менеджера в Telegram когда бот не может помочь."""
    import requests
    telegram_token = os.environ.get("TELEGRAM_BOT_TOKEN")
    manager_chat = os.environ.get("MANAGER_TELEGRAM_CHAT_ID")

    if not telegram_token or not manager_chat:
        return

    message = (
        f"🔔 *Эскалация из WhatsApp*\n\n"
        f"Клиент: `{customer_number}`\n"
        f"Вопрос: {question}\n\n"
        f"Бот ответил: {bot_reply[:200]}..."
    )
    requests.post(
        f"https://api.telegram.org/bot{telegram_token}/sendMessage",
        json={
            "chat_id": manager_chat,
            "text": message,
            "parse_mode": "Markdown"
        }
    )


if __name__ == "__main__":
    app.run(port=5001, debug=False)

Microsoft Teams: корпоративный канал

Если твои клиенты — корпорации, они работают в Teams. Два сценария:

Сценарий 1: Webhook-уведомления в Teams канал

Самый простой способ — приложение Workflows в Teams (работает на Power Automate): оно выдаёт адрес, на который можно отправить запрос с сообщением. Старые Incoming Webhook на коннекторах Office 365 Microsoft выводит из эксплуатации, поэтому новые уведомления настраивай через Workflows.

python
import requests
import json
import os

TEAMS_WEBHOOK_URL = os.environ["TEAMS_WEBHOOK_URL"]


def send_teams_notification(title: str, message: str,
                             color: str = "0078D4",
                             facts: list[dict] = None) -> bool:
    """
    Отправляет карточку-уведомление в Teams канал через webhook-адрес из Workflows.
    Workflows принимает и MessageCard, и Adaptive Card: формат проверь в тестовом канале.
    color: hex-цвет боковой полосы (0078D4 = синий Microsoft)
    facts: список {"name": "...", "value": "..."} для таблицы данных
    """
    card = {
        "@type": "MessageCard",
        "@context": "http://schema.org/extensions",
        "themeColor": color,
        "summary": title,
        "sections": [{
            "activityTitle": title,
            "activityText": message,
        }]
    }

    if facts:
        card["sections"][0]["facts"] = facts

    response = requests.post(
        TEAMS_WEBHOOK_URL,
        headers={"Content-Type": "application/json"},
        data=json.dumps(card)
    )
    return response.ok   # любой успешный ответ (200, 202)


# Пример: уведомление о новой сделке
def notify_deal_closed(client_name: str, amount: float,
                        property_address: str) -> None:
    """Уведомление в Teams канал продаж при закрытии сделки."""
    send_teams_notification(
        title="🎉 Новая сделка закрыта!",
        message=f"Агент подписал договор с клиентом.",
        color="00B050",   # зелёный
        facts=[
            {"name": "Клиент", "value": client_name},
            {"name": "Сумма", "value": f"${amount:,.0f}"},
            {"name": "Объект", "value": property_address},
        ]
    )

Как настроить webhook в Teams через Workflows:

  1. В Teams → Канал → ⋯ (троеточие) → Workflows
  2. Выбери шаблон «Send webhook alerts to a channel» (отправлять уведомления из webhook в канал)
  3. Задай параметры и сохрани
  4. Скопируй webhook-адрес → сохрани в переменную окружения

Сценарий 2: Teams MCP от Microsoft

У Microsoft есть официальный MCP-сервер для Teams (входит в Microsoft Agent 365, статус preview). Он позволяет агенту читать чаты и каналы, публиковать сообщения и отвечать в ветках. Это размещённый сервер, а не пакет для установки через npx: подключение настраивает администратор организации (регистрация приложения в Microsoft Entra и выдача прав), а названия инструментов в preview могут меняться. Актуальные инструменты и схема подключения: документация Microsoft. Какие MCP-клиенты поддерживаются, проверь в той же документации.

Когда что использовать:

  • Webhook через Workflows — уведомления от бизнес-процессов (CRM, деплой, сделки). Быстро, без регистрации приложения.
  • Teams MCP — интерактивный агент, который читает и отвечает в каналах. Требует регистрации приложения в Entra и прав администратора.

ManyChat: когда не нужен код

Для предпринимателей без программирования — ManyChat. Визуальный конструктор сценариев для личных сообщений: Instagram, Messenger, WhatsApp, TikTok, Telegram.

Что умеет ManyChat:

  • Визуальные цепочки сообщений с условиями (if/else без кода)
  • Интеграция с Google Sheets, Zapier, Make
  • Сегментация аудитории по тегам
  • A/B тестирование сообщений
  • Broadcast для рассылок

ManyChat + Claude через Zapier: Свои AI-функции у ManyChat зависят от тарифа, а подключить именно Claude обычно проще через Zapier: ManyChat → Webhook → Zapier → Claude API → ответ обратно в ManyChat. Немного сложнее, зато без кода.


Unified Messaging Hub: одна система для всех каналов

🎨 Образ: Диспетчерская служба такси. Все звонки — в один центр. Диспетчер распределяет машины. Unified Hub — твоя диспетчерская для сообщений из всех каналов.

python
from flask import Flask, request, jsonify
import anthropic
import json
import os

app = Flask(__name__)
claude = anthropic.Anthropic()

ROUTING_SYSTEM = """Ты роутер клиентских сообщений. Анализируй запрос и верни JSON:
{
  "intent": "faq|lead|complaint|consultation|other",
  "urgency": "low|medium|high",
  "language": "ru|es|en",
  "should_escalate": true|false,
  "suggested_response": "краткий ответ если intent=faq"
}"""


def route_message(message: str, channel: str, user_id: str) -> dict:
    """
    Анализирует входящее сообщение и определяет маршрут.
    channel: telegram|whatsapp|slack|teams
    """
    response = claude.messages.create(
        model="claude-haiku-4-5",   # Haiku для роутинга — быстро и дёшево; проверьте, что модель ещё доступна
        max_tokens=256,
        system=ROUTING_SYSTEM,
        messages=[{
            "role": "user",
            "content": f"Канал: {channel}\nСообщение: {message}"
        }]
    )

    try:
        return json.loads("".join(b.text for b in response.content if b.type == "text"))
    except json.JSONDecodeError:
        return {
            "intent": "other",
            "urgency": "medium",
            "language": "ru",
            "should_escalate": False,
            "suggested_response": ""
        }


@app.route("/hub/incoming", methods=["POST"])
def unified_incoming():
    """
    Единая точка входа для сообщений из всех каналов.
    Каждый источник (Telegram bot, WhatsApp webhook, Slack event)
    отправляет сообщение сюда в стандартизированном формате.
    """
    data = request.json
    channel = data.get("channel", "unknown")
    user_id = data.get("user_id", "")
    message = data.get("message", "")

    # 1. Роутинг через Claude Haiku (дёшево и быстро)
    routing = route_message(message, channel, user_id)

    # 2. Логика обработки по интенту
    if routing["should_escalate"]:
        # Передаём живому менеджеру
        escalate_to_manager(channel, user_id, message, routing)
        reply = "Я передаю ваш вопрос специалисту. Ответим в течение 1 часа."

    elif routing["intent"] == "faq" and routing["suggested_response"]:
        # Используем готовый ответ из роутинга
        reply = routing["suggested_response"]

    else:
        # Полный ответ через Claude Sonnet
        response = claude.messages.create(
            model="claude-sonnet-5-5",
            max_tokens=512,
            system="Ты дружелюбный помощник. Отвечай на языке клиента.",
            messages=[{"role": "user", "content": message}]
        )
        reply = "".join(b.text for b in response.content if b.type == "text")

    return jsonify({
        "reply": reply,
        "routing": routing,
        "channel": channel
    })


def escalate_to_manager(channel: str, user_id: str,
                         message: str, routing: dict) -> None:
    """Уведомляет менеджера через Telegram."""
    bot_token = os.environ.get("TELEGRAM_BOT_TOKEN")
    manager_chat = os.environ.get("MANAGER_TELEGRAM_CHAT_ID")
    if not bot_token or not manager_chat:
        return

    import requests
    requests.post(
        f"https://api.telegram.org/bot{bot_token}/sendMessage",
        json={
            "chat_id": manager_chat,
            "text": (
                f"🔔 *Эскалация*\n"
                f"Канал: {channel} | Пользователь: `{user_id}`\n"
                f"Срочность: {routing.get('urgency', '?')}\n"
                f"Сообщение: {message[:300]}"
            ),
            "parse_mode": "Markdown"
        }
    )


if __name__ == "__main__":
    app.run(port=5002, debug=False)

Монетизация: продажа ботов клиентам

Это отдельная услуга. Малый бизнес нуждается в ботах, но не знает как их создать.

Типичные пакеты и из чего складывается цена:

Пакет Что входит Из чего складывается цена
FAQ-бот базовый Telegram бот, 20–50 вопросов в базе знаний часы на настройку и наполнение базы знаний; обслуживание: правки промпта и мониторинг
Квалификатор лидов Telegram + интеграция с CRM часы на интеграцию с CRM; обслуживание: проверка передачи лидов
WhatsApp бот WhatsApp Business API + Claude настройка и верификация бизнеса; обслуживание + сборы Meta и провайдера
Полная система Все каналы + CRM + Unified Hub + аналитика суммарные часы по всем каналам + расходы на хостинг и токены

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


Практика

Задание: Telegram AI-ассистент + webhook в Teams за 5 шагов

Шаг 1: Создай Telegram бота (10 мин)

  1. @BotFather → /newbot → имя → username → токен
  2. Создай проект:
bash
mkdir ai-messenger-bot && cd ai-messenger-bot
python -m venv venv && source venv/bin/activate
pip install python-telegram-bot anthropic python-dotenv flask requests
  1. Создай .env:
bash
TELEGRAM_BOT_TOKEN=ваш_токен
ANTHROPIC_API_KEY=sk-ant-...
TEAMS_WEBHOOK_URL=https://...  # добавим на шаге 3
MANAGER_TELEGRAM_CHAT_ID=ваш_chat_id

Шаг 2: Адаптируй code под свою нишу (10 мин)

Скопируй handle_message() из теории. Измени SYSTEM_PROMPT: опиши свой бизнес или нишу клиента. Запусти:

bash
python bot.py

Найди бота в Telegram по username → отправь /start → задай 7–10 вопросов как клиент. Оцени качество — доработай system prompt если нужно.

Шаг 3: Настрой webhook в Teams (5 мин)

  1. В своём Teams (или попроси у клиента): Канал → ⋯ → Workflows → шаблон «Send webhook alerts to a channel»
  2. Дай имя "AI Assistant Bot" и сохрани
  3. Скопируй webhook-адрес → добавь в .env как TEAMS_WEBHOOK_URL
  4. Запусти тест:
python
from dotenv import load_dotenv
load_dotenv()
notify_deal_closed("Иван Петров", 85000, "ул. Ларга 45, Куэнка")

Проверь Teams канал — должна появиться карточка.

Шаг 4: Добавь эскалацию в Telegram (5 мин)

Скопируй функцию notify_manager() из раздела WhatsApp. Интегрируй в Telegram бот: когда пользователь пишет "хочу с менеджером" или "позвоните мне" — Claude возвращает флаг эскалации и ты уведомляешь себя.

Шаг 5: Задокументируй как кейс (5 мин)

  • Скриншот разговора с ботом
  • Скриншот Teams уведомления
  • Описание: для какого бизнеса, какую проблему решает
  • Расчёт стоимости для клиента (setup + обслуживание)
  • Добавь в портфолио

Бонусное задание:

Добавь команду /contact в Telegram бот. Когда пользователь её вызывает — бот просит email/телефон, сохраняет в Google Sheet через gspread библиотеку и уведомляет тебя в Telegram. Это твой первый конвертер лидов.


Инструменты и ресурсы

  • python-telegram-bot — стандарт для Telegram ботов на Python, бесплатно
  • Slack Bolt SDK — официальный SDK для Slack-приложений, бесплатный
  • Twilio WhatsApp — WhatsApp Business API, цены на сайте Twilio
  • 360dialog — специализированный WhatsApp API, тарифы на сайте
  • Meta Cloud API — прямой доступ к WhatsApp, сложная верификация, тарифы Meta
  • ManyChat — no-code конструктор сценариев для личных сообщений, актуальные тарифы и условия на сайте
  • Teams: webhook через Workflows — уведомления в Teams без отдельного бота
  • ngrok — публичный URL для разработки, есть бесплатный тариф
  • Redis / Upstash — хранение истории разговоров, есть бесплатный уровень

Ключевые выводы

Мессенджер без AI-бота — как сайт без формы обратной связи: клиент пришёл, никого нет, клиент ушёл. Бот ловит обращения, которые иначе пропали бы.

Хорошо настроенный Telegram-бот берёт на себя типовые вопросы и освобождает операторов для сложных. Стоимость токенов за обычный диалог — малая доля стоимости рабочего времени человека, но посчитай её для своего объёма. Актуальные цены и версии: Актуальное сейчас.

Продавать ботов клиентам можно как продукт, а не только как разовую работу: основа переиспользуется, а под нишу меняются system prompt и брендинг. Сколько это принесёт, зависит от твоего рынка и ниши, гарантий нет.


Дальше по теме

→ No-code AI — v0, Webflow AI и Framer для предпринимателей

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