コンテンツにスキップ

LINEメッセージから実行する(LINE Hook)

LINE 連携 でサービス利用者からのメッセージ送信 (Messaging API利用) をトリガーにファンクションを実行します。

trigger-line-hook

主な用途として「Messaging APIのWebhookメッセージ送信先をCraft Functionsで分岐する」があります。

制限

  • Craft LINE Hookのトリガーで起動できるファンクションは1つのKARTEプロジェクトあたり1個までです。

設定手順

  1. [すべてのプロダクト]>[Craft]>[設定]を開きます
  2. LINEの欄で[編集]をクリック後、以下を設定し[保存]を選択します。
    • 有効にする: チェックを入れる
    • 起動ファンクション: このトリガーで起動するファンクションを指定する

Craft Functionsが受け取るデータ

dataのフォーマットは イベント駆動タイプのファンクションが受け取るデータ をご確認ください。

  • kind は `“karte/track-hook” が入ります。
  • jsonPayload のフォーマットは次の通りです。
"jsonPayload": {
"name": "craft-hook",
"data": {
"plugin_name": "line",
"headers": "{ Request Header }",
"body": "{ Request Body }"
}
}
Key説明
jsonPayload.name"craft-hook" が入ります。
jsonPayload.data.plugin_name"line" が入ります。
jsonPayload.data.headersLINE Messaging API で送られたリクエストのヘッダー情報が Object 型で入ります。
jsonPayload.data.bodyLINE Messaging API で送られたリクエストの Body が Object 型で入ります。

以下はdataの例です。

{
"id": "0458713c-99d1-40c3-9be4-c34ca7cf8d92",
"kind": "karte/track-hook",
"timestamp": "2023-03-01T09:29:31.564Z",
"jsonPayload": {
"name": "craft-hook",
"data": {
"plugin_name": "line",
"headers": {
"x-line-signature": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"body": {
"destination": "Ued9462cda046c0cde88591baa780e023",
"events": [
{
"type": "message",
"message": {
"type": "text",
"id": "17727138040396",
"text": "test message"
},
"webhookEventId": "01GTE82SHCVT9SWPY5P3Z27748",
"deliveryContext": {
"isRedelivery": false
},
"timestamp": 1677662971002,
"source": {
"type": "user",
"userId": "Uae5b71e1eefbb568262c41bafc4fed33"
},
"replyToken": "5c0df29a687d4e0382c768d68da2cf59",
"mode": "active"
}
]
}
}
}
}

注意点

LINE Hookを利用する際の注意点を説明します。

Webhookメッセージを分岐した場合、応答メッセージが競合して失敗することがある

「Messaging APIのWebhookメッセージ送信先をCraft Functionsで分岐する」用途でLINE Hookを利用する際は、メッセージの replyToken が共通になります。

LINE Messaging APIの応答メッセージを送る機能では、Webhookメッセージの replyToken が必要になります。この値は一度利用すると無効になります。LINE HookでWebhook分岐をする場合、元のメッセージが持つ replyToken をそのまま分岐先に送信します。したがって、1つのWebhookメッセージに対して、複数サービスから応答メッセージを送ることはできません。