# LINE OA Streaming Import連携 LINE Messaging公式アカウント(OA)は、顧客の会話データと行動データを収集し、分析、トリガー、マーケティング目的のパーソナライゼーションに活用できます。この連携により、LINE OAからのメッセージ/イベントデータをTreasure Dataにインポートできます。 ## サポートされるWebhookイベント この連携は、LINE Messaging APIから送信されるすべてのWebhookイベントを受信します。以下が含まれます: - メッセージイベント(テキスト、画像、動画、音声、ファイル、位置情報、スタンプ) - フォローイベント(ユーザーがアカウントを友だち追加したとき) - アンフォローイベント(ユーザーがアカウントをブロックしたとき) - 参加イベント(アカウントがグループまたはルームに参加したとき) - 退出イベント(アカウントがグループまたはルームから退出したとき) - メンバー参加/退出イベント - ポストバックイベント - ビーコンイベント - アカウント連携イベント - デバイス連携/連携解除イベント Webhookイベントの完全なリストとデータ構造については、[LINE Messaging APIドキュメント](https://developers.line.biz/en/docs/messaging-api/receiving-messages/#webhook-event-types)を参照してください。 ## 前提条件 - Treasure Dataの基礎知識 - LINE Messaging公式アカウントの基礎知識 ## 要件と制限事項 - 会話データの取得をサポート - LINE WebhookとLINE Messaging APIが有効化されている必要があります - Webhook URLを正しく設定する必要があります - データを取り込むテーブルにデータを取り込む前に、Plazmaでデータベースとテーブルを作成する必要があります - LINE Messaging APIでは、チャネルごとに1つのWebhook URLのみ許可されています。Webhookを必要とする複数のツールを使用したり、既存のシステム連携がある場合は、ZapierなどのWebhookイベントをTreasure Dataを含む複数の宛先に配信する中間サービスを使用する必要があります ## Treasure Data Integration の静的 IP アドレス セキュリティポリシーで IP ホワイトリストが必要な場合は、接続を成功させるために Treasure Data の IP アドレスを許可リストに追加する必要があります。 リージョンごとに整理された静的 IP アドレスの完全なリストは、次のリンクにあります: [https://api-docs.treasuredata.com/en/overview/ip-addresses-integrations-result-workers/](https://api-docs.treasuredata.com/en/overview/ip-addresses-integrations-result-workers/) ## TDコンソールからLINE OAをインポート ### 認証の作成 1. 認証情報セットを使用して新しい認証を作成するには、以下の手順を実行します。 2. Integrations Hubを選択します。 3. Catalogを選択します。 4. カタログで連携を検索し、アイコンにマウスカーソルを合わせて、Create Authenticationを選択します。 ![line oa streaming catalog](/assets/line-oa-streaming-catalog.314a9b0d8b23acf95027c9dc75a247358e8b4336d85fc7ea249646f02d3e0567.31dabd9a.png) 1. Credentialsタブが選択されていることを確認し、連携の認証情報を入力します。 ### 新しい認証フィールド ![line oa streaming new authentication](/assets/line-oa-streaming-new-authentication.9abe5dfbbc7bb85144f17059e4c0b18056bb6987820fccbf22b89a089059b0e0.31dabd9a.png) | パラメータ | 説明 | | --- | --- | | TD API Key | TD APIキー、書き込み専用キー | | Channel Secret Key | LINEチャネルシークレットキー | ### Sourceの作成 1. TDコンソールを開きます。 2. Integrations Hub > Authenticationsに移動します。 3. 新しく作成した認証を見つけて、New Sourceを選択します。 ![Authentications page with New Source button](/assets/authentications-new-source.621b09d88ddca37f2d5826f1ea05a8e8337b7865d1dcda6d1ff8936cc7e94751.31dabd9a.png) ### 接続の作成 | パラメータ | 説明 | | --- | --- | | Data Transfer Name | 転送の名前を定義できます。 | | Authentication | 転送に使用される認証名。 | 1. Data Transfer Nameフィールドにソース名を入力します。 2. Nextを選択します。 3. Create SourceページがSource Tableタブが選択された状態で表示されます。 ### ソーステーブルの指定 続行する前に、Plazmaでデータベースとテーブルを作成したことを確認してください。この連携では、LINE OAデータを保存するための既存のデータベースとテーブルが必要です。 1. LINE OAデータを保存する宛先テーブルを設定します。 ![Create Source data settings](/assets/create-source-data-settings.fbece41c29532c128468ca51329d9d10158f40cf02e91018d092b96925c8866f.31dabd9a.png) | パラメータ | 説明 | | --- | --- | | Datastore | Plazmaが使用可能なオプションです。 | | Tags | オプション。タグを使用してこのソースを検索できます。 | | Database | データをインポートするTreasure Data内のデータベースを指定します。 | | Raw Table | 生のメッセージデータを配置するデータベース内のテーブルを指定します。 | | Events Table | イベントデータを配置するデータベース内のテーブルを指定します。 | 1. Nextを選択します。 ### Data Preview インポートを実行する前に、Generate Preview を選択してデータの[プレビュー](/products/customer-data-platform/integration-hub/batch/import/previewing-your-source-data)を表示できます。Data preview はオプションであり、選択した場合はダイアログの次のページに安全にスキップできます。 1. **Next** を選択します。Data Preview ページが開きます。 2. データをプレビューする場合は、**Generate Preview** を選択します。 3. データを確認します。 ### Data Placement データの配置について、データを配置したいターゲット database と table を選択し、インポートを実行する頻度を指定します。 1. **Next** を選択します。Storage の下で、インポートされたデータを配置する新しい database を作成するか、既存の database を選択し、新しい table を作成するか、既存の table を選択します。 2. **Database** を選択 > **Select an existing** または **Create New Database** を選択します。 3. オプションで、database 名を入力します。 4. **Table** を選択 > **Select an existing** または **Create New Table** を選択します。 5. オプションで、table 名を入力します。 6. データをインポートする方法を選択します。 - **Append** (デフォルト) - データインポートの結果は table に追加されます。 table が存在しない場合は作成されます。 - **Always Replace** - 既存の table の全体の内容をクエリの結果出力で置き換えます。table が存在しない場合は、新しい table が作成されます。 - **Replace on New Data** - 新しいデータがある場合のみ、既存の table の全体の内容をクエリの結果出力で置き換えます。 7. **Timestamp-based Partition Key** 列を選択します。 デフォルトキーとは異なるパーティションキーシードを設定したい場合は、long または timestamp 列をパーティショニング時刻として指定できます。デフォルトの時刻列として、add_time フィルターで upload_time を使用します。 8. データストレージの **Timezone** を選択します。 9. **Schedule** の下で、このクエリを実行するタイミングと頻度を選択できます。 #### 一度だけ実行 1. **Off** を選択します。 2. **Scheduling Timezone** を選択します。 3. **Create & Run Now** を選択します。 #### 定期的に繰り返す 1. **On** を選択します。 2. **Schedule** を選択します。UI では、*@hourly*、*@daily*、*@monthly*、またはカスタム *cron* の 4 つのオプションが提供されます。 3. **Delay Transfer** を選択して、実行時間の遅延を追加することもできます。 4. **Scheduling Timezone** を選択します。 5. **Create & Run Now** を選択します。 転送が実行された後、**Data Workbench** > **Databases** で転送の結果を確認できます。 ### ソースIDのコピー ソースID(UUID v4)は、ソース作成時に発行されます。 不正使用を防ぐため、**ソースID**は権限のない者に開示しないでください。 ソース作成後、自動的にソース一覧ページに移動します。 1. 作成したソースを検索します。 2. 同じ行の「...」をクリックし、**Copy Unique ID**を選択します。 ![Sources listing with Copy Unique ID option](/assets/sources-copy-unique-id.aad8c1ff1b526b1bccfdb0eaa0fd1f511265f4ba93f52e97f74f09de9262361f.31dabd9a.png) このユニークIDが、LINE Messaging APIでWebhook URLを設定する際に必要なソースIDです。 ### LINE Messaging APIでWebhook URLを設定 Treasure DataでLINE OAイベントを受信するには、LINE Messaging APIの設定でWebhook URLを設定する必要があります。 1. [LINE Developers Console](https://developers.line.biz/console/)にログインします。 2. LINE公式アカウントチャネルを選択します。 3. **Messaging API**タブに移動します。 4. **Webhook settings**セクションで、Webhook URLを入力します: **米国リージョンの場合:** ``` https://line-in-streaming.treasuredata.com/v1/task/{source_id} ``` **東京リージョンの場合:** ``` https://line-in-streaming.treasuredata.co.jp/v1/task/{source_id} ``` `{source_id}`を前の手順でコピーしたソースIDに置き換えます。 5. **Verify**をクリックしてWebhook接続をテストします。 6. **Use webhook**トグルを有効にします。 7. オプションで、**Webhook redelivery**を有効にして、失敗したWebhook配信を再試行できるようにします。 8. **Update**をクリックして設定を保存します。 ![LINE Developers Console webhook settings](/assets/line-webhook-settings.7f5609dd3d02450625e08b14fe39121bedd65e1a281d76839ca529dfe56b8fa2.31dabd9a.png) Webhookを有効にする前に、**Webhook URL**が正しく設定され、検証されていることを確認してください。他のリージョンのホスト名も同じパターンに従いますが、リージョン固有のドメインになります。 ### データの取り込み Webhook設定とソース作成が完了した後、最初のイベントがトリガーされると、コネクタはすぐにLINE OAイベントデータをTreasure Dataに取り込み始めることができます。 ## データスキーマ ### Eventsテーブルのスキーマ Eventsテーブルには、LINE Messaging APIからの詳細なWebhookイベントデータが含まれます。各行は、以下の構造を持つ単一のWebhookイベントを表します: | カラム名 | データ型 | 説明 | | --- | --- | --- | | event_mode | string | イベントモードのステータス(例:「active」) | | event_type | string | Webhookイベントのタイプ(例:「message」、「postback」、「follow」、「unfollow」) | | event_deliverycontext | JSON string | isRedeliveryフラグを含む配信コンテキスト情報 | | event_timestamp | long | イベントが発生した時のUnixタイムスタンプ(ミリ秒) | | destination | string | Webhookを受信したLINE公式アカウントのユーザーID | | event_source | JSON string | userIdとtype(user、group、またはroom)を含むソース情報 | | event_postback | JSON string | ポストバックイベントデータ(ポストバックイベントのみ)。dataとparamsを含む | | event_webhookeventid | string | LINEからの一意のWebhookイベントID | | event_replytoken | string | イベントに応答するためのリプライトークン | | record_uuid | string | このレコードに対してTreasure Dataが生成した一意の識別子 | | event_message | JSON string | text、markAsReadToken、quoteToken、メッセージID、typeを含むメッセージイベントデータ | | time | long | レコードがTreasure Dataに取り込まれた時のUnixタイムスタンプ | ### イベントデータの例 **メッセージイベントの例:** ```json { "event_mode": "active", "event_type": "message", "event_deliverycontext": "{\"isRedelivery\":false}", "event_timestamp": 1764739548058, "destination": "U26272c69eb9c705cdb310034a13d8a2c", "event_source": "{\"userId\":\"U7df7e1515baea0a9898c2d8553d016d1\",\"type\":\"user\"}", "event_webhookeventid": "01KBHAS125354QY30EQDB80MXV", "event_replytoken": "a24d6cd95f4e4cceb74505a3c67fa1f0", "record_uuid": "c32f42c1-6464-312e-8a73-64b19c6c8116", "event_message": "{\"text\":\"Hello\",\"id\":\"590404062261018659\",\"type\":\"text\"}", "time": 1764739556 } ``` **ポストバックイベントの例:** ```json { "event_mode": "active", "event_type": "postback", "event_deliverycontext": "{\"isRedelivery\":false}", "event_timestamp": 1764739548788, "destination": "U26272c69eb9c705cdb310034a13d8a2c", "event_source": "{\"userId\":\"U7df7e1515baea0a9898c2d8553d016d1\",\"type\":\"user\"}", "event_postback": "{\"data\":\"second-menu\",\"params\":{\"newRichMenuAliasId\":\"second-menu\",\"status\":\"SUCCESS\"}}", "event_webhookeventid": "01KBHAS1TNJ9W3GZZSAYG8WSEW", "event_replytoken": "e6a713af40ed416e8844db6638705d01", "record_uuid": "5289e93e-d7c2-3a7d-9ba0-8de86cc53e4f", "time": 1764739552 } ``` `event_source`、`event_message`、`event_postback`などのJSON文字列カラムには、ネストされたJSONデータが含まれています。クエリでTreasure DataのJSON関数を使用して、特定のフィールドを抽出できます。