在 dialogflow 中检测来自环聊聊天的 cardclick 事件并调用意图

Detect in dialogflow a cardclick event from Hangouts chat and call a intent

我的视频群聊有问题。 我会向你解释这个场景,以便你更好地理解

我想创建一个按钮列表或一张卡片,以便当用户单击时,他单击的选项将发送到 fulfillment 并在那里进行处理。

有谁知道有什么方法可以做到这一点吗?

流量 1) 用户在环聊

中输入"hello"

2) 此消息 ("hello") 被发送到 dialogflow,然后 dialogflow 处理该消息并将其发送到 fullfillment。

3) 在实现中,响应以 json 格式详细说明(您稍后会看到)。在此答案中包含一个名为 onClick 的对象,其中包含另一个名为 action 的对象,该对象包含另一个名为 actionMethodName 的对象,您可以在其中定义您想要去的地方(在这种情况下,将用户重定向到另一个 INTENT 是理想的)

问题是,当你点击那个按钮时,你会收到一条消息说 "Your bot cannot be contacted. Try again later."

我想要的是,一旦用户点击它,机器人就会识别该事件 (CARD_CLICKED) 并将他带到另一个 INTENT

  CustomPayload: function () {

    return {
      "actionResponse": {
        "type": 'CARD_CLICKED'
      },
      
        "payload": {
          "hangouts": {
            "sections": [
              {
                "widgets": [
                  {
                    "textParagraph": {
                      "text": "<b>Roses</b> are <font color=\"#ff0000\">red</font>,<br><i>Violets</i> are <font color=\"#0000ff\">blue</font>"
                    }
                  },
                  {
                    "buttons": [
                      {
                        "textButton": {
                          "text": "NEXT INTENT",
                          "onClick": {
                            "action": {
                              "actionMethodName": "intent",
                              "parameters": []
                            }
                            
                          }
                        }
                      }
                    ]
                  }
                ]
              }
            ],
            "header": {}
          }
        },
        "platform": "GOOGLE_HANGOUTS"
      }
    
  }

我尝试了类似的东西,但最后我对设计做了一点改动。

  1. 配置 Hangouts API 以转到后端而不是 DialogFlow(并消除 Fulfillment)

  2. 在您的后端,检查消息的类型是 Message 还是 Card_clicked(等等)并生成卡片响应。

  3. 您还可以在后端使用 dialogflow 库中的 detectIntent 函数来检测意图并回复环聊。

希望对您有所帮助。