Aimylogic предоставляет Rest API для интеграции в сторонние приложения. Например, для реализации чата в мобильном приложении, чате на сайте или в игре.

API предоставляет возможность вести диалог как с ботом, так и с оператором.

Канал доступен на тарифах Developer, Bussines Standard, Bussines Pro.

Как подключить канал Чат API

Зайдите в настройки каналов вашего бота и нажмите на кнопку Чат API. Откроется окно настроек канала.



Заполните поля:
Название канала - название, которое будет отображаться в списке подключенных каналов бота.
Токен - секретный ключ для запроса. Вы можете оставить его пустым, и aimylogic сгенерирует ключ автоматически.

Кликните Подключить. Дождитесь всплывающего окна с результатом публикации. При успешной публикации - чатбот готов к использованию.



Токен

Токен конфигурируется при создании канала и необходим для предоставляемых методов Чат API.

Получить токен можно с помощью кнопки Скопировать токен в созданном канале чат API.



Также можно открыть в окно редактирования созданного канала Чат API. Значение будет доступно в поле Токен. Скопируйте его и используйте для доступа к API.

Когда канал будет подключен, в окне редактирования также будут представлены примеры GET и POST запросов:



Методы API

Чат API предоставляет следующие методы:

Отправка запроса клиента. Метод вернет ответ бота либо сообщение о том, что разговор переведен на оператора. POST /chatapi/{token}

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

POST https://bot.aimylogic.com/chatapi/zhQDipzT:5560a55a9af37d68782b3234a84f344c592ab766

где zhQDipzT:5560a55a9af37d68782b3234a84f344c592ab766 - пример токена

Headers:
Content-Type: application/json

BODY raw
{"clientId":"test","query":"кошка"}

В качестве query вы можете ввести любое сообщение боту.

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

{
"token": "zhQDipzT:5560a55a9af37d68782b3234a84f344c592ab766",
"clientId": "test",
"questionId": "2315de4c-e8de-4bac-ab3d-a7c613b923e3",
"data": {
"answer": "Тебе нужен влажный или сухой корм?",
"replies": [
{
"type": "text",
"text": "Тебе нужен влажный или сухой корм?",
"state": "/newNode_4"
},
{
"type": "buttons",
"buttons": [
{
"text": "влажный"
},
{
"text": "сухой"
}
],
"state": "/newNode_6"
}
]
},
"timestamp": "2020-02-04T15:34:46.820"
}


Отправка запроса. Упрощенный метод отправки запроса клиента GET /chatapi/{token}

Пример Get-запроса:
https://bot.aimylogic.com/chatapi/zhQDipzT:5560a55a9af37d68782b3234a84f344c592ab766?clientId=test&query=/start

где zhQDipzT:5560a55a9af37d68782b3234a84f344c592ab766 - пример токена

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

{
"token": "zhQDipzT:5560a55a9af37d68782b3234a84f344c592ab766",
"clientId": "test",
"questionId": "a1c65a0f-9fa4-4ad3-be88-be16235fd9c1",
"data": {
"answer": "Привет! Я помогу тебе подобрать корм для твоей кошки или собаки!\n\nУ тебя кошка или собака?",
"replies": [{
"type": "text",
"text": "Привет! Я помогу тебе подобрать корм для твоей кошки или собаки!",
"state": "/newNode_7"
}, {
"type": "text",
"text": "У тебя кошка или собака?",
"state": "/newNode_0"
}, {
"type": "buttons",
"buttons": [{
"text": "кошка"
}, {
"text": "собака"
}],
"state": "/newNode_5"
}]
},
"timestamp": "2020-02-04T15:58:32.859"
}


Получение событий. Получение асинхронных сообщений от сервера. Предназначен для получения ответов от оператора GET /chatapi/{token}/events?clientId={clientId}

Пример запроса:
https://bot.aimylogic.com/chatapi/zhQDipzT:5560a55a9af37d68782b3234a84f344c592ab766/events?clientId=test

где zhQDipzT:5560a55a9af37d68782b3234a84f344c592ab766 - пример токена

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

{"hasMore":false,"events":[]}

Получение истории. Запрос истории переписки клиента GET /chatapi/{token}/client/{clientId}/history

Пример запроса:
https://bot.aimylogic.com/chatapi/zhQDipzT:5560a55a9af37d68782b3234a84f344c592ab766/client/test/history

где zhQDipzT:5560a55a9af37d68782b3234a84f344c592ab766 - пример токена

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

{
"pageSize": 10,
"pageNumber": 0,
"total": 8,
"messages": [{
"type": "botResponse",
"message": {
"token": "zhQDipzT:5560a55a9af37d68782b3234a84f344c592ab766",
"clientId": "test",
"questionId": "8d2ff3f4-48a1-4a61-8257-985fe57c45ac",
"data": {
"answer": "У тебя кошка или собака?",
"replies": [{
"type": "text",
"text": "У тебя кошка или собака?",
"state": "/newNode_0"
}, {
"type": "buttons",
"buttons": [{
"text": "кошка"
}, {
"text": "собака"
}],
"state": "/newNode_5"
}]
},
"timestamp": "2020-02-04T10:51:07.924"
}
}, {
"type": "request",
"message": {
"token": "zhQDipzT:5560a55a9af37d68782b3234a84f344c592ab766",
"clientId": "test",
"questionId": "8d2ff3f4-48a1-4a61-8257-985fe57c45ac",
"query": "test",
"timestamp": "2020-02-04T10:51:07.577"
}
}, {
"type": "botResponse",
"message": {
"token": "zhQDipzT:5560a55a9af37d68782b3234a84f344c592ab766",
"clientId": "test",
"questionId": "775589f1-4b16-4f71-a44d-af50b600b7b8",
"data": {
"answer": "У тебя кошка или собака?",
"replies": [{
"type": "text",
"text": "У тебя кошка или собака?",
"state": "/newNode_0"
}, {
"type": "buttons",
"buttons": [{
"text": "кошка"
}, {
"text": "собака"
}],
"state": "/newNode_5"
}]
},
"timestamp": "2020-02-04T10:51:00.042"
}
}, {
"type": "request",
"message": {
"token": "zhQDipzT:5560a55a9af37d68782b3234a84f344c592ab766",
"clientId": "test",
"questionId": "775589f1-4b16-4f71-a44d-af50b600b7b8",
"query": "test",
"timestamp": "2020-02-04T10:50:59.706"
}
}, {
"type": "botResponse",
"message": {
"token": "zhQDipzT:5560a55a9af37d68782b3234a84f344c592ab766",
"clientId": "test",
"questionId": "0c8ce1b8-fd5e-40ab-8c9b-dcd6254e91c6",
"data": {
"answer": "У тебя кошка или собака?",
"replies": [{
"type": "text",
"text": "У тебя кошка или собака?",
"state": "/newNode_0"
}, {
"type": "buttons",
"buttons": [{
"text": "кошка"
}, {
"text": "собака"
}],
"state": "/newNode_5"
}]
},
"timestamp": "2020-02-04T10:46:52.071"
}
}, {
"type": "request",
"message": {
"token": "zhQDipzT:5560a55a9af37d68782b3234a84f344c592ab766",
"clientId": "test",
"questionId": "0c8ce1b8-fd5e-40ab-8c9b-dcd6254e91c6",
"query": "test",
"timestamp": "2020-02-04T10:46:50.860"
}
}, {
"type": "botResponse",
"message": {
"token": "zhQDipzT:5560a55a9af37d68782b3234a84f344c592ab766",
"clientId": "test",
"questionId": "2bfef55b-9f34-487e-b156-cd38abe48f91",
"data": {
"answer": "Привет! Я помогу тебе подобрать корм для твоей кошки или собаки!\n\nУ тебя кошка или собака?",
"replies": [{
"type": "text",
"text": "Привет! Я помогу тебе подобрать корм для твоей кошки или собаки!",
"state": "/newNode_7"
}, {
"type": "text",
"text": "У тебя кошка или собака?",
"state": "/newNode_0"
}, {
"type": "buttons",
"buttons": [{
"text": "кошка"
}, {
"text": "собака"
}],
"state": "/newNode_5"
}]
},
"timestamp": "2020-02-04T10:18:47.740"
}
}, {
"type": "request",
"message": {
"token": "zhQDipzT:5560a55a9af37d68782b3234a84f344c592ab766",
"clientId": "test",
"questionId": "2bfef55b-9f34-487e-b156-cd38abe48f91",
"query": "/start",
"timestamp": "2020-02-04T10:18:46.327"
}
}]
}


Сохранение состояния чата. Используется чатвиджетом для сохранения состояния свернут/развернут

POST /chatapi/{token}/client/{clientId}/state

В Postman запрос может выглядеть подобным образом:

POST https://bot.aimylogic.com/chatapi/zhQDipzT:5560a55a9af37d68782b3234a84f344c592ab766/client/test/state

где zhQDipzT:5560a55a9af37d68782b3234a84f344c592ab766 - пример токена

в BODY можно поместить любой JSON, например:

{
/* open widget */
}


Headers

Content-Type: application/json

Получение состояния чата. Используется чатвиджетом для получения состояния свернут/развернут GET /chatapi/{token}/client/{clientId}/state

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

https://bot.aimylogic.com/chatapi/zhQDipzT:5560a55a9af37d68782b3234a84f344c592ab766/client/test/state

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

{
/* open widget */
}


В ответе придет JSON который вы отправляли ранее в пункте 5.

Содержание ответа

В ответе приходит следующая информация:
Первая строка: type – тип используемого блока
Вторая строка: содержание используемого блока
Третья строка: action – название экрана в исходном коде
Четвертая строка: state – название экрана, заданное пользователем



Была ли эта статья полезна?
отменить
Спасибо!