# 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 アドレスの完全なリストは、次のリンクにあります:
[IP Addresses for Integrations](/apis/endpoints/ip-addresses-integrations-result-workers)

## Treasure コンソールから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)

| パラメータ | 説明 |
|  --- | --- |
| Treasure API Key | Treasure APIキー、書き込み専用キー |
| Channel Secret Key | LINEチャネルシークレットキー |


### Sourceの作成

1. Treasure コンソールを開きます。
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関数を使用して、特定のフィールドを抽出できます。