chore: Add documentation for API channel (#1179)
This commit is contained in:
parent
5ac093fca2
commit
29d13fbb4f
9 changed files with 192 additions and 0 deletions
45
docs/channels/api-channel/callback-url.md
Normal file
45
docs/channels/api-channel/callback-url.md
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
---
|
||||||
|
path: '/docs/channels/api/callback-url'
|
||||||
|
title: 'Callback URL and message payload'
|
||||||
|
---
|
||||||
|
|
||||||
|
When a new message is created in the API channel, you will get a POST request to the Callback URL specified while creating the API channel. The payload would look like this.
|
||||||
|
|
||||||
|
**Event type**: `message_created`
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": 0,
|
||||||
|
"content": "This is a incoming message from API Channel",
|
||||||
|
"created_at": "2020-08-30T15:43:04.000Z",
|
||||||
|
"message_type": "incoming",
|
||||||
|
"content_type": null,
|
||||||
|
"content_attributes": {},
|
||||||
|
"source_id": null,
|
||||||
|
"sender": {
|
||||||
|
"id": 0,
|
||||||
|
"name": "contact-name",
|
||||||
|
"avatar": "",
|
||||||
|
"type": "contact"
|
||||||
|
},
|
||||||
|
"inbox": {
|
||||||
|
"id": 0,
|
||||||
|
"name": "API Channel"
|
||||||
|
},
|
||||||
|
"conversation": {
|
||||||
|
"additional_attributes": null,
|
||||||
|
"channel": "Channel::Api",
|
||||||
|
"id": 0,
|
||||||
|
"inbox_id": 0,
|
||||||
|
"status": "open",
|
||||||
|
"agent_last_seen_at": 0,
|
||||||
|
"user_last_seen_at": 0,
|
||||||
|
"timestamp": 0
|
||||||
|
},
|
||||||
|
"account": {
|
||||||
|
"id": 1,
|
||||||
|
"name": "API testing"
|
||||||
|
},
|
||||||
|
"event": "message_created"
|
||||||
|
}
|
||||||
|
```
|
34
docs/channels/api-channel/create-channel.md
Normal file
34
docs/channels/api-channel/create-channel.md
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
---
|
||||||
|
path: '/docs/channels/api/configure'
|
||||||
|
title: 'How to create an API channel inbox?'
|
||||||
|
---
|
||||||
|
|
||||||
|
Setting up an API channel consists of the following steps.
|
||||||
|
|
||||||
|
1. Create API Channel inbox
|
||||||
|
2. Send messages using Chatwoot APIs
|
||||||
|
3. Receive webhooks on new messages from Chatwoot
|
||||||
|
|
||||||
|
This document allows you to create and configure an API channel inbox in Chatwoot installations.
|
||||||
|
|
||||||
|
**Step 1**: Go to Settings > Inboxes and click on "Add Inbox".
|
||||||
|
|
||||||
|
**Step 2**: Select **API** from the list of channels.
|
||||||
|
|
||||||
|
![select-api-inbox](./images/select-api-inbox.png)
|
||||||
|
|
||||||
|
**Step 3**: Provide an name for the channel and a callback URL (the events and corresponding payload is defined in the subsequent articles)
|
||||||
|
|
||||||
|
![configure-screen](./images/configure-screen.png)
|
||||||
|
|
||||||
|
**Step 4**: Add agents to the inbox.
|
||||||
|
|
||||||
|
![add-agents](./images/add-agents.png)
|
||||||
|
|
||||||
|
**Step 5**: Hooray!! The inbox setup is complete.
|
||||||
|
|
||||||
|
![take-me-there](./images/take-me-there.png)
|
||||||
|
|
||||||
|
![inbox-welcome-screen](./images/inbox-welcome-screen.png)
|
||||||
|
|
||||||
|
Now the channel setup is complete, let us try to send a message using Chatwoot APIs. Read more about it [here](/docs/channels/api/send-messages)
|
BIN
docs/channels/api-channel/images/add-agents.png
Normal file
BIN
docs/channels/api-channel/images/add-agents.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 652 KiB |
BIN
docs/channels/api-channel/images/configure-screen.png
Normal file
BIN
docs/channels/api-channel/images/configure-screen.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 643 KiB |
BIN
docs/channels/api-channel/images/conversation.png
Normal file
BIN
docs/channels/api-channel/images/conversation.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 751 KiB |
BIN
docs/channels/api-channel/images/inbox-welcome-screen.png
Normal file
BIN
docs/channels/api-channel/images/inbox-welcome-screen.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 627 KiB |
BIN
docs/channels/api-channel/images/select-api-inbox.png
Normal file
BIN
docs/channels/api-channel/images/select-api-inbox.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 768 KiB |
BIN
docs/channels/api-channel/images/take-me-there.png
Normal file
BIN
docs/channels/api-channel/images/take-me-there.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 612 KiB |
113
docs/channels/api-channel/send-message-api-channel.md
Normal file
113
docs/channels/api-channel/send-message-api-channel.md
Normal file
|
@ -0,0 +1,113 @@
|
||||||
|
---
|
||||||
|
path: '/docs/channels/api/send-messages'
|
||||||
|
title: 'Send messages to API channel'
|
||||||
|
---
|
||||||
|
|
||||||
|
To send messages to API channel, you need have a basic understanding of the models and nomenclature used in Chatwoot. Let us try to understand these first.
|
||||||
|
|
||||||
|
1. **Channel**: Channel defines the type of the source of conversations. Eg: Facebook, Twitter, API etc.
|
||||||
|
|
||||||
|
2. **Inbox**: You can create multiple sources of conversations which is of the same channel type. For eg: You can have more than one Facebook page connected to a Chatwoot account. Each page is called as the inbox in Chatwoot.
|
||||||
|
|
||||||
|
3. **Conversation**: A Conversation is a collection of messages.
|
||||||
|
|
||||||
|
4. **Contact**: Each conversation has a real life person associated with it, this person is called a contact.
|
||||||
|
|
||||||
|
5. **Contact Inboxes**: This is the session for each contact on a inbox. A contact can have multiple sessions and multiple conversations in the same inbox.
|
||||||
|
|
||||||
|
### How to send a message in an API Channel?
|
||||||
|
|
||||||
|
To send a message in an API channel, you have to create a contact, then create a conversation and then send a message.
|
||||||
|
|
||||||
|
APIs require `api_access_token` in the request header. You can get this token by visiting your Profile settings > Access Token
|
||||||
|
|
||||||
|
#### 1. Create a contact
|
||||||
|
|
||||||
|
API documentation: (https://www.chatwoot.com/developers/api/#operation/contactCreate)
|
||||||
|
|
||||||
|
Pass the inbox id of the API channel along with other params specified. This would create a session for you automatically. A sample response would look like the one below.
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"email": "string",
|
||||||
|
"name": "string",
|
||||||
|
"phone_number": "string",
|
||||||
|
"thumbnail": "string",
|
||||||
|
"additional_attributes": {},
|
||||||
|
"contact_inboxes": [
|
||||||
|
{
|
||||||
|
"source_id": "string",
|
||||||
|
"inbox": {
|
||||||
|
"id": 0,
|
||||||
|
"name": "string",
|
||||||
|
"website_url": "string",
|
||||||
|
"channel_type": "string",
|
||||||
|
"avatar_url": "string",
|
||||||
|
"widget_color": "string",
|
||||||
|
"website_token": "string",
|
||||||
|
"enable_auto_assignment": true,
|
||||||
|
"web_widget_script": "string",
|
||||||
|
"welcome_title": "string",
|
||||||
|
"welcome_tagline": "string",
|
||||||
|
"greeting_enabled": true,
|
||||||
|
"greeting_message": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"id": 0,
|
||||||
|
"availability_status": "string"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
As you can see in the payload, you will be able to see the `contact_inboxes` and each `contact_inbox` will have a `source_id`. Source Id can be seen as the session identifier. You will use this source_id to create a new conversation as defined below.
|
||||||
|
|
||||||
|
#### 2. Create a conversation
|
||||||
|
|
||||||
|
API documentation: (https://www.chatwoot.com/developers/api/#operation/newConversation)
|
||||||
|
|
||||||
|
Use the `source_id` received in the previous API call.
|
||||||
|
|
||||||
|
You will receive a conversation id which can be used to create a message.
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": 0
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 3. Create a new message
|
||||||
|
|
||||||
|
API documentation: (https://www.chatwoot.com/developers/api/#operation/conversationNewMessage)
|
||||||
|
|
||||||
|
There are 2 types of messages.
|
||||||
|
|
||||||
|
1. **Incoming**: Messages sent by the end user is classified as an incoming message.
|
||||||
|
|
||||||
|
2. **Outgoing**: Messages sent by the agent is classified as an outgoing message.
|
||||||
|
|
||||||
|
If you call the API with the correct content, you will receive a payload similar to the one below.
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": 0,
|
||||||
|
"content": "This is a incoming message from API Channel",
|
||||||
|
"inbox_id": 0,
|
||||||
|
"conversation_id": 0,
|
||||||
|
"message_type": 0,
|
||||||
|
"content_type": null,
|
||||||
|
"content_attributes": {},
|
||||||
|
"created_at": 0,
|
||||||
|
"private": false,
|
||||||
|
"sender": {
|
||||||
|
"id": 0,
|
||||||
|
"name": "Pranav",
|
||||||
|
"type": "contact"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
If everything is sucessful you will see the conversation on the dashboard as follows.
|
||||||
|
|
||||||
|
![conversation](./images/conversation.png)
|
||||||
|
|
||||||
|
You will be notified when a new message is created on the URL specified while creating the API channel. You can read about the message payload [here](/docs/channels/api/callback-url)
|
Loading…
Reference in a new issue