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

Asp.net core 如何使用.net core和dialogflow构建聊天机器人?[已解决],asp.net-core,dialogflow-es,Asp.net Core,Dialogflow Es,见鬼,各位。 我是.NETCore的新手,我正在使用.NETCore构建自己的MVCWeb应用程序。 我想在我的网站上添加一个聊天机器人应用程序。 在我看来,在dialogflow中构建一个代理之后,我应该可以使用webhook让我的C#应用程序连接到已经存在的代理,并将请求推送到它并从代理获得响应。 任何人都能告诉我如何将.net核心客户端连接到已经存在或可能是参考的dialogflow代理吗? 谢谢大家! 我已通过以下步骤解决了此问题: 1.安装Google.Cloud.Dialogflow

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

我已通过以下步骤解决了此问题: 1.安装Google.Cloud.Dialogflow.V2 2.按照链接创建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给了我解决这个问题的建议。

这相当容易。请按照以下说明操作:

  • 安装Nuget软件包Google.API.Dialogflow.v2及其依赖项
  • 创建GCP凭据访问密钥。将JSON保存到本地计算机
  • 通过设置环境变量GOOGLE_APPLICATION_CREDENTIALS连接到GCP。请参阅以下代码:
    System.Environment.SetEnvironmentVariable(“谷歌应用程序凭据”,“凭据路径”)

  • 使用以下类似的代码

    公共函数GetResponseTo(whatUserSays为String)为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
    

  • where-queryInput包含用户键入的文本。

    感谢您回答我的问题。