Интеграция DialogFlow + LINE.me с богатыми сообщениями

Я интегрирую DialogFlow и LINE, используя выполнение webhook. Я могу успешно ответить на сообщение пользователя LINE, когда текст находится в speech поле ответа.

{
  "speech": "your number is 1234"
}

Однако, если я следую за документом и добавляю конкретный ответ LINE, он не работает, то есть просто ничего не отвечает.

{
  "data": {
    "line": {
      "replyToken": "e4050bccd34b52...b119069d27bb5",
      "messages": [
        {
          "text": "Hi",
          "type": "text"
        }
      ]
    }
  }
}

Это означает, что я могу ответить только одним текстовым сообщением, но не другими расширенными сообщениями.

Я делаю что-то не так или это проблема DialogFlow?

1 ответ

Решение

Я наконец-то понял, как это сделать! Формат ответа в вопросе не правильный. Правильный формат что-то вроде:

{
 'messages': [
   <message object>,
   <message object>
 ]
}

Вы можете обратиться к объекту сообщения, для каких типов можно использовать. Следует отметить, что с типом 4 вы можете просто использовать полезную нагрузку, указанную в LINE.

Например,

{
    'messages': [
        {
            'type': 0,
            'speech': 'ABC'
        },
        {
            "type": 4,
            "payload": {
                "line": {
                    "type": "template",                                                                                                                                                                                                                           "altText": "This is a buttons template",
                    "template": {
                        "type": "buttons",
                        "thumbnailImageUrl": "https://images.justlanded.com/event_images/Tets/photo/events_original_45195_42919.jpg",
                        "imageAspectRatio": "rectangle",
                        "imageSize": "cover",
                        "imageBackgroundColor": "#FFFFFF",
                        "title": "Menu",
                        "text": "Please select",
                        "defaultAction": {
                            "type": "uri",
                            "label": "View detail",
                            "uri": "http://example.com/page/123"
                        },
                        "actions": [
                            {
                                "type": "postback",
                                "label": "Buy",
                                "data": "action=buy&itemid=123"
                            },
                            {
                                "type": "postback",
                                "label": "Add to cart",
                                "data": "action=add&itemid=123"
                            },
                            {
                                "type": "uri",
                                "label": "View detail",
                                "uri": "http://example.com/page/123"
                            }
                        ]
                    }
                }
            }
        }

    ]
}
Другие вопросы по тегам