c# - 在 C# 对话流应用程序中使用显式凭据
问题描述
我正在创建一个使用 DialogFlow 的 detectIntent 的 C# 应用程序。我需要帮助明确传递 Google Cloud 凭据。
它适用于 GOOGLE_APPLICATION_CREDENTIALS 环境变量。但是我想明确地传递凭据。我需要此处提供的解决方案的 C# 版本。
我正在使用随文档提供的以下快速入门:
public static void DetectIntentFromTexts(string projectId,
string sessionId,
string[] texts,
string languageCode = "en-US")
{
var client = df.SessionsClient.Create();
foreach (var text in texts)
{
var response = client.DetectIntent(
session: new df.SessionName(projectId, sessionId),
queryInput: new df.QueryInput()
{
Text = new df.TextInput()
{
Text = text,
LanguageCode = languageCode
}
}
);
var queryResult = response.QueryResult;
Console.WriteLine($"Query text: {queryResult.QueryText}");
if (queryResult.Intent != null)
{
Console.WriteLine($"Intent detected: {queryResult.Intent.DisplayName}");
}
Console.WriteLine($"Intent confidence: {queryResult.IntentDetectionConfidence}");
Console.WriteLine($"Fulfillment text: {queryResult.FulfillmentText}");
Console.WriteLine();
}
}
解决方案
目前您需要直接创建一个 gRPC 通道,并将其传递给客户端:
GoogleCredential credential = GoogleCredential.FromFile("...");
ChannelCredentials channelCredentials = credential.ToChannelCredentials();
Channel channel = new Channel(SessionsClient.DefaultEndpoint, channelCredentials);
var client = df.SessionsClient.Create(channel);
很快,通过构建器模式,这将变得容易得多:
var client = new SessionsClientBuilder
{
CredentialsPath = "path to file",
}.Build();
...或其他各种指定凭据的方式。我希望它会在接下来的几周内发布。
推荐阅读
- java - 杰克逊将空值反序列化为空列表,无法访问实体
- mysql - MySql 复杂查询 | 如何从 SELECT 中删除以及如何从数组中创建子列表
- android - recyclerView 中的 android spinner 无法正常工作
- javascript - IE11 WebSocket 对象 onopen:预期对象
- javascript - 如何在 Vue 中对计算属性进行分页
- azure - Umbraco7:在同一个 Azure 存储帐户中设置多个 /media/ blob 容器
- python - 使用 Python Flask/Connexion 和 Swagger 在 API 中处理图像
- c++ - OpenMP - 将结果存储在向量中
- ms-access - Access 2010 .SetFocus 命令语法有问题
- c# - 如何找到打开当前打开的表单的表单?(C#,WinForms)