Пожалуйста, посмотрите на образец 13.core-bot от Botbuilder-Samples GitHub repo .
По сути, у вас есть диалог «Отмена», который прослушивает прерывания. Затем вы расширяете другие диалоги из диалога «Отмена». Это позволяет извлекать пользовательские операторы, помеченные как прерывания (например, help
), и выполнять любую связанную логику. В этом случае await innerDc.context.sendActivity('[ This is where to send sample help to the user... ]');
отправляется как ответ help
.
CancelAndHelpDialog:
class CancelAndHelpDialog 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) {
const text = innerDc.context.activity.text.toLowerCase();
switch(text) {
case 'help':
case '?':
await innerDc.context.sendActivity('[ This is where to send sample help to the user... ]');
return {
status: DialogTurnStatus.waiting
};
case 'cancel':
case 'quit':
await innerDc.context.sendActivity('Cancelling');
return await innerDc.cancelAllDialogs();
}
}
}
BookingDialog, расширяющий CancelAndHelpDialog:
const { CancelAndHelpDialog } = require('./cancelAndHelpDialog');
class BookingDialog extends CancelAndHelpDialog {
constructor(id) {
super(id || 'bookingDialog');
[...]
}
[...]
}
Надежда на помощь!