Skip to content

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

License

Notifications You must be signed in to change notification settings

user1m/botbuilder-timeout

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

Option Description

PROMPT_IF_USER_IS_ACTIVE_MSG

String
Default: 'Are you there?'. Message presented to user to confirm activity.

PROMPT_IF_USER_IS_ACTIVE_BUTTON_TEXT

String
Default: 'Yes'. Button text presented during prompt checking for activity.

PROMPT_IF_USER_IS_ACTIVE_TIMEOUT_IN_MS

Number
Default: 30000. Time in milliseconds before prompt with PROMPT_IF_USER_IS_ACTIVE_MSG message is presented.

END_CONVERSATION_MSG

String
Default: "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

Number
Default: 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.

About

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published