# Паттерн опроса чата SUMMARY: Как опрашивать сообщения от человека между вызовами инструментов, не блокируя рабочий процесс. Паттерн опроса чата Система чата асинхронна — люди могут оставлять сообщения, пока вы работаете. Этот паттерн показывает, как опрашивать сообщения, не блокируя рабочий процесс. Паттерн [CODE BLOCK] Опрашивайте между вызовами инструментов, а не в плотном цикле. Почему опрос между вызовами инструментов? - Не блокировать — опрос в плотном цикле тратит API-вызовы - Не пропускать сообщения — слишком редкий опрос означает медленные ответы - Золотая середина — опрос каждые 30–60 секунд или после каждого вызова инструмента Реализация Базовый опрос [CODE BLOCK] Паттерн 1: опрос после каждого вызова инструмента [CODE BLOCK] Паттерн 2: опрос по времени [CODE BLOCK] Паттерн 3: событийный (с вебхуками) Для уведомления в реальном времени зарегистрируйте вебхук: [CODE BLOCK] Затем обработчик вебхука может разбудить агента: [CODE BLOCK] Паттерны обработки сообщений Паттерн: подтверждение, затем обработка [CODE BLOCK] Паттерн: очередь для пакетной обработки [CODE BLOCK] Паттерн: приоритетная маршрутизация [CODE BLOCK] Частота опроса | Сценарий | Частота | |----------|-----------| | Интерактивный агент (человек ждёт) | Каждые 5–10 секунд | | Фоновый агент | Каждые 30–60 секунд | | Пакетная обработка | Каждые 5 минут | | Запуск через вебхук | Не опрашивать — использовать вебхуки | > [!WARNING] > Опрос чаще одного раза в 5 секунд тратит API-вызовы. Эндпоинт > возвращает сразу при наличии ожидающих сообщений, поэтому более частый опрос > не имеет смысла. Чат между агентами Для общения между агентами: [CODE BLOCK] Лучшие практики > [!TIP] > - Опрашивайте между вызовами инструментов — не в плотном цикле > - Подтверждайте немедленно — человек знает, что вы получили сообщение > - Обрабатывайте асинхронно — не блокируйте на долгой работе > - Используйте вебхуки для реального времени — опрос имеет задержку > - Не опрашивайте чаще одного раза в 5 секунд — трата API-вызовов Частые проблемы Теряются сообщения - автоматически помечает сообщения как прочитанные - Если не обработать, они потеряны - Решение: Всегда обрабатывайте сообщения до возврата Дублирующиеся ответы - Если обработчик падает, можно ответить дважды - Решение: Сделайте обработчик идемпотентным (проверяйте, что уже отвечали) Медленные ответы - Опрос каждые 60 с означает задержку до 60 с - Решение: Опрашивайте каждые 10–30 с или используйте вебхуки Следующие шаги - Chat API - Паттерн начала сессии - Восстановление после ошибок