透過 Dialogflow 的 LINE 整合功能,您可以將 Dialogflow 虛擬服務專員做為 LINE 機器人使用。
限制
這項整合功能僅支援預設代理語言。
運作方式
整合功能的運作方式如下:
- 建立 LINE 管道。
- 將 Dialogflow 代理與該管道建立關聯,讓兩者互相通訊。
- Dialogflow 整合會使用 LINE Messaging API,將訊息傳送給使用者。
- Dialogflow 整合會做為 LINE Webhook,接收使用者傳送的訊息。
設定
如要設定整合功能,請按照下列步驟操作:
- 請按照開始使用 Messaging API 的步驟建立 LINE 管道。
- 從 Dialogflow 控制台取得 LINE Webhook 網址:
- 前往 Dialogflow ES 控制台。
- 按一下左側側欄選單中的「整合」。
- 按一下「LINE」LINE。
- 複製「Webhook 網址」值。設定 LINE Webhook 時會用到。
- 設定 LINE Webhook:
- 請按照下列步驟,為管道設定 LINE Webhook:LINE 接收訊息 (Webhook)。
- 使用上方複製的 Webhook 網址,提供 LINE Webhook 設定。
- 複製「頻道 ID」、「Channel secret」和「存取權杖」值。設定 Dialogflow 整合時,會需要用到這些值。
- 設定 Dialogflow 整合:
- 前往 Dialogflow ES 控制台。
- 按一下左側側欄選單中的「整合」。
- 按一下「LINE」LINE。
- 將頻道 ID、頻道密鑰和頻道存取權杖貼到對應欄位。
- 視情況選擇環境。
- 按一下 [START] (開始)。
Webhook 簽章驗證
Dialogflow ES 會使用 LINE 管道密鑰,驗證每個傳入 Webhook 要求的 X-Line-Signature HTTP 要求標頭。
為驗證要求真實性,Dialogflow ES 會使用管道密鑰,計算原始 HTTP POST 要求主體的 base64 編碼 HMAC-SHA256 摘要,並與 X-Line-Signature 標頭進行比較。如要進一步瞭解 LINE 如何簽署 Webhook 酬載,請參閱 LINE 簽章驗證說明文件。
如果 Webhook 要求缺少 X-Line-Signature 標頭,或標頭重複或無效,Dialogflow ES 會拒絕要求,並傳回 HTTP 400 Bad Request 狀態碼。
如要確保 Webhook 簽章驗證功能正常運作,請按照下列步驟操作:
- 確認 Dialogflow ES 控制台中設定的「Channel secret」,與 LINE Messaging API 管道設定中的有效「Channel secret」相符。如果您輪替或重新核發 LINE 頻道的頻道密鑰,請在 Dialogflow ES 控制台中更新,並重新啟動整合。
- 如果您先透過 Proxy、API 閘道或中介軟體服務轉送 Webhook 流量,再轉送至 Dialogflow ES,請轉送未經修改的
X-Line-Signature標頭,並傳送確切的原始要求主體位元組,不要重新序列化或變更空白字元。 - 請勿直接將未簽署的要求傳送至 Dialogflow ES LINE Webhook 網址。
測試
如要測試代理,請輕觸 LINE 應用程式主畫面上的三個水平點,然後輕觸 QR code 圖示,並掃描機器人設定頁面上的 QR code。這樣就能將您的機器人加到對話清單中。
複合式回應訊息
系統支援下列豐富的回覆訊息。
圖片回覆
Dialogflow 圖片回覆類型會以 LINE 圖片訊息類型的形式傳送至 LINE。
支援的格式和大小如下:
- jpeg
- 大小上限為 1 MB
- 尺寸上限:240 x 240
資訊卡回覆
Dialogflow 資訊卡回覆類型會以 LINE 範本訊息類型的形式傳送至 LINE。
快速回覆
Dialogflow 快速回覆回應類型會以 LINE 範本訊息類型的形式傳送至 LINE。
自訂酬載回覆
您可以使用自訂酬載回覆,傳送大多數 LINE 訊息類型。
舉例來說,下列自訂酬載會提供 LINE 範本訊息:
{ "type": "template", "altText": "this is a buttons template", "template": { "type": "buttons", "thumbnailImageUrl": "https://example.com/bot/images/image.jpg", "title": "Menu", "text": "Please select", "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" } ] } }