Content Moderation は、コンテンツ検出と人工レビューの結果を含む非同期通知を送信します。これらの結果を使用または統合するには、コールバック通知を設定する必要があります。このトピックでは、Content Moderation API のコールバック通知を設定する方法について説明します。
背景情報
Content Moderation API のコールバック通知は、スキャン結果のコールバックとレビュー結果のコールバックに分類されます。
スキャン結果のコールバック: Content Moderation が検出リクエストを完了すると、サーバーは POST リクエストで設定済みの HTTP Webhook アドレスに検出結果を送信します。
レビュー結果のコールバック: 人工レビューまたはフィードバック API 操作の呼び出しによって検出結果を変更すると、サーバーは設定済みの HTTP Webhook アドレスに POST リクエストでレビュー結果を送信します。詳細については、「人工レビュー」をご参照ください。
概念
コールバック通知を設定する前に、次の表で説明する概念を理解しておく必要があります。
用語 | 説明 |
Webhook アドレス | Webhook アドレスは、Content Moderation コンソールで設定するサーバーアドレスです。これは通常、独自のビジネスサーバーのパブリックアドレスです。Webhook アドレスは、次の要件を満たす必要があります:
|
Seed | Seed 値は、設定された HTTP Webhook アドレスに送信されたリクエストが Content Moderation サーバーから送信されたものであることを確認するために使用されます。 |
コールバックの試行 | サーバーが Content Moderation によってプッシュされたコールバックメッセージを受信すると、HTTP ステータスコードを返します。ステータスコード 200 は成功を示します。その他のステータスコードは失敗を示します。配信に失敗した場合、Content Moderation サーバーはコールバックメッセージが正常に受信されるまで再試行します。Content Moderation は最大 3 回再試行します。 |
コールバックデータ | コールバックデータは、Content Moderation サーバーが設定した Webhook アドレスに返すコンテンツです。コールバックデータ構造の説明については、「コールバック通知フォームデータ」をご参照ください。 |
表 1. コールバック通知フォームデータ
名前 | 型 | 説明 |
checksum | String | チェックサムは、 説明 改ざん防止のために、プッシュされた結果を受信したときに同じアルゴリズムを使用して文字列を生成し、checksum と照合して検証できます。 |
content | String | 文字列として保存された JSON オブジェクト。JSON オブジェクトに解析して反転させる必要があります。JSON オブジェクトに解析された後の content の構造については、このトピックの後半にある「content の説明」をご参照ください。 |
スキャン結果のコールバック通知
Content Moderation のすべての非同期検出 API 操作は、非同期画像スキャンや非同期動画スキャンなど、スキャン結果のコールバックをサポートしています。非同期呼び出しを行う際に、Content Moderation からスキャン結果を受信するには、リクエストに callback (Webhook アドレス) と seed (チェックサム文字列) パラメーターを含める必要があります。
非同期呼び出し中にスキャン結果のコールバックを使用しない場合、定期的なポーリングによってのみ非同期検出結果を取得できます。
手順
スキャン結果を受信するための HTTP Webhook アドレスと seed パラメーターを準備します。
非同期の Content Moderation API 操作を呼び出すときに、対応する callback および seed リクエストパラメーターを渡します。詳細については、API 操作ドキュメントのパラメーターの説明をご参照ください。
人工レビューのコールバック通知
人工レビュー API 操作は、検出結果をリアルタイムで返しません。代わりに、システムはコールバックを使用して呼び出し元に通知します。
機械支援による人的レビュー
Alibaba Cloud の人工レビューサービスを機械支援モデレーションサービスと組み合わせて使用する場合、人工レビューモジュールからコールバックを受信するには、コンソールで通知を設定する必要があります。次の手順に従ってください。
Content Moderation コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
[機械監査] ページで、[通知] タブをクリックし、[通知の追加] をクリックします。
[通知の追加] ダイアログボックスで、[プラン名] と [Webhook アドレス] を入力します。[暗号化アルゴリズム]、[通知タイプ]、[レビュー結果] を選択し、[OK] をクリックします。
設定を保存すると、システムは自動的に seed を生成します。seed 値は、Webhook アドレスで受信したリクエストが Alibaba Cloud からのものであることを確認するために使用されます。自動生成された seed を保存する必要があります。
重要機械支援モデレーションのコールバック通知サービスをすでに設定している場合は、既存の設定を再利用するか、必要に応じて新しい設定を作成できます。
システムはすべてのレビュー結果のコールバックをサポートしています。ビジネスシナリオに応じて、一部のレビュー結果のコールバックのみを受信するように選択することもできます。
[通知タイプ] には、[Alibaba Cloud 人工レビュー結果] を選択します。
以下の暗号化アルゴリズムメソッドが利用可能です:
SHA256: HMAC-SHA256 暗号化アルゴリズムを使用します。
SM3: SM3 暗号化アルゴリズムを使用し、小文字の英数字からなる 16 進数文字列を返します。
たとえば、[abc] を SM3 で暗号化すると、[66c7f0f462eeedd9d1f2d46bdc10e4e24167c4875cf2f7a2297da02b8f4ba8e0] が返されます。
[ビジネスシナリオ管理] タブで、ターゲットのビジネスシナリオを見つけ、[アクション] 列の [通知の関連付け] をクリックし、設定した [コールバック通知プラン] を関連付けます。
content の説明
コールバック通知を有効にすると、Content Moderation は設定に基づいてコールバック通知を送信します。コールバック通知には、content フィールドにフォームデータが含まれています。次の表に、content フィールドの構造を示します。
表 2. content フィールドの構造
名前 | 型 | 必須 | 説明 |
scanResult | JSONObject | いいえ | スキャン結果。構造は、画像や動画など、検出されたオブジェクトによって異なります。 |
auditResult | JSONObject | いいえ | 人工レビューの結果。このフィールドは、人工レビュー操作が発生した場合にのみ存在します。詳細については、「auditResult」をご参照ください。 説明 スキャン結果のみがプッシュされる場合、このフィールドは含まれません。 |
humanAuditResult | JSONObject | いいえ | Alibaba Cloud からの人工レビュー結果。Alibaba Cloud の人工レビューサービスを購入した場合、レビュー結果はこのフィールドに含まれます。詳細については、「humanAuditResult」をご参照ください。 |
表 3. auditResult
名前 | 型 | 必須 | 説明 |
suggestion | String | はい | 人工レビューの結果。有効な値:
|
labels | JSONArray | いいえ | 人工レビュー中に設定されたラベル。次の値の 1 つ以上を含めることができます:
|
表 4. humanAuditResult
名前 | 型 | 必須 | 説明 |
suggestion | String | はい | Alibaba Cloud の人工レビューの結果。有効な値:
|
taskId | String | はい | 検出タスクの ID。タスク ID を使用して、レビュー結果を対応するコンテンツに関連付けることができます。 |
dataId | String | はい | 検出されたコンテンツの ID。 |
labels | JSONArray | いいえ | 人工レビューからのラベル結果。複数の値を持つことができます。 説明 このパラメーターはデフォルトでは返されません。このフィールドを設定すると追加料金が発生します。詳細については、ビジネス担当者にお問い合わせください。 |
content フィールドの例
{
"scanResult": {
"code": 200,
"msg": "OK",
"taskId": "fdd25f95-4892-4d6b-aca9-7939bc6e9baa-1486198766695",
"url": "http://1.jpg",
"results": [
{
"rate": 100,
"scene": "porn",
"suggestion": "block",
"label": "porn"
}
]
},
"auditResult": {
"suggestion": "block",
"labels": [
"porn",
"ad",
"terrorism"
]
},
"humanAuditResult": {
"suggestion": "pass",
"dataId": "yyyy",
"labels": [
"porn",
"vulgar"
],
"taskId": "xxxxxx"
}
}