Диалог

Общайтесь с AI в своём приложении или системе поддержки: поддерживается потоковая передача ответов, а также перевод диалога на оператора, завершение и оценка.

POST /v1/chat

{
  "message": "有没有 400 美元以内的潜水表?",
  "conversation_id": null,
  "user": {"id": "u_123", "name": "李四", "email": "li@example.com", "ip": "85.214.132.117", "language": null},
  "stream": false
}
  • Если conversation_id не передан, создаётся новый диалог; он возвращается в ответе и передаётся в последующих сообщениях.
  • user передаётся вашим сервером напрямую нам (вызывающая сторона с API Key считается доверенной); только при его наличии можно искать заказы.
  • Язык ответа по умолчанию: если передан user.language (например, de, zh-CN, pt-BR), используется он; иначе передайте user.ip, и мы определим язык по местоположению; если не передано ни то, ни другое, используется язык по умолчанию из настроек. Если покупатель попросил сменить язык в ходе диалога, приоритет у его просьбы.
  • При stream: false возвращается {"conversation_id", "message", "status", "products"}; message со значением null означает, что диалог ведёт оператор и сообщение передано человеку.
  • При stream: true возвращается SSE, события — в таблице ниже.
Событие typeСодержание
user_messageСохранённое сообщение пользователя
deltaФрагмент текста ответа text, склеивается по порядку
productsКарточки товаров, найденные AI
languageПокупатель попросил сменить язык ответа, language — код нового языка
statusИзменение статуса диалога (например, перевод на оператора)
replaceПолностью заменить уже полученный ответ на text (при ошибке подставляется резервный текст)
queued_for_humanДиалог ведёт оператор, ответа AI нет
doneОкончательно сохранённое сообщение и статус диалога
errorОшибка

Другие эндпоинты

МетодПутьОписание
GET/v1/conversationsСписок диалогов, ?status=&end_user_id=
GET/v1/conversations/{id}/messagesДиалог и все его сообщения
POST/v1/conversations/{id}/messagesВаша система поддержки отвечает от имени оператора: {"content", "agent_name"}, после чего диалог переходит в статус «оператор»
POST/v1/conversations/{id}/statusДействие со стороны поддержки: {"status": "ai"} — вернуть AI, {"status": "closed"} — завершить диалог
POST/v1/conversations/{id}/closeПокупатель завершает диалог в вашем приложении; для уже завершённого диалога тоже возвращается успех
POST/v1/conversations/{id}/ratingОценка покупателя после завершения диалога: {"rating": "good" | "bad", "comment": "可选,最多 500 字"}, можно изменить

Статусы диалога: ai (отвечает AI), pending_human (ожидает оператора), human (ведёт оператор), closed (завершён).

В диалоге также есть: closed_by — кем завершён (customer — покупателем, agent — оператором, ai — AI завершил после того, как покупатель сказал, что вопросов больше нет), rating / rating_comment / rated_at — оценка покупателя.

Завершение диалога: в шапке веб-окна есть кнопка «Завершить диалог» (с подтверждением); в мини-программе WeChat диалог также завершается, если покупатель отправит «结束»; если в «Настройках бота» включено «AI автоматически завершает диалог», то когда покупатель явно говорит, что вопросов больше нет, AI прощается и завершает диалог. После завершения веб-окно предлагает покупателю оценить ответ (доволен / недоволен) и оставить комментарий, а в WeChat — ответить 1 или 2; если покупатель напишет снова, это будет новый диалог.

Распределение после перевода на оператора: в «Настройках бота» выберите способ распределения — оператору с наименьшим числом активных диалогов (по умолчанию), по очереди или оператор берёт диалог сам. Автоматическое распределение работает только для операторов, выбравших «Онлайн» и держащих страницу админки открытой; у каждого есть лимит одновременных диалогов (настраивается на странице «Команда»); если назначенный оператор не отвечает дольше заданного времени (по умолчанию 2 минуты), диалог переназначается. В диалоге assigned_member_id — назначенный оператор, assigned_at — время назначения, handoff_at — время перевода на оператора. Если все заняты, покупатели встают в очередь, и веб-окно показывает, сколько человек перед ними.

Рабочие часы и сообщения: если в «Настройках бота» включены рабочие часы, то вне их покупатель при переводе на оператора не встаёт в очередь — в веб-окне появляется форма для сообщения (имя, email или телефон, вопрос), а в WeChat и через открытый API AI предлагает покупателю оставить сообщение; то же самое, если в рабочие часы нет операторов онлайн. Сообщение создаёт тикет; когда оператор отвечает, ответ уходит в исходный диалог, если тот ещё не завершён, а если покупатель оставил email, письмо также отправляется от имени магазина. Если настроена только отправка в вашу систему (способ перевода «Отправлять в мою систему»), рабочие часы не учитываются.

Эта страница была полезной?

Обновлено: