Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
POST /public/api/v1/chats/channel/send/support HTTP/1.1
Host: dev.iqstore.ru
Connection: keep-alive
Content-Length: 65
Origin: http://dev.iqstore.ru
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36
Content-Type: application/json
Authorization: Client 973b38b354a508bf13244b2655077895c78f1e86.aaaa7e84433b0901c502a5f7d38c71ee

{"LocalId":1518171256447,"Payload":"text","Text":"Привет!"}

Типы данных

Response

...

true – успешный ответ
false – ошибка

...

Пример успешного пустого ответа:

Code Block
{
  "OK": true,
  "Error": null,
  "Result": null,
  "Rels": null
}

Пример успешного ответа с данными и графом зависимых объектов:

Code Block
{
  "OK": true,
  "Error": null,
  "Result": [
    {
      "Id": 504,
      "ChatId": 10,
      "EventId": 3614,
      "Author": "user",
      "UserId": 12,
      "Payload": "text",
      "Text": "Добрый день!",
      "CreatedAt": 1500970393387,
    }
  ],
  "Rels": {
    "Users": [
      {
        "Id": 12,
        "Name": "Оператор",
        "Email": "operator@iqstore.ru",
        "CreatedAt": 1500970142322,
        "UpdatedAt": 1507204200866
      }
    ]
  }
}

Пример ответа с ошибкой:

Code Block
{
  "OK": false,
  "Error": {
    "Code": "not_found",
    "Text": "Объект не найден"
  }
}

ActorType

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

...

Chat

...

ChatMessage

...

Дата создания.

...

ChatMessagePayloadType

Перечисление типов сообщений в чате.

...

ChatEvent

Событие в чате.

...

ChatEventType

Перечисление типов событий в чате.

...

Client

...

File

...

Тип владельца файла:

  • public — Публичный файл, виден всем.
  • client — Файл в чате клиента.

...

FileType

Перечисление типов файла

...

User

...

Сервисы

Клиенты

Информация о текущем клиенте

...

Пример ответа:

Code Block
{
  "OK": true,
  "Error": null,
  "Result": {
    "Id": 11,
    "ProjectId": 1,
    "CompanyId": 2,
    "Type": "crm",
    "Name": "Дмитрий Менделеев",
    "Online": true,
    "CustomerId": 5,
    "ChannelId": null,
    "TelegramId": null,
    "FacebookId": null,
    "VKId": null,
    "TotalTickets": 2,
    "TotalOpenTickets": 1,
    "CreatedAt": 1498085866873,
    "UpdatedAt": 1518167008390,
    "SeenAt": 1518167008390,
    "MessagedAt": null,
    "IntegrationId": "10"
  },
  "Rels": {}
}


Авторизация пользователя по сессии

...

ПолеТипОбязательноеКомментарий
TokenstringДаТокен внутренний сессии на сервере чата

...

Пример запроса:

Code Block
{"Token": "e71539abc4e000626c34bf981892b9acf84b84ed.f23e085bdd5d2b46e87b36fd79654727"}

Пример ответа:

Code Block
{
  "OK": true,
  "Error": null,
  "Result": {
    "Client": {
      "Id": 11,
      "ProjectId": 1,
      "CompanyId": 2,
      "Type": "crm",
      "Name": "Дмитрий Менделеев",
      "Online": true,
      "CustomerId": 5,
      "ChannelId": null,
      "TelegramId": null,
      "FacebookId": null,
      "VKId": null,
      "TotalTickets": 2,
      "TotalOpenTickets": 1,
      "CreatedAt": 1498085866873,
      "UpdatedAt": 1518167109406,
      "SeenAt": 1518167109406,
      "MessagedAt": null,
      "IntegrationId": "10"
    },
    "Session": {
      "Id": 92,
      "ClientId": 11,
      "Token": "e71539abc4e000626c34bf981892b9acf84b84ed.f23e085bdd5d2b46e87b36fd79654727",
      "CreatedAt": 1518164878551,
      "Integration": false,
      "IntegrationHash": null,
      "IntegrationCredentials": null
    }
  },
  "Rels": {}
}

Регистрация анонимного пользователя

...

ПолеТипОбязательноеКомментарий
NamestringДаИмя клиента

...

Пример запроса:

Code Block
{"Name": "John Doe"}

Пример ответа:

Code Block
{
  "OK": true,
  "Error": null,
  "Result": {
    "Client": {
      "Id": 18,
      "ProjectId": 1,
      "CompanyId": null,
      "Type": "internal",
      "Name": "John Doe",
      "Online": false,
      "CustomerId": null,
      "ChannelId": null,
      "TelegramId": null,
      "FacebookId": null,
      "VKId": null,
      "TotalTickets": 0,
      "TotalOpenTickets": 0,
      "CreatedAt": 1518167345813,
      "UpdatedAt": 1518167345813,
      "SeenAt": null,
      "MessagedAt": null,
      "IntegrationId": null
    },
    "Session": {
      "Id": 94,
      "ClientId": 18,
      "Token": "9f0ccd578394c9ef56c660de0f6c4614cbfe9a35.a07b3b3359e0d3943e074656dcda5d28",
      "CreatedAt": 1518167345815,
      "Integration": false,
      "IntegrationHash": null,
      "IntegrationCredentials": null
    }
  },
  "Rels": {}
}

Регистрация анонимного пользователя в проекте

...

ПолеТипОбязательноеКомментарий
NamestringДаИмя клиента
ProjectstringДаНазвание проекта на английском

...

Пример запроса:

Code Block
{"Name": "John Doe", "Project": "retail"}

Пример ответа:

Code Block
{
  "OK": true,
  "Error": null,
  "Result": {
    "Client": {
      "Id": 18,
      "ProjectId": 1,
      "CompanyId": null,
      "Type": "internal",
      "Name": "John Doe",
      "Online": false,
      "CustomerId": null,
      "ChannelId": null,
      "TelegramId": null,
      "FacebookId": null,
      "VKId": null,
      "TotalTickets": 0,
      "TotalOpenTickets": 0,
      "CreatedAt": 1518167345813,
      "UpdatedAt": 1518167345813,
      "SeenAt": null,
      "MessagedAt": null,
      "IntegrationId": null
    },
    "Session": {
      "Id": 94,
      "ClientId": 18,
      "Token": "9f0ccd578394c9ef56c660de0f6c4614cbfe9a35.a07b3b3359e0d3943e074656dcda5d28",
      "CreatedAt": 1518167345815,
      "Integration": false,
      "IntegrationHash": null,
      "IntegrationCredentials": null
    }
  },
  "Rels": {}
}

Авторизация клиента через внешнюю систему

Например, авторизация клиента, информация о котором есть в ДБО или CRM.

...

ПолеТипОбязательноеКомментарий
CredentialsstringДаЛюбая безопасная строка, по которой внешняя система сможет авторизовать пользователя.

...

Пример запроса:

Code Block
{"Credentials": "super-secure-token"}

Пример ответа:

Code Block
{
  "OK": true,
  "Error": null,
  "Result": {
    "Client": {
      "Id": 1,
      "ProjectId": 1,
      "CompanyId": null,
      "Type": "crm",
      "Name": "Мартин Лютер Кинг",
      "Online": false,
      "CustomerId": 7,
      "ChannelId": null,
      "TelegramId": null,
      "FacebookId": null,
      "VKId": null,
      "TotalTickets": 15,
      "TotalOpenTickets": 0,
      "CreatedAt": 1491678852327,
      "UpdatedAt": 1517989811064,
      "SeenAt": 1516117515977,
      "MessagedAt": null,
      "IntegrationId": "1"
    },
    "Session": {
      "Id": 95,
      "ClientId": 1,
      "Token": "cd0f8d5b81358ec76db6aa50ec0424d7fd4fccc7.da3df153848575972de2e8b3ca187f2f",
      "CreatedAt": 1518167539961,
      "Integration": false,
      "IntegrationHash": null,
      "IntegrationCredentials": null
    }
  },
  "Rels": {}
}

Авторизация клиента через внешнюю систему в проекте

Например, авторизация клиента, информация о котором есть в ДБО или CRM.

...

ПолеТипОбязательноеКомментарий
CredentialsstringДаЛюбая безопасная строка, по которой внешняя система сможет авторизовать пользователя.
ProjectstringДаНазвание проекта на английском языке.

...

Пример запроса:

Code Block
{
  "Credentials": "super-secure-token",
  "Project": "retail"
}

Пример ответа:

Code Block
{
  "OK": true,
  "Error": null,
  "Result": {
    "Client": {
      "Id": 1,
      "ProjectId": 1,
      "CompanyId": null,
      "Type": "crm",
      "Name": "Мартин Лютер Кинг",
      "Online": false,
      "CustomerId": 7,
      "ChannelId": null,
      "TelegramId": null,
      "FacebookId": null,
      "VKId": null,
      "TotalTickets": 15,
      "TotalOpenTickets": 0,
      "CreatedAt": 1491678852327,
      "UpdatedAt": 1517989811064,
      "SeenAt": 1516117515977,
      "MessagedAt": null,
      "IntegrationId": "1"
    },
    "Session": {
      "Id": 95,
      "ClientId": 1,
      "Token": "cd0f8d5b81358ec76db6aa50ec0424d7fd4fccc7.da3df153848575972de2e8b3ca187f2f",
      "CreatedAt": 1518167539961,
      "Integration": false,
      "IntegrationHash": null,
      "IntegrationCredentials": null
    }
  },
  "Rels": {}
}

Пуши

Регистрация APNS пуш-токена

...

Регистрация GCM/FCM пуш-токена

...

Чаты

Информация о чате

...

Пример ответа:

Code Block
languagejs
{
  "OK": true,
  "Error": null,
  "Result": {
    "Id": 10,
    "ProjectId": 1,
    "ClientId": 11,
    "ChannelId": 1,
    "TicketId": 68,
    "EventId": 3645,
    "ClientUnread": 5,
    "CreatedAt": 1498085875177,
    "ChangedAt": 1518091061880
  },
  "Rels": {
    "Clients": [
      {
        "Id": 11,
        "ProjectId": 1,
        "CompanyId": 2,
        "Type": "crm",
        "Name": "Дмитрий Менделеев",
        "Online": true,
        "CustomerId": 5,
        "ChannelId": null,
        "TelegramId": null,
        "FacebookId": null,
        "VKId": null,
        "TotalTickets": 2,
        "TotalOpenTickets": 1,
        "CreatedAt": 1498085866873,
        "UpdatedAt": 1518164918835,
        "SeenAt": 1518164918835,
        "MessagedAt": null,
        "IntegrationId": "10"
      }
    ]
  }
}

Отправка уведомления о том, что пользователь печатает сообщение

...

Пример ответа:

Code Block
languagejs
{
  "OK": true,
  "Error": null,
  "Result": null,
  "Rels": null
}

Получение истории сообщений в чате

Сообщения в чате возвращаются в обратном порядке по дате, сначала новые.

...

ПараметрТипОбязательныйКомментарий
Limitint32ДаКоличество сообщений
MaxIdint64НетАйди последнего сообщения в прошлом ответе истории

...

Пример запроса:

Code Block
languagejs
{
  "Limit": 10,
  "MaxId": 1234
}

Пример ответа:

Code Block
languagejs
{
  "OK": true,
  "Error": null,
  "Result": [
    {
      "Id": 504,
      "ChatId": 10,
      "LocalId": 1500970393387,
      "EventId": 3614,
      "TicketMessageId": null,
      "Author": "user",
      "ClientId": null,
      "UserId": 12,
      "Payload": "text",
      "Text": "Добрый день!",
      "Received": false,
      "Read": false,
      "Pushed": true,
      "CreatedAt": 1500970393387,
      "ReceivedAt": null,
      "ReadAt": null,
      "My": false
    }
  ],
  "Rels": {
    "Clients": [
      {
        "Id": 11,
        "ProjectId": 1,
        "CompanyId": 2,
        "Type": "crm",
        "Name": "Дмитрий Менделеев",
        "Online": true,
        "CustomerId": 5,
        "ChannelId": null,
        "TelegramId": null,
        "FacebookId": null,
        "VKId": null,
        "TotalTickets": 2,
        "TotalOpenTickets": 1,
        "CreatedAt": 1498085866873,
        "UpdatedAt": 1518165344742,
        "SeenAt": 1518165344742,
        "MessagedAt": null,
        "IntegrationId": "10"
      }
    ],
    "Users": [
      {
        "Id": 12,
        "Name": "Оператор",
        "Email": "operator@iqstore.ru",
        "Position": "Оператор",
        "RoleId": 2,
        "AvatarId": null,
        "Online": false,
        "Deleted": false,
        "TotalAssignedTickets": 0,
        "CreatedAt": 1500970142322,
        "UpdatedAt": 1507204200866,
        "LastSeenAt": 1500970417675,
        "DisplayName": "Оператор"
      }
    ]
  }
}

Отправка сообщения в чат

...

ПолеТипОбязательноеКомментарии
LocalIdint64ДаУникальное айди сообщения на стороне клиента, как правило, можно использовать UTC в миллисекундах.
PayloadChatMessagePayloadTypeДаТип сообщения.
TextstringЗависит от PayloadТекст сообщения.
FileIdstringЗависит от PayloadАйди загруженного файла.

...

Пример запроса:

Code Block
{
  "LocalId": 1518166402407,
  "Payload": "text",
  "Text": "Привет"
}

Подтверждение получения сообщений

...

Пример запроса:

Code Block
[1, 2, 3, 4, 5]

Подтверждение прочтения сообщений

...

Пример запроса:

Code Block
[1, 2, 3, 4, 5]

Файлы

Ссылка на файл

...

Ссылка на изображение

В отличии от ссылки на файл позволяет получить изображение в уменьшенном размере.

...

Информация о файле

...

Пример ответа:

Code Block
{
  "OK": true,
  "Error": null,
  "Result": {
    "Id": "1705a928-0d7a-11e8-b187-13b6ccbb5d10.txt",
    "Type": "file",
    "Owner": "client",
    "OwnerClientId": 11,
    "ClientId": null,
    "UserId": 1,
    "Name": "oci8-sigsegv.txt",
    "Path": "clients/11/11/1705a928-0d7a-11e8-b187-13b6ccbb5d10.txt",
    "Size": 5356,
    "ImageWidth": null,
    "ImageHeight": null,
    "ContentType": "",
    "CreatedAt": 1518167865822
  },
  "Rels": {}
}

Загрузка файла

...

Пример ответа:

Code Block
{
  "OK": true,
  "Error": null,
  "Result": {
    "Id": "9a9cef3d-0d7a-11e8-b188-9def95b467fb.jpg",
    "Type": "image",
    "Owner": "client",
    "OwnerClientId": 11,
    "ClientId": 11,
    "UserId": null,
    "Name": "1.jpg",
    "Path": "clients/11/11/9a9cef3d-0d7a-11e8-b188-9def95b467fb.jpg",
    "Size": 1039999,
    "ImageWidth": 3024,
    "ImageHeight": 4032,
    "ContentType": "image/jpeg",
    "CreatedAt": 1518168086597
  },
  "Rels": {}
}

WebSockets

Сервис событий позволяет подписываться и получать события в реальном времени. В качестве протокола используется HTML5 SSE и WebSockets.

События в чате

...

ПолеТипОбязательноеКомментарий
FromIdint64НетАйди последнего полученного события
Limitint32НетМаксимальное количество событий, которое можно вернуть в одном сообщении

...

Пример сообщения с двумя событиями:

Code Block
{
  "OK": true,
  "Error": null,
  "Result": [
    {
      "Id": 0,
      "Type": "typing",
      "ChatId": 10,
      "MessageId": null,
      "Actor": "user",
      "ClientId": null,
      "UserId": 1,
      "CreatedAt": 1518168819924,
      "Transitive": true
    },
    {
      "Id": 4648,
      "Type": "message_created",
      "ChatId": 10,
      "MessageId": 869,
      "Actor": "user",
      "ClientId": null,
      "UserId": 1,
      "CreatedAt": 1518168820897,
      "Transitive": false
    }
  ],
  "Rels": {
    "Chats": [
      {
        "Id": 10,
        "ProjectId": 1,
        "ClientId": 11,
        "ChannelId": 1,
        "TicketId": 68,
        "EventId": 3645,
        "ClientUnread": 5,
        "CreatedAt": 1498085875177,
        "ChangedAt": 1518168808785
      }
    ],
    "Clients": [
      {
        "Id": 11,
        "ProjectId": 1,
        "CompanyId": 2,
        "Type": "crm",
        "Name": "Дмитрий Менделеев",
        "Online": true,
        "CustomerId": 5,
        "ChannelId": null,
        "TelegramId": null,
        "FacebookId": null,
        "VKId": null,
        "TotalTickets": 2,
        "TotalOpenTickets": 1,
        "CreatedAt": 1498085866873,
        "UpdatedAt": 1518168816421,
        "SeenAt": 1518168816421,
        "MessagedAt": null,
        "IntegrationId": "10"
      }
    ],
    "Users": [
      {
        "Id": 1,
        "Name": "Иван Коробков",
        "Email": "i.korobkov@iqstore.ru",
        "Position": "Технический директор",
        "RoleId": 1,
        "AvatarId": "e83220a3-56cb-11e7-b21f-6109cf735b0f.png",
        "Online": true,
        "Deleted": false,
        "TotalAssignedTickets": 1,
        "CreatedAt": 1491321126034,
        "UpdatedAt": 1518168818121,
        "LastSeenAt": 1518168818121,
        "AssignedAt": 1518166787715,
        "DisplayName": "Иван Коробков"
      }
    ]
  }
}

Количество непрочитанных сообщений

...

Пример сообщения:

Code Block
{
  "OK": true,
  "Error": null,
  "Result": 13
}

HTML5 Server-Sent Events

Сервис событий позволяет подписываться и получать события в реальном времени. В качестве протокола используется HTML5 SSE и WebSockets.

События в чате

...

ПолеТипОбязательноеКомментарий
FromIdint64НетАйди последнего полученного события
Limitint32НетМаксимальное количество событий, которое можно вернуть в одном сообщении

...

Пример сообщения с двумя событиями:

Code Block
{
  "OK": true,
  "Error": null,
  "Result": [
    {
      "Id": 0,
      "Type": "typing",
      "ChatId": 10,
      "MessageId": null,
      "Actor": "user",
      "ClientId": null,
      "UserId": 1,
      "CreatedAt": 1518168819924,
      "Transitive": true
    },
    {
      "Id": 4648,
      "Type": "message_created",
      "ChatId": 10,
      "MessageId": 869,
      "Actor": "user",
      "ClientId": null,
      "UserId": 1,
      "CreatedAt": 1518168820897,
      "Transitive": false
    }
  ],
  "Rels": {
    "Chats": [
      {
        "Id": 10,
        "ProjectId": 1,
        "ClientId": 11,
        "ChannelId": 1,
        "TicketId": 68,
        "EventId": 3645,
        "ClientUnread": 5,
        "CreatedAt": 1498085875177,
        "ChangedAt": 1518168808785
      }
    ],
    "Clients": [
      {
        "Id": 11,
        "ProjectId": 1,
        "CompanyId": 2,
        "Type": "crm",
        "Name": "Дмитрий Менделеев",
        "Online": true,
        "CustomerId": 5,
        "ChannelId": null,
        "TelegramId": null,
        "FacebookId": null,
        "VKId": null,
        "TotalTickets": 2,
        "TotalOpenTickets": 1,
        "CreatedAt": 1498085866873,
        "UpdatedAt": 1518168816421,
        "SeenAt": 1518168816421,
        "MessagedAt": null,
        "IntegrationId": "10"
      }
    ],
    "Users": [
      {
        "Id": 1,
        "Name": "Иван Коробков",
        "Email": "i.korobkov@iqstore.ru",
        "Position": "Технический директор",
        "RoleId": 1,
        "AvatarId": "e83220a3-56cb-11e7-b21f-6109cf735b0f.png",
        "Online": true,
        "Deleted": false,
        "TotalAssignedTickets": 1,
        "CreatedAt": 1491321126034,
        "UpdatedAt": 1518168818121,
        "LastSeenAt": 1518168818121,
        "AssignedAt": 1518166787715,
        "DisplayName": "Иван Коробков"
      }
    ]
  }
}

Количество непрочитанных сообщений

...

Пример сообщения:

Code Block
{
  "OK": true,
  "Error": null,
  "Result": 13
}