...
The 3rd party reporting system could be used by giving the essential following inputs to the 3rd party system in the desired message format.
The user input to the chatbot
The response of the chatbot to the given user input
Prerequisite:
To utilize the 3rd party reporting system, the following details of the reporting system are required. These details could be obtained from the 3rd party provider.
3rd party reporting system’s account
Url
Key
Message structure format (JSON)
With the above details, the required data are sent to the 3rd party in JSON format in a payload.
Example:
The below example is of Dashbot reporting:
“Input to Dashbot” Node: Through this node, the user input to the chatbot is fed to
...
the 3rd party reporting system.
“Output for Dashbot” Node: Through this node, the chatbot’s response to the user input is fed to the 3rd party reporting system.
...
Dashbot requires a different JSON structure for Google & Alexa. So the structure is constructed based on that. The Below code of Dashbot will give you an idea of how the message is constructed.
Code inside “Input to Dashbot“ node:
Code Block |
---|
var apiKeyAlexa = msg.apiKeyAlexa; |
...
var apiKeyGeneric = msg.apiKeyGeneric; |
...
var analytics = msg.analytics; |
...
if (analytics.dialog.surface == 'Alexa') { |
...
var dashbot = { |
...
"event": { |
...
"version": "1.0", |
...
"session": |
...
{ "new": analytics.dialog.sessionNew, |
...
"sessionId": analytics.sessionId, |
...
"application": |
...
{ "applicationId": analytics.applicationId |
...
}, |
...
"attributes": {}, |
...
"user": |
...
{ "userId": analytics.user.userId |
...
} }, "request": |
...
{ "type": analytics.dialog.type, |
...
"requestId": analytics.requestId, |
...
"timestamp": analytics.timeStampStart, |
...
"intent": |
...
{ "name": analytics.intent, |
...
"slots": analytics.slots |
...
} } } }; msg.dashbot = dashbot; |
...
msg.url = 'https://tracker.dashbot.io/track?platform=alexa&v=9.4.0-rest&type=incoming&apiKey=' + apiKeyAlexa; |
...
msg.payload = dashbot; |
...
return msg; |
...
} else { |
...
analytics.user.currentUserId = null; // we don't want to store that in analytics |
...
var dashbot = { |
...
"text": analytics.dialog.utterance, |
...
"userId": analytics.user.userId, |
...
"platformJson": analytics |
...
}; |
...
msg.dashbot = dashbot; |
...
msg.url = 'https://tracker.dashbot.io/track?platform=generic&v=9.4.0-rest&type=incoming&apiKey=' + apiKeyGeneric; |
...
msg.payload = dashbot; |
...
return msg; |
...
}
Info |
---|
Highlight important information in a panel like this one. To edit this panel's color or style, select one of the options in the menu. |
\uD83D\uDCCB Related articles
...
} |
Code inside “Output for Dashbot” node:
Code Block |
---|
var apiKeyAlexa = msg.apiKeyAlexa;
var apiKeyGeneric = msg.apiKeyGeneric;
var analytics = msg.analytics;
if (analytics.dialog.surface == 'Alexa') {
var dashbot = {
"event": {
"version": "1.0",
"session": {
"new": analytics.dialog.sessionNew,
"sessionId": analytics.sessionId,
"application": {
"applicationId": analytics.applicationId
},
"attributes": {},
"user": {
"userId": analytics.user.userId
}
},
"request": {
"type": analytics.dialog.type,
"requestId": analytics.requestId,
"timestamp": analytics.timeStampEnd,
"intent": {
"name": analytics.intent,
"slots": analytics.slots
}
}
},
"response": {
"version": "1.0",
"sessionAttributes": {},
"response": {
"shouldEndSession": analytics.shouldEndSession,
"outputSpeech": {
"type": "SSML",
"ssml": "<speak>" + analytics.responseText + "</speak>"
}
}
}
};
msg.dashbot = dashbot;
msg.url = 'https://tracker.dashbot.io/track?platform=alexa&v=9.4.0-rest&type=outgoing&apiKey=' + apiKeyAlexa;
msg.payload = dashbot;
return msg;
} else {
analytics.user.currentUserId = null; // we don't want to store that in analytics
var dashbot = {
"text": analytics.responseText,
"userId": analytics.user.userId,
"platformJson": analytics
};
msg.dashbot = dashbot;
msg.url = 'https://tracker.dashbot.io/track?platform=generic&v=9.4.0-rest&type=outgoing&apiKey=' + apiKeyGeneric;
msg.payload = dashbot;
return msg;
}
|