Classes

BuildRouterRouter
BuildRouter
Plugins

Constants

DUMMY_ROUTE : TransformedRoute

Typedefs

BuildInfo : object
Resolver : object
Route : object
TransformedRoute : object
LinksMap : Map.<(string|number), string>
Block : object
BotConfig : object
ConfigStorage : object
RouteConfig : object
LinkTranslatorstring
BuildRouterContext : object
BotContextExtention : object
BotContext : BotContextExtention | BuildRouterContext.<C>
Plugin : function
PluginFactoryRouter | Middleware
PluginFactoryOptions : object
 

BuildRouter ⇐ Router

Kind: global class
Extends: Router

 

new BuildRouter()

Build bot from Wingbot configuration file or snapshot url

 

new BuildRouter(block, plugins, context, [fetchFn])

Create new router from configuration

ParamTypeDescription
blockBotConfig | Block
pluginsPluginscustom code blocks resource
contextBuildRouterContext.<C> | Promise.<BuildRouterContext.<C>>the building context
[fetchFn]fetchoverride a request function

Example

// usage of plugins
const { BuildRouter, Plugins } = require('wingbot');
const dynamoDb = require('./lib/dynamodb');
const config = require('./config');
const plugins = new Plugins();
plugins.register('exampleBlock', async (req, res, postBack) => {
await res.run('responseBlockName');
});
const bot = new BuildRouter({
botId: 'b7a71c27-c295-4ab0-b64e-6835b50a0db0',
snapshot: 'master',
token: 'adjsadlkadjj92n9u9'
}, plugins);
module.exports = bot;
 

buildRouter._context : BotContext.<C> | Promise.<BuildRouterContext.<C>>

Kind: instance property of BuildRouter

 

buildRouter._resolvedContext : BotContext.<C>

Kind: instance property of BuildRouter

 

buildRouter._linksMap : LinksMap

Kind: instance property of BuildRouter

 

buildRouter._configStorage : ConfigStorage | Promise.<ConfigStorage>

Kind: instance property of BuildRouter

 

buildRouter.keepConfigFor : number

Timeout, when the router is not checking for new configuration

Kind: instance property of BuildRouter

 

buildRouter.loadBot() ⇒ Promise.<object>

Loads conversation configuration

Kind: instance method of BuildRouter

 

buildRouter._buildBot(block, setConfigTimestamp, lastmod)

Kind: instance method of BuildRouter

ParamTypeDefault
blockBlock
setConfigTimestampnumber
lastmodstring"-"
 

buildRouter._createLinksMap(block) ⇒ LinksMap

Kind: instance method of BuildRouter

ParamType
blockBlock
 

buildRouter._enabledByRouteConfig(routeConfig)

Kind: instance method of BuildRouter

ParamType
routeConfigRouteConfig
 

buildRouter._getIncludedBlockId(route) ⇒ string | null

Kind: instance method of BuildRouter

ParamType
routeRoute
 

buildRouter._getBlockById(staticBlockId) ⇒ Block | null

Kind: instance method of BuildRouter

ParamType
staticBlockIdstring
 

buildRouter._getRouteConfig(route) ⇒ RouteConfig

Kind: instance method of BuildRouter

ParamType
routeTransformedRoute
 

buildRouter._findEntryPointsInResolver(linksMap, includedBlock, route) ⇒ void

Kind: instance method of BuildRouter

ParamType
linksMapLinksMap
includedBlockBlock
routeTransformedRoute
 

buildRouter._buildRouteHead(route, nextRouteIsSameResponder, includedBlockId) ⇒ Array.<Middleware>

Kind: instance method of BuildRouter

ParamType
routeTransformedRoute
nextRouteIsSameResponderboolean
includedBlockIdstring
 

buildRouter._buildRoutes(routes)

Kind: instance method of BuildRouter

 

buildRouter._lastMessageIndex(resolvers) ⇒ number

Kind: instance method of BuildRouter

ParamType
resolversArray.<Resolver>
 

buildRouter.buildResolvers(resolvers, [route], [buildInfo]) ⇒ Array.<Middleware>

Kind: instance method of BuildRouter

ParamType
resolversArray.<Resolver>
[route]TransformedRoute
[buildInfo]BuildInfo
 

buildRouter._resolverFactory(resolver, context, buildInfo) ⇒ Middleware

Kind: instance method of BuildRouter

ParamType
resolverResolver
contextBotContext.<C>
buildInfoBuildInfo
 

BuildRouter.fromData(blocks, [plugins], [context])

Kind: static method of BuildRouter

ParamTypeDescription
blocksArray.<Block>blocks list
[plugins]Plugins
[context]BotContext.<C>
 

BuildRouter

Kind: global class

 

new BuildRouter()

Build bot from Wingbot configuration file or snapshot url

 

new BuildRouter(block, plugins, context, [fetchFn])

Create new router from configuration

ParamTypeDescription
blockBotConfig | Block
pluginsPluginscustom code blocks resource
contextBuildRouterContext.<C> | Promise.<BuildRouterContext.<C>>the building context
[fetchFn]fetchoverride a request function

Example

// usage of plugins
const { BuildRouter, Plugins } = require('wingbot');
const dynamoDb = require('./lib/dynamodb');
const config = require('./config');
const plugins = new Plugins();
plugins.register('exampleBlock', async (req, res, postBack) => {
await res.run('responseBlockName');
});
const bot = new BuildRouter({
botId: 'b7a71c27-c295-4ab0-b64e-6835b50a0db0',
snapshot: 'master',
token: 'adjsadlkadjj92n9u9'
}, plugins);
module.exports = bot;
 

buildRouter._context : BotContext.<C> | Promise.<BuildRouterContext.<C>>

Kind: instance property of BuildRouter

 

buildRouter._resolvedContext : BotContext.<C>

Kind: instance property of BuildRouter

 

buildRouter._linksMap : LinksMap

Kind: instance property of BuildRouter

 

buildRouter._configStorage : ConfigStorage | Promise.<ConfigStorage>

Kind: instance property of BuildRouter

 

buildRouter.keepConfigFor : number

Timeout, when the router is not checking for new configuration

Kind: instance property of BuildRouter

 

buildRouter.loadBot() ⇒ Promise.<object>

Loads conversation configuration

Kind: instance method of BuildRouter

 

buildRouter._buildBot(block, setConfigTimestamp, lastmod)

Kind: instance method of BuildRouter

ParamTypeDefault
blockBlock
setConfigTimestampnumber
lastmodstring"-"
 

buildRouter._createLinksMap(block) ⇒ LinksMap

Kind: instance method of BuildRouter

ParamType
blockBlock
 

buildRouter._enabledByRouteConfig(routeConfig)

Kind: instance method of BuildRouter

ParamType
routeConfigRouteConfig
 

buildRouter._getIncludedBlockId(route) ⇒ string | null

Kind: instance method of BuildRouter

ParamType
routeRoute
 

buildRouter._getBlockById(staticBlockId) ⇒ Block | null

Kind: instance method of BuildRouter

ParamType
staticBlockIdstring
 

buildRouter._getRouteConfig(route) ⇒ RouteConfig

Kind: instance method of BuildRouter

ParamType
routeTransformedRoute
 

buildRouter._findEntryPointsInResolver(linksMap, includedBlock, route) ⇒ void

Kind: instance method of BuildRouter

ParamType
linksMapLinksMap
includedBlockBlock
routeTransformedRoute
 

buildRouter._buildRouteHead(route, nextRouteIsSameResponder, includedBlockId) ⇒ Array.<Middleware>

Kind: instance method of BuildRouter

ParamType
routeTransformedRoute
nextRouteIsSameResponderboolean
includedBlockIdstring
 

buildRouter._buildRoutes(routes)

Kind: instance method of BuildRouter

 

buildRouter._lastMessageIndex(resolvers) ⇒ number

Kind: instance method of BuildRouter

ParamType
resolversArray.<Resolver>
 

buildRouter.buildResolvers(resolvers, [route], [buildInfo]) ⇒ Array.<Middleware>

Kind: instance method of BuildRouter

ParamType
resolversArray.<Resolver>
[route]TransformedRoute
[buildInfo]BuildInfo
 

buildRouter._resolverFactory(resolver, context, buildInfo) ⇒ Middleware

Kind: instance method of BuildRouter

ParamType
resolverResolver
contextBotContext.<C>
buildInfoBuildInfo
 

BuildRouter.fromData(blocks, [plugins], [context])

Kind: static method of BuildRouter

ParamTypeDescription
blocksArray.<Block>blocks list
[plugins]Plugins
[context]BotContext.<C>
 

Plugins

Kind: global class

 

new Plugins()

Custom code plugins for BuildRouter and wingbot.ai

 

plugins.getPluginOptions(name) ⇒ PluginFactoryOptions

Kind: instance method of Plugins

ParamType
namestring
 

plugins.getWrappedPlugin(name, [paramsData], [items], [context])

Get plugin for the router

Kind: instance method of Plugins

ParamType
namestring
[paramsData]object
[items]Map.<string, Array.<function()>> | Object.<string, Middleware>
[context]object
[context.isLastIndex]boolean
[context.router]Router
[context.configuration]object
[context.defaultPlugin]Middleware

Example

const { Router } = require('wingbot');
const bot = new Router();
// simply
bot.use('simple-route', plugins.getWrappedPlugin('myCoolPLugin'));
// fully
bot.use('full-plugin-route', plugins
.getWrappedPlugin(
'fancyPLugin',
{ param: 123 },
{
onSuccess: (req, res) => { res.text('yes, success'); }
}
));
 

plugins.register(name, [plugin])

Register plugin

Kind: instance method of Plugins

ParamTypeDescription
namestring | Plugins.<S, C>plugin name or plugins object to include
[plugin]Plugin.<S, C> | Routerplugin - optional when including plugin object
 

plugins.registerFactory(name, pluginFactory, [options])

Register plugin factory

Kind: instance method of Plugins

ParamTypeDescription
namestringplugin name or plugins object to include
pluginFactoryPluginFactory.<S, C>function, which returns a plugin
[options]PluginFactoryOptions
 

DUMMY_ROUTE : TransformedRoute

Kind: global constant

 

BuildInfo : object

Kind: global typedef
Properties

NameType
[expectedToAddResolver]boolean
[attachedRouter]boolean
[notLastMessage]boolean
 

Resolver : object

Kind: global typedef
Properties

NameTypeDescription
[id]string | numberonly for text messages with random characters
typestring
paramsobject
[params.staticBlockId]string
[params.items]object
[tag]string
 

Route : object

Kind: global typedef
Properties

NameType
idnumber
pathstring | null
[skill]string | null
resolversArray.<Resolver>
[isFallback]boolean
[aiTags]Array.<string>
[isResponder]boolean
[respondsToRouteId]number
[aiTitle]string | Array.<any>
[aiGlobal]boolean
[bounceAllowedTo]BounceAllow
[bounceReturn]BounceReturn
[isEntryPoint]boolean
 

TransformedRoute : object

Kind: global typedef
Properties

NameType
[expectedPath]string
 

LinksMap : Map.<(string|number), string>

Kind: global typedef

 

Block : object

Kind: global typedef
Properties

NameType
staticBlockIdstring
routesArray.<Route>
[isRoot]boolean
[disabled]boolean
[blockName]string
[blockType]string
 

BotConfig : object

Kind: global typedef
Properties

NameTypeDescription
botIdstringthe ID of bot
snapshotstringsnapshot stage of bot
tokenstring | Promise.<string>authorization token for bot
[url]stringspecify alternative configuration resource
 

ConfigStorage : object

Kind: global typedef
Properties

NameType
invalidateConfigObject
getConfigTimestampObject
updateConfigObject
getConfigObject
 

RouteConfig : object

Kind: global typedef
Properties

NameType
pathstring
[enabled]boolean
 

LinkTranslator ⇒ string

Kind: global typedef

ParamType
senderIdstring
textLabelstring
urlTextstring
isExtUrlboolean
stateobject
pageIdstring
 

BuildRouterContext : object

Kind: global typedef
Properties

NameTypeDescription
[linksTranslator]LinkTranslatorfunction, that translates links globally
[configStorage]ConfigStoragefunction, that translates links globally
[allowForbiddenSnippetWords]booleandisable security rule
[defaultPlugin]Middlewareto be able to test configurations without plugins
[routeConfigs]Array.<RouteConfig>list of disabled routes
[configuration]Ccontext data
 

BotContextExtention : object

Kind: global typedef
Properties

NameTypeDescription
[linksMap]LinksMap
[isLastIndex]boolean
[isLastMessage]boolean
[router]BuildRouter
[path]string
[isFallback]boolean
[expectedPath]string
[isResponder]boolean
[routeId]string | number
[blockName]string
[blockType]string
[isRoot]boolean
[staticBlockId]string
[blocks]Array.<Block>
[BuildRouter]object
[resolverId]string | numberonly for text messages with random characters
 

BotContext : BotContextExtention | BuildRouterContext.<C>

Kind: global typedef

 

Plugin : function

Kind: global typedef

ParamType
reqRequest
resResponder
[postBack]function
[context]Object
[paramsData]object
 

PluginFactory ⇒ Router | Middleware

Kind: global typedef

ParamType
paramsobject
configurationC
 

PluginFactoryOptions : object

Kind: global typedef
Properties

NameType
[notLastMessageItems]Array.<string>