【问题标题】:Google Assistant Dialogflow API V2 webhook ETag errorGoogle Assistant Dialogflow API V2 webhook ETag 错误
【发布时间】:2018-05-08 20:55:06
【问题描述】:

我正在尝试使用以下代码返回简单的文本响应并在 Google 助理应用中显示一张基本卡片:

public GoogleCloudDialogflowV2WebhookResponse Search(GoogleCloudDialogflowV2WebhookRequest request)
    {
        GoogleCloudDialogflowV2WebhookResponse whr = new GoogleCloudDialogflowV2WebhookResponse();

        whr.FulfillmentMessages = new List<GoogleCloudDialogflowV2IntentMessage>();

        whr.FulfillmentMessages.Add(new GoogleCloudDialogflowV2IntentMessage()
        {                
            Platform = "ACTIONS_ON_GOOGLE",
            SimpleResponses = new GoogleCloudDialogflowV2IntentMessageSimpleResponses()
            {
               SimpleResponses = new List<GoogleCloudDialogflowV2IntentMessageSimpleResponse>()
               {
                   new GoogleCloudDialogflowV2IntentMessageSimpleResponse()
                   {
                       DisplayText = "sample text",
                       Ssml = "<speak>sample text</speak>"
                   }
               }
            },
            BasicCard = new GoogleCloudDialogflowV2IntentMessageBasicCard()
            {             
                Title = "sample title",
                Subtitle = "sample subtitle",
                FormattedText = "sample formatted text",
                Image = new GoogleCloudDialogflowV2IntentMessageImage()
                {                 
                    ImageUri = "https://assistant.google.com/static/images/molecule/Molecule-Formation-stop.png",
                    AccessibilityText = "sample image"
                }
            }
        });

        return whr;
    }

从 Google Dialogflow 界面调用 webhook 端点时出现以下错误:

webhookStatus": {
"code": 3,
"message": "Webhook call failed. Error: Failed to parse webhook JSON response: Cannot find field: ETag in message google.cloud.dialogflow.v2beta1.Intent.Message.Image." }

我找不到任何有关 ETag 问题的信息。我正在使用标准的 Google.Apis.Dialogflow.v2 NuGet 包和 V2 API Dialogflow 代理。

如果我不使用 GoogleCloudDialogflowV2WebhookResponse 并使用自定义类,那么当序列化为 JSON 时,无需基本卡即可正常工作。

{ "fulfillmentText": "test from API", "fulfillmentMessages": [ { "platform": "ACTIONS_ON_GOOGLE", "simpleResponses": { "simpleResponses": [ { "displayText": "test", "ssml": "<speak>test</speak>"}],}}],}

我更喜欢使用 GoogleCloudDialogflowV2WebhookResponse。

【问题讨论】:

  • 基本卡的JSON序列化是什么?
  • 我的意思是我自己的实现(没有基本的卡属性,只有fulfillmentMessages)将响应发送回webhook。公共类 GoogleHomeResponse { 公共字符串履行文本 { 获取;放; } public List放; } }
  • 正确,但似乎错误在于您的 webhook 响应。如果您可以发布它的样子,它可能有助于调试您的问题。
  • 我也遇到了这个问题。在 DialogFlow 提交支持请求,在 github.com/google/google-api-dotnet-client/issues/1234 提交问题。我希望这两个中的一个会提供一些帮助。

标签: c# asp.net-web-api google-assistant-sdk google-home api-ai


【解决方案1】:

根据https://github.com/google/google-api-dotnet-client/issues/1234,用https://www.nuget.org/packages/Google.Cloud.Dialogflow.V2/1.0.0-beta01代替https://www.nuget.org/packages/Google.Apis.Dialogflow.v2/

意识到 Gooogle.Cloud 包仍处于预发布状态,因此您必须在安装时指定版本,或者如果您在 Visual Studio 中使用 NuGet 包管理器 UI,请单击小“包含预发布”复选框。

我自己还没有尝试过,所以您的里程可能会有所不同。试过了我会更新的。

更新:Google.Cloud 库按预期工作。

【讨论】:

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