Интеграция 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"
}
]
}
}
}
}
]
}