跟踪是否已触发 LUIS 意图

我如何跟踪 LUIS 意图是否已被触发?

使用的渠道:Facebook


场景

用户:Audi TT 详细信息

Bot:[汽车详细信息....]

用户:谢谢

Bot:您希望我们与您联系吗?(提供是或否提示)

用户:[选择选项(是或否)]...

下次同一用户聊天...或稍后在同一对话中

用户:您有奥迪 TT 的零件吗?

机器人:是的,我们有以下部件可用

用户:非常感谢!

Bot:很高兴为您提供帮助 -> Bot 不得提供“您希望我们与您联系吗?” 再次提示


我正在使用 LUIS 意图来检测用户是否在说“谢谢”,然后触发提示。如何跟踪意图是否已被触发


[LuisIntent ("Gratitude")]  

public async Task Gratitude(IDialogContext context, IAwaitable<IMessageActivity> message, LuisResult result)  

{               

    if( intent_has_not_been_triggered_for_user)

       PromptDialog.Choice(context,

             ResumeAfterGratitude,

             new[] { "Yes", "No"},

             "Thank you. Would you like us to contact you?",

             promptStyle: PromptStyle.Keyboard, attempts: 4

           );


   else  

      await context.PostAsync("Glad to help");  

}


蛊毒传说
浏览 132回答 1
1回答

元芳怎么了

您可以使用context.UserData来存储与用户关联的数据。在您的情况下,您可以UserData通过使用键(例如 )设置值,以防该值不存在GratitudeTriggered,并且每次检查用户数据中是否存在该键。您还可以根据需要自定义逻辑,例如匹配特定值、值的存在等。示例代码:[LuisIntent("Gratitude")]public async Task Gratitude(IDialogContext context, IAwaitable<IMessageActivity> message, LuisResult result){&nbsp; &nbsp; if (context.UserData.TryGetValue("GratitudeTriggered", out bool gratitudeTriggered))&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; //Triggered for the first time, store it in UserData that the Gratitude is triggered&nbsp; &nbsp; &nbsp; &nbsp; context.UserData.SetValue("GratitudeTriggered", "yes");&nbsp; &nbsp; &nbsp; &nbsp; PromptDialog.Choice(context,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ResumeAfterGratitude,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; new[] { "Yes", "No" },&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "Thank you. Would you like us to contact you?",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; promptStyle: PromptStyle.Keyboard, attempts: 4&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; );&nbsp; &nbsp; }&nbsp; &nbsp; else&nbsp; &nbsp; &nbsp; &nbsp; await context.PostAsync("Glad to help");}
打开App,查看更多内容
随时随地看视频慕课网APP