【发布时间】:2016-09-04 16:32:23
【问题描述】:
所以现在我正在使用Microsoft.Bot.Builder.Dialogs.Conversation.SendAsync 和Microsoft.Bot.Builder.Dialogs.Conversation.ResumeAsync 来实现一种暂停和恢复对话的方法,但似乎不可能“退出”或回到以前的状态。它卡在对话对话框中。
我是否只执行“取消”命令?如果是这样,我需要清除哪些数据才能恢复到原始状态?
public static readonly IDialog<string> dialog = Chain
.PostToChain()
.Switch(
new Case<Message, IDialog<string>>((msg) =>
{
var regex = new Regex("login", RegexOptions.IgnoreCase);
return regex.IsMatch(msg.Text);
}, (ctx, msg) =>
{
return Chain.ContinueWith(new ChatDialog(msg),
async (context, res) =>
{
var token = await res;
//var valid = await Helpers.ValidateAccessToken(token);
//var name = await Helpers.GetProfileName(token);
var name = "User";
context.UserData.SetValue("name", name);
return Chain.Return($"You are logged in as: {name}");
});
})
).Unwrap().PostToUser();
所以如果我发送一个“登录”,它将开始一个新的ChatDialog 对话,但它似乎陷入了这种状态。即使我尝试发送另一个命令,它也会继续要求登录。我是否实现另一个Case 类来处理“取消”命令?还是应该在用户多次发送相同的“登录”命令时自动取消对话?必须单独发送“取消”命令似乎有点笨拙。
【问题讨论】:
-
只是想知道,你找到解决方案了吗?我也有同样的问题。
标签: c# botframework