以下是一个示例代码,演示了如何使用Bot Framework中的瀑布式对话和HeroCard按钮来创建一个简单的对话机器人。
首先,安装Bot Framework的Node.js SDK:
npm install --save botbuilder
然后创建一个名为app.js
的文件,并在其中添加以下代码:
const { BotFrameworkAdapter, MemoryStorage, ConversationState, CardFactory } = require('botbuilder');
const adapter = new BotFrameworkAdapter({
appId: process.env.MicrosoftAppId,
appPassword: process.env.MicrosoftAppPassword
});
// 创建一个内存存储
const storage = new MemoryStorage();
// 创建一个会话状态
const conversationState = new ConversationState(storage);
// 注册瀑布式对话
adapter.use(conversationState);
// Bot逻辑
adapter.onTurn(async (context) => {
const state = conversationState.get(context);
if (!state.dialogState) {
state.dialogState = {};
}
// 创建瀑布式对话
const dialogContext = await dialogs.createContext(context, state.dialogState);
// 检查是否有活动对话,如果没有,则开始新的对话
if (!context.responded) {
await dialogContext.beginDialog('mainDialog');
}
});
// 创建主对话
const mainDialog = [
async (step) => {
await step.context.sendActivity('欢迎来到Bot瀑布式对话示例!');
await step.prompt('choicePrompt', '请选择一个选项:', ['按钮1', '按钮2']);
},
async (step) => {
const selectedOption = step.result.value;
if (selectedOption === '按钮1') {
await step.context.sendActivity('你点击了按钮1');
} else if (selectedOption === '按钮2') {
await step.context.sendActivity('你点击了按钮2');
}
await step.endDialog();
}
];
// 创建按钮选择Prompt
const choicePrompt = new ChoicePrompt('choicePrompt');
// 添加Prompt到adapter
adapter.use(choicePrompt);
// 创建一个Bot实例
const bot = new Bot(adapter);
// 启动Bot
bot.run();
在上面的代码中,我们首先导入所需的Bot Framework模块,并创建了一个BotFrameworkAdapter实例。然后,我们创建了一个内存存储和一个会话状态,并将它们注册到adapter中。
接下来,我们创建了一个瀑布式对话,并定义了对话的几个步骤。在第一个步骤中,我们发送一个欢迎消息,并使用ChoicePrompt来提示用户选择一个选项。在第二个步骤中,我们根据用户的选择发送不同的消息,并结束对话。
然后,我们创建了一个ChoicePrompt实例,并将其添加到adapter中。
最后,我们创建了一个Bot实例,并调用其run方法来启动Bot。
请注意,上述示例仅用于展示如何使用Bot Framework中的瀑布式对话和HeroCard按钮来创建一个简单的对话机器人。实际的Bot应用可能需要更复杂的逻辑和交互。