Cisco ECE Chat API

I recently got a chance to work on a Kore.AI to ECE integration project and I did a deep dive into how you could integrate a 3rd party chat service into ECE. Below you’ll find the steps required to start a chat via Postman using the ECE API, see messages being sent by the agent, and finally have a conversation. What you’ll need before you get started:

  • pa access to ECE.
  • Configured new trigger or a trigger that is not in use.
  • Web server accessible to your ECE app server to send web hooks to.

Step 1: Configure your web hook authentication.

  • Login to pa. Drop down to Partition and select Integration, then Authentication under External App.

Authentication Type: Basic and OAuth2.0Screenshot 2024-12-20 at 8.40.37 AM

Step 2: Register a new application

  • Login to pa. Drop down to Partition and select Integration, then Register Applications under External App.
  • Fill out the details for your application.
  • Capture the key and secret that are automatically generated.

Screenshot 2024-12-20 at 8.42.54 AM

Screenshot 2024-12-20 at 8.43.13 AMScreenshot 2024-12-20 at 8.43.28 AM
Step 3: Configure or re-use an existing Entry Point

  • Under Service, Entry Points under Chat & Messaging. Ensure the Entry Point is set to active.
  • Make sure to capture the EP number, you might have to look at the chat URL to get that. It’s in bold in this example URL: https://<FQDN>/system/templates/chat/aria/index.html?subActivity=Chat&entryPointId=1004&templateName=aria&ver=v11&locale=en-US

Step 4: Configure Messaging Adapter and Associate Entry Point.

  • Go to Messaging Adapters under Chat & Messaging. Create a new adapter and select your registered application and entry point.

At this point you have everything you need to test your integration with Postman. The next steps are going to walk you through the following:

  • Login to ECE with your app key and secret.
  • Validate that your login actually worked by getting information about the entry point your application is associated to.

Step 5: App login

Request:
Method: POST
URL: https://<FQDN>/system/ws/v19/clientapplications/authentication/oauth2/token?forceLogin=yes
Headers:
   Authorization: Basic <Base64EncodedKey:Secret>
   Content-Type: application/x-www-form-urlencoded
   Accept: application/json
   Accept-Language: en-us
Body: x-www-form-urlencoded: grant_type=client_credentials

Response:

{
"access_token": "d0a2695d-b478-47d4-aad1-e28aa6661c15",
"expires_in": 86400,
"token_type": "Bearer"
}

Step 6: Validate that your access_token works.

Request:
Method: GET
URL: https://<FQDN>/system/ws/v19/clientapplications/messaging/configuration?entrypoint=<YourEntryPoint>
Headers:
   Authorization: Bearer <access_token>
   Accept: application/json
Body: x-www-form-urlencoded: grant_type=client_credentials

Response:

{
"entryPointConfiguration": [
{
"entryPoint": {
"id": <YourEntryPoint>
},
"lastModified": {
"date": "2025-03-24T00:59:14.000Z"
},
...
}

Step 7: Start a conversation

Request:
Method: POST
URL: https://<FQDN>/system/ws/v19/clientapplications/messaging/conversation/start?sendTypingNotification=yes&searchContactOnAttribute=email.emailAddress
Headers:
   Authorization: Bearer <access_token>
   Accept: application/json
   Content-Type: application/json
Body:

{
"entryPointConfiguration": {
"entryPoint": {
"id": "{{entryPointId}}"
},
"lastModified": {
"date": "{{lastModifiedDate}}"
}
},
"activity": {
"customer": {
"type": {
"value": "individual"
},
"contacts": {
"contact": [
{
"firstName": "David",
"lastName": "Macias API",
"phone": [
{
"type": {
"value": "home"
},
"phoneNo": "2145555555",
"countryCode": "1",
"areaCode": "214"
}],
"email": [
{
"emailAddress": "david@davidapi.com"}]}]}}}}

Response:

{
"activity": {
"case": {
"id": 1971
},
"id": 3032
},
"id": "1ff6d-4d78-4406-966d-e948c4"
}

Step 8: Web hook showing an agent accepted the chat and sent an initial message, since our chat request asked for chat notifications we’ll have 3 web hooks in total.

#1 Agent assigned.
method:POST
message[1]
conversation{1}
id:1ff6d-4d78-4406-966d-e948c4
type{2}
value:assigned
user{2}
name:1 Agent
screenName:agent1
content:You are now chatting with agent1
sender{1}
type:system
timeStamp:1742834034000
id:4844574856

 
method:POST
conversation{1}
type{1}
value:startTyping
sender{2}
type:user
user{2}
name:1 Agent
screenName:agent1
timeStamp:1742834048000
id:7810389974

 

#3 Agent is first to respond in chat as well as the end typing message.

method:POST
conversation{1}
id:1ff6d-4d78-4406-966d-e948c4
type{1}
value:endTyping
sender{2}
type:user
user{2}
name:1 Agent
screenName:agent1
timeStamp:1742834050000
id:7111400674
1{6}
conversation{1}
id:1ff6d-4d78-4406-966d-e948c4
type{1}
value:text/html
content:Howdy.
sender{2}
type:user
user{2}
name:1 Agent
screenName:agent1
timeStamp:1742834050000
id:1692527591

 
Request:
Method: POST
URL: https://<FQDN>/system/ws/v19/clientapplications/messaging/sendmessage
Headers:
   Authorization: Bearer <access_token>
   Accept: application/json
   Content-Type: application/json
Body:
 
{ 
"conversation":{
"id":"{{conversationId}}"
},
"type":{
"value":"text/html"
},
"content":"How are you agent?"
}
 
Response:
204 Not Content
 
While the documentation wasn’t terrible, it did leave a lot to be desired and there as a good bit of piecing things together. I hope this helps others to integrate their chat bot with Cisco ECE.
 
~david

Leave a Reply