2.1.0 • Published 9 years ago

telegraf-wit v2.1.0

Weekly downloads
11
License
MIT
Repository
github
Last release
9 years ago

Build Status NPM Version js-standard-style

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.new(token)

Initialize new TelegrafWit.

ParamTypeDescription
tokenStringWit Token

TelegrafWit.meaning(message, msgId, threadId, context) => Promise

Returns the extracted meaning from a sentence, based on the context.

ParamTypeDescription
messageStringUser message
messageIdStringMessage id
threadIdStringThread id
contextObject(Optional)User’s context

TelegrafWit.on(action, fn, [fn, ...])

Adds merge handlers to app

ParamTypeDescription
actionStringaction type(merge, message, %function name%)
fnFunctionMiddleware

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
});
2.1.0

9 years ago

2.0.0

10 years ago

1.0.0

10 years ago

0.5.1

10 years ago

0.5.0

10 years ago

0.4.0

10 years ago

0.2.0

10 years ago

0.1.0

10 years ago

0.0.0

10 years ago