c# - 使用 C# 进行 DialogFlow v2 DetectIntent 调用(包括输入上下文)
问题描述
所以我终于找到了一种方法来成功检测意图调用并提供输入上下文。我的问题是这是否是正确 (或最佳)的方法:
(是的,我知道您可以调用 DetectIntent(agent, session, query) 但我必须根据请求提供输入上下文)
var query = new QueryInput
{
Text = new TextInput
{
Text = model.Content,
LanguageCode = string.IsNullOrEmpty(model.Language) ? "en-us" : model.Language,
}
};
var commonContext = new global::Google.Cloud.Dialogflow.V2.Context
{
ContextName = new ContextName(agent, model.sessionId, "my-input-context-data"),
LifespanCount = 3,
Parameters = new Struct
{
Fields = {
{ "Source", Value.ForString(model.Source) },
{ "UserId" , Value.ForString(model.UserId.ToString())},
{ "Name" , Value.ForString(model.FirstName)}
}
}
};
var request = new DetectIntentRequest
{
SessionAsSessionName = new SessionName(agent, model.sessionId),
QueryParams = new QueryParameters
{
GeoLocation = new LatLng {Latitude = model.Latitude, Longitude = model.Longitude},
TimeZone = model.TimeZone ?? "MST"
},
QueryInput = query
};
request.QueryParams.Contexts.Add(commonContext);
// ------------
var creds = GetGoogleCredentials("myCredentials.json");
var channel = new Grpc.Core.Channel(SessionsClient.DefaultEndpoint.Host, creds.ToChannelCredentials());
var client = SessionsClient.Create(channel);
var response = client.DetectIntent(request);
channel.ShutdownAsync();
return response;
注意:我包含了显式ShutDownAsync
(它不在异步调用中),因为我在尝试重新部署 WebAPI 项目时遇到了一些文件锁定问题(并且仅在执行此代码之后)。
谢谢克里斯
更新 4/25: 我使用它的最基本方法是将用户名集成到意图响应中:
它也可以从 webhook/inline 实现 index.js 中读取:
const name = request.body.queryResult && request.body.queryResult.outputContexts && request.body.queryResult.outputContexts[0].parameters.Name
解决方案
推荐阅读
- java - 与信号量同步的“阶段”序列无法正常工作
- performance-testing - SAP Web Worldpay Correlation Issue in Loadrunner
- c# - 如何正确使用 Task.ContinueWith 使其在线程池线程上运行
- serial-communication - Send commands serially with delay between commands
- c# - IOS videos are not playing on Android
- html - How do I remove inherited content using classes in CSS?
- jekyll - Jekyll grabbing files from folder with same initial letters
- powershell - Automatically setup a Asp.net Core developer environment with IIS hosting/debugging
- c++ - Customization points in Eigen library
- c# - NHibenate:有没有办法用复合键创建一对多的双向关系?