2 回答
TA贡献1801条经验 获得超8个赞
您不需要使用瀑布对话框。Simple Prompt Bot Sample应该可以帮助您入门。
if (results.Status == DialogTurnStatus.Empty)
{
// A prompt dialog can be started directly on the DialogContext. The prompt text is given in the PromptOptions.
await dialogContext.PromptAsync(
"name",
new PromptOptions { Prompt = MessageFactory.Text("Please enter your name.") },
cancellationToken);
}
// We had a dialog run (it was the prompt). Now it is Complete.
else if (results.Status == DialogTurnStatus.Complete)
{
// Check for a result.
if (results.Result != null)
{
// Finish by sending a message to the user. Next time ContinueAsync is called it will return DialogTurnStatus.Empty.
await turnContext.SendActivityAsync(MessageFactory.Text($"Thank you, I have your name as '{results.Result}'."));
}
}
}
有关更多信息,我在此问题上发布了类似的答案,并且我有一位同事在此处给出了类似的答案。
TA贡献1900条经验 获得超5个赞
好的,我想自己回答这个问题:botframework v4 有一个IBot接口,每条消息都通过你实现的接口的单例实例进行路由。所以我的想法是,启动的对话会直接得到用户的响应。相反,您的实现IBot需要创建一个 dialogContext 并且还需要在OnTurnAsync方法中继续活动对话框:
var dialogContext = await _dialogs.CreateContextAsync(context, cancellationToken);
if (dialogContext.ActiveDialog is null)
{
await dialogContext.BeginDialogAsync(nameof(AgeDialog),
cancellationToken: cancellationToken);
}
else
{
await dialogContext.ContinueDialogAsync(cancellationToken);
}
await _accessor.ConversationState.SaveChangesAsync(context, false, cancellationToken);
- 2 回答
- 0 关注
- 139 浏览
添加回答
举报
