conversation-analytics-client
Version:
The client library to aggregate information for the conversation analytics.
80 lines • 3.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const actions_on_google_1 = require("./actions-on-google");
const alexa_1 = require("./alexa");
const dialog_data_factory_1 = require("./dialog-data-factory");
const request = require("request");
const packageInfo = require('../package.json');
const AGGREGATE_API_URL = 'https://us-central1-conversation-analytics-250005.cloudfunctions.net/aggregate';
class ConversationAnalytics {
constructor(options) {
this.options = options;
}
trace(data) {
return new Promise((resolve, reject) => {
if (this.isHealthCheck(this.options.assistantType, data)) {
console.log('The request is for health check. Ignore.');
resolve();
return;
}
const dialogData = this.createDialogData(this.options.assistantType, data);
const requestOption = {
headers: {
'Content-Type': 'application/json; charset=utf-8'
},
auth: {
'bearer': this.options.token
},
body: JSON.stringify(dialogData)
};
request.post(AGGREGATE_API_URL, requestOption, (error, response, body) => {
if (error) {
console.log('error: ' + error);
}
else {
if (response.statusCode !== 200) {
console.log('error: ' + error);
console.log('error body: ' + body);
}
}
resolve();
});
});
}
isHealthCheck(assistantType, data) {
if (assistantType === dialog_data_factory_1.AssistantType.ALEXA) {
return false;
}
else if (assistantType === dialog_data_factory_1.AssistantType.ACTIONS_ON_GOOGLE) {
return ConversationAnalytics.actionsOnGoogleFactory.isHealthCheck(data);
}
else {
throw new Error("Assistant type not supported.");
}
}
createDialogData(assistantType, data) {
if (assistantType === dialog_data_factory_1.AssistantType.ACTIONS_ON_GOOGLE) {
const header = {
timestamp: new Date().getTime(),
type: dialog_data_factory_1.AssistantType.ACTIONS_ON_GOOGLE,
version: packageInfo.version
};
return ConversationAnalytics.actionsOnGoogleFactory.create(header, data, this.options.userId);
}
else if (assistantType === dialog_data_factory_1.AssistantType.ALEXA) {
const header = {
timestamp: new Date().getTime(),
type: dialog_data_factory_1.AssistantType.ALEXA,
version: packageInfo.version
};
return ConversationAnalytics.alexaFactory.create(header, data);
}
else {
throw new Error("Assistant type not supported.");
}
}
}
exports.ConversationAnalytics = ConversationAnalytics;
ConversationAnalytics.actionsOnGoogleFactory = new actions_on_google_1.default();
ConversationAnalytics.alexaFactory = new alexa_1.default();
//# sourceMappingURL=conversation-analytics.js.map