Chat API
JAICP provides a REST API for integrating your bot into third-party applications — the Chat API. Chats with bots can be implemented into external services, such as mobile apps, websites, or games.
Before using the Chat API, connect the Chat API channel to your project and obtain its token from the channel settings. The token is used in requests to all Chat API methods.
API methods
Sending client requests to the chat
Sending client requests synchronously
The following methods are used to send requests from a client synchronously:
-
The method returns detailed information about the request, including
cid.An optional
cidproperty is a connection ID. This arbitrary string determines the current connection to the chat application. It can later be used for fetching events in the chat in order to filter out only those events which occurred during this connection. -
A simplified method that returns several parameters of the request:
clientId,query, andevent.
Sending client requests asynchronously
The POST /chatapi/{token}/async method allows you to send a client request or an event in the chat application asynchronously.
Unlike the POST /chatapi/{token} method, you only get the message ID in response to the request.
The rest of the information will be sent to a webhook, which you can specify in the Chat API channel settings.
The event will be sent to the webhook if:
- You have sent an asynchronous request.
- You have run a text campaign.
- A client have received a reply from an agent.
- A timeout between responses to the request is exceeded.
An array of JSON objects will be sent to the webhook:
{
"token": "token",
"clientId": "test",
"questionId": "12345",
"data": {
"nlpClass": "/CatchAll",
"confidence": -0.010999999999999979,
"replies": [ // Bot message
{
"type": "text",
"text": "Tell the bot something",
"state": "/CatchAll"
}
],
"answer": "Tell the bot something",
"newSessionStarted": false,
"debugData": [],
"endSession": false
},
"timestamp": "2022-09-28T12:32:13.262",
"blockForm": false
}
Extending replies with custom fields
You can extend the bot’s response with custom fields. Use the $response object in the script:
state: ...
script:
$response.foo = "bar";
The foo field and other fields you set will be available in the bot’s response as fields nested in the data field.
Fetching asynchronous events in the chat
Via the GET /chatapi/{token}/events method, you can receive asynchronous events which occurred in the chat, such as:
- A response from an agent.
- A widget state change on another browser page.
- A client request sent on another page.
- A bot response to a request from another page.
The method response length is limited to 250 messages. If you need to process more, use the method for fetching the chat message history instead.
Event filtering
This method accepts an all parameter which determines whether all events in the channel should be returned or agent replies only (the default behavior).
cid parameter is not passed.The ts parameter defines the time starting from which events should be filtered.
When omitted, all events since the last request to the server are returned.
Fetching the chat message history
The GET /chatapi/{token}/client/{clientId}/history method allows receiving the message history with the client during the time specified time span or all time available.
Saving and loading the chat application state
The following methods allow saving and loading the chat application state during the conversation with the client:
POST method request body.
Subsequent requests to the GET method will return this object as is.
Its contents are not checked.Managing message statuses
You can track the status of messages that the bot has sent in the Chat API channel.
The following message statuses are supported in the Chat API:
| Message status | Chat API |
|---|---|
| Sent | SENT |
| Delivered | DELIVERED |
| Read | READ |
| Not sent | NOT_SENT |
Getting the message status
The GET /chatapi/{token}/client/{clientId}/message/{questionId}/status method allows you to get the status of the message.
Parameters:
token— Chat API channel token. Go to Channels section, choose the Chat API channel and select → Edit channel. Save the token.clientId— the client ID. You can find the ID in the Analytics section → Clients. Select the client and save their ID.questionId— the message ID. To get the ID, use theGET /chatapi/{token}/client/{clientId}/historymethod.
Updating the message status
The POST /chatapi/{token}/client/{clientId}/message/{questionId}/status method updates the status of the message.
In the request body, specify a new value for the status field.
Updating statuses of several messages
The POST /chatapi/{token}/client/{clientId}/message-statuses method updates statuses of several messages.
In the request body, specify the statuses field — an array of JSON objects.
Getting the number of unread messages
The GET /chatapi/{token}/client/{clientId}/message-not-read-count method allows you to know how many messages the client has not read.