首页 文章

Dialogflow Webhook响应c#在调用时给出错误

提问于
浏览
0

我正在尝试在C#中创建一个用于Dialogflow的webhook(在Azure上) . 每次我看到相同的例子,但我的DialogFlows一直在使用这个响应做出错误“

这是我做的:

  • 创建了一个新的ASP.Net Web项目(WebAPI)

  • 安装了NuGet Google.Cloud.DialogFlow V2(v1.0.0.beta02)

  • 将System.Net.Http更新为4.3.3

创建了一个新的控制器

[System.Web.Http.HttpPost]
    public dynamic DialogAction([FromBody] WebhookRequest dialogflowRequest)
    {
        var intentName = dialogflowRequest.QueryResult.Intent.DisplayName;
        var actualQuestion = dialogflowRequest.QueryResult.QueryText;
        var testAnswer = $"Dialogflow Request for intent {intentName} and question {actualQuestion}";
        var parameters = dialogflowRequest.QueryResult.Parameters;
        var dialogflowResponse = new WebhookResponse
        {
            FulfillmentText = testAnswer,
            FulfillmentMessages =
            { new Intent.Types.Message
                { SimpleResponses = new Intent.Types.Message.Types.SimpleResponses
                    { SimpleResponses_ =
                        { new Intent.Types.Message.Types.SimpleResponse
                            {
                                DisplayText = testAnswer,
                                TextToSpeech = testAnswer,
                            }
                        }
                    }
                }
            }                
        };
        var jsonResponse = dialogflowResponse.ToString();
        return new ContentResult
        {
            Content = jsonResponse,
            ContentType = "application/json"                
        };
  • 将应用程序发布到Azure,因此有一个webhook URl . 现在,当我在对话框流中测试它时,响应是:

“Webhook调用失败 . 错误:无法解析webhook JSON响应:无法找到字段:消息中的内容google.cloud.dialogflow.v2.WebhookResponse . ”

哪些我不明白.....我在这里失踪了什么?

(这是响应的截图:)
Screenhot

1 回答

  • 0

    这个问题的解决方案是返回JsonResult而不是ContentResult .

    [System.Web.Http.HttpPost]
    public JsonResult DialogAction([FromBody] WebhookRequest dialogflowRequest)
    {
        var intentName = dialogflowRequest.QueryResult.Intent.DisplayName;
        var actualQuestion = dialogflowRequest.QueryResult.QueryText;
        var testAnswer = $"Dialogflow Request for intent {intentName} and question {actualQuestion}";
        var parameters = dialogflowRequest.QueryResult.Parameters;
        var dialogflowResponse = new WebhookResponse
        {
            FulfillmentText = testAnswer,
            FulfillmentMessages =
            { new Intent.Types.Message
                { SimpleResponses = new Intent.Types.Message.Types.SimpleResponses
                    { SimpleResponses_ =
                        { new Intent.Types.Message.Types.SimpleResponse
                            {
                                DisplayText = testAnswer,
                                TextToSpeech = testAnswer,
                            }
                        }
                    }
                }
            }                
        };
        var jsonResponse = dialogflowResponse.ToString();
        return Json(jsonResponse);
    

相关问题