Определить в диалоговом потоке событие cardclick из чата Hangouts и вызвать намерение - PullRequest
1 голос
/ 25 февраля 2020

У меня проблема с тусовками. Я объясню вам сценарий, чтобы вы могли лучше понять

  • У меня есть видеовстречи для чата пользователя (канал)
  • У меня есть бот, реализованный с Dialogflow
  • У меня есть выполнение, связанное с ботом, для создания пользовательских ответов для пользователя.

Я хотел бы создать список кнопок или карточку, чтобы при нажатии пользователем опция, которую он имеет, Нажатие отправляется на выполнение и там обрабатывается.

Кто-нибудь знает, как это сделать?

Поток 1) Пользователь пишет "привет" в чате видеовстречи

2) Это сообщение ("привет") отправляется в диалоговый поток, который затем обрабатывает сообщение и отправляет его на полное заполнение.

3) При выполнении ответ разрабатывается в формате json (вы увидите его позже). В этот ответ включен объект с именем onClick, внутри которого есть еще один объект с именем action, который содержит другой объект с именем actionMethodName, где вы определяете, где вы хотите go (в этом случае было бы идеально перенаправить пользователя на другой объект INTENT)

Проблема в том, что когда вы нажимаете на эту кнопку, вы получаете сообщение: «С вашим ботом невозможно связаться. Повторите попытку позже».

Я хотел бы, чтобы пользователь нажимал на это, бот распознает событие (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 Ответ

0 голосов
/ 31 марта 2020

Я попробовал нечто подобное, но в конце я немного изменил дизайн.

  1. Настройте API Hangouts на go для своей серверной части вместо DialogFlow (и устраните Fulfillment)

  2. В вашем бэкэнде проверьте, является ли тип сообщения Message или Card_clicked (среди прочего), и сгенерируйте ответ карты.

  3. Также в своем бэкэнде вы можете использовать функцию deteIntent из библиотеки диалогового потока для определения цели и ответа на видеовстречи.

Надеюсь, это поможет.

...