Диалоги
Диалог (conversation) — карточка общения с одним контактом, объединяющая один или несколько тредов (переписок в конкретных каналах: WhatsApp, Telegram, Instagram и т.д.). Через эти эндпоинты вы ведёте жизненный цикл диалога — открываете и закрываете его, назначаете участников (операторов) через participants, добавляете внутренние заметки и метки, читаете единую хронологию событий (events) и тред-структуру. Большинство операций мутируют лог событий диалога, доступный через `GET /conversations/{id}/events`.
Эндпоинты
| Метод | Путь | Описание |
|---|---|---|
| GET | /v1/conversations/countersСчётчики диалогов по статусам (all/awaiting/unread/assigned/unassigned/archived). | Счётчики диалогов по статусам (all/awaiting/unread/assigned/unassigned/archived). |
| GET | /v1/conversationsСписок диалогов компании с пагинацией и фильтрами. | Список диалогов компании с пагинацией и фильтрами. |
| POST | /v1/conversationsСоздать новый диалог для контакта. | Создать новый диалог для контакта. |
| GET | /v1/conversations/{conversation}Получить диалог по id (с контактом, тредами, участниками). | Получить диалог по id (с контактом, тредами, участниками). |
| PATCH | /v1/conversations/{conversation}Обновить поля диалога (тема, статус жизненного цикла, архивация). | Обновить поля диалога (тема, статус жизненного цикла, архивация). |
| DELETE | /v1/conversations/{conversation}Удалить диалог (мягкое удаление). | Удалить диалог (мягкое удаление). |
| POST | /v1/conversations/{conversation}/closeЗакрыть диалог с обязательным комментарием. | Закрыть диалог с обязательным комментарием. |
| POST | /v1/conversations/{conversation}/openОткрыть (переоткрыть) закрытый диалог. | Открыть (переоткрыть) закрытый диалог. |
| POST | /v1/conversations/{conversation}/archiveАрхивировать диалог. | Архивировать диалог. |
| POST | /v1/conversations/{conversation}/unarchiveРазархивировать диалог. | Разархивировать диалог. |
| GET | /v1/conversations/{conversation}/participantsСписок участников диалога (операторы, команды, боты). | Список участников диалога (операторы, команды, боты). |
| POST | /v1/conversations/{conversation}/participantsДобавить участника — например назначить оператора ответственным (is_primary). | Добавить участника — например назначить оператора ответственным (is_primary). |
| DELETE | /v1/conversations/{conversation}/participants/{participant}Удалить участника из диалога (снять назначение). | Удалить участника из диалога (снять назначение). |
| GET | /v1/conversations/{conversation}/tagsСписок меток диалога. | Список меток диалога. |
| POST | /v1/conversations/{conversation}/tagsДобавить метку к диалогу. | Добавить метку к диалогу. |
| DELETE | /v1/conversations/{conversation}/tags/{tag}Снять метку с диалога. | Снять метку с диалога. |
| GET | /v1/conversations/{conversation}/notesСписок внутренних заметок по диалогу. | Список внутренних заметок по диалогу. |
| POST | /v1/conversations/{conversation}/notesДобавить внутреннюю заметку (не видна контакту). | Добавить внутреннюю заметку (не видна контакту). |
| PATCH | /v1/conversations/{conversation}/notes/{note}Изменить текст заметки. | Изменить текст заметки. |
| DELETE | /v1/conversations/{conversation}/notes/{note}Удалить заметку. | Удалить заметку. |
| GET | /v1/conversations/{conversation}/eventsХронология событий диалога (создание, комментарии, смена статуса, назначения). | Хронология событий диалога (создание, комментарии, смена статуса, назначения). |
| POST | /v1/conversations/{conversation}/eventsЗаписать событие в хронологию диалога (например комментарий оператора). | Записать событие в хронологию диалога (например комментарий оператора). |
| GET | /v1/conversations/{conversation}/threadsСписок тредов (переписок по каналам) внутри диалога. | Список тредов (переписок по каналам) внутри диалога. |
| POST | /v1/conversations/{conversation}/threadsСоздать новый тред в существующем диалоге для дополнительного канала. | Создать новый тред в существующем диалоге для дополнительного канала. |
| POST | /v1/conversations/mark-readПометить все (или указанные) диалоги компании прочитанными. | Пометить все (или указанные) диалоги компании прочитанными. |
| POST | /v1/conversations/{conversation}/mark-readПометить конкретный диалог (или тред в нём) прочитанным. | Пометить конкретный диалог (или тред в нём) прочитанным. |
Примеры
Список неназначенных диалогов
Запрос
curl -X GET "https://api.aisar.app/v1/conversations?thread_filter=unassigned&perPage=20" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"Ответ
{
"data": {
"items": [
{
"id": 15,
"company_id": 1,
"contact_id": 45,
"subject": null,
"lifecycle_status": "active",
"is_closed": false,
"is_archived": false,
"last_message_id": 1001,
"last_message_at": "2026-02-09T18:00:00Z",
"last_message": { "id": 1001, "message_content": { "text": "Здравствуйте, подскажите по заказу" }, "direction": "inbound" },
"unread_count_for_current_user": 1,
"closed_at": null,
"archived_at": null,
"created_at": "2026-02-09T17:00:00Z",
"updated_at": "2026-02-09T18:00:00Z",
"contact": { "id": 45, "displayName": "John Doe", "phones": [{ "phone": "+77001234567", "type": "mobile" }] },
"threads": [{ "id": 33, "channel_id": 3, "is_group": false }]
}
],
"pagination": { "page": 1, "perPage": 20, "total": 1, "lastPage": 1 },
"counters": { "all": 120, "awaiting": 21, "unread": 14, "assigned": 47, "unassigned": 73, "archived": 9 }
}
}Закрытие диалога
Запрос
curl -X POST "https://api.aisar.app/v1/conversations/15/close" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"comment": "Вопрос клиента решён, заказ подтверждён."
}'Ответ
{
"data": {
"message": "Conversation closed.",
"conversation": {
"id": 15,
"lifecycle_status": "closed",
"is_closed": true,
"closed_at": "2026-02-09T18:20:00Z"
}
}
}