Table of Contents | ||
---|---|---|
|
Чаты
Информация о чате
...
Запросы к серверу
Все запросы отправляются как POST запросы с содержанием "application/json"
. В ответ сервер всегда возвращает HTTP 200 OK
и с содержанием "application/json"
. Единственное исключение — это методы, которые работают с файлам. В теле ответа содержится информация об успешности запроса, результат или ошибка. Для результата может быть приложен граф связанных объектов. Например, если в результате вернулось сообщение в чате, в графе связанных объектов будет пользователь, который отправил это сообщение. Данных подход позволяет снизить объем дублируемых данных в ответах.
Пример запроса:
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
Cookie: client-session=973b38b354a508bf13244b2655077895c78f1e86.aaaa7e84433b0901c502a5f7d38c71ee
{"LocalId":1518171256447,"Payload":"text","Text":"Привет!"} |
...
Пример ответа:
Code Block | ||
---|---|---|
| ||
{ "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": [ {HTTP/1.1 200 OK Server: nginx/1.11.13 Date: Fri, 09 Feb 2018 10:16:21 GMT Content-Type: application/json; charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive Vary: Accept-Encoding Access-Control-Allow-Credentials: true Access-Control-Allow-Headers: Accept, Accept-Encoding, Accept-Language, Access-Control-Request-Headers, Access-Control-Request-Method, Authorization, Cache-Control, Connection, Content-Type, Cookie, Host, Origin, Pragma, Referer, X-Requested-With, User-Agent Access-Control-Allow-Methods: GET, HEAD, POST, OPTIONS Access-Control-Allow-Origin: http://dev.iqstore.ru Pragma: no-cache Cache-Control: private, must-revalidate Content-Encoding: gzip { "OK": true, "Error": null, "Result": [ { "Id": 252, "ChatId": 10, "LocalId": 1498085875116, "EventId": 1649, "TicketMessageId": null, "IdAuthor": 11"client", "ProjectIdClientId": 111, "CompanyIdUserId": 2null, "TypePayload": "crmtext", "NameText": "Дмитрий МенделеевЗдравствуйте!", "OnlineReceived": true, "CustomerIdRead": 5true, "ChannelIdPushed": nullfalse, "TelegramIdCreatedAt": null1498085875206, "FacebookIdReceivedAt": null1498085920218, "VKIdReadAt": null1498085920218, "TotalTicketsMy": 2 true }, { "TotalOpenTicketsId": 1253, "CreatedAtChatId": 149808586687310, "UpdatedAtLocalId": 15181649188351498085875247, "SeenAtEventId": 15181649188351626, "MessagedAtTicketMessageId": null, "IntegrationIdAuthor": "10system", }"ClientId": null, ] } } |
Отправка уведомления о том, что пользователь печатает сообщение
...
Пример ответа:
Code Block | ||
---|---|---|
| ||
{
"OK": true,
"Error": null,
"Result": null,
"Rels": null
} |
Получение истории сообщений в чате
Сообщения в чате возвращаются в обратном порядке по дате, сначала новые.
...
Параметр | Тип | Обязательный | Комментарий |
---|---|---|---|
Limit | int32 | Да | Количество сообщений |
MaxId | int64 | Нет | Айди последнего сообщения в прошлом ответе истории |
...
Пример запроса:
Code Block | ||
---|---|---|
| ||
{
"Limit": 10,
"MaxId": 1234
} |
Пример ответа:
Code Block | ||
---|---|---|
| ||
{ "OK": true, "Error": null, "Result": [ "UserId": null, "Payload": "notice", "Text": "", "Received": false, "Read": false, "Pushed": false, "CreatedAt": 1498085875247, "ReceivedAt": null, "ReadAt": null, "My": false }, { "Id": 504254, "ChatId": 10, "LocalId": 15009703933871498085879130, "EventId": 36141633, "TicketMessageId": null, "Author": "user", "ClientId": null, "UserId": 124, "Payload": "text", "Text": "Добрый день!", "Received": falsetrue, "Read": falsetrue, "Pushed": truefalse, "CreatedAt": 15009703933871498085879130, "ReceivedAt": null1498085879272, "ReadAt": null1498085879302, "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": 15181653447421518171379854, "SeenAt": 15181653447421518171379854, "MessagedAt": null, "IntegrationId": "10" } ], "Files": [ { "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 } ], "Users": [ { "Id": 121, "Name": "ОператорИван Коробков", "Email": "operator@iqstorei.korobkov@iqstore.ru", "Position": "ОператорТехнический директор", "RoleId": 21, "AvatarId": null"e83220a3-56cb-11e7-b21f-6109cf735b0f.png", "Online": falsetrue, "Deleted": false, "TotalAssignedTickets": 01, "CreatedAt": 15009701423221491321126034, "UpdatedAt": 15072042008661518171379292, "LastSeenAt": 15009704176751518171379292, "AssignedAt": 1518166787715, "DisplayName": "ОператорИван Коробков" } ] } } |
Авторизация запросов
Для авторизации запросов к серверу используется токен сессии, который клиент получает после авторизации во внешней системе. Токен автоматически проставляется в Cookie. Если нужно, его также можно передавать отдельным заголовком Authorization.
Cookie: client-session ${session-token}
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 Cookie: client-session=973b38b354a508bf13244b2655077895c78f1e86.aaaa7e84433b0901c502a5f7d38c71ee {"LocalId":1518171256447,"Payload":"text","Text":"Привет!"} |
Authorization: Client ${session-token}
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":"Привет!"} |