【发布时间】:2019-07-16 04:17:56
【问题描述】:
【问题讨论】:
标签: c# authentication dialogflow-es gcloud
【问题讨论】:
标签: c# authentication dialogflow-es gcloud
API 的 V2/V2beta1 依赖 Google Cloud Platform 服务帐户进行身份验证,而不是以前使用的客户端和开发人员访问令牌。
生成服务帐户密钥 为了使用 V2 API,您需要创建一个新的服务帐户并获取与该服务帐户关联的私钥。创建服务帐户时,密钥会以 JSON 文件的形式下载。
注意:您的项目将有一个现有的服务帐户,但不应更改此帐户。要获得额外的客户端和开发人员 API 访问权限,您应该创建一个新的服务帐户。
注意:还要确保启用测试版功能和 API。
现在这会将您重定向到您的 GCP 服务帐户页面。从那里您需要单击导航菜单(左上角)并选择 APIs & Services > Credentials。
现在单击创建凭据并选择服务帐户密钥。 注意:请注意,如果您有多个项目链接到您的 GCP,请从下拉列表中选择适当的项目,然后从所有选项卡而不是最近选项卡中选择您的项目。
现在从下拉列表中选择新服务帐户。为此服务帐户命名,请确保将角色选择为所有者。选择 JSON(默认选择)。
现在点击创建按钮。您的 JSON 密钥文件将下载到您的系统中。
现在使用此 JSON 密钥文件来验证您的请求。
现在从 Visual Studio 上的 nuget 包管理器下载 V2/V2Beta1 API。
请参考此代码:
var rFile = GoogleCredential.FromFile(jsonkeyfilepath);
var scopeC = rFile.CreateScoped(DialogflowService.Scope.CloudPlatform);
var response = new DialogflowService(new BaseClientService.Initializer
{
HttpClientInitializer = scopeC,
ApplicationName = "project-name-here"
}).Projects.Agent.Sessions.DetectIntent(
new GoogleCloudDialogflowV2beta1DetectIntentRequest
{
QueryInput = new GoogleCloudDialogflowV2beta1QueryInput
{
Text = new GoogleCloudDialogflowV2beta1TextInput
{
Text = "your text here",
LanguageCode = "en-US"
}
}
},
$"projects/projectid/agent/sessions/34141414")
.Execute();
return (JsonConvert.SerializeObject(response.QueryResult));
【讨论】:
问题是您必须但不验证呼叫。
建议您在与 Google 的服务交互时考虑使用 Google 提供的客户端库。手工制作 URL、零碎的身份验证、日志记录等,以及通过不断发展的 API 维护货币,将会给您带来数不胜数的工作。
使用 SDK 更简单、推荐且通常受支持,而且这些都可以保证工作。
查看 DialogFlow:
https://cloud.google.com/dialogflow/docs/reference/libraries/overview
基于 REST(所谓的 API 客户端)的库适用于 所有 Google 服务的同一组语言。对于 Google Cloud Platform 服务,还提供了更多惯用的库。这些称为云客户端库。
【讨论】: