wit.ai middleware for Telegraf.
Easily create text bots that humans can chat with on their preferred messaging platform.
-- wit.ai
$ npm install telegraf-wit
const Telegraf = require('telegraf')
const TelegrafWit = require('telegraf-wit')
const telegraf = new Telegraf(process.env.BOT_TOKEN)
const wit = new TelegrafWit(process.env.WIT_TOKEN)
telegraf.on('text', (ctx) => {
return wit.getMeaning(ctx.message.text)
.then((result) => {
// reply to user with wit result
return ctx.reply(JSON.stringify(result, null, 2))
})
})
telegraf.startPolling()
const Telegraf = require('telegraf')
const TelegrafWit = require('telegraf-wit')
const telegraf = new Telegraf(process.env.BOT_TOKEN)
const wit = new TelegrafWit(process.env.WIT_TOKEN)
// Session for storing story context
telegraf.use(Telegraf.memorySession())
// Add wit conversation middleware
telegraf.use(wit.middleware())
// Merge handlers
wit.on('merge', (ctx) => {
ctx.wit.context.city = firstEntityValue(ctx.wit.entities, 'location')
})
// Message handlers
wit.on('message', (ctx) => ctx.reply(ctx.wit.message))
// Action handlers
wit.on('get-forecast', (ctx) => {
if (ctx.wit.confidence > 0.02) {
ctx.wit.context.forecast = 'As usual :)'
}
})
telegraf.startPolling()
There are some other examples.
By default TelegrafWit will print all wit errors to stderr.
To perform custom error-handling logic you can set onError
handler:
wit.on('error', (ctx) => {
console.error('wit error', err)
}
TelegrafWit
Initialize new TelegrafWit.
Param | Type | Description |
---|---|---|
token | String |
Wit Token |
Returns the extracted meaning from a sentence, based on the context.
Param | Type | Description |
---|---|---|
message | String |
User message |
messageId | String |
Message id |
threadId | String |
Thread id |
context | Object (Optional) |
User’s context |
Adds merge handlers to app
Param | Type | Description |
---|---|---|
action | String |
action type(merge, message, %function name%) |
fn | Function |
Middleware |
Telegraf user context props:
wit.on('message', (ctx) => {
ctx.wit.context // wit context
ctx.wit.confidence // confidence
ctx.wit.message // wit message
ctx.wit.entities // entities
ctx.wit.quickReplies // Quick replies
});