Options
All
  • Public
  • Public/Protected
  • All
Menu

bBot

Index

Enumerations

Classes

Interfaces

Type aliases

Variables

Functions

Object literals

Type aliases

Collection

Collection: object

Collection of condition types assigned to named keys.

Type declaration

Condition

Condition: object

One or more condition key/value pairs.

Type declaration

ConditionInput

ConditionInput: string | RegExp | Condition | Condition[] | Collection

Mix of accepted types for conditions constructor.

NLUCriteria

NLUCriteria: object

Collection of NLU matching criteria by key

Type declaration

NLUKeys

NLUKeys: keyof NLUKey

NLUResults

NLUResults: object

Collection of NLUResult instances by key

Type declaration

NLUResultsRaw

NLUResultsRaw: object

Collection of raw NLU results by key (also used for matched subset)

Type declaration

ProcessKeys

ProcessKeys: keyof ProcessKey

StatusKey

StatusKey: keyof Status

ThoughtProcesses

ThoughtProcesses: object & object

Collection of Thought instances, extends object.

action

action: ICallback | string

Alias for acceptable branch action types.

keys

keys: keyof ConditionKey

Variables

Const adapter

adapter: Adapter = new Adapter(bBot)

align

align: align

Const bBot

bBot: Bot = new Bot()

Bot instance, almost always imported instead of class.

Const bits

bits: BitController = new BitController()

Const branches

branches: BranchController = new BranchController()

colorize

colorize: colorize

combine

combine: combine

Const config

config: Config = new Config({'name': {type: 'string',describe: 'Name of the bot in chat. Prepending any command with the name will trigger `direct` branches.',alias: 'n',default: 'bot'},'alias': {type: 'string',describe: 'Alternate name for the bot.'},'log-level': {type: 'string',describe: 'The starting minimum level for logging events (silent|debug|info|warn|error).',default: 'info'},'auto-save': {type: 'boolean',describe: 'Save data in the brain every 5 seconds (defaults true).',default: true},'use-server': {type: 'boolean',describe: 'Enable/disable the internal Koa server for incoming requests and http/s messages.',default: true},'server-host': {type: 'string',describe: 'The host the bot is running on.',default: 'localhost'},'server-port': {type: 'string',describe: 'The port the server should listen on.',default: '3000'},'server-secure': {type: 'boolean',describe: 'Server should listen on HTTPS only.',default: false},'message-adapter': {type: 'string',describe: 'Local path or NPM package name to require as message platform adapter',alias: 'm',default: 'shell'},'nlu-adapter': {type: 'string',describe: 'Local path or NPM package name to require as message platform adapter',alias: 'l',default: null},'nlu-min-length': {type: 'number',describe: 'Minimum string length for NLU parsing to apply on message',default: 10},'storage-adapter': {type: 'string',describe: 'Local path or NPM package name to require as storage engine adapter',alias: 's',default: null},'storage-excludes': {type: 'array',describe: 'Set keys to remove from data before keep.',alias: 'x',default: ['bot', 'server']},'request-timeout': {type: 'number',describe: 'Milliseconds to wait for a http/s request to resolve',default: 1500},'dialogue-timeout': {type: 'number',describe: 'Default milliseconds to wait for input in dialogue (0 = infinite)',default: 0},'dialogue-timeout-text': {type: 'string',describe: 'What to send when timeout reached, set null to not send',default: 'Sorry, the time limit for a response was reached. Please start again.'},'dialogue-timeout-method': {type: 'string',describe: 'The envelope method to use when dispatching message on timeout',default: 'send'}}, 'BOT')

Const dialogues

dialogues: DialogueController = new DialogueController()

Const envelopes

envelopes: EnvelopeController = new EnvelopeController()

Const events

events: Events = new Events()

Event Emitter for listening to bot events.

example

import * as bot from 'bbot' bot.events.on('started', () => console.log('bot is ready'))

Const expression

expression: Expression = new Expression()

json

json: json

Const logger

logger: Logger = winston.createLogger({level: process.env.BOT_LOG_LEVEL,transports: [new winston.transports.File({filename: 'logs/error.log',level: 'error',maxsize: 500000,format: combine(timestamp(), json())}),new winston.transports.File({filename: 'logs/combined.log',level: 'debug',maxsize: 500000,format: combine(timestamp(), json())}),new winston.transports.Console({format: combine(colorize(), align(), winston.format.printf((nfo: any) => {return `${nfo.level}: ${nfo.message}`}))})],exceptionHandlers: [new winston.transports.File({ filename: 'logs/exceptions.log' })],exitOnError: (err: Error) => (typeof (err as any).middleware === 'undefined')})

Winston logger provides a logging interface common to many Node apps, with custom levels, filters, and outputs, and service integrations. It will also handle exceptions and exit after logging (except middleware).

By default, all log items will write to console and a combined log file, errors also write to a an error log file. Log level can be set globally or for each transport:

example
Suppress all bot error file logs import { logger } from 'bbot/logger' logger.level = 'silent' logger.transports.errors.level = 'error'

Const memory

memory: MemoryController = new MemoryController()

Const messages

messages: MessageController = new MessageController()

Const middlewares

middlewares: MiddlewareController = new MiddlewareController()

Const payloads

payloads: PayloadController = new PayloadController()

Const request

request: Request = new Request()

Const rooms

rooms: RoomController = new RoomController()

Const sandbox

sandbox: SinonSandbox = sinon.createSandbox()

Mock adapter types for manual loading in tests.

Const server

server: ServerController = new ServerController()

Let shell

shell: ShellAdapter

Adapter singleton (ish) require pattern.

Const store

store: StorageController = new StorageController()

Const thoughts

thoughts: ThoughtController = new ThoughtController()

timestamp

timestamp: timestamp

Const users

users: UserController = new UserController()

Const util

util: "/home/circleci/repo/packages/bbot/src/util/id" & "/home/circleci/repo/packages/bbot/src/util/instance" = Object.assign({}, id, instance)

Utility methods exported at root - does not reference bot instance.

Functions

Const clone

  • clone(obj: any): any
  • Deep clone any class or object via JSON conversion.

    Parameters

    • obj: any

    Returns any

convert

  • convert(data: any, exclude?: string[]): any
  • Convert instance to plain object for storage.

    Parameters

    • data: any
    • Optional exclude: string[]

    Returns any

counter

  • counter(prefix?: undefined | string): string
  • Get the next value in global counter.

    Parameters

    • Optional prefix: undefined | string

      Key for counter, prepend to return value

    Returns string

Const debug

  • debug(): Logger

Const delay

  • delay(ms: number): Promise<Object>

directPattern

  • directPattern(): RegExp
  • Build a regular expression that matches text prefixed with the bot's name.

    • matches when alias is substring of name
    • matches when name is substring of alias

    Returns RegExp

directPatternCombined

  • directPatternCombined(regex: RegExp): RegExp
  • Build a regular expression for bot's name combined with another regex.

    Parameters

    • regex: RegExp

    Returns RegExp

isCollection

  • isCollection(c: any): boolean

isCondition

  • isCondition(c: any): boolean

parse

  • parse(internal: any, schema: object, external?: any): any
  • Utility to convert internal object to schema required in adapter platform. Passing the original internal object as the external, allows inheriting all attributes without needing to map the ones that are the same in both. Otherwise, result would only include values from defined schema fields.

    Parameters

    • internal: any
    • schema: object
      • [path: string]: string
    • Optional external: any

    Returns any

random

  • random(prefix?: undefined | string): string
  • Generate a random unique ID value.

    Parameters

    • Optional prefix: undefined | string

      Optionally prepend ID type

    Returns string

restore

  • restore(data: any, namespace: string): any
  • Convert plain objects into their original class.

    Parameters

    • data: any
    • namespace: string

    Returns any

Const textMessage

  • textMessage(): TextMessage

timeoutPromise

  • timeoutPromise(ms: number, promise: Promise<any>): Promise<any>
  • Create a promise wrapper, that rejects if timeout met before resolved

    Parameters

    • ms: number
    • promise: Promise<any>

    Returns Promise<any>

Const use

  • use(bBot: Bot): ShellAdapter

Object literals

Const _defaults

_defaults: object

ignoreCase

ignoreCase: true = true

ignorePunctuation

ignorePunctuation: false = false

matchWord

matchWord: true = true

Const abstracts

abstracts: object

Make Adapters available for extensions under a "namespace"

Adapter

Adapter: Adapter

MessageAdapter

MessageAdapter: MessageAdapter

NLUAdapter

NLUAdapter: NLUAdapter

StorageAdapter

StorageAdapter: StorageAdapter

Const adapters

adapters: object = new AdapterController()

message

message: object = sandbox.createStubInstance(abstracts.MessageAdapter)

Type declaration

nlu

nlu: object = sandbox.createStubInstance(abstracts.NLUAdapter)

Type declaration

storage

storage: object = sandbox.createStubInstance(abstracts.StorageAdapter)

Type declaration

reset

  • reset(): void

Const counts

counts: object

Maintain a count of created IDs against their prefix key.

uid

uid: number = 0

Const data

data: object

Mock method inputs and results for easy testing.

find

find: object[] = [{ test: 'test' }]

text

text: string = `Where there a foo, there's a bar. And with you, there's always a bar.`

user

user: User = new User({ id: 'mock-user' })

findOne

findOne: object

test

test: string = "test"

memory

memory: object

test

test: object

foo

foo: string = "bar"

nlu

nlu: object

entities

entities: object[] = [{ id: 'testing' }]

intent

intent: object[] = [{ id: 'test', score: 1 }]

language

language: object[] = [{ id: 'en' }]

Const saveInterval

saveInterval: object

Keep save interval as external property to avoid being cleared.

value

value: number = 5000

Generated using TypeDoc