使用ADAL(AuthBot)进行身份验证的Bot,然后post-Auth获取用户输入并发送到LUIS以收集意图/实体。我使用返回的内容来构建我发送给Sharepoint Online REST API的URI。如果用户输入有效,Sharepoint将返回我解析并返回给用户的JSON。
问题是在验证后将用户输入到我的LUIS类。我从MessageController调用了AuthBot ActionDialog。
if (message.Type == "Message")
{
return await Conversation.SendAsync(message, () => new ActionDialog());
}
在ActionDialog中,我不确定如何将消息移动到LUIS类
public async Task MessageReceivedAsync(IDialogContext context, IAwaitable<Message> item)
{
var message = await item;
if (message.Text == "logon")
{
if (string.IsNullOrEmpty(await context.GetAccessToken(ConfigurationManager.AppSettings["ActiveDirectory.ResourceId"])))
{
await context.Forward(new AzureAuthDialog(ConfigurationManager.AppSettings["ActiveDirectory.ResourceId"]), this.ResumeAfterAuth, message, CancellationToken.None);
}
else
{
context.Wait(MessageReceivedAsync);
}
}
else if (string.IsNullOrEmpty(await context.GetAccessToken(ConfigurationManager.AppSettings["ActiveDirectory.ResourceId"])))
{
await context.Forward(new AzureAuthDialog(ConfigurationManager.AppSettings["ActiveDirectory.ResourceId"]), this.ResumeAfterAuth, message, CancellationToken.None);
}
else
{
//this is where I want to send the next user input from bot to LUIS class.
}
}
LUIS类是标准的,如下所示:
//Define the LuisModel that will be used. The LuisModel JSON file can be found at ~/json/letseat.json
[LuisModel("ModelID", "ModelSecret")]
[Serializable]
public class LuisDialog : LuisDialog<object>
任何想法?谢谢。
答案 0 :(得分:0)
我假设您正在使用AuthBot(通过查看代码)。
您需要添加的内容如下:
await base.MessageReceived(context, item);
这只会将消息传递给LUISDialog的MessageReceived实现;它将向LUIS发出一个查询,以了解应该执行哪个意图。