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