Analyzing the Bot
Listening to action event
to track chat events simply use
const { Router } = require('wingbot');const botRoot = new Router();botRoot.on('action', (senderId, action, text, req, lastAction, doNotTrack, skill, res) => {if (action) {// send info that `action` was passed}if (req.isText()) {// was pure test}// or use whole request eventmyMagicTracker(req.event);});
Logging AI success rate
aiHandled
property is set to true, when intent was matched (using ai.match()
method or ai.navigate()
). Otherwise it is set to false.
You can set
req.aiHandled
to true with methodreq.markAsHandled()
const { Router, ai } = require('wingbot');const botRoot = new Router();botRoot.use(ai.match('intent'), ...);botRoot.on('action', (senderId, action, text, req, lastAction, doNotTrack, skill, res) => {// logging winning intentif (req.intents && req.intents.length > 0) {const [{ intent, score, entities = [] }] = req.intents;}});
When you need to collect AI feedback from navigator/makeSure
matchers use ai.onConfirmMiddleware(<handler>)
middleware.
Tracking disambiguation
It's good to track when disambbiguation occurs and if user selects the right meaning
const {Router,Processor,FLAG_DISAMBIGUATION_OFFERED,FLAG_DISAMBIGUATION_SELECTED} = require('wingbot');const botRoot = new Router();botRoot.on('action', (senderId, action, text, req, lastAction, doNotTrack, skill, res) => {if (senderMeta.flag === FLAG_DISAMBIGUATION_OFFERED) {const { disambiguationIntents } = senderMeta;// when bot offers disambiguationIntents to let the user to choose}});const processor = new Processor(botRoot);botRoot.on('action', (senderId, action, text, req, lastAction, doNotTrack, skill, senderMeta) => {if (senderMeta.flag === FLAG_DISAMBIGUATION_SELECTED) {const { likelyIntent, disambText } = senderMeta;// when user means disambText is likelyIntent}});