इसलिए अभी मैं Microsoft.Bot.Builder.Dialogs.Conversation.SendAsync
और Microsoft.Bot.Builder.Dialogs.Conversation.ResumeAsync
उपयोग कर रहा हूँ रोक सकते हैं और बातचीत फिर से शुरू करने के लिए एक रास्ता लागू करने के लिए, लेकिन यह 'exit' करने के लिए असंभव लगता है या पहले वाली स्थिति में वापस जाने के। यह वार्तालाप संवाद में फंस गया है।बॉट फ्रेमवर्क: कैसे वार्तालाप बाहर निकलने के लिए?
मैं बस को लागू करें एक 'रद्द करें' आदेश? यदि हां, तो क्या डेटा मैं बहुत स्पष्ट करने की जरूरत है कि यह मूल स्थिति में वापस हो जाएगा करते हैं?
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
वर्ग एक 'रद्द करें' आदेश को संभालने के लिए लागू करते हैं? या यह स्वचालित रूप से बातचीत रद्द कर देना चाहिए उपयोगकर्ता एक बार से अधिक एक ही 'लॉगिन' कमांड भेजता है? एक 'रद्द' कमांड को अलग से भेजने के लिए थोड़े से घबराहट लगता है।
बस सोच रहा है, क्या आपको बाद में समाधान मिला है? मुझे एक ही समस्या है। – K48