MS BotService connector for wingbot.ai
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci
.vscode
bin
src
test
.eslintrc
.gitignore
.npmignore
LICENSE
README.md
jsconfig.json
package-lock.json
package.json

README.md

Microsoft BotService plugin for wingbot.ai

const { Router, Bot } = require('wingbot');
const { BotService } = require('wingbot-botservice');

const bot = new Bot();

const processor = new Processor(bot);

const bs = new BotService(processor, {
    appId: '123',
    appSecret: '456'
});

// the route
module.exports.bot = async (req, res) => {
    const { body, headers } = req;

    await bs.verifyRequest(body, headers);

    await bs.processEvent(body);
};

Using backchannel for sending postBacks to the bot

const directLine = new DirectLine();
directLine.postActivity({
    type:'event',
    name:'postBack',
    from:{ id: botserviceUserId },
    value:{ action: 'action-path', data: {/* optional */} }
});

API

Classes

BotService

BotService connector for wingbot.ai

Functions

botServiceQuickReplyPatch(bot, [startAction])function

Patch, which solves problem with BotFramework. Always, when conversationId is changed, middleware looks for matching quick replies from first text request. When there are some, it redirects user

BotService

BotService connector for wingbot.ai

Kind: global class

new BotService(processor, options, [senderLogger])

Param Type Default Description
processor Processor wingbot Processor instance
options Object
options.appId string botservice client id
options.appSecret string botservice client secret
[options.grantType] string boservice authentication grant_type
[options.scope] string boservice authentication scope
[options.uri] string boservice authentication uri
[options.welcomeAction] string | null "'start'" conversation start emits postback
[options.requestLib] function request library replacement for testing
[options.overPublic] string override public key for testing
[senderLogger] console optional console like chat logger

botService.processEvent(body) ⇒ Promise.<Array.<{message:Object, pageId:string}>>

Process Facebook request

Kind: instance method of BotService
Returns: Promise.<Array.<{message:Object, pageId:string}>> - - unprocessed events

Param Type Description
body bs.Activity event body

botService.verifyRequest(body, headers) ⇒ Promise

Verify Facebook webhook event

Kind: instance method of BotService
Throws:

  • Error when authorization token is invalid or missing
Param Type Description
body Object parsed request body
headers Object request headers

botServiceQuickReplyPatch(bot, [startAction]) ⇒ function

Patch, which solves problem with BotFramework. Always, when conversationId is changed, middleware looks for matching quick replies from first text request. When there are some, it redirects user

Kind: global function
Returns: function - - the middleware

Param Type Default Description
bot Router chatbot itself
[startAction] string "start" start action to fetch quick replies

Example

const { Router } = require('wingbot');
const { botServiceQuickReplyPatch } = require('wingbot-botservice');

const bot = new Router();

// attach as first
const patch = botServiceQuickReplyPatch(bot, 'start');
bot.use(patch);

bot.use('start', (req, res) => {
    res.text('Hello', {
        goto: 'Go to'
    });
});