Introduction
Description: You can place a call - initiated as Outbound - to a specific destination and, when answered, it will be treated as a regular Inbound Queue Call, waiting in the Queue to be answered by an agent.
scope: cx.queue-calls
API Request
Code Block |
---|
curl -XPOST --location 'https://cpaas.sangoma.com/cx/api/v1/queues/call/' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <YOUR_ACCESS_TOKEN>' \
--data '{
"queue_name": "queue_test",
"destination": "9001",
"tenant_domain": "acme.cx.sangoma.com"
}' |
Note: Replace <YOUR_ACCESS_TOKEN>
with your Access Token obtained from the authentication step.
This API call will enable the specified Queue (queue_name
) within the tenant_domain
to make calls to the provided destination
.
Creating a Agent Chatbot using Sangoma Digital Interactions API (Our Widget)
scope: cx.digital-interactions
In this section, we will build a chatbot application using a inbox web widget that starts a conversation on your front panelThis section details how to build a chatbot application by using a third-party WebChat widget that represents the user interface for the end-customer to interact with the chatbot or Sangoma CX Agent. We will use the Sangoma Digital Interactions API to handle the backend logic for this chatbot.
1. Create the agent bot
To receive events from Sangoma CX, you need to set up a agent bot. This requires a publicly accessible FQDN. For development purposes, you can use a tool like ngrok. We will use the outgoing_url
to send webhook events, so certify that this is public accessible.
API Request
Code Block |
---|
curl -XPOST --location 'https://cpaas.sangoma.com/cx/api/v1/digital-interactions/agent-bot/' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <YOUR_ACCESS_TOKEN>' \
--data '{
"tenant_domain": "acme.cx.sangoma.com",
"outgoing_url": "<your webhook fqdn>",
"name": "My first bot"
}' |
2. Choosing an Inbox
You can choose which inbox your chatbot is attached to. In order to list the inboxes you can use the following request.
List Inboxes
Code Block |
---|
curl --location 'https://cpaas.sangoma.com/cx/api/v1/digital-interactions/inboxes/' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <YOUR_ACCESS_TOKEN>' |
3. Attaching the agent bot to the inbox
After choose the inbox, you should attach the agent bot to that inbox using the following request.
API Request
Code Block |
---|
curl -XPOST --location 'https://cpaas.sangoma.com/cx/api/v1/digital-interactions/assign-agent-bot/' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <YOUR_ACCESS_TOKEN>' \
--data '{
"tenant_domain": "acme.cx.sangoma.com",
"inbox_id": "<inbox_id>",
"agent_bot_id": "<agent_bot_id>"
}' |
Now you can start your conversation using the web widget.
4. Sending Messages
Once the conversation is created, you can start sending messages.
API Request
Code Block |
---|
curl -XPOST --location 'https://cpaas.sangoma.com/cx/api/v1/digital-interactions/messages/' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <YOUR_ACCESS_TOKEN>' \
--data '{
"tenant_domain": "acme.cx.sangoma.com",
"content": "My message",
"message_type": "outgoing",
"conversation_id": <conversation.id>
}' |
6. Deliver to a Customer Representative
If the customer needs human assistance, redirect the conversation to an inbox customer representative.
API Request
Code Block |
---|
curl -XPOST --location 'https://cpaas.sangoma.com/cx/api/v1/digital-interactions/conversations/deliver-to-agent/' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <YOUR_ACCESS_TOKEN>' \
--data '{
"tenant_domain": "acme.cx.sangoma.com",
"conversation_id": <conversation.id>
}' |
Advanced: Creating a Chatbot and Web Widget using Sangoma Digital Interactions API (Self Widget)
scope: cx.digital-interactions
In this section, we will build a chatbot application consisting of a web widget that starts a conversation on your front panel. We will use the Sangoma Digital Interactions API to handle the backend logic for this chatbotto communicate/integrate with the chatbot or 3rd party WebChat widget.
scope: cx.digital-interactions
Integration Flow
Note: In the API Request sections, replace <YOUR_ACCESS_TOKEN>
your Access Token obtained from the Requesting Access Token authentication step detailed in API Authentication .
1. Create a Webhook
To receive events from Sangoma CX, you need to set up a webhook. This requires a publicly accessible FQDN. For development purposes, you can use a tool like ngrok.
API Request
Code Block |
---|
curl -XPOST --location 'https://cpaas.sangoma.com/cx/api/v1/digital-interactions/webhooks/' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer <YOUR_ACCESS_TOKEN>' \ --data '{ "tenant_domain": "acme.cx.sangoma.com", "url": "<your webhook fqdn>", "subscriptions": [ "conversation_created", "message_created" ] }' |
2. Choosing an Inbox
You can choose whether your chatbot will use a unique inbox or if the customer can choose one. This is useful for creating different flows based on the selected inbox.
...
which inbox your chatbot is “assigned” to. In order to list the inboxes you can use the following request.
API Request
Code Block |
---|
curl --location 'https://cpaas.sangoma.com/cx/api/v1/digital-interactions/inboxes/' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer <YOUR_ACCESS_TOKEN>' |
...
3. Create a Contact for Your Customer
With the inbox ID, and before initiating the Chat Conversation create a contact for the customer after collecting basic data such as name, email, and phone number.
API Request
Code Block |
---|
curl -XPOST --location 'https://cpaas.sangoma.com/cx/api/v1/digital-interactions/contacts/' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer <YOUR_ACCESS_TOKEN>' \ --data '{ "tenant_domain": "acme.cx.sangoma.com", "name": "My Customer Name", "email": "my@customer.email", "inbox_id": <inbox_id>, "phone_number": "+199999999" }' |
4. Start the Conversation
After creating the contact, initiate a conversation on the platform.
API Request
Code Block |
---|
curl -XPOST --location 'https://cpaas.sangoma.com/cx/api/v1/digital-interactions/conversations/' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer <YOUR_ACCESS_TOKEN>' \ --data '{ "tenant_domain": "acme.cx.sangoma.com", "source_id": "<contact.email>", "contact_id": <contact.id>, "inbox_id": <inbox_id>, "priority": <priority_int>, "initial_message": "Hello world" }' |
...
Once the conversation is created, you can start sending messages.
API Request
Code Block |
---|
curl -XPOST --location 'https://cpaas.sangoma.com/cx/api/v1/digital-interactions/messages/' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer <YOUR_ACCESS_TOKEN>' \ --data '{ "tenant_domain": "acme.cx.sangoma.com", "content": "My message", "message_type": "incoming|outgoing", "conversation_id": <conversation.id> }' |
Note: If the message_type
is outgoing
, it will be presented as a bot message; if incoming
, it will be a customer message. The default value is outgoing
.
6.
...
Redirect to a Customer Representative
If the customer needs human assistance, redirect the conversation to an inbox customer representative.
API Request
Code Block |
---|
curl -XPOST --location 'https://cpaas.sangoma.com/cx/api/v1/digital-interactions/conversations/deliver-to-agent/' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer <YOUR_ACCESS_TOKEN>' \ --data '{ "tenant_domain": "acme.cx.sangoma.com", "conversation_id": <conversation.id> }' |
7. Finish the Conversation
When the customer is satisfied with the bot or representative's assistance, finish the conversation using the API.
API Request
Code Block |
---|
curl -XPOST --location 'https://cpaas.sangoma.com/cx/api/v1/digital-interactions/conversations/finish/' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer <YOUR_ACCESS_TOKEN>' \ --data '{ "tenant_domain": "acme.cx.sangoma.com", "conversation_id": <conversation.id> }' |
For step-by-step instructions on how to do this with one of our supported helper libraries or SDKs, check out the quickstarts for:
...