Skip to main content
Пошаговое руководство по практическому рабочему процессу агента, ведущего беседу. Показывает, как связать вызовы API для создания функционального цикла беседы.
Это руководство проведет вас через полный, практический рабочий процесс агента, ведущего беседу. Хотя страницы основных концепций подробно описывают отдельные вызовы API, это руководство показывает, как их связать для создания функционального цикла беседы.

Основа: отправка HTML и текста

Как краткое напоминание из нашей документации сообщений, это критическая лучшая практика — всегда предоставлять как версию html, так и версию text вашего письма. Это обеспечивает читаемость на всех почтовых клиентах и значительно улучшает доставляемость.
# Всегда предоставляйте как html, так и text, когда это возможно
client.inboxes.messages.send(
    inbox_id="outreach@agentinbox.to",
    to=["potential-customer@example.com"],
    subject="Following up",
    text="Hi Jane,\n\nThis is a plain-text version of our email.",
    html="<p>Hi Jane,</p><p>This is a <strong>rich HTML</strong> version of our email.</p>",
    labels=["outreach-campaign"]
)

Цикл беседы

Распространенная задача для агента — проверить ответы во входящем ящике и затем ответить на них. Хотя использование веб-хуков является наиболее эффективным методом для этого, вы также можете создать простой механизм опроса. Вот пошаговая логика для агента-переговорщика на основе опроса.
1

1. Найдите цепь, которая требует ответа

Сначала вам нужно определить, какие беседы содержат новые сообщения, на которые ваш агент не ответил. Отличный способ управления этим — использование меток. Вы можете перечислить цепи в конкретном входящем ящике, которые имеют метку unreplied.# Find all threads in this inbox that are marked as unrepliedthreadsRes = client.threads.list( labels = ["unreplied"])if threadsRes.count == 0: print("No threads need a reply.")else: # Let's work on the first unreplied thread thread_to_reply_to = threadsRes.thread[0]
2

2. Получите ID последнего сообщения из цепи

Чтобы ответить на беседу, вам нужно ответить на самое последнее сообщение в цепи. Вы можете получить конкретную цепь по ее ID, которая будет содержать список всех ее сообщений. Затем вы возьмете ID последнего сообщения из этого списка.# Get the full thread object to access its messagesthread_details = client.threads.get(thread_to_reply_to.thread_id)# The last message in the list is the one we want to reply tolast_message = thread_details.messages[-1]message_id_to_reply_to = last_message.message_id
3

3. Отправьте ответ и обновите метки

Теперь, когда у вас есть message_id для ответа, вы можете отправить ответ вашего агента. Также рекомендуется обновить метки исходного сообщения одновременно, удалив метку unreplied и добавив метку replied, чтобы агент не ответил на одно и то же сообщение дважды.# Send the replyclient.inboxes.messages.reply( inbox_id="support@agentinbox.to", message_id=message_id_to_reply_to, text="This is our agent's helpful reply!")# Update the labels on the original messageclient.inboxes.messages.update( inbox_id="support@agentinbox.to", message_id=message_id_to_reply_to, add_labels=["replied"], remove_labels=["unreplied"])
Для производственных приложений опрос неэффективен. Лучший способ обработки входящих ответов — использование веб-хуков. Это позволяет AgentInbox уведомить вашего агента мгновенно, когда приходит новое сообщение, чтобы вы могли ответить в реальном времени.Узнайте, как настроить веб-хуки →