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
-
BotService
- new BotService(processor, options, [senderLogger])
-
.processEvent(body) ⇒
Promise.<Array.<{message:Object, pageId:string}>>
-
.verifyRequest(body, headers) ⇒
Promise
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 |
Promise.<Array.<{message:Object, pageId:string}>>
botService.processEvent(body) ⇒ 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 |
Promise
botService.verifyRequest(body, headers) ⇒ 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 |
function
botServiceQuickReplyPatch(bot, [startAction]) ⇒ 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'
});
});