Dialogflow V2 API的无效示例 [英] Not working example for Dialogflow V2 api

查看:72
本文介绍了Dialogflow V2 API的无效示例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

C#SDK文档遇到的问题,可以在这里找到:
http://googleapis.github.io/google/cloud.dotnet /Google.Cloud.Dialogflow.V2.SessionsClient.html#Google_Cloud_Dialogflow_V2_SessionsClient_Client_Create_Google_Api_Gax_Grpc_ServiceEndpoint_Google_Cloud_Dialogflow_V2_SessionsSettings_

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#)


  1. 创建Dialogflow代理后,转到代理的设置->常规->单击服务帐户链接

  2. 您将会发送到Google Cloud Platform,您可以在其中创建服务帐户

  3. 创建服务帐户之后,可以选择创建 KEY ,创建并下载(JSON)格式

  4. 此密钥将用于从C#项目连接到Dialogflow代理

  5. 安装<项目中的strong> Google.Cloud.Dialogflow.V2 包

  6. 例如创建Dialogflow管理器类(请参见下面的示例)

  1. After you create a Dialogflow agent go to the agent's settings --> General --> click on the Service Account link
  2. You will be sent to to google cloud platform where you can create a service account
  3. After you create a service account, there will be an option to create a KEY, create it and download the (JSON) format of it
  4. This key will be used to connect from your C# project to the Dialogflow agent
  5. Install Google.Cloud.Dialogflow.V2 package in your project
  6. 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屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆