<!-- https://unlockos.io/ja/manual/space-speaker -->

# スピーカー通知チャネル ヘルプ

## 概要

**スピーカー** は、[通知ワークフロー](notification-workflow.md)のチャネルの1つで、専用デバイス（M5Stackベースのハードウェア）を使って**空間内に音声アナウンスを流す**通知手段です。「チェックアウト予定の5分前にお片付けをお願いする放送を流す」「入室を検知したらウェルカムメッセージを流す」といった運用に使います。LINE・Email・SMSのように個人に通知するのではなく、部屋やスペースそのものに向けて音声を再生する点が他チャネルと異なります。

サイドバーの「🔔 通知ワークフロー」→ **チャネル** タブのスピーカーカードから `/notifications/channels/speaker` を開きます。画面は3つのタブで構成されます。

| タブ | 内容 |
|---|---|
| スピーカー | 施設に設置したスピーカーデバイスの登録・編集・削除 |
| アナウンス内容 | 読み上げ原稿（スクリプト）の作成と音声生成、テスト配信 |
| 配信設定 | プランごとの自動配信ルールと、直近の配信履歴 |

管理・編集ができるのは施設オーナー・組織オーナーです（一般メンバーは閲覧のみ、または非表示）。

---

## 詳細機能

## 機能1: スピーカーデバイスの登録

「スピーカー」タブで、施設に設置した物理デバイスを登録します。

| 項目 | 説明 |
|------|------|
| デバイスID | M5本体のシリアルログに表示される `[SYS] Device ID` と**同じ値**を入力する（英数字と `. _ -` のみ、128文字以内） |
| 表示名 | 画面上での呼び名（例:「1Fエントランス」） |
| 説明（任意） | 設置場所のメモなど |
| 有効 | OFFにすると、このデバイス宛の配信が一時的に止まる（登録情報は残る） |

デバイスIDは**作成後も編集可能な項目ではなく**、編集画面では読み取り専用として表示されます（値を変えたい場合は削除して登録し直します）。

---

## 機能2: 音声スクリプト（アナウンス内容）の作成

「アナウンス内容」タブで、読み上げさせたい原稿とボイスを組み合わせて事前に音声化しておきます。

1. ボイスを選ぶ（UnlockOS があらかじめ用意した ElevenLabs のボイスカタログから選択。施設オーナー自身が ElevenLabs の契約を持つ必要はありません）
2. タイトル（200文字以内）と読み上げ原稿（5,000文字以内）を入力
3. 「保存」でスクリプトを保存する
4. 「音声を生成」をクリックすると ElevenLabs で音声（MP3）が生成される

生成が終わると再生プレビューが表示され、その場で聞いて確認できます。原稿またはボイスを変更すると再生成が必要になる旨の警告が表示されます。生成に失敗した場合は前回のエラー内容が表示されます（[トラブルシューティング](#トラブルシューティング)参照）。

生成済み（`ready`）のスクリプトだけが、後述の配信設定・テスト配信で選択できます。

### テスト配信

アナウンス内容の一覧から、スピーカーを1台選んで特定のスクリプトを**即時再生**できます。実際の予約に連動した自動配信とは独立した操作で、送信後にデバイスからの応答（再生済み・スキップ・失敗など）を最大30秒間待って結果を表示します。**テスト配信は課金の対象になりません。**

---

## 機能3: 自動配信ルール（配信設定）

「配信設定」タブで、「どのプランの予約に」「どのタイミングで」「どのスピーカーで」「どのスクリプトを」再生するかをルールとして登録します。

| 項目 | 説明 |
|------|------|
| プラン | このルールを適用する料金プラン |
| アンカー | 再生の起点となる出来事（下表参照） |
| 方向・オフセット | アンカーの前／後、何分ずらすか（0〜120分。アンカーによっては固定） |
| スクリプト | 再生する音声（生成済みのものだけ選択可） |
| スピーカー | 再生させるデバイス（複数選択可。同じルールで複数台に同時再生できる） |
| 有効 | OFFにすると、このルールでの自動配信が止まる |

### 選べるアンカー

| アンカー | 再生されるタイミング | オフセット |
|---|---|---|
| 予約開始時刻 | 予約の開始時刻を基準に前後の指定分 | 0〜120分、前／後を選択可 |
| チェックアウト予定時刻 | 予約の終了予定時刻を基準に前後の指定分 | 0〜120分、前／後を選択可 |
| 実チェックイン時刻 | 実際にチェックインが完了した時刻を基準に前後の指定分 | 0〜120分、前／後を選択可 |
| 最初の在室検知時（ウェルカム） | 予約時間内で最初に在室を検知したタイミングで**1回だけ**再生 | 設定不要（固定） |
| 終了時間超過の居座り検知時 | チェックアウト予定時刻から指定分後、**まだ在室と判断した場合のみ**再生 | 1〜120分後（固定で「後」） |

> **「最初の在室検知時」「終了時間超過の居座り検知時」の2つは、実際に再生するかどうかの最終判断をスピーカー本体（デバイス側）が行います。** サーバー側はアンカー時刻でコマンドをデバイスへ送るだけで、在室していなければ「スキップ」としてデバイス側で再生されません。

---

## 機能4: 配信履歴と応答状況

「配信設定」タブの下部に、直近の配信履歴が一覧表示されます。各行には以下が表示されます。

- 配信日時・状態（再生済み／スキップ／失敗／配信済み・応答待ち）
- 対象スピーカー・プラン・スクリプト・タイミング
- コマンドID、端末応答（デバイスACK）、在室状態、エラー内容（あれば）

デバイスからの応答（ACK）は以下のように分類されます。

| デバイス応答 | 画面上の状態 | 意味 |
|---|---|---|
| 再生済み | 再生済み | 正常に再生された |
| 不在のためスキップ／期限切れ／キャンセル済み | スキップ | 在室していなかった・再生予定時刻を過ぎた・取消された |
| キュー満杯／無効なコマンド／再生エラー | 失敗 | デバイス側で処理できなかった |
| （応答なし） | 配信済み・応答待ち | コマンドは送信されたが、まだデバイスからの応答がない |

この履歴とは別に、[通知ワークフロー](notification-workflow.md)の**履歴タブ**でも「スピーカー」チャネルとして課金情報つきで確認できます。

---

## 機能5: 課金

スピーカーチャネルは **¥3／回**（再生1回あたり）の従量課金です。ElevenLabsでの音声生成やMQTT配信にかかる実費はUnlockOS側が負担し、顧客への請求は再生1回あたりの単価に統一されています。テスト配信は課金されません。

---

## トラブルシューティング

### 音声が再生されない

1. 対象デバイスの「有効」がONになっているか確認する（OFFだとコマンドは送られても再生されない）
2. スクリプトの生成状態が「生成済み」になっているか確認する（未生成・生成失敗の音声は再生できない）
3. 配信履歴のエラー内容を確認する。よくあるものは以下のとおり。

| エラー内容（画面表示） | 考えられる原因 |
|---|---|
| スピーカーに接続できませんでした | デバイスの電源・ネットワーク接続を確認する |
| スピーカーへの接続が拒否されました | デバイスの登録状況（デバイスID）を確認する |
| スピーカーへの配信に失敗しました | 時間をおいて再度お試しください |
| 音声ファイルを取得できませんでした | スクリプトの音声を再生成する |
| スピーカーの認証情報を取得できませんでした | デバイスのプロビジョニング状況をサポートに確認する |
| 再生予定時刻を過ぎたため配信を中止しました | 配信の遅延。頻発する場合はサポートに連絡 |

### 音声の生成に失敗する

読み上げ原稿の内容やボイス選択に問題がある場合、生成エラーがスクリプト編集画面に表示されます。原稿を短くする・特殊な記号を減らす等の見直しをしてから再度「音声を生成」を試してください。一時的なタイムアウトの場合は時間をおいて再試行してください。

### スピーカーの声を変えたい

「アナウンス内容」タブで新しいスクリプトを作成し（ボイスを変更して音声生成）、配信設定のルールで使用するスクリプトを差し替えてください。

---

## よくある質問

### Q: 1つのルールで複数のスピーカーを同時に鳴らせますか？
A: できます。ルールの「スピーカー」で複数台を選択すると、同じタイミングで全台に配信されます。

### Q: 施設に「スピーカー」カードやメニューが表示されません
A: 通知ワークフロー機能自体のフィーチャーフラグ、またはスピーカー機能のフィーチャーフラグが無効になっている可能性があります。サポートにご確認ください。

### Q: テスト配信は課金されますか？
A: されません。実際の予約に連動する自動配信のみ課金対象です。

### Q: 「最初の在室検知時」なのに再生されませんでした
A: この起点は在室検知の最終判断をデバイス側で行います。デバイスが在室を検知できていない（センサーの向き・設置場所等）可能性があります。設置状況をご確認ください。

### Q: デバイスIDを間違えて登録しました
A: デバイスIDは編集画面では変更できません。削除してから正しいデバイスIDで登録し直してください。

---

## 関連ページ

- [通知ワークフロー](notification-workflow.md)
- [Webhook 通知チャネル](webhook-channel.md)
