Universal Integration with REST API

Using the Universal integration, you can use Dashbot with any conversational user interface.

Create a bot API key

Each bot needs its own API key for tracking.

Create a bot to get an API key.

Integrate the REST API

There are two integration points as outlined below.

Message Format

You can send the following fields:

- <tt>text</tt> – *string* – (required)
- <tt>userId</tt> – *string* – (required) – should be the SAME userId for both incoming and outgoing messages this is NOT the bot’s user ID
- <tt>intent</tt> – *object* – (optional)
  - <tt>name</tt> – *string*
  - <tt>inputs</tt> – *array*
      - <tt>input</tt> – *object*
            - <tt>name</tt> – *string*
            - <tt>value</tt> – *string*
  - confidence – *float (optional) –* the confidence value for your intent from 0.0 (completely uncertain) to 1.0 (completely certain)
- <tt>images</tt> – *array* – (optional)
  - - <tt>url</tt> – *string*
- <tt>buttons</tt> – *array* – (optional)
  - <tt>button</tt> – *object*
      - <tt>id</tt> – *string*
      - <tt>label</tt> – *string*
      - <tt>value</tt> – *string*
- <tt>postback</tt> – *object* (optional)
  - <tt>buttonClick</tt> – *object*
      - <tt>buttonId</tt> – *string*
- <tt>platformJson</tt> – *object* (optional) – send your platform-specific message JSON here. It will be available for viewing in your transcripts. Reporting on this data is available with our enterprise plan.
- platformUserJson – *object* (optional) – send any user-specific information (ie. zipcode, A/B test group, etc). Reporting on this data is available from **audience builder**, with our enterprise plan.
  - If you use these exact field names, they will be used in the expected places on Dashbot reports:
      - firstName
      - lastName
      - locale
      - timezone
      - gender
- sessionId – *string* (optional) – if you do not want Dashbot to calculate sessions based on the 5-minute message timeout, you may send sessionId instead.

1. When your bot receives a message


When your bot receives a message, post the data to the following endpoint:

https://tracker.dashbot.io/track?platform=universal&v=10.1.1-rest&type=incoming&apiKey=<strong>API_KEY_HERE</strong>

Make sure to set the ‘Content-Type’ header to ‘application/json’

The data to POST should pass the following data:

{
  "text": "Hi, bot",
  "userId": "USERIDHERE123123",
  "platformJson": {
    "whateverJson": "any JSON specific to your platform can be stored here"
  }
}

Sample cURL

curl -X POST -H "Content-Type: application/json" <br></br>
-d '{"text":"Hi, bot","userId":"USERIDHERE123123","platformJson":{"whateverJson":"any JSON specific to your platform can be stored here"}}' <br></br>
'https://tracker.dashbot.io/track?platform=universal&v=11.1.0-rest&type=incoming&apiKey=<strong>API_KEY_HERE</strong>'

Note
This is just an example — we accept all the fields listed at the top of the page.

2. When your bot sends a message


When your bot sends a message, POST to the following endpoint:

https://tracker.dashbot.io/track?platform=universal&v=11.1.0-rest&type=outgoing&apiKey=<strong>API_KEY_HERE</strong>

Make sure to set the ‘Content-Type’ header to ‘application/json’

The data to POST should pass the following data:

{
  "text": "Hello, my human pet",
  "userId": "USERIDHERE123123",
  "platformJson": {
    "whateverJson": "any JSON specific to your platform can be stored here"
  }
}

Sample cURL

curl -X POST -H "Content-Type: application/json" <br></br>
-d '{"text":"Hello, my human pet","userId":"USERIDHERE123123","platformJson":{"whateverJson":"any JSON specific to your platform can be stored here"}}' <br></br>
'https://tracker.dashbot.io/track?platform=universal&v=11.1.0-rest&type=outgoing&apiKey=<strong>API_KEY_HERE</strong>'

Sample JSON with optional fields

{
  "text": "Hello, my human pet",
  "userId": "USERIDHERE123123",
  "intent": {
    "name": "HELLO"
  }, 
  "images": [{
    "url": "https://media.giphy.com/media/mIZ9rPeMKefm0/giphy.gif"
  }],
  "platformUserJson": {
    "firstName": "Will",
    "lastName": "Robinson",
    "locale": "en_US",
    "timezone": "-8",
    "gender": "male"
  },
  "platformJson": {
    "whateverJson": "any JSON specific to your platform can be stored here"
  }
}

Note
This is just an example — we accept all the fields listed at the top of the page.

Example

View a complete example.