【问题标题】:Dialogflow Webhook Response c# gives error on invokeDialogflow Webhook Response c#在调用时出错
【发布时间】:2019-01-29 10:29:04
【问题描述】:

我正在尝试用 C#(在 Azure 上)为 Dialogflow 创建一个 webhook。每次我看到相同的示例,但我的 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。 现在,当我在 dialogflow 中测试它时,响应是:

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

我不明白......我在这里错过了什么?

(这是回复的截图:)

【问题讨论】:

标签: azure dialogflow-es


【解决方案1】:

这个问题的解决方法是返回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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多