1.0.6 • Published 7 years ago

botbuilder-timeout v1.0.6

Weekly downloads
613
License
MIT
Repository
github
Last release
7 years ago

botbuilder-timeout

npm license dependencies Status devDependencies Status maintained

© 2017, Claudius Mbemba (@user1m). MIT License.

Module for Microsoft Bot Framework to enable your bot to prompt the user if the bot detects inactivity and ultimately end the conversation if no user activity after a defined period of time.

Example:

Example Screenshot

Installation

npm install botbuilder-timeout --save-dev

Tested on Node.js v8 or newer

Usage

const timeout = require("botbuilder-timeout");

const connector = new builder.ChatConnector({...});

const options = {
    PROMPT_IF_USER_IS_ACTIVE_MSG: "Hey are you there?",
    PROMPT_IF_USER_IS_ACTIVE_BUTTON_TEXT: "Yes I am",
    PROMPT_IF_USER_IS_ACTIVE_TIMEOUT_IN_MS: 15000,
    END_CONVERSATION_MSG: "Conversation Ended",
    END_CONVERSATION_TIMEOUT_IN_MS: 10000
};

const bot = new builder.UniversalBot(connector);

timeout.setConversationTimeout(bot, options);

Options

OptionDescription
PROMPT_IF_USER_IS_ACTIVE_MSG StringDefault: 'Are you there?'. Message presented to user to confirm activity.
PROMPT_IF_USER_IS_ACTIVE_BUTTON_TEXT StringDefault: 'Yes'. Button text presented during prompt checking for activity.
PROMPT_IF_USER_IS_ACTIVE_TIMEOUT_IN_MS NumberDefault: 30000. Time in milliseconds before prompt with PROMPT_IF_USER_IS_ACTIVE_MSG message is presented.
END_CONVERSATION_MSG StringDefault: "Ending conversation since you've been inactive too long. Hope to see you soon." Message sent to user when conversation is ended.
END_CONVERSATION_TIMEOUT_IN_MS NumberDefault: 15000. Time in milliseconds before conversation is ended with END_CONVERSATION_MSG message.

Full Example with Botbuilder (Node.js/Typescript)

import express = require('express');
import * as builder from 'botbuilder';
import { setConversationTimeout } from "botbuilder-timeout";

console.log(`BOT ID: ${process.env.MICROSOFT_APP_ID}\nBOT PASS: ${process.env.MICROSOFT_APP_PASSWORD}`);

// Create bot and add dialogs
const server = express();
const port = process.env.port || process.env.PORT || 3978;
const connector = new builder.ChatConnector({
    appId: process.env.MICROSOFT_APP_ID,
    appPassword: process.env.MICROSOFT_APP_PASSWORD
});

const bot = new builder.UniversalBot(connector);

bot.dialog('/', [
    (session, args, next) => {
        builder.Prompts.text(session, `What's your name?`);
    },
    (session, args, next) => {
        session.send(`Hi ${session.message.text}`);
    }]
);

const options = {
    PROMPT_IF_USER_IS_ACTIVE_MSG: "Hey are you there?",
    PROMPT_IF_USER_IS_ACTIVE_TIMEOUT_IN_MS: 15000,
    END_CONVERSATION_MSG: "Conversation Ended",
    END_CONVERSATION_TIMEOUT_IN_MS: 10000
};

setConversationTimeout(bot, options);

server.post('/api/messages', connector.listen());
server.listen(port, () => {
    console.info(`Server Up: Listening at port ${port}`);
});

Change-Log

See CHANGELOG.md.

License

See MIT.