43 lines
1.6 KiB
JavaScript
43 lines
1.6 KiB
JavaScript
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
// Licensed under the MIT License.
|
||
|
|
||
|
const { ActivityTypes } = require('botbuilder');
|
||
|
const { ComponentDialog } = require('botbuilder-dialogs');
|
||
|
|
||
|
class LogoutDialog extends ComponentDialog {
|
||
|
async onBeginDialog(innerDc, options) {
|
||
|
const result = await this.interrupt(innerDc);
|
||
|
if (result) {
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
return await super.onBeginDialog(innerDc, options);
|
||
|
}
|
||
|
|
||
|
async onContinueDialog(innerDc) {
|
||
|
const result = await this.interrupt(innerDc);
|
||
|
if (result) {
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
return await super.onContinueDialog(innerDc);
|
||
|
}
|
||
|
|
||
|
async interrupt(innerDc) {
|
||
|
if (innerDc.context.activity.type === ActivityTypes.Message) {
|
||
|
const text = innerDc.context.activity.text ? innerDc.context.activity.text.toLowerCase() : '';
|
||
|
if (text === 'logout') {
|
||
|
// When the user sends the 'logout' command to the bot, we are going to send a 'oauth/signout'
|
||
|
// to the client application which will prompt the app to log the user out and send a 'oauth/signout'
|
||
|
// to the bot. When the bot receives the 'oauth/signout' event it will log the user out from the onEvent
|
||
|
// handler
|
||
|
await innerDc.context.sendActivity({ type: 'event', name: 'oauth/signout' });
|
||
|
await innerDc.context.adapter.signOutUser(innerDc.context, process.env.ConnectionName);
|
||
|
await innerDc.context.sendActivity('You have been signed out.');
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module.exports.LogoutDialog = LogoutDialog;
|