LINE

透過 Dialogflow 的 LINE 整合功能,您可以將 Dialogflow 虛擬服務專員做為 LINE 機器人使用。

限制

這項整合功能僅支援預設代理語言。

運作方式

整合功能的運作方式如下:

  • 建立 LINE 管道。
  • 將 Dialogflow 代理與該管道建立關聯,讓兩者互相通訊。
  • Dialogflow 整合會使用 LINE Messaging API,將訊息傳送給使用者。
  • Dialogflow 整合會做為 LINE Webhook,接收使用者傳送的訊息。

設定

如要設定整合功能,請按照下列步驟操作:

  1. 請按照開始使用 Messaging API 的步驟建立 LINE 管道。
  2. 從 Dialogflow 控制台取得 LINE Webhook 網址:
    1. 前往 Dialogflow ES 控制台。
    2. 按一下左側側欄選單中的「整合」。
    3. 按一下「LINE」LINE。
    4. 複製「Webhook 網址」值。設定 LINE Webhook 時會用到。
  3. 設定 LINE Webhook:
    1. 請按照下列步驟,為管道設定 LINE Webhook:LINE 接收訊息 (Webhook)。
    2. 使用上方複製的 Webhook 網址,提供 LINE Webhook 設定。
    3. 複製「頻道 ID」、「Channel secret」和「存取權杖」值。設定 Dialogflow 整合時,會需要用到這些值。
  4. 設定 Dialogflow 整合:
    1. 前往 Dialogflow ES 控制台。
    2. 按一下左側側欄選單中的「整合」。
    3. 按一下「LINE」LINE。
    4. 將頻道 ID、頻道密鑰和頻道存取權杖貼到對應欄位。
    5. 視情況選擇環境。
    6. 按一下 [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"
      }
    ]
  }
}