如何使用 .net core 和 dialogflow 构建聊天机器人?[已解决]

How to build a chatbot using .net core and dialogflow?[Solved]

地狱,大家。 我是 .net core 的新手,我正在使用 .net core 构建自己的 MVC web 应用程序。 我想在我的网站上添加一个聊天机器人应用程序。 在我看来,在 dialogflow 中构建代理之后,我应该可以使用 webhook 让我的 C# 应用程序连接到已经存在的代理并将请求推送给它并从代理那里获得响应。 任何人都可以告诉我实际上如何将 .net 核心客户端连接到已经存在或可能是一些参考的对话流代理吗? 谢谢!

我已经通过以下步骤解决了这个问题: 1.安装Google.Cloud.Dialogflow.V2 2. 按照 link here 创建 GCP 凭据访问密钥。然后将 JSON 保存到我的本地计算机。 3. 使用下面的代码连接dialogflow:

public void DialogflowAction()
        {
            var query = new QueryInput {
                Text = new TextInput
                {
                    Text = "嗨",
                    LanguageCode = "zh-TW"
                }
            };

            var sessionId = "{SESSIONID HERE CAN BE RANDOM}";
            var agent = "{MUST AS SAME AS Project ID IN DIALOGFLOW CONSOLE}";
            GoogleCredential creds = GoogleCredential.FromFile("{JSON FILE PATH}");
            var channel = new Grpc.Core.Channel(SessionsClient.DefaultEndpoint.Host,
              creds.ToChannelCredentials());
            var client = SessionsClient.Create(channel);
            var dialogflow = client.DetectIntent(
                new SessionName(agent, sessionId),
                query);
            Console.WriteLine("dialogflow:"+dialogflow.QueryResult.FulfillmentText);
            channel.ShutdownAsync();

        }

感谢 Sukhi 给我建议来解决这个问题。

这很容易。按照以下说明操作:

  1. 安装 Nuget 包 Google.Apis.Dialogflow.v2 及其依赖项。
  2. 创建 GCP 凭据访问密钥。将 JSON 保存到您的本地计算机。
  3. 通过设置环境变量 GOOGLE_APPLICATION_CREDENTIALS 连接到 GCP。请参考以下代码: System.Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", _CredentialsPath) :

  4. 使用下面类似的代码

    Public 函数 GetResponseTo(whatUserSays As String) As String

        Dim textInput As New TextInput, queryInput As New QueryInput
    
        textInput.Text = whatUserSays
        textInput.LanguageCode = "en"
        queryInput.Text = textInput
    
        _Response = _Client.DetectIntent(New SessionName("newagent-12345", _SessionId), queryInput).QueryResult.FulfillmentText
    
        Debug.Print(_Response)
    
        Return _Response
    
    End Function
    

其中 - queryInput 包含用户键入的文本。