Actions on google 为什么转盘没有显示在控制台模拟器中?

Actions on google 为什么转盘没有显示在控制台模拟器中?,actions-on-google,dialogflow-es,Actions On Google,Dialogflow Es,我试图弄清楚如何将Google操作响应(如)嵌入DialogFlow的webhook响应中 我使用的是REST协议的V2,因此我在源字段中填写谷歌上的操作,并且有效负载字段包含指定的谷歌操作字段(根据)。我谨作出以下答复: { "fulfillmentText":"This is a carousel.", "source":"ACTIONS_ON_GOOGLE", "payload":{ "conversationToken":"", "expectU

我试图弄清楚如何将Google操作响应(如)嵌入DialogFlow的webhook响应中

我使用的是REST协议的V2,因此我在
字段中填写
谷歌
上的操作,并且
有效负载
字段包含指定的谷歌操作字段(根据)。我谨作出以下答复:

{
   "fulfillmentText":"This is a carousel.",
   "source":"ACTIONS_ON_GOOGLE",
   "payload":{
      "conversationToken":"",
      "expectUserResponse":true,
      "expectedInputs":[
         {
            "inputPrompt":{
               "initialPrompts":[
                  {
                     "textToSpeech":"This is a carousel."
                  }
               ],
               "noInputPrompts":[
               ]
            },
            "possibleIntents":[
               {
                  "intent":"actions.intent.OPTION",
                  "inputValueData":{,
                     "@type":"type.googleapis.com/google.actions.v2.OptionValueSpec"
                     "carouselSelect":{
                        "items":[
                           {
                              "optionInfo":{
                                 "key":"key1",
                                 "synonyms":[
                                    "Option 1"
                                 ]
                              },
                              "title":"Option 1",
                              "description":"Option 2"
                           },
                           {
                              "optionInfo":{
                                 "key":"key2",
                                 "synonyms":[
                                    "Option 2"
                                 ]
                              },
                              "title":"Option 2",
                              "description":"Option 2"
                           }
                        ]
                     }
                  }
               }
            ]
         }
      ]
   }
}
在控制台中尝试此操作时,不显示旋转木马。仅显示文本
这是一个旋转木马。
。供您参考,我没有包括
图像
字段,因为根据规范它是可选的,但即使有图像,也没有显示旋转木马

调试这个很困难,因为我的
actions.intent.OPTION
intent没有显示在响应选项卡中的
possibleIntents[]
数组中。我希望此
actions.intent.OPTION
intent与Dialogflow响应生成的其他意图(如
assistant.intent.action.TEXT
)合并

我做错了什么?我是不是在用Dialogflow REST协议的V2而不是V1来攻击自己的脚

囚犯最初反馈后更新

我尝试了以下回答,但仍然没有得到任何旋转木马:

{
   "fulfillmentText":"Here you go.",
   "source":"ACTIONS_ON_GOOGLE",
   "payload":{
      "expectUserResponse":true,
      "richResponse":{
         "items":[
            {
               "simpleResponse":{
                  "textToSpeech":"Here are your results."
               }
            }
         ]
      },
      "systemIntent":{
         "intent":"actions.intent.OPTION",
         "data":{
            "carouselSelect":{
               "items":[
                  {
                     "optionInfo":{
                        "key":"Option1",
                        "synonyms":[
                           "Option2"
                        ]
                     },
                     "title":"Option3",
                     "description":"Option4"
                  },
                  {
                     "optionInfo":{
                        "key":"Option5",
                        "synonyms":[
                           "Option6"
                        ]
                     },
                     "title":"Option7",
                     "description":"Option8"
                  }
               ]
            },
            "@type":"type.googleapis.com/google.actions.v2.OptionValueSpec"
         }
      }
   }
}
我还尝试在Dialogflow中手动创建一个意图,返回一个“硬编码”的旋转木马(也就是说,没有实现回调),这个旋转木马显示得非常完美。因此,我确信控制台配置正确


我还将我的回答与中的回答进行了比较,但到目前为止还没有成功。

你没有击中自己的脚,但你已经使一些已经有点复杂的事情变得更加复杂。有两件事需要注意:

  • 更正:确保
    有效载荷
    与以前的
    数据相同,但其他字段的格式已更改

  • 您需要确保模拟器处于电话模式而不是扬声器模式

  • 详情如下

    记录的对话框流量差异

    Dialogflow响应的格式有点混乱。它没有提供完整的示例,而是说将位于
    expectedInputs.PossibleContent
    下的响应应该位于
    data.google.systemIntent
    下。对于V2,这将是
    payload.google.systemIntent

    inputPrompt
    对象也进行了一定程度的重构,因此您应该发送一个
    richResponse
    ,其中包含一个
    simpleResponse
    对象

    更新我已经测试过了。这是应该返回的整个JSON。请注意,
    有效负载的内容
    正是
    数据
    的内容。
    source
    字段被忽略,显然与有效负载无关

    另请参见包含一些示例的

    {
        "payload": {
            "google": {
                "expectUserResponse": true,
                "richResponse": {
                    "items": [
                        {
                            "simpleResponse": {
                                "textToSpeech": "This is a carousel"
                            }
                        }
                    ]
                },
                "systemIntent": {
                    "intent": "actions.intent.OPTION",
                    "data": {
                        "@type": "type.googleapis.com/google.actions.v2.OptionValueSpec",
                        "carouselSelect": {
                            "items": [
                                {
                                    "optionInfo": {
                                        "key": "key1",
                                        "synonyms": [
                                            "Option 1"
                                        ]
                                    },
                                    "title": "Option 1",
                                    "description": "Option 2"
                                },
                                {
                                    "optionInfo": {
                                        "key": "key2",
                                        "synonyms": [
                                            "Option 2"
                                        ]
                                    },
                                    "title": "Option 2",
                                    "description": "Option 2"
                                }
                            ]
                        }
                    }
                }
            }
        }
    }
    
    模拟器表面设置

    确保模拟器设置为“手机”表面,而不是“扬声器”表面。选项不会显示在扬声器上

    设置应如下所示:


    不是这样的:

    非常有用的反馈,再次感谢。我很快就会试试。再次感谢!到目前为止,仍然没有运气。我用我的进度更新编辑了我的原始问题。这可能是一个愚蠢的问题(打字错误?),但我现在看不到。另一个更新:我复制了一些回复,但似乎都不起作用。仅显示/读取
    fulfillmentText
    中的文本。似乎总是忽略
    有效负载
    。谷歌
    上的
    ACTIONS\u是否为
    源代码
    正确(因为我假设这将表明
    有效载荷
    是如何解释的)?事实证明我们对
    有效载荷
    的内容是错误的。它需要与
    数据的文档完全相同。请参阅上面我的更新,以及指向github存储库的链接,并提供更多示例。感谢您的更新!这确实解决了问题,旋转木马现在已正确显示。谢谢,非常感谢您的反馈。