diff --git a/lib/Voxa-Chatbase.js b/lib/Voxa-Chatbase.js index 564a988..e8b35fe 100644 --- a/lib/Voxa-Chatbase.js +++ b/lib/Voxa-Chatbase.js @@ -26,42 +26,16 @@ function register(skill, config) { lambdaLog.info('Sending to chatbase'); - const timestamp = Date.now().toString(); - const intentName = request.intent.name || request.request.type; - const slots = {}; - - _.each(request.intent.slots, (x) => { - slots[x.name] = x.value; - }); - - const userMessage = request.intent.slots ? JSON.stringify(slots) : ''; - const appMessage = reply.msg.statements.join(' '); - const messageSet = Chatbase.newMessageSet() .setApiKey(pluginConfig.apiKey) .setPlatform(pluginConfig.platform) .setVersion('1.0'); // PROCESSING INCOMING RESPONSE - const user = messageSet.newMessage() - .setAsTypeUser() - .setCustomSessionId(request.session.sessionId) - .setIntent(intentName) - .setMessage(userMessage) - .setTimestamp(timestamp) - .setUserId(request.user.userId); - - if (_.includes(['AMAZON.FallbackIntent', 'Unhandled', 'DefaultFallbackIntent'], request.intent.name)) { - user.setAsNotHandled(); - } + createMessage(messageSet, request, reply, true); // PROCESSING OUTGOING RESPONSE - messageSet.newMessage() - .setAsTypeAgent() - .setCustomSessionId(request.session.sessionId) - .setMessage(appMessage) - .setTimestamp(timestamp) - .setUserId(request.user.userId); + createMessage(messageSet, request, reply); // SENDING ANALYTICS return messageSet.sendMessageSet() @@ -74,3 +48,39 @@ function register(skill, config) { }); } } + +function createMessage(messageSet, request, reply, isUser) { + const unhandledIntents = ['AMAZON.FallbackIntent', 'Unhandled', 'DefaultFallbackIntent']; + const timestamp = Date.now().toString(); + + const newMessage = messageSet.newMessage() + .setCustomSessionId(request.session.sessionId) + .setTimestamp(timestamp) + .setUserId(request.user.userId); + + if (isUser) { + const slots = {}; + + _.each(request.intent.slots, (x) => { + slots[x.name] = x.value; + }); + + const intentName = request.intent.name || request.request.type; + const userMessage = request.intent.slots ? JSON.stringify(slots) : ''; + + newMessage + .setAsTypeUser() + .setMessage(userMessage) + .setIntent(intentName); + + if (_.includes(unhandledIntents, request.intent.name)) { + newMessage.setAsNotHandled(); + } + } else { + const appMessage = reply.msg.statements.join(' '); + + newMessage + .setAsTypeAgent() + .setMessage(appMessage); + } +} diff --git a/run-ci.sh b/run-ci.sh index dd85b9f..d5d1456 100755 --- a/run-ci.sh +++ b/run-ci.sh @@ -8,4 +8,4 @@ npm run lint if [ "${CI}" = "true" ]; then npm install coveralls cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js -fi \ No newline at end of file +fi