2017-08-03 101 views
3

我正在使用MS bot构建器node.js SDK。在最近一次更新之前,当提示重试时,它将与重试提示一样向用户发送相同的消息文本。重试提示自定义

但是,现在它正在系统中发送默认文本消息,即“我不明白,请再试一次”。但是,我希望重试提示始终与原始消息相同,并且如果可能的话希望将其应用于全局,这意味着我不想为我发送给用户的每个提示自定义重试提示。

我一直在环顾四周,但还找不到方法。

谢谢!

回答

3

您可以修改提示以自动将提示设置为重试提示。 Prompts interface显示了如何将参数传递到基类Prompt类,因此我们可以通过访问Prompts中的方法来修改此提示行为。

这里有一个如何与Prompts.confirm

const promptPrefix = 'BotBuilder:prompt-'; 

bot.dialog('/', [ 
    (session) => { 
    builder.Prompts.confirm(session, 'Say yes or no'); 
    }, 

    (session, args) => { 
    session.endConversation('You said: ' + session.message.text); 
    } 
]); 

builder.Prompts.confirm = (session, prompt, options) => { 
    var args = options || {}; 
    args.prompt = prompt || args.prompt; 

    // If options.retryPrompt was passed in use this, otherwise use prompt 
    args.retryPrompt = args.retryPrompt || args.prompt; 
    session.beginDialog(promptPrefix + 'confirm', args); 
}; 

修改后的Prompts.confirm做它在行动的例子:

example via ConsoleConnector

+0

感谢您对本非常有用的职位。我有一个类似的问题,但与builder.Prompts.choice。你能否留下你的想法? https://stackoverflow.com/questions/48893767/how-to-customize-prompt-choice-microsoft-botbuilder-sdk – gpsugy

1

一种选择是将重试提示作为选项发送到提示。例如:

builder.Prompts.number(session, "What's the number?", { 
    retryPrompt: "What's the number?" 
}); 

但是,您将不得不在每次提示时都进行配置。