このトピックでは、クラウド録画のコールバック通知のメッセージ形式とパラメーターについて説明します。
クラウド録画コールバックのリトライメカニズム
応答エラーコードが 500 以上の場合、またはリクエストがタイムアウトした場合、システムはコールバックメッセージを再送します。
クラウド録画コールバックのメッセージフォーマット
コールバックメッセージは、設定された URL に HTTP または HTTPS 経由で送信される POST リクエストです。
リクエストボディは JSON フォーマットです。
コールバックメッセージを受信した後、次の応答を返す必要があります:
ヘッダー
HttpStatus
本文
Content-Type: application/json
200
{
"Code": 0,
"Msg": "Success"
}
クラウド録画コールバックのパラメーター
現在、クラウド録画のコールバック通知は、タスクステータスの変更に関連するイベントのみをサポートしています。
コールバックメッセージヘッダー
パラメーター | 値 |
Content-Type | application/json |
ALI-LIVE-TIMESTAMP | このパラメーターは、NotifyAuthKey が有効な場合にのみ渡されます。 例:1748417138 |
ALI-LIVE-SIGNATURE | このパラメーターは、NotifyAuthKey が有効な場合にのみ渡されます。 例:abcdefgxxx |
認証手順:クラウド録画タスクの作成時に有効な NotifyAuthKey を指定した場合、システムはコールバック通知の HTTP リクエストヘッダーに ALI-LIVE-TIMESTAMP および ALI-LIVE-SIGNATURE フィールドを含めます。これらのフィールドを使用して署名を検証できます。この検証により、コールバックメッセージが正当で安全であることが保証されます。
ALI-LIVE-SIGNATURE は次のように生成されます:
ALI-LIVE-SIGNATURE = MD5(MD5CONTENT)
MD5CONTENT = ALI-LIVE-TIMESTAMP + "|" + NotifyAuthKeyコールバックリクエストを受信した後、リクエストヘッダーから
ALI-LIVE-TIMESTAMPとALI-LIVE-SIGNATUREをフェッチします。ローカルに保存されている
NotifyAuthKeyとリクエストヘッダーのALI-LIVE-TIMESTAMPの値を連結して、MD5CONTENT文字列を生成します。区切り文字としてパイプ文字 (|) を使用します。MD5CONTENT文字列の MD5 ハッシュを計算して署名を取得します。計算された署名をリクエストヘッダーの
ALI-LIVE-SIGNATUREと比較します。
署名が一致しない場合、リクエストは信頼できないソースからのものです。システムのセキュリティを確保するために、リクエストを拒否する必要があります。
コールバックメッセージ本文
パラメーター | タイプ | 説明 |
appId | string | アプリケーション ID。 |
channelId | string | チャネル ID。 |
taskId | string | 録画タスク ID。 |
eventType | string | イベントタイプ。詳細については、「イベントタイプ」の表をご参照ください。 |
callbackTs | integer | コールバックが送信された時間。これはミリ秒単位の UNIX タイムスタンプです。 例: 1744774345595。 |
payload | json string | その他の情報。パラメーターの詳細については、「その他の情報」の表をご参照ください。 |
イベントタイプ (eventType)
値 | 説明 |
TaskCreated | タスクが作成されました。 |
TaskStarting | タスクが開始中です。 |
TaskRunning | タスクが実行中です。 |
TaskRecovering | タスクが例外から回復中です。 |
TaskStopping | タスクが停止中です。 |
TaskStopped | タスクが停止しました。 |
TaskStartFailed | タスクの開始に失敗しました。 |
TaskUpdated | タスクは正常に更新されました。 |
TaskUpdateFailed | タスクの更新に失敗しました。 |
RecordStart | 録画が開始されました。 |
RecordFailed | 例外からの回復に失敗し、タイムアウトしました。 |
RecordFileUploaded | 録画ファイルがアップロードされました。 |
その他の情報 (payload)
パラメーター | タイプ | 説明 |
eventTs | integer | イベントが発生した時間。これはミリ秒単位の UNIX タイムスタンプです。 例: 1744774345595。 |
taskStatus | string | タスクステータス。詳細については、「タスクステータス」の表をご参照ください。 説明 このパラメーターは、eventType が RecordFileUploaded の場合は返されません。 |
errorCode | string | エラーコード。詳細については、「エラー」の表をご参照ください。 |
errorMessage | string | エラーメッセージ。詳細については、「エラー」の表をご参照ください。 |
recordFileList | FileList | 録画ファイルのリスト。パラメーターの詳細については、「FileList」の表をご参照ください。 説明 このパラメーターは、eventType が TaskRunning、TaskStopping、または TaskStopped の場合にのみ返されます。 |
recordFile | RecordFile | 録画ファイル情報。このパラメーターは、eventType が RecordFileUploaded の場合にのみ返されます。パラメーターの詳細については、「RecordFile」の表をご参照ください。 |
format | string | 録画ファイルのフォーマット。このパラメーターは、eventType が RecordFileUploaded の場合にのみ返されます。このコールバックのファイル形式を示します。有効な値:
|
streamInfo | string | このパラメーターは、eventType が RecordStart の場合にのみ返されます。サブスクライブしたどのストリームの録画が開始されたかを示します。
|
録画ファイルリスト (FileList)
パラメーター | タイプ | 説明 |
mp3FileList | array<string> | MP3 録画ファイル名の配列。 |
mp4FileList | array<string> | MP4 録画ファイル名の配列。 |
hlsFileList | array<string> | HLS 録画ファイル名の配列。 |
vodMediaList | array<VodFileInfo> | VOD メディアリソースの配列。このパラメーターは、VOD に録画する場合にのみ空になりません。VOD に録画する場合、これはサブスクライブされた各ストリームの録画ファイルのコレクションです。各項目はサブスクライブされたストリームに対応します。VodFileInfo パラメーターの詳細については、「VodFileInfo」の表をご参照ください。 |
VOD ファイル情報 (VodFileInfo)
パラメーター | タイプ | 説明 |
stream | string | サブスクライブされたストリーム。
|
mediaIds | array<string> | 録画中に生成されたメディアリソース ID の配列。 |
mergedIds | array<string> | 録画終了後に自動的にマージされるメディアリソース ID の配列。このパラメーターは、VOD に録画し、自動マージを有効にし、複数のメディアリソースを録画した場合にのみ空になりません。 |
録画ファイル情報 (RecordFile)
パラメーター | タイプ | 説明 |
sliceFile | string | このフォーマットが NotifyFileUploadedFormat パラメーターで指定されている場合にのみ返されます。 |
hlsFile | string | このフォーマットが NotifyFileUploadedFormat パラメーターで指定されている場合にのみ返されます。 |
mp4File | string | このフォーマットが NotifyFileUploadedFormat パラメーターで指定されている場合にのみ返されます。 |
mp3File | string | このフォーマットが NotifyFileUploadedFormat パラメーターで指定されている場合にのみ返されます。 |
タスクステータス (taskStatus)
タスクステータスは、更新の成功または失敗の影響を受けません。したがって、`taskStatus` フィールドにはこれらのステータスは含まれません。
ステータス | 説明 |
CREATED | タスクが作成されたときに返されます。 |
STARTING | タスクが開始中のときに返されます。 |
RUNNING | タスクが実行中のときに返されます。 |
RECOVERING | タスクが例外から回復中のときに返されます。 |
STOPPING | タスクが停止中のときに返されます。 |
STOPPED | タスクが停止した後に返されます。 |
FAILED | タスクの開始に失敗した後に返されます。 |
エラー
これらのパラメーターには、`eventType` が `TaskRecovering`、`TaskStartFailed`、または `TaskUpdateFailed` の場合にのみ値が含まれます。他のすべてのイベントタイプでは、これらのパラメーターは空です。
イベントタイプ (eventType) | エラーコード (errorCode) | エラーメッセージ (errorMessage) | 説明 |
タスクの開始に失敗しました (TaskStartFailed) | StartTaskError | Channel already closed | チャネルは閉じられています。 |
Start task error | その他の理由。 | ||
異常状態からの回復 (TaskRecovering) | RunTaskError | The rms task failed | 混合ストリームモジュールが異常に実行されています。 |
The record task failed | 録画モジュールが異常に実行されています。 | ||
タスクの更新に失敗しました。(TaskUpdateFailed) | UpdateTaskError | Update task error | タスクの更新に失敗しました。 |
RecordFailed | RunTaskError | Recovering status timeout | 例外からの回復がタイムアウトしました。 |
コールバックの例
TaskStopped イベント:
{
"appId": "mytestappid",
"callbackTs": 1755504873034,
"channelId": "room1047",
"eventType": "TaskStopped",
"payload": "{\"eventTs\":1755504873014,\"taskStatus\":\"STOPPED\",\"errorCode\":\"\",\"errorMessage\":\"\",\"streamInfo\":\"\",\"recordFileList\":{\"mp3FileList\":[],\"mp4FileList\":[\"mp4/fe60a6e3-cecb-3fae-a8cf-3d2391f507a5/mytestappid_room1047_2025-08-18-15:59:16.mp4\",\"mp4/fe60a6e3-cecb-3fae-a8cf-3d2391f507a5/mytestappid_room1047_2025-08-18-16:02:16.mp4\"],\"hlsFileList\":[\"hls/fe60a6e3-cecb-3fae-a8cf-3d2391f507a5/mytestappid_room1047_2025-08-18-15:59:16.m3u8\",\"hls/fe60a6e3-cecb-3fae-a8cf-3d2391f507a5/mytestappid_room1047_2025-08-18-16:02:16.m3u8\"],\"vodMediaList\":[]}}",
"taskId": "fe60a6e3-cecb-3fae-a8cf-3d2391f507a5"
}RecordFileUploaded イベント:
{
"appId":"mytestappid",
"callbackTs":1764301584289,
"channelId":"room1406",
"eventType":"RecordFileUploaded",
"payload":"{\"eventTs\":1764301584265,\"errorCode\":\"\",\"errorMessage\":\"\",\"streamInfo\":\"Single::userA::AV::C\",\"format\":\"MP4\",\"recordFile\":{\"sliceFile\":\"\",\"hlsFile\":\"\",\"mp3File\":\"\",\"mp4File\":\"mp4/07c2e845-630d-36a1-b2d1-3b546efdea90/mytestappid_room1406_userA_2025-11-28-11:46:03.mp4\"}}",
"taskId":"07c2e845-630d-36a1-b2d1-3b546efdea90"}