Ответить в диалоге

Этот метод позволяет отвечать в диалоге и добавлять внутренние заметки.

URL

POST https://api.carrotquest.io/conversations/{id}/reply

В качестве {id} нужно использовать ID диалога.

Параметры

Параметры аутентификации.
Параметр id_as_string.
Параметры, включающие опциональные поля объекта ConversationPart.

Параметр Тип Описание
body Optional[строка] Текст сообщения. Может быть не задан, если сообщение содержит только приложение без текста (например, картинку). По умолчанию, пустая строка
body_json Optional[Dict] Дополнительные данные с контентом сообщения в формате json. Зависят от типа создаваемой реплики
attachment Optional[File] Файл приложения к реплике.
attachment_file_name Optional[строка] Название файла-приложения для вывода в чате. Строка от 1 до 255 символов.
from_user Optional[ID] Укажите default_user в случае отправки сообщения от пользователя на сайте или ID пользователя вашего сайта
from_admin Optional[ID/default_admin] Укажите ID администратора в случае ответа от администратора или default_admin для отправки от имени дефолтного отправителя сайта
type Optional[строка] Тип реплики. Допустимы типы reply_admin, note, article. При отправке от имени пользователя (from_user) параметр игнорируется. По умолчанию: reply_admin
external_id Optional[строка] Id сообщения во внешнем сервисе
random_id Optional[integer] Случайное целое число, чтобы сопостовлять создаваемое сообщение с репликой из RTS. По умолчанию, 0
auto_assign Optional[ID] ID администратора. Перед ответом автоматически назначить диалог администратору с этим ID
auto_assign_random_id Optional[integer] Случайный ID ConversationPart о назначении для контроля отправки. По умолчанию: 0
referrer Optional[строка] URL страницы, с которой написано сообщение. По умолчанию не задан.

Замечания

Чтобы контролировать, от чьего имени будет отправлено сообщение, используйте параметры from_admin и from_user.
Чтобы указать тип сообщения (обычный ответ reply_admin, заметка note или статья базы знаний article), задайте type.

Чтобы перед ответом автоматически назначить диалог на того или иного администратора, можно указать его ID в поле auto_assign. При этом будет создано 2 реплики, а не одна: системная реплика назначения на оператора и основная реплика.

random_id и auto_assign_random_id используются для сопоставления реплики, пришедшей через Realtime services. Вы можете записать сюда случайное 32-битное число, которое придет в поле random_id объекта ConversationPart, созданного этим запросом. В этом случае нельзя использовать ID реплики, поскольку Realtime services работают асинхронно и сообщение туда может прийти раньше, чем вы получите ответ на запрос создания реплики. А может и наоборот. Порядок не определен.

Ответ

Поле data будет содержать созданные реплики (объекты ConversationPart):

  • основная реплика будет возвращена как базовое содержимое data
  • реплика назначения будет возвращена в поле data.assign_part (если был указан параметр auto_assign)

Пример:

{
  "data": {
    "id": "1453279698921457472",
    "created": 1685352440,
    "conversation": "1447294760057308402",
    "body": "",
    "body_json": {},
    "direction": "u2a",
    "type": "reply_user",
    "sent_via": "api",
    "attachments": [
      {
        "type": "file",
        "id": "1453279691052943108",
        "filename": "test_import.csv",
        "mime_type": "text/csv",
        "size": 156,
        "url": "https://files.carrotquest.app/attachments/2782/2e7cac55-dff0-4142-9460-14d64ff08623/test_import.csv",
        "created": 1685352439
      }
    ],
    "meta_data": {},
    "reply_type": "no",
    "actions": null,
    "edited": null,
    "removed": null,
    "external_id": null,
    "part_group": "1447294760216691955",
    "from": "1447294708215711734",
    "assign_part": {
      "id": "1453281238935668443",
      "created": 1685352624,
      "conversation": "1447294760057308402",
      "body": "",
      "body_json": {},
      "direction": "a2u",
      "type": "assigned",
      "sent_via": "api",
      "meta_data": {},
      "reply_type": "no",
      "actions": null,
      "edited": null,
      "removed": null,
      "external_id": null,
      "part_group": "1447294760216691955",
      "assignee": {
        "id": "30542",
        "name": "Test",
        "avatar": "https://files.carrotquest.app/avatars/default-v4.png",
        "type": "admin"
      },
      "from": {
        "id": "30542",
        "name": "Test",
        "avatar": "https://files.carrotquest.app/avatars/default-v4.png",
        "type": "admin"
      }
    }
  },
  "meta": {
    "status": 200
  }
}

Ошибки

Стандартные ошибки Web API.

Ошибки данного метода

Ошибка Код Описание
ReplyTooBig 400 Слишком длинный текст реплики (body)

Примеры

Ответить от имени администратора и назначить диалог на него (ID администратора 8164):

curl -X POST \
  --data-urlencode "body=Some Admin Message" \
  --data-urlencode "from_admin=8164" \
  --data-urlencode "auto_assign=8164" \
  -H "Authorization: Token XXX" \
  https://api.carrotquest.io/conversations/1789152/reply

Ответить от имени пользователя на сайте:

curl -X POST \
  --data-urlencode "body=Some User Message" \
  --data-urlencode "from_user=default_user" \
  -H "Authorization: Token XXX" \
  https://api.carrotquest.io/conversations/1789152/reply

Добавить заметку от имени администратора (ID администратора 8164):

curl -X POST \
  --data-urlencode "body=Some Admin Message" \
  --data-urlencode "from_admin=8164" \
  --data-urlencode "type=note" \
  -H "Authorization: Token XXX" \
  https://api.carrotquest.io/conversations/1789152/reply