FTP バッチ プロビジョニングを使用して、Brightcove に動画をアップロードする際に、アップロード完了後に通知を受け取ることができます。それには、電子メールによる通知や、指定された URL にアップロード通知を送信するコールバック機能を使用します。
コールバック機能を使用するには、FTP バッチ アップロードのマニフェスト ファイルに <callback> 要素を含めます。<callback> 要素は、上位の publisher-upload-manifest 要素の子です。その唯一の属性が entity-url であり、その値は、アップロード状態を送信したい URL になります。
<callback entity-url="http://example.com/batch-callback.php"/>
デフォルトでは、電子メール通知はアップロード処理が失敗した場合にのみ送信されます。ただし、マニフェストの publisher-upload-manifest タグ内で report-success="true" 属性を設定すると、アップロード処理が成功した場合にも送信されます。
フォームを提出して、マニフェストで指定された URL に送信する場合と同様に、タグがマニフェストで実行されるたびに、Brightcove システムは POST 要求を開始します。以下のキー/値(書式データ)が要求で送信されます。
| キー | 値 |
|---|---|
| referenceId | マニフェストで提供される参照 ID |
| id | データベース内の動画、プレイリスト、またはアセットの ID |
| entity | VIDEO、LINEUP(プレイリスト)、または ASSET |
| action | CREATE、DELETE、または UPDATE |
| status | FAILED または SUCCESS |
| error | エラー メッセージ |
データが到着すると、これらの値に何かを行う必要があります。任意のサーバー サイド言語が、これらの要求のリスナとして機能できます。
最も一般的なアクションは、ログ ファイルにこれらの値を追加する、データベースにこれらの値を列として挿入する、または、同じ情報を含む電子メールを送信することです。この例では、PHP スクリプトを使用して、これらの値をリスンし、ログ ファイルに書き込みます。この PHP スクリプトを含む zip ファイルをダウンロードすることができます。
その実際の動作を示すため、コードの一部を挙げます。
<?php
// 最初に「referenceId」が POST 要求に含まれるかどうかをチェックします。
// 含まれる場合、$referenceId 変数にその値を割り当てます。
// 含まれない場合、$referenceId に null 値を割り当てます。
if(isset($_POST["referenceId"])) {
$referenceId = $_POST["referenceId"];
} else {
$referenceId = null;
}
/* Repeat the same code for each key in the request */
// 次に、現在の日時および要求に含まれる各キーの値を含む文字列を構築します。
// CSV ファイルとして簡単にインポートできるように、
// これらの値はコンマで区切ります。
//
$logEntry = date("m-d-y H:i:s") . ": " .
$referenceId . "," .
$id . "," .
$entity . "," .
$action . "," .
$status . "," .
$error .
"\n";
// 最後に PHP にどこでログ ファイルが見つけられるかを伝えて、
// そして PHP にログ ファイルを開けるように指示して先ほど作成
// したストリングをログ ファイルに追加するように伝えてください。
$logFileLocation = "log.txt";
$fileHandle = fopen($logFileLocation, 'a') or die("-1");
fwrite($fileHandle, $logEntry);
fclose($fileHandle);
?>
次のようなログ ファイルができます。
06-04-11 17:42:34: 123456789ref,123456789,VIDEO,CREATE,FAILED, (continued) This failed because it was just a test 06-04-11 17:42:35: 123456790ref,123456790,VIDEO,CREATE,FAILED, (continued) This failed because it was just a test 06-04-11 17:42:36: 123456791ref,123456791,VIDEO,CREATE,FAILED, (continued) This failed because it was just a test 06-04-11 17:42:37: 123456792ref,123456792,VIDEO,UPDATE,SUCCESS, 06-04-11 17:42:40: 123456793ref,123456793,VIDEO,UPDATE,SUCCESS, 06-04-11 17:42:41: 123456794ref,123456794,VIDEO,DELETE,SUCCESS, 06-04-11 17:42:42: 123456795ref,123456795,VIDEO,DELETE,SUCCESS,