hculap:meteor-wit
Wit.ai is natural language for developers service, which allows you to create your own Bot Engine. See the docs for more information.
This package is wrapper for npm node-wit Node.js SDK. Package has been adapted for meteor, npm deps has been removed, request package has beend replaced by meteor HTTP package and old ES5 code has beed migrated to ES6.
In your Meteor app directory, enter:
$ meteor add hculap:meteor-wit
The Wit module provides a Wit class with the following methods:
message
- the Wit message APIconverse
- the low-level Wit converse APIrunActions
- a higher-level method to the Wit converse API
The Wit constructor takes the following parameters:
token
- the access token of your Wit instanceactions
- the object with your actionslogger
- (optional) the object handling the logging.
The actions
object has action names as properties, and action implementations as values.
You need to provide at least an implementation for the special actions say
, merge
and error
.
A minimal actions
object looks like this:
const actions = {
say: (sessionId, context, message, cb) => {
console.log(message);
cb();
},
merge: (sessionId, context, entities, message, cb) => {
cb(context);
},
error: (sessionId, context, error) => {
console.log(error.message);
},
};
A custom action takes the following parameters:
sessionId
- a unique identifier describing the user sessioncontext
- the object representing the session statecb(context)
- a callback function to fire at the end of your action with the updated context.
Example:
import { Wit } from 'meteor/hculap:node-wit';
const client = new Wit(token, actions);
The logger
object should implement the methods debug
, log
, warn
and error
.
All methods take a single parameter message
.
For convenience, we provide a Logger
, taking a log level parameter (provided as Loger.LEVELS
).
The following levels are defined: DEBUG
, LOG
, WARN
, ERROR
.
Example:
import { Wit, Logger } from 'meteor/hculap:node-wit';
const logger = new Logger(Logger.LEVELS.DEBUG);
const client = new Wit(token, actions, logger);
The Wit message API.
Takes the following parameters:
message
- the text you want Wit.ai to extract the information fromcb(error, data)
- a callback function with the JSON response
Example:
client.message('what is the weather in London?', (error, data) => {
if (error) {
console.log('Oops! Got an error: ' + error);
} else {
console.log('Yay, got Wit.ai response: ' + JSON.stringify(data));
}
});
A higher-level method to the Wit converse API.
Takes the following parameters:
sessionId
- a unique identifier describing the user sessionmessage
- the text received from the usercontext
- the object representing the session statecb(error, context)
- a callback function with the updated contextmaxSteps
- (optional) the maximum number of actions to execute (defaults to 5)
Example:
const session = 'my-user-session-42';
const context0 = {};
client.runActions(session, 'what is the weather in London?', context0, (e, context1) => {
if (e) {
console.log('Oops! Got an error: ' + e);
return;
}
console.log('The session state is now: ' + JSON.stringify(context1));
client.runActions(session, 'and in Brussels?', context1, (e, context2) => {
if (e) {
console.log('Oops! Got an error: ' + e);
return;
}
console.log('The session state is now: ' + JSON.stringify(context2));
});
});
The low-level Wit converse API.
Takes the following parameters:
sessionId
- a unique identifier describing the user sessionmessage
- the text received from the usercontext
- the object representing the session statecb(error, data)
- a callback function with the JSON response
Example:
client.converse('my-user-session-42', 'what is the weather in London?', {}, (error, data) => {
if (error) {
console.log('Oops! Got an error: ' + error);
} else {
console.log('Yay, got Wit.ai response: ' + JSON.stringify(data));
}
});