telegraf-wit
v2.1.0
Published
wit.ai middleware for Telegraf
Downloads
8
Maintainers
Readme
Telegraf + wit.ai
wit.ai middleware for Telegraf.
Easily create text bots that humans can chat with on their preferred messaging platform.
-- wit.ai
Installation
$ npm install telegraf-wit
Message processing example
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()
Story processing example
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.
Error Handling
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)
}
API
TelegrafWit
TelegrafWit.new(token)
Initialize new TelegrafWit.
| Param | Type | Description |
| --- | --- | --- |
| token | String
| Wit Token |
TelegrafWit.meaning(message, msgId, threadId, context)
=> Promise
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 |
TelegrafWit.on(action, fn, [fn, ...])
Adds merge handlers to app
| Param | Type | Description |
| --- | --- | --- |
| action | String
| action type(merge, message, %function name%) |
| fn | Function
| Middleware |
Telegraf context
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
});