LINE

借助 Dialogflow 的 LINE 集成,您可以将 Dialogflow 代理用作 LINE 聊天机器人。

限制

此集成仅支持默认代理语言。

工作原理

集成的工作原理如下:

  • 您创建一个 LINE 渠道。
  • 您将 Dialogflow 代理与该渠道关联,使它们能够相互通信。
  • Dialogflow 集成使用 LINE Messaging API 向最终用户发送消息。
  • Dialogflow 集成充当 LINE 网络钩子接收来自最终用户的消息。

设置

如需设置集成,请执行以下操作:

  1. 按照步骤创建 LINE 渠道:开始使用 Messaging API。
  2. 从 Dialogflow 控制台获取 LINE 网络钩子网址:
    1. 前往 Dialogflow ES 控制台。
    2. 点击左侧边栏菜单中的集成。
    3. 点击LINE。
    4. 复制网络钩子网址值。您需要此值来配置 LINE 网络钩子。
  3. 配置 LINE webhook:
    1. 按照步骤为渠道配置 LINE 网络钩子:LINE 接收消息(网络钩子)。
    2. 使用上面复制的网络钩子网址提供 LINE 网络钩子配置。
    3. 复制 Channel ID、Channel secret 和 Channel access token 值。您需要这些值来配置 Dialogflow 集成。
  4. 配置 Dialogflow 集成:
    1. 前往 Dialogflow ES 控制台。
    2. 点击左侧边栏菜单中的集成。
    3. 点击LINE。
    4. 将频道 ID、频道密钥和频道访问令牌粘贴到相应字段中。
    5. 选择环境(如适用)。
    6. 点击开始 (START)。

Webhook 签名验证

Dialogflow ES 会使用您的 LINE 渠道密钥验证每个传入网络钩子请求的 X-Line-Signature HTTP 请求标头。

为了验证请求的真实性,Dialogflow ES 会使用您的渠道密钥计算原始 HTTP POST 请求正文的 base64 编码 HMAC-SHA256 摘要,并将其与 X-Line-Signature 标头进行比较。如需详细了解 LINE 如何对 webhook 载荷进行签名,请参阅 LINE 签名验证文档。

如果网络钩子请求缺少 X-Line-Signature 标头、标头重复或无效,Dialogflow ES 会拒绝该请求并返回 HTTP 400 Bad Request 状态代码。

为确保 Webhook 签名验证功能正常运行,请执行以下操作:

  • 确保在 Dialogflow ES 控制台中配置的频道密钥与 LINE Messaging API 频道设置中的有效频道密钥一致。如果您轮替或重新颁发 LINE 频道的频道密钥,请在 Dialogflow ES 控制台中更新该密钥,然后重启集成。
  • 如果您在将网络钩子流量转发到 Dialogflow ES 之前通过代理、API Gateway 或中间件服务路由网络钩子流量,请原封不动地转发 X-Line-Signature 标头,并发送确切的原始请求正文字节,而无需重新序列化或更改空格。
  • 请勿直接向 Dialogflow ES LINE 网络钩子网址发送未签名的请求。

测试

如要测试您的代理,请点按 LINE 应用主屏幕上的横向三点图标。然后点击二维码图标并扫描聊天机器人设置页面上的二维码。此操作会将您的聊天机器人添加到对话列表中。

富响应消息

系统支持下列富响应消息。

图片响应

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"
      }
    ]
  }
}