LINEメッセージから実行する(LINE Hook)
LINE 連携 でサービス利用者からのメッセージ送信 (Messaging API利用) をトリガーにファンクションを実行します。
主な用途として「Messaging APIのWebhookメッセージ送信先をCraft Functionsで分岐する」があります。
制限
- Craft LINE Hookのトリガーで実行できるファンクションは1つのKARTEプロジェクトあたり1個までです。
設定手順
次の手順でCraft LINE Hookトリガーを設定します。
- 対象となるイベント駆動タイプのファンクションを事前にデプロイしておきます。
- [すべてのプロダクト]>[Craft]>[設定]を開きます
- 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.headers | LINE Messaging API で送られたリクエストのヘッダー情報が Object 型で入ります。 |
jsonPayload.data.body | LINE 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メッセージに対して、複数サービスから応答メッセージを送ることはできません。