# イベント

クライアントアプリケーションをさらに細かく制御したり、デジタルヒューマンの状態とウェブサイトを同期させたりしたい場合があります。そのために、デジタルヒューマンアプリケーションからのメッセージイベントを提供しており、これをウェブクライアントで利用することができます。そのためには、`window`イベント`UneeqMessage`をリッスンします。

## 例

以下のコード例では、セッションがライブになると`body`要素のクラスリストを更新するために、どのようにメッセージをリッスンできるかを示しています。リッスンすることができるその他のメッセージイベントについては、以下に記載されています。

```jsx
window.addEventListener( 'UneeqMessage', (event) => {
    const msg = event.detail;
    console.log('UneeQ Message: ', msg);

    switch( msg.uneeqMessageType ){

        case 'SessionStateUpdate':
            if( msg.live ) {
                document.body.classList.add('uneeq-session-live');
            } else {
                document.body.classList.remove('uneeq-session-live');
            }
            break;

        // Add additional event handlers here...

        default:
            break;

    }
});
```

以下に、リッスン可能なメッセージの完全なリストを定義しています：

### AvatarAnswer

アバターの応答メッセージ

### AvatarInterrupted

アバターの発話が中断されました。ユーザーの割り込みやシステムによる中断が発生した場合に発火します

### AvatarStartedSpeaking

デジタルヒューマンが発話を開始しました

### AvatarStoppedSpeaking

デジタルヒューマンの発話が終了しました

### AvatarUnavailable

利用可能なデジタルヒューマンがありません

### CallToActionDismissed

ユーザーによってコールトゥアクションボックスが閉じられました

### CreateSessionFailed

セッション作成（または再開）リクエストが失敗しました

### CustomData

NLPシステムから「instructions」フィールドで提供されたJSONデータ。このデータは、NLPシステムからフロントエンドアプリケーションにカスタム指示を渡すために使用できます。 例えば、ウェブサイトに表示したい製品のカスタムデータを設定するなどです。

### CustomMetadataUpdated

チャットメタデータが正常に更新されました。メッセージには新しく設定されたメタデータの値が含まれています

### DataProcessingWarning

データ処理に関する警告が発生しました。データの処理中に問題が検出された場合に通知されます

### DeviceError

デバイス関連のエラーが発生しました

### DigitalHumanMuted

デジタルヒューマンの音声出力がミュート状態になりました

### DigitalHumanPlayedInMutedModeSuccess

ブラウザの自動再生ポリシーにより、デジタルヒューマンの音声を再生できませんでした。デジタルヒューマンは音声がミュートされた状態で起動しました。ユーザーのインタラクション後にuneeqUnmuteDigitalHuman()を呼び出すとミュートが解除される場合があります

### DigitalHumanUnmuted

デジタルヒューマンの音声出力ミュートが解除されました

### DisplayContentUpdated

コンテンツ表示エリアでコンテンツが更新されました

### EnableMicrophoneUpdated

マイクの有効状態が更新されました。enabled値がtrueの場合はマイクが有効、falseの場合はマイクが解放されています

### FrameReady

アプリケーションがロードされ、設定が検証されました。セッションはuneeqInstance.startSession()を呼び出すことで開始できます

### FrameResize

iframeのサイズや位置の変更が要求されました。レイアウトモードやセッション状態の変化に応じて、iframeの表示領域を制御するために使用されます

### Instructions

指示ペイロードがNLPから送信されました。指示はNLP内でJSONとして設定されている場合があります

### LayoutModeUpdate

レイアウトモードが変更されました（overlay / fullScreen / contained）

### MicPermissionDenied

ユーザーがページにマイクの使用許可を与えていませんが、音声入力をプロンプトとして使用しようとしています

### Notification

通知がありました

### PromptRequest

会話プラットフォームに送信される、ユーザーの入力（テキスト／音声）および関連メタデータです。各リクエストには追跡用の一意な UUID（requestId）が含まれます。

**⚠️ セキュリティに関する重要な注意：**

書き起こしテキスト（transcript）はXSSに対してサニタイズされていません。このデータをHTMLに直接挿入すると、XSS（クロスサイトスクリプティング）攻撃を受ける可能性があります。

**安全な実装例：**

```jsx
// ❌ 危険：直接HTMLに挿入しない
element.innerHTML = promptResult.transcript;

// ✅ 安全：テキストとして挿入
element.textContent = promptResult.transcript;

// ✅ 安全：エスケープ処理を行ってから挿入
element.innerHTML = escapeHtml(promptResult.transcript);
```

### PromptResult

会話プラットフォームからの応答です。初期要求/userInputと応答メタデータが含まれています

### PromptUpdated

プロンプトが更新されました。会話プラットフォームへ送信されるプロンプト内容が変更された場合に発火します

### ReadyToStart

セッションの開始準備が完了しました。接続の初期化が終わり、セッションを開始できる状態になったことを示します

### RecordingStarted

音声認識のための録音が開始されました

### RecordingStopped

音声認識のための録音が終了しました

### SceneReady

3Dシーンの準備が完了しました。アバターのレンダリング環境が整い、表示可能な状態になったことを示します

### ServiceUnavailable

問題が発生しました。詳細については含まれているメッセージを参照してください

### SessionBackendError

セッションに関するバックエンド側でのエラーが発生したことを通知します

### SessionConnecting

セッションの接続を開始しています。デジタルヒューマンとの通信を確立するための初期接続プロセスが進行中です。

### SessionDisconnected

セッションが再接続できなかった場合、SessionDisconnectedメッセージとともにセッションが終了します。

### SessionEnded

セッションが終了しました

### SessionError

セッション中に発生したエラーを含むメッセージです（例：TTS呼び出しの失敗、ネットワーク中断など）

### SessionLive

セッションがライブ状態になり、アバタービデオがアクティブになりました

### SessionReconnecting

ユーザーとバックエンド間で切断が発生し、セッションの再接続を試みています

### SessionReconnectingFinished

セッションの再接続が完了しました

### SessionStateUpdate

セッションの状態が更新されました

### SoftSwitchFinished

アバターのソフトスイッチ（切替）が完了しました。別のアバターへの切り替えが正常に終了したことを示します

### SoftSwitchStarting

アバターのソフトスイッチ（切替）が開始されました。別のアバターへの切り替え処理が進行中であることを示します

### SpeechEvent

ウェブページにトリガーを組み込んで、デジタルヒューマンに話すコマンドを送信できます。詳細はスピーチイベントを参照してください

### SpeechStarted

音声認識が開始されました。ユーザーの音声入力の受付が開始されたことを示します

### SpeechTranscription

ユーザーの音声の暫定的または最終的な書き起こしが受信されました

### UnhandledMessage

ストリーマーから受信したメッセージのうち、既知のハンドラーで処理されなかったメッセージです

### UserStartedSpeaking

ユーザーの音声入力アクティビティの開始が検出されました

### UserStoppedSpeaking

ユーザーの音声入力アクティビティが停止または一定間隔で一時停止しました

### VadInterruptionAllowed

音声アクティビティ検出（VAD）による割込みが許可されました

### VideoInitialised

ビデオストリームの初期化が完了しました。アバターの映像表示の準備が整ったことを示します

### VideoLayoutConfiguring

ビデオレイアウトの設定処理中です。アバター映像の表示レイアウトが構成されている状態を示します

### WaitingForRenderer

レンダラーの割り当てを待機しています。セッション開始後、レンダリングサーバーの準備が完了するまでの待機状態です

### WaitingForStartRequest

開始リクエストの待機中です。セッションの開始指示を待っている状態を示します

### WaitingInQueue

ユーザーが待機列にいることを示します。ユーザーがデジタルヒューマンと対話できるようになるまでの待機状態を管理し、進行状況をカウントダウンします

### WaitingToStart

セッションの開始を待機しています。接続処理が進行中で、まもなくセッションが開始される状態を示します

### WebRtcConnected

WebRTC接続が確立されました。ブラウザとレンダリングサーバー間のリアルタイム通信が正常に接続されたことを示します

### WebRtcStats

WebRTC 接続やメディアストリームに関する統計情報（接続品質やパフォーマンス指標）を提供します


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.digitalhumans.jp/dev/hosted-experience/hosted-experience-events-2.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
