Treasure AI Voiceは、組織の録音、文字起こし、AI生成の要約、デバイスインベントリを自社のTreasure Data CDPデータベースに直接プッシュできます。データがCDPに取り込まれると、他の顧客データと結合してセグメントの作成やジャーニーの実行が可能になり、会議や通話で実際に話された内容を分析できます。
この連携は、手動エクスポートと定期エクスポートに対応しています。エクスポートはバックグラウンドで実行され、Treasure AI Voiceは指定したTreasure Data CDPデータベースのテーブルにデータを書き込みます。書き込み先設定と専用の書き込み専用APIキーを保存して、後続の手動実行や管理者がサインインしていない状態での定期実行に使用できます。APIキー本体がコンソールに返されること、エクスポート実行のペイロードに含まれること、監査ログに書き込まれることはありません。
Treasure Data CDPエクスポートはエンタープライズ管理者のみが利用でき、表示される前に組織で有効化する必要があります。下記の連携を有効化するを参照してください。
このページで説明するのは、Treasure AI VoiceのデータをCDPに取り込み、クエリ・セグメント・アクティベーションに使えるテーブルにする方法です。会議の要約、フォローアップの起草、誰が何を約束したかの引用など、エージェントに会話形式で録音を読み取らせたい場合は、Treasure AI VoiceをTreasure AI Studioに接続してください。こちらは読み取り専用で、エクスポートは不要、範囲は各ユーザーのTreasure AI Voiceのロールに従います。Treasure AI Voiceへの接続を参照してください。
各エクスポートは、CDPデータベース内の4つの論理テーブルに書き込みます。recordings、transcript_segments、summariesテーブルはその実行の対象範囲の録音を反映します。devicesテーブルは録音日時ではフィルタリングされません。初回エクスポートでは全デバイスインベントリが含まれる場合がありますが、差分エクスポートではエクスポートチェックポイント以降に更新されたデバイスが含まれます。
録音は処理ステータスに関わらず含まれます。status列が各録音の状態を反映し、まだ文字起こしや要約が完了していない録音ではtranscription_text、summary_textおよび関連フィールドは空になります。
エクスポートは差分実行にできます。ソースレコードのupdated_atを使用して、前回のチェックポイント以降に変更されたレコードを特定します。日付範囲を指定すると、録音の候補をrecorded_atで絞り込みますが、差分チェックポイントの用途は変わりません。
| テーブル | 内容 | 粒度 |
|---|---|---|
recordings | 録音ごとに1行: メタデータ、話者ラベル付きの完全な文字起こし、AI要約、アクションアイテム。 | 録音ごとに1行 |
transcript_segments | 文字起こしを個々のタイムスタンプ付き発話に分割したもの。話者の帰属とセグメントごとの言語検出を含みます。 | 発話ごとに1行 |
summaries | AI生成の要約とアクションアイテムを、結合しやすいよう分離したもの。要約がある録音のみ行が生成されます。 | 要約された録音ごとに1行 |
devices | 組織のPLAUDデバイスフリート: 割り当て、ステータス、ファームウェア、最終確認タイムスタンプ。 | デバイスごとに1行 |
すべての行には、ソースレコードから導出された安定したunique_idが付与されます。同じソースレコードは常に同じunique_idにマッピングされます。ただしTreasure Data CDPは受信イベントを既存行の置き換えではなく追記するため、同じunique_idを持つ行が複数存在する場合があります。updated_atを使用して最新のコピーを判定してください。
すべての行には、ソースレコードの最終更新時刻をUnixエポック秒で表すupdated_at列も付与されます。ソースの更新時刻が維持されていない古いレコードでは、テーブルごとの代替タイムスタンプがupdated_atに使用されます(各テーブルのupdated_atの説明を参照してください)。
すべての行にはtime列(Unixエポック秒)も付与され、Treasure Data CDPがネイティブの時間パーティショニングに使用します。これによりアナリストは時間で効率的にフィルタリングできます。time値は各テーブルで最も意味のあるタイムスタンプに紐付けられます。recordingsとsummariesはrecorded_at、セグメントは録音日時に発話オフセットを加えた時刻、デバイスは最終ハートビート(報告がない場合はプロビジョニング時刻)です。パーティションのフィルタリングにはtimeを使用し、最新行の判定と重複排除にはupdated_atを使用してください。
スキーマはTreasure AI Voiceが管理します。列は最初の書き込み時にCDPテーブルに追加されるため、事前に宣言する必要はありません。
| 列 | 型 | 説明 |
|---|---|---|
time | long | recorded_atのUnixエポック秒。時間パーティショニングに使用されます。 |
unique_id | string | この録音行の安定した識別子。updated_atと組み合わせて再実行時の重複排除に使用します。 |
updated_at | long | ソース録音の最終更新時刻(Unixエポック秒)。古いレコードではrecorded_atが代替値になる場合があります。 |
id | string | 録音ID(他のテーブルのrecording_idと一致)。 |
organization_id | string | 組織の識別子。 |
recorded_at | string | 録音がキャプチャされた日時のISO 8601タイムスタンプ。 |
user_email | string | 録音を作成したメンバーのメールアドレス。 |
user_name | string | 録音を作成したメンバーの表示名。 |
file_name | string | 録音の元のファイル名。 |
duration_seconds | long | 録音の長さ(秒)。 |
status | string | 処理ステータス(例: COMPLETED)。 |
transcription_language | string | 文字起こしで検出された主要言語。 |
transcription_text | string | 完全な文字起こし。話者ラベル付き・話者ごとにグループ化されたテキストとしてレンダリングされ、管理者がAI Voice Consoleで録音を開いたときに表示されるものと同じ形式です。注意: 文字起こしが1 MBのイベントサイズ上限を超えた場合(通常は3時間を超える録音)、その録音のrecordings行全体がIngest APIに拒否されます。エクスポートは続行し、partialステータスで完了します。transcript_segmentsおよびsummariesの行は影響を受けません。 |
summary_text | string | 録音のAI生成要約。 |
action_items | array<string> | AIが抽出したアクションアイテム。 |
inferred_name | string | AIが推測した録音のタイトル。 |
tags | array<string> | 録音に適用されたタグ。 |
device_serial_number | string | 録音のキャプチャに使用されたPLAUDデバイスのシリアル番号。 |
team_id | string | 録音が関連付けられているチームの識別子(ある場合)。 |
| 列 | 型 | 説明 |
|---|---|---|
time | long | 録音日時にセグメントの開始オフセットを加えた時刻のUnixエポック秒。 |
unique_id | string | このセグメント行の安定した識別子。updated_atと組み合わせて再実行時の重複排除に使用します。 |
updated_at | long | 親録音の最終更新時刻(Unixエポック秒)。古いレコードでは録音日時が代替値になる場合があります。 |
recording_id | string | 親録音のID。recordings.idと結合します。 |
organization_id | string | 組織の識別子。 |
segment_index | long | 録音内でのセグメントの位置(ゼロ始まり)。 |
start_ms | long | 録音の先頭からのセグメント開始オフセット(ミリ秒)。 |
end_ms | long | 録音の先頭からのセグメント終了オフセット(ミリ秒)。 |
speaker_id | string | ダイアライゼーションによる生の話者識別子(例: spk_0)。 |
speaker_label | string | AI Voice Consoleで話者名が割り当てられている場合はその名前。割り当てがない場合は空。 |
language | string | セグメントで検出された言語。 |
language_probability | double | セグメントの言語検出の信頼度。 |
text | string | セグメントの文字起こしテキスト。 |
| 列 | 型 | 説明 |
|---|---|---|
time | long | recorded_atのUnixエポック秒。 |
unique_id | string | このサマリー行の安定した識別子。updated_atと組み合わせて再実行時の重複排除に使用します。 |
updated_at | long | 親録音の最終更新時刻(Unixエポック秒)。古いレコードでは録音日時が代替値になる場合があります。 |
recording_id | string | このサマリーが属する録音。recordings.idと結合します。 |
organization_id | string | 組織の識別子。 |
recorded_at | string | 元の録音のISO 8601タイムスタンプ。 |
summary_text | string | AI生成の要約。 |
action_items | array<string> | AIが抽出したアクションアイテム。 |
inferred_name | string | AIが推測した録音のタイトル。 |
| 列 | 型 | 説明 |
|---|---|---|
time | long | 最終ハートビートのUnixエポック秒(デバイスが一度も報告していない場合はプロビジョニング時刻)。 |
unique_id | string | このデバイス行の安定した識別子。updated_atと組み合わせて再実行時の重複排除に使用します。 |
updated_at | long | ソースデバイスの最終更新時刻(Unixエポック秒)。古いレコードではデバイスの内容を表すタイムスタンプが代替値になる場合があります。 |
serial_number | string | デバイスのシリアル番号。 |
organization_id | string | 組織の識別子。 |
status | string | 現在のデバイスステータス(例: ACTIVE、LOCKED)。 |
device_model | string | デバイスモデル(例: Note Pro、NotePin S)。 |
firmware_version | string | 現在インストールされているファームウェアバージョン。 |
assigned_user_email | string | デバイスが割り当てられているメンバーのメールアドレス。 |
assigned_user_name | string | デバイスが割り当てられているメンバーの表示名。 |
assigned_at | string | デバイスが割り当てられた日時のISO 8601タイムスタンプ。 |
provisioned_at | string | デバイスがプロビジョニングされた日時のISO 8601タイムスタンプ。 |
last_heartbeat_at | string | デバイスの直近のステータス報告のISO 8601タイムスタンプ。 |
last_sync_at | string | デバイスのモバイルアプリとの直近の同期のISO 8601タイムスタンプ。 |
エクスポートを設定する前に、以下を準備してください:
- Treasure AI VoiceのEnterprise Adminアカウント。
- 組織で連携が有効化されていること(下記参照)。
- 書き込み先データベースに対するImport OnlyまたはGeneral Access権限を持つユーザーのTreasure Data CDP APIキー。
- Treasure Data CDPの日本(AP01)リージョンにある書き込み先データベース。エクスポートは最初の書き込み時に宛先テーブルを作成します。
専用の書き込み専用APIキーを使用してください。書き込み先データベースに対するImport OnlyまたはGeneral Access権限が必要です。Masterキーは使用しないでください。この連携に必要な範囲を超えるアクセス権が付与されます。
キーは後続の手動実行または定期実行のために安全に保存されます。キー本体がコンソールに返されること、エクスポート実行のペイロードに含まれること、監査ログに書き込まれることはありません。
Treasure AI Voiceは、Treasure Data CDPの日本(AP01)リージョンにのみエクスポートします。書き込み先データベースとAPIキーがこのリージョンに対応していることを確認してください。
連携はデフォルトで無効です。有効にするには:
- Enterprise AdminとしてAI Voice Consoleにサインインします。
- Exportページを開きます。
- Treasure Data CDPを選択します。
- Enable exportをクリックします。
有効化するオプションが表示されない場合は、Treasure AIの担当者までお問い合わせください。
手動エクスポートまたは定期エクスポートを実行する前に、宛先と認証情報を保存します:
- ExportページのSettingsタブを開きます。
- 書き込み先のDatabaseを入力します。
- 専用のWrite-only API Keyを入力します。
- 必要に応じてAdvancedを展開し、Recordings tableとTranscript segments tableの名前を変更します。
- Save settingsをクリックします。
データベースとテーブルの設定は、次回Exportページを開いたときに復元されます。認証情報を変更するにはReplaceをクリックして新しいキーを保存します。削除するにはRemoveをクリックします。保存済みキーを削除すると、有効な定期スケジュールも無効になります。
- Settingsタブに書き込み先データベースと保存済みAPIキーが表示されていることを確認します。
- 必要に応じてAdvancedを展開し、FromとToの日付範囲を設定します。
- 必要に応じて以前にエクスポートした録音を再エクスポートを選択します。
- Run export nowをクリックします。
- Historyタブで実行状況を確認します。
日付範囲は録音日時で録音をフィルタリングします。Toの日付は、その日の終日を含みます。範囲は録音、文字起こしセグメント、要約に適用されます。録音日時によるデバイスのフィルタリングは行いません。
リクエストはバックグラウンド実行を作成し、エクスポートが完了する前に戻ります。開始後にページを開いたままにする必要はありません。
定期エクスポートでは、保存済みの宛先、テーブル設定、書き込み専用APIキーを使用します。利用できる間隔は以下のとおりです:
- 1時間ごと
- 6時間ごと
- 12時間ごと
- 24時間ごと
- 週次
最短の実行間隔は1時間です。カスタムcron式には対応していません。最初のスケジュール実行は、スケジュールを有効にした時点から開始するか、組織内の既存のエクスポート対象データをバックフィルしてから差分実行へ移行できます。
同じ組織で別のエクスポートが実行中の場合、定期エクスポートは開始されません。
Historyタブには、手動および定期エクスポートの実行履歴が表示されます。各実行は、以下のいずれかのステータスになります:
| ステータス | 意味 |
|---|---|
| Queued | エクスポートが受け付けられ、開始を待っています。 |
| Running | エクスポートワーカーが実行を処理しています。 |
| Success | 行の拒否が報告されることなく実行が完了しました。 |
| Partial | 一部の行が拒否されたか、ワーカーの時間制限に達して実行が終了しました。未処理のデータは後続のエクスポート実行で処理されます。 |
| Failed | 認証、権限、設定、またはシステムエラーにより実行を完了できませんでした。 |
| Nothing to send | 受け入れられた録音またはデバイスのイベントがありませんでした。 |
Historyの一覧には、開始時刻、実行方法、ステータス、受け入れられた行数と拒否された行数、所要時間、実行IDが表示されます。実行詳細では、書き込み先データベース、テーブルごとの件数、失敗情報、イベントサイズが大きすぎて拒否された録音を確認できます。
認証情報が無効な場合や、Treasure Data CDPデータベースへの権限が不足している場合は、非同期実行のためFailedとして表示されることがあります。書き込み先データベースに対するImport OnlyまたはGeneral Access権限をキーのユーザーに付与してから、エクスポートを再実行してください。
シリアライズ後のイベントが1MBの上限を超える録音は、実行詳細に表示されます。その録音行は拒否されますが、文字起こしセグメントと要約は送信される場合があります。録音は後続の実行で一定回数再試行されます。
各エクスポート実行は、TD_CDP_EXPORTイベントタイプとして監査ログに記録されます。ステータスと行数はHistoryタブと実行詳細で確認できますが、監査ログには表示されません。設定と認証情報の変更も記録されます。APIキー本体が監査ログに書き込まれることはありません。
定期エクスポートと日付範囲を指定しないエクスポートでは、差分チェックポイントを使用します。チェックポイント以降に更新された録音とデバイスが次回の実行に含まれます。日付範囲を指定すると、録音の候補をrecorded_atで絞り込みながら、差分チェックを維持します。
以前にエクスポートした録音を再エクスポートを選択すると、その実行ではチェックポイントを使わず、選択した範囲のすべてのレコードを再送信します。
Treasure Data CDPは受信イベントを既存行の置き換えではなく追記します。そのため、再実行によって同じunique_idを持つ行が複数存在する場合があります。ダウンストリームではunique_idを基準に重複排除し、updated_atが最大の行を残してください。
古いレコードでソースの更新時刻が維持されていない場合、updated_atにはテーブルごとの代替タイムスタンプが使用されます(各テーブルのupdated_atの説明を参照してください)。
1つの録音イベントは1MBを超えられず、1つのバッチは4MBを超えられません。Treasure Data CDPによる行の拒否、またはワーカーの時間制限によって、実行がPartialになることがあります。定期エクスポートの最短間隔は1時間で、組織ごとに同時実行できるエクスポートは1つだけです。
運用手順と管理者権限については、Administrator Guideを参照してください。
各テーブルはrecording_id(recordings.id)を共有しているため、CDP内で会議データの任意のビューを再構築できます。例:
summariesをrecording_idでrecordingsに結合すると、要約と完全な録音メタデータを一緒に取得できます。transcript_segmentsをrecording_idでrecordingsに結合し、segment_indexで並べ替えると、会話を発話単位で再構築・分析できます。transcript_segmentsをspeaker_label(またはspeaker_id)でピボットすると、参加者ごとの発話時間を分析できます。recordingsをdevice_serial_number=serial_numberでdevicesに結合すると、会話をデバイスと割り当てられたユーザーに紐付けられます。
定期エクスポートと日付範囲を指定しないエクスポートでは、差分チェックポイントを使用します。updated_atがチェックポイント以降の行が再度エクスポートされます。
Treasure Data CDPは受信イベントを既存行の置き換えではなく追記します。unique_idを基準に重複排除し、updated_atが最大の行を残してください。
日付範囲を指定した手動エクスポートは、録音候補をrecorded_atで絞り込みます。組織の差分チェックポイントは更新しません。
WITH ranked AS (
SELECT
*,
ROW_NUMBER() OVER (
PARTITION BY unique_id
ORDER BY updated_at DESC
) AS rn
FROM your_table
)
SELECT *
FROM ranked
WHERE rn = 1ソースの更新時刻が維持されていない古いレコードでは、updated_atにテーブルごとの代替タイムスタンプが使用されます(各テーブルのupdated_atの説明を参照してください)。
| 問題 | 解決方法 |
|---|---|
| エクスポートオプションを利用できない | 組織でCDPエクスポートが有効になっていることと、サインインしているユーザーがEnterprise Adminであることを確認します。 |
| エクスポートを開始できない | 実行前に書き込み先データベースと書き込み専用APIキーを保存します。 |
| APIキーエラーで実行が失敗する | キーが有効であり、そのユーザーが書き込み先データベースに対するImport OnlyまたはGeneral Access権限を持つことを確認します。 |
| 実行がPartialになる | 実行詳細で拒否された行または時間制限のメッセージを確認します。未処理のデータは後続のエクスポート実行で処理されます。 |
| Nothing to sendと表示される | 録音の日付範囲を確認します。全件を再エクスポートする場合は、以前にエクスポートした録音を再エクスポートを選択します。 |
エクスポートされるテーブルのスキーマとクエリ例については、スキーマリファレンスを参照してください。