ConversationPart

Представляет собой реплику в диалоге (ответ от пользователя, ответ от администратора, назначение, внутренняя заметка, добавление тега и т.д.).

Стандартные поля объекта

  • id: ID
    Уникальный идентификатор реплики.

  • created: timestamp
    Дата создания реплики.

  • edited: Optional[timestamp]
    Дата последнего изменения реплики. Если не измялась - будет null.

  • removed: Optional[timestamp]
    Если реплика была удалена (например, в результате удаления пользователя по GDPR) - дата удаления. Если нет - null.

  • conversation: ID
    Если поле не включено явно, то здесь будет ID диалога, которому принадлежит реплика.

  • part_group: ID
    ID вопроса (ConversationPartGroup), в который входит данная реплика.

  • body: str
    Текст реплики, если она предполагает содержание. Иначе пустая строка.

  • body_json: Dict
    Некоторые типы реплик неудобно задавать в виде строки body. Например, поп-апы, созданные в конструкторе. Их содержимое передается в виде JSON-объекта.

  • direction: str
    Устаревшее. Лучше ориентироваться на тип реплики (поле type). Отображает направление реплики: от оператора пользователю чата или наоборот. Значения: a2u или u2a.

  • type: string
    Тип реплики. Может принимать значения:

    • reply_user - реплика пользователя чата (или пользователя через мессенджер)
    • reply_admin - реплика оператора (администратора)
    • auto_reply - автоответ, отправленный системой
    • note - заметка оператора, невидимая пользователю
    • tag_added, tag_deleted - системная реплика о добавлении/удалении тега
    • assigned - системная реплика о назначении диалога на оператора
    • closed - системная реплика о закрытии диалога
    • final_closed - устаревшее. системная реплика о том, что вопрос диалога решен
    • delayed - системная реплика о том, что диалог отложен
    • channel_changed - системная реплика о том, что изменен канал диалога
    • vote - системная реплика оценки пользователем чата диалога
    • article - реплика от оператора со статьей базы знаний
    • chat_bot_admin - реплика, созданная чат-ботом и не предполагающая действий пользователя
    • chat_bot_user - реплика, созданная чат-ботом и предполагающая действие пользователя (кнопки, поле ввода)
    • service - системная реплика с сервисным сообщением (например, из интеграции)
  • from
    В зависимости от типа реплики может содержать:

    • Идентификатор пользователя чата в случае ответа от пользователя (тип reply_user)
    • объект Admin в случае ответа от администратора (reply_admin)
    • объект MessageSender если реплика - ручное или автосообщение, имеющее отправителя
  • sent_via: str
    Через что отправлена реплика. Может принимать значения:

    • web_user - отправлено пользователем чата
    • email_user - отправлено пользователем через интеграцию с почтой
    • web_panel - отправлено оператором из панели администратора
    • email_admin - отправлено оператором через почту (как ответ на диалог)
    • app_android, app_ios, app_chrome, app_desktop - отправлено оператором через приложение Android/iOS/Chrome/Windows
    • message_auto, message_manual, message_chat_bot - отправлено как авто или ручное сообщение, или ботом
    • api - отправлено через API
    • integrations - отправлено через интеграции
    • system - отправлено нашей системой (обычно type=service)
    • auto_reply - отправлено как автоответ
    • Может содержать другие значения, например, названия конкретных интеграций
  • meta_data: Dict
    Дополнительные данные, зависящие от типа реплики. Тут могут быть отметки об оставленной оценке, выбранное действие бота и др.

  • reply_type: str
    Тип ответа, предполагаемого в ответ на эту реплику. Варианты: text, email, phone, no.

  • actions: Optional[Array[Action]]
    Массив объектов, описывающих действия, которые можно выполнять в реплике. Используется ботами для представления кнопок, полей ввода, ссылок и т. п.

  • external_id: Optional[str]
    Id реплики во внешнем сервисе, если она была отправлена через интеграцию с мессенджерами.

Опциональные поля объекта

  • conversation: Conversation
    Если поле включено явно, то вместо ID диалога будет возвращен объект Conversation.

  • assignee: Admin
    Поле возвращается только для реплики типа type="assigned". Описывает оператора, на которого назначен диалог.

  • tag: str
    Поле возвращается только для реплики типов type="tag_added" и type="tag_deleted". Название тега диалога, с которым произведено действие.

  • channel: ID / 0
    Поле возвращается только для реплики типа type="channel_changed". ID канала, в который перемещен диалог. 0 означает, что канал был убран.

  • inbound_email: ID
    ID объекта InboundEmail, описывающего оригинал письма при получении реплики через интеграцию с почтой. Возвращается только для реплик, отправленных через интеграцию.

  • read: boolean
    Прочтена реплика пользователем или нет. Не отправляется для реплик, отправляемых операторами или системой, в целях избежания путаницы (кто прочитал реплику).

  • first: boolean
    Является ли реплика первой в диалоге Conversation. Не возвращается для не первой реплики.

  • attachments: Array[Attachment] Массив объектов Attachment - вложений, приложенных к реплике. Возвращается только при наличии приложений.

  • random_id: str
    Это поле служит фронтенду для сопоставления реплики, пришедшей через Realtime services и возвращенной в запросе создания реплики. Приходит только в случае, если объект возвращается запросом на создание реплики и в параметрах запроса был указан random_id.

Пример

{
  "id": 2030901,
  "created": 1436620221,
  "first": true,
  "conversation": 1882298,
  "body": "Hello",
  "from": {
    ...
  },
  "read": false,
  "type": "reply_django_user",
  "sent_via": "web_panel",
  "inbound_email": 123,
  "attachments": [{
    ...
  }]
}