Dialogflow V2 API的无效示例 [英] Not working example for Dialogflow V2 api
问题描述
Experienced problems with C# SDK documentation which can be found here: http://googleapis.github.io/google-cloud-dotnet/docs/Google.Cloud.Dialogflow.V2/api/Google.Cloud.Dialogflow.V2.SessionsClient.html#Google_Cloud_Dialogflow_V2_SessionsClient_Create_Google_Api_Gax_Grpc_ServiceEndpoint_Google_Cloud_Dialogflow_V2_SessionsSettings_
方法ToChannelCredentials()的引用。
即使空白项目,我们也无法将SDK连接到dialogflow。
No reference for method ToChannelCredentials(). We cannot connect the SDK to dialogflow, even with blank project. Is this method still existing or deprecated?
using Google.Cloud.Dialogflow.V2;
using Google.Apis.Auth.OAuth2;
using Grpc.Auth;
using Grpc.Core;
...
GoogleCredential cred = GoogleCredential.FromFile("/path/to/credentials.json");
Channel channel = new Channel(
SessionsClient.DefaultEndpoint.Host, SessionsClient.DefaultEndpoint.Port, cred.ToChannelCredentials());
SessionsClient client = SessionsClient.Create(channel);
...
// Shutdown the channel when it is no longer required.
channel.ShutdownAsync().Wait();
推荐答案
您是否尝试过使用服务帐户私钥进行连接? ( Json文件)
Have you tried connecting using the service account private key ? (Json file)
遵循以下步骤(在C#中为工作示例)
Follow these steps (working example in C#)
- 创建Dialogflow代理后,转到代理的设置->常规->单击服务帐户链接
- 您将会发送到Google Cloud Platform,您可以在其中创建服务帐户
- 创建服务帐户之后,可以选择创建 KEY ,创建并下载(JSON)格式
- 此密钥将用于从C#项目连接到Dialogflow代理
- 安装<项目中的strong> Google.Cloud.Dialogflow.V2 包
-
例如创建Dialogflow管理器类(请参见下面的示例)
- After you create a Dialogflow agent go to the agent's settings --> General --> click on the Service Account link
- You will be sent to to google cloud platform where you can create a service account
- After you create a service account, there will be an option to create a KEY, create it and download the (JSON) format of it
- This key will be used to connect from your C# project to the Dialogflow agent
- Install Google.Cloud.Dialogflow.V2 package in your project
Create for example a Dialogflow manager class (check below for an example)
public class DialogflowManager {
private string _userID;
private string _webRootPath;
private string _contentRootPath;
private string _projectId;
private SessionsClient _sessionsClient;
private SessionName _sessionName;
public DialogflowManager(string userID, string webRootPath, string contentRootPath, string projectId) {
_userID = userID;
_webRootPath = webRootPath;
_contentRootPath = contentRootPath;
_projectId = projectId;
SetEnvironmentVariable();
}
private void SetEnvironmentVariable() {
try {
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", _contentRootPath + "\\Keys\\{THE_DOWNLOADED_JSON_FILE_HERE}.json");
} catch (ArgumentNullException) {
throw;
} catch (ArgumentException) {
throw;
} catch (SecurityException) {
throw;
}
}
private async Task CreateSession() {
// Create client
_sessionsClient = await SessionsClient.CreateAsync();
// Initialize request argument(s)
_sessionName = new SessionName(_projectId, _userID);
}
public async Task < QueryResult > CheckIntent(string userInput, string LanguageCode = "en") {
await CreateSession();
QueryInput queryInput = new QueryInput();
var queryText = new TextInput();
queryText.Text = userInput;
queryText.LanguageCode = LanguageCode;
queryInput.Text = queryText;
// Make the request
DetectIntentResponse response = await _sessionsClient.DetectIntentAsync(_sessionName, queryInput);
return response.QueryResult;
}
}
然后可以这样称呼它例如获取检测意图
And then this can be called like this for example to get detect Intents
DialogflowManager dialogflow = new DialogflowManager("{INSERT_USER_ID}",
_hostingEnvironment.WebRootPath,
_hostingEnvironment.ContentRootPath,
"{INSERT_AGENT_ID");
var dialogflowQueryResult = await dialogflow.CheckIntent("{INSERT_USER_INPUT}");
这篇关于Dialogflow V2 API的无效示例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!