1

我对环聊有疑问。我会向你解释这个场景,以便你更好地理解

  • 我有用于用户聊天的环聊(频道)
  • 我有一个用 Dialogflow 实现的机器人
  • 我将履行连接到机器人,为用户创建定制的答案。

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

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

流程 1) 用户在环聊中写“你好”

2)这个消息(“hello”)被发送到 dialogflow,然后处理该消息并将其发送到 fullfillment。

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

问题是,当您单击该按钮时,您会收到一条消息“无法联系您的机器人。请稍后再试。”

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

  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"
      }
    
  }

4

1 回答 1

0

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

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

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

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

我希望它有所帮助。

于 2020-03-31T12:25:06.053 回答