机器人框架v4(node.js)中的动态提示选择

时间:2018-11-08 17:27:02

标签: node.js botframework

我已经提示了一个SMS机器人,用户可以在其中做出多种选择。我正在寻找ChoicePrompt的模式,该模式允许我执行以下操作:

  • 显示多个选择
  • 然后在用户选择并回答后,再次提示他们再次回答
  • 删除他们先前的选择,并添加“退出”选项以继续前进
  • 如果他们选择了所有内容,则自动结束该步骤。

我想避免为每个答案层创建带有切换案例的新提示,因为这种模式需要在很多地方实现...

示例:

机器人:用户,您该如何放松?

  1. 锻炼
  2. 读一本书
  3. 没事

用户:锻炼

机器人:锻炼,很酷。还有什么?

  1. 读一本书
  2. 没什么

用户:看书

机器人:好的,您已经完成了所有工作,因此我们可以继续前进!

1 个答案:

答案 0 :(得分:1)

至少在v4中,botframework没有我可以看到的ListPrompt。但是,他们确实有可用于此目的的建议措施!!! Botbuilder-Samples存储库具有一个“建议的操作”示例,该示例显示了三种颜色的列表:

async onTurn(turnContext) {
    // See https://aka.ms/about-bot-activity-message to learn more about the message and other activity types.
    if (turnContext.activity.type === ActivityTypes.Message) {
        const text = turnContext.activity.text;

        // Create an array with the valid color options.
        const validColors = ['Red', 'Blue', 'Yellow'];

        // If the `text` is in the Array, a valid color was selected and send agreement.
        if (validColors.includes(text)) {
            await turnContext.sendActivity(`I agree, ${ text } is the best color.`);
        } else {
            await turnContext.sendActivity('Please select a color.');
        }

        // After the bot has responded send the suggested actions.
        await this.sendSuggestedActions(turnContext);
    } else if (turnContext.activity.type === ActivityTypes.ConversationUpdate) {
        await this.sendWelcomeMessage(turnContext);
    } else {
        await turnContext.sendActivity(`[${ turnContext.activity.type } event detected.]`);
    }
}

一个选项是以编程方式创建数组(在上面的示例中,它是“ const validColors”),如果答复在颜色列表中,请重新创建数组,但是要使用选定的选项。