可以從透過LIFF APP發送訊息?和一般在聊天視窗發送訊息有什麼不一樣!?
以用戶身分發送訊息給Line聊天機器人。
透過執行此方法,發送訊息給Line聊天機器人,實際上,和在有Line聊天機器人的聊天視窗內,傳訊息和它對話是一樣的意思。
這句話是什麼意思?
首先,先來認識一下,當用戶在有Line聊天機器人的聊天視窗內,傳訊息和它對話,它是怎麼收到用戶傳來的訊息。
如圖,當用戶在聊天視窗內,發送訊息後,透過LINE平台,會將訊息傳到Webhook伺服器。當企業內部系統,收到介接進來的訊息後,再將回覆訊息,層層傳遞後,用戶就能在聊天視窗內,看到聊天機器人回覆的訊息。
這裡的Webhook伺服器,是開發人員在Line Developers Console中,建立Messaging API Channel需要填的欄位,是HTTPS開頭的URL。
回到一開始的那句話,也就是說,當在LIFF APP執行liff.sendMessages(),發送訊息給Line聊天機器人,用戶的訊息也會如上述的流程那樣,透過LINE平台,經過Webhook伺服器等等。
為什麼要用戶會需要透過liff.sendMessages()發送訊息,而不是直接在聊天視窗內發送訊息?
這其實是我一開始看到這個方法的時候,起初的疑問。但後來想想,如果用戶在LIFF APP中,填寫好表單,按下發送鈕,同時組成字串,並觸發liff.sendMessages(),就能很輕鬆的將表單內容送給Line聊天機器人,應該是這樣吧。
用戶可以發送什麼樣的訊息給聊天機器人呢?
先來更進一步認識透過Webhook介接進來的訊息長這樣:
{
"destination": "xxxxxxxxxx",
"events": [
{
"replyToken": "nHuyWiB7yP5Zw52FIkcQobQuGDXCTA",
"type": "message",
"mode": "active",
"timestamp": 1462629479859,
"source": {
"type": "user",
"userId": "U4af4980629..."
},
"message": {
"id": "325708",
"type": "text",
"text": "Hello, world! (love)",
"emojis": [
{
"index": 14,
"length": 6,
"productId": "5ac1bfd5040ab15980c9b435",
"emojiId": "001"
}
]
}
}
]
}
events
是一個陣列,當中的每個物件是來自用戶傳來的訊息,詳細請參考這篇。
主要是要簡單介紹一下,message
的物件中的type
,是指用戶傳來的訊息是哪種類型。
Message event可能會有:
liff.sendMessages([
{
type: 'text',
text: 'Hello, World!'
}
])
.then(() => {
console.log('message sent');
})
.catch((err) => {
console.log('error', err);
});