> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# アプリ内メッセージイベントストリーム

> イベントストリームを活用してアプリ内メッセージメトリクスを取得する方法

このドキュメントでは、[In-App Messages](./in-app-messages-setup)イベントの機能と使用法について説明します。ユーザーがこれらのメッセージをクリックまたは表示するたびに、ブロックレベルのクリックやページ固有の表示を含む重要なエンゲージメント統計を追跡できます。

## アプリ内メッセージイベント

アプリ内メッセージイベントには3種類の[`event.kind`](./event-streams-data#event-kind)があります：

* In-app Impression - `message.iam.impression`
* In-app Clicked - `message.iam.clicked`
* In-app Page Displayed - `message.iam.page_displayed`

これらのイベントは、ユーザーがデバイス上でアプリ内メッセージを開いてインタラクションする際に発火されます。

### アプリ内インプレッション

このイベントは、メッセージの読み込みが完了して画面に表示されるとすぐに発火されます。

[carousels](./design-your-in-app-message#carousels)を使用する場合、`event.data.page_name`と`event.data.page_id`を使用して、表示されている特定のページの名前とUUIDを取得できます。

### アプリ内クリック

このイベントは、クリックアクション（「ターゲット」とも呼ばれます）を持つ任意の要素またはブロックに適用されます。`event.data.target_name`と`event.data.target_id`を使用してクリックされた特定のターゲットの名前とUUIDを取得でき、`event.data.page_name`と`event.data.page_id`を使用してターゲットが属するページを取得できます。

詳細については、[In-app click actions](./iam-click-actions)を参照してください。

### アプリ内ページ表示

これは[carousels](./design-your-in-app-message#carousels)にのみ適用されるイベントです。`event.data.page_name`と`event.data.page_id`を使用して、表示されている特定のページまたはカードの名前とUUIDを取得できます。最初のカードのインプレッションは、ドキュメントの読み込みが完了するとすぐに発火されます。その後のページインプレッションはスワイプ時に発火されます。

## アプリ内メッセージイベントデータ

各`event.kind`は、アプリ内メッセージの作成方法に応じて追加のイベントデータを持つことができます。

<ParamField path="event.data.page_name" type="string">
  `event.kind`が`clicked`または`page_displayed`のときに表示されるページまたはカードの名前。`impression`イベントでは利用できません。

  `page_name`は、どのページが表示され、そのページで何がクリックされたかを知るのに役立ちます。

  ページ名はデフォルトで「Card 1」、「Card 2」などですが、ブロックエディター内で名前を変更できます。

  <Frame>
    <img src="https://mintcdn.com/onesignal/Z6xkXGfmy814If53/images/docs/e0862074b7ea2c064808035d2028410dae6aecc4bdf9ae4c4c83eeee1ac8d643-Screenshot_2025-01-17_at_1.30.34_PM.png?fit=max&auto=format&n=Z6xkXGfmy814If53&q=85&s=44d2b05d410b28b9e6fec94fd979ec5b" width="1040" height="826" data-path="images/docs/e0862074b7ea2c064808035d2028410dae6aecc4bdf9ae4c4c83eeee1ac8d643-Screenshot_2025-01-17_at_1.30.34_PM.png" />
  </Frame>
</ParamField>

<ParamField path="event.data.page_id" type="string UUID v4">
  ページの一意の識別子。[carousel](./design-your-in-app-message#carousels)を使用している場合で、古いカードが削除されたり新しいカードに置き換えられたりする場合に役立ちます。
</ParamField>

<ParamField path="event.data.target_name" type="string">
  ボタンまたは画像ブロック要素の名前。[クリックアクション](./iam-click-actions)を設定する必要があります。
</ParamField>

<ParamField path="event.data.target_id" type="string UUID v4">
  ボタンまたは画像ブロック要素の一意の識別子。[クリックアクション](./iam-click-actions)を設定する必要があります。これは、[carousel](./design-your-in-app-message#carousels)を使用していて、古いカードが削除されたり新しいカードに置き換えられたりする場合に役立ちます。
</ParamField>

## アプリ内メッセージイベントストリームを作成する

### イベントストリームをセットアップする

イベントストリームのセットアップとパーソナライズのガイダンスについては、[Event Stream Setup](./event-streams#setup)の手順を参照してください。以下は、イベントストリームを構成するための IAM 固有のステップ（ステップ3）を提供します。

## 追跡したいターゲットが正しくセットアップされていることを確認する

イベントストリームリクエストの本文でカスタム名を活用するには、ブロックエディターまたは HTML エディターで新しいカスタム名を手動で指定する必要があります。カスタム名のリリース前に存在していたアプリ内メッセージは、各ページまたはブロックのカスタム名でアプリ内メッセージが更新されるまで、イベントストリームで`page_name`と`target_name`の値を公開できません。

アプリ内メッセージが更新された後、その時点から発火されるイベントストリームリクエストはそれらの値にアクセスできます。いつでも、`page_name`と`target_name`の値はその時点でのアプリ内メッセージのカスタム名の状態を反映し、アプリ内メッセージが再度更新されると変更される可能性があります。

<Tabs>
  <Tab title="ブロックエディター">
    3つのイベントすべてをこのエディターで使用できます。ブロックエディターを使用する場合、ターゲットに[アプリ内クリックアクション](./iam-click-actions)が含まれていることを確認してください。ターゲットには、画像、ボタン、閉じるボタン、および背景ブロックが含まれます。テキストブロックは現在クリックアクションをサポートしておらず、含まれていません。

    ダッシュボードエクスペリエンスでの混乱を避けるため、ターゲットのカスタム名は一意である必要があります。
  </Tab>

  <Tab title="HTMLエディター">
    このエディターでは、アプリ内インプレッションとクリックイベントのみを使用できます。HTMLエディターを使用する場合、ボタンや画像だけでなく、任意の要素タイプでクリックを追跡できます。2つの要件があります：

    1. ターゲットを追跡するには、要素に`data-onesignal-unique-label="<insert_value>"`属性が必要です
    2. 要素には、埋め込まれた[In-app JS library](./in-app-message-api)（別名`OneSignalIamAPI`）からメソッドを呼び出すイベントリスナーが適用されている必要があります。

    注：混乱を避けるため、ターゲット名が一意であることを確認してください。カスタム内部レポートなどの重要な一意性のために、OneSignalによって一意であることが保証されている`target_id`を使用してください。同じラベルを持つ複数の要素で`data-onesignal-unique-label`属性を使用すると、それらの分析がマージされることに注意してください。これらのラベルを変更すると、元のラベルの下に以前のデータが保持され、新しいデータが新しいラベルに割り当てられます。正確な追跡のために、`target_id`を優先してください。

    例：

    <CodeGroup>
      ```html html theme={null}
      // For elements that do something like tag a user or prompt a push do something like this:

      <body>
        <button data-onesignal-unique-label="my-tag-user-button">Tag User</button>
      </body>
      <script>
        document
          .querySelector("button[data-onesignal-unique-label="my-tag-user-button")
          .addEventListener("click", function(e) {
            OneSignalIamApi.tagUser(e, { fiz: "baz" });
           });
      </script>

      // or for elements that don't require any specific functionality of the OneSignalIamApi other than click tracking, just call trackClick

      <body>
        <button data-onesignal-unique-label="my-button">Click Here</button>
      </body>
      <script>
        document
          .querySelector("button[data-onesignal-unique-label="my-button")
          .addEventListener("click", function(e) {
            OneSignalIamApi.trackClick(e);
           });
      </script>
      ```
    </CodeGroup>

    **サンプル入力：**

    <CodeGroup>
      ```json json theme={null}
      {
        "page_name":"{{ event.data.page_name }}",
        "page_id":"{{ event.data.page_id }}",
        "target_id":"{{ event.data.target_id }}",
        "target_name":"{{ event.data.target_name }}",
        "iam_id":"{{ message.id }}",
        "iam_name":"{{ message.name }}",
        "event_kind": "{{ event.kind }}"
      }
      ```
    </CodeGroup>

    **サンプル出力：**

    <CodeGroup>
      ```json json theme={null}
      {
        "page_name" : "html_page",
        "page_id": "d8b28eda-add3-59f8-a12d-07c70642363b" ,
        "target_id": "6bab1bd9-4de6-557b-b5ed-ecb85baed f89",
        "target_name": "my-location-prompt-button",
        "iam_id": "bb6329b6-f81a-44aa-a571-30ef6746de0c",
        "iam_name": "html iam naming",
        "event_kind": "message. iam.clicked"
      }
      ```
    </CodeGroup>
  </Tab>
</Tabs>

### 一意のIDを活用する

ベストプラクティス：分析目的でイベントストリームを使用する場合、`message.id`、`page_id`、および`target_id`を使用して一意性を検証してください。カスタム名は使用できますが、1つのIAM内の要素を人間が読める形式で区別するのに役立つことを意図しています。複数のアプリ内メッセージがある場合は、`message.id`を使用してそれらを区別してください。

### ブロックエディターで明確な名前を使用する

データ分析を簡素化するために、すべてのアプリ内メッセージのタイトル、カード、およびブロックに意味のある一意の名前を使用してください。カルーセル内のカードの名前を変更するには、更新したいタブを選択し、カードタブの横にある「オプション」ドロップダウンを選択します。カードの名前を変更するオプションが表示されます。

ブロックの名前を変更するには、各ブロックの右上隅にある3つの点のオプションメニューを選択して、名前変更モーダルを開きます。すべてのカスタム名は、該当する場合、ダッシュボードレポートとイベントストリームに反映されます。カスタム名は、設定して保存しない限り、イベントストリームに表示されません。アクティブなIAMがあり、最近新しいIAMイベントストリームをセットアップした場合は、これらのIAMがより明確な分析のために意味のあるカスタム名を持っていることを確認する必要があります。

***
