# Callback概要

### 1. 概要 <a href="#platformcallback-gai-yao" id="platformcallback-gai-yao"></a>

Kollusサービスの利用中、進行状況はCMSを通じて直接確認することができます。しかし、便利さのために、各進行状況ごとに事前に設定された顧客のWeb URLに進行状況を送信しています。

これをKollus Callbackサービスと呼びます。また、顧客のWeb URLへのCallback送信が失敗した場合には再試行します。

各再試行ごとに内部的にログを記録し、すべての再試行が失敗した場合には、問題のあったCallback送信の原因を特定し、正常にCallbackを送信できるようにします。

このドキュメントは、Callback送信および再試行に関するKollus Callback送信サーバーの処理過程について説明します。

### 2. Callback 設定 <a href="#platformcallbackcallback-she-ding" id="platformcallbackcallback-she-ding"></a>

Callbackの設定は、チャンネルに関連する部分の設定については、管理者権限を持つユーザーがそのチャンネルの運営ポリシー設定画面で指定することができます。

その他のCallbackについては、Kollusサービス担当者に設定を依頼する必要があります。

#### チャンネル Callback 設定 (チャンネルにコンテンツ登録、削除結果の転送) <a href="#platformcallback-channerucallbackchannerunikontentsuno" id="platformcallback-channerucallbackchannerunikontentsuno"></a>

* 配信チャンネルに移動します。

<figure><img src="https://1521757062-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEecKUA6wx5AYrn8vpxDR%2Fuploads%2FzWlXKdb2niAbVdDi9SSV%2Fcallback_1.jpg?alt=media&#x26;token=35e39dee-6229-43a0-9750-b7dd4acf42fe" alt=""><figcaption></figcaption></figure>

* チャンネル編集ページに移動します。
* 運用ポリシーに移動します。
* Call-back使用を「利用する」にします。

<figure><img src="https://1521757062-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEecKUA6wx5AYrn8vpxDR%2Fuploads%2F5hSMfbHgF3bpjDE0RdTQ%2Fcallback_2.jpg?alt=media&#x26;token=d3b570b6-0881-4ac8-8912-133418c87e5e" alt=""><figcaption></figcaption></figure>

* 必要なChannel Callbackを登録します。

#### その他Callbackの設定は (Upload callback, Transcoding Callback, Contents update callback, Drop-off callback)　Kollus サービス担当にお問い合わせください。 <a href="#platformcallback-sonocallbacknouploadcallbacktranscodingcallbackcontentsupdatecallbackdrop-offcallba" id="platformcallback-sonocallbacknouploadcallbacktranscodingcallbackcontentsupdatecallbackdrop-offcallba"></a>

### 3. Callback 転送処理 <a href="#platformcallbackcallback-zhuan-song-chu-li" id="platformcallbackcallback-zhuan-song-chu-li"></a>

#### 転送方法 <a href="#platformcallback-zhuan-song-fang-fa" id="platformcallback-zhuan-song-fang-fa"></a>

1. 全てのCallbackはお客様が設定したWeb URLの80番ポートにPOST方式を利用して転送します。
2. 全てのCallbackは転送時点になると、即時転送することを原則とします。**(Callbackを処理するサーバーの負荷状況により遅延される可能性があります。)**
3. 顧客側のWebサーバーがCallbackを受け取った場合、**200 HTTP Status Code**でレスポンスしなければなりません。レスポンス内容の**HTTP body部分は確認しません。**(200以外のコードでレスポンスした場合には転送失敗と見なし、指定時間後に転送をリトライします。)

#### 注意事項 <a href="#platformcallback-zhu-yi-shi-xiang" id="platformcallback-zhu-yi-shi-xiang"></a>

顧客側のサーバーはKollusのCallback転送リクエストに対して2秒以内にアクセスし、接続から3秒以内にレスポンスを返さなければなりません。\
時間内にアクセスがないまたは応答がなかった場合にはKollus Callback転送サーバーは転送失敗と見なして指定された時間後にリトライします。(**Connect Time-out 2秒, Response Time-out 3秒**)

#### Callback転送プロセス <a href="#platformcallback-callbackpurosesu" id="platformcallback-callbackpurosesu"></a>

<figure><img src="https://1521757062-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEecKUA6wx5AYrn8vpxDR%2Fuploads%2F61y8Rpb0g25oVCVObN9k%2Fimage.webp?alt=media&#x26;token=219abed0-e2f2-4672-bfcc-0504965e8fbe" alt=""><figcaption></figcaption></figure>

### 4. Callback 転送リトライ処理 <a href="#platformcallback-callbackritorai" id="platformcallback-callbackritorai"></a>

#### 転送方法 <a href="#platformcallback-zhuan-song-fang-fa-.1" id="platformcallback-zhuan-song-fang-fa-.1"></a>

1. 基本的な内容は「Callback転送処理」項目と同一です。
2. リトライは5分間隔で最大3回まで行われます。

#### 注意事項 <a href="#platformcallback-zhu-yi-shi-xiang-.1" id="platformcallback-zhu-yi-shi-xiang-.1"></a>

顧客のサーバーがKollusのCallbackを正常に処理したと見なして200 HTTPステータスコードで応答した場合でも、接続/応答タイムアウトを超えてKollus Callback送信サーバーがリクエストを失敗として処理した場合、Callbackリクエストが再試行されることがあります。つまり、タイムアウトによる同じCallbackがリクエストされる可能性があるため、Callback URLを開発する際にはその点に注意する必要があります。

#### Callback転送 リトライプロセス <a href="#platformcallback-callbackritoraipurosesu" id="platformcallback-callbackritoraipurosesu"></a>

<figure><img src="https://1521757062-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEecKUA6wx5AYrn8vpxDR%2Fuploads%2F8rPFXsR1vbSG4ERTUK3e%2FCallback-retry-scenario.jpg?alt=media&#x26;token=ecc39e2b-f064-4a9d-bc57-ebcd642cc6d3" alt=""><figcaption></figcaption></figure>

### 5. Callback 転送パラメータ <a href="#platformcallback-callbackparamta" id="platformcallback-callbackparamta"></a>

#### アップロード完了 Callback <a href="#platformcallback-appurdocallback" id="platformcallback-appurdocallback"></a>

<table><thead><tr><th width="231">POST</th><th width="122">Data type</th><th>備考</th></tr></thead><tbody><tr><td>content_provider_key</td><td>string</td><td>顧客のサービスアカウントキー</td></tr><tr><td>full_filename</td><td>string</td><td>アップロードされたファイル名(フォルダ含む)</td></tr><tr><td>filename</td><td>string</td><td>アップロードされたファイル名</td></tr><tr><td>upload_file_key</td><td>string</td><td>アップロードファイルキー</td></tr></tbody></table>

#### トランスコーディング完了 Callback <a href="#platformcallback-toransukdingucallback" id="platformcallback-toransukdingucallback"></a>

<table><thead><tr><th width="248">POST</th><th width="143">Data type</th><th>備考</th></tr></thead><tbody><tr><td>content_provider_key</td><td>string</td><td>顧客のサービスアカウントキー</td></tr><tr><td>filename</td><td>string</td><td>アップロードされたファイル名(フォルダ含む)</td></tr><tr><td>upload_file_key</td><td>string</td><td>アップロードファイルキー</td></tr><tr><td>transcoding_result</td><td>string</td><td>トランスコーディング結果 (success, fail)</td></tr></tbody></table>

#### チャンネルにコンテンツ登録完了 Callback <a href="#platformcallback-channerunikontentsucallback" id="platformcallback-channerunikontentsucallback"></a>

<table><thead><tr><th width="247">POST</th><th width="139.33333333333331">Data type</th><th>備考</th></tr></thead><tbody><tr><td>content_provider_key</td><td>string</td><td>顧客のサービスアカウントキー</td></tr><tr><td>full_filename</td><td>string</td><td>アップロードされたファイル名(フォルダ含む)</td></tr><tr><td>filename</td><td>string</td><td>アップロードされたファイル名</td></tr><tr><td>upload_file_key</td><td>string</td><td>アップロードファイルキー</td></tr><tr><td>media_content_key</td><td>string</td><td>メディアコンテンツキー (配信チャンネルに登録されたコンテンツを識別するためのユニークキー)</td></tr><tr><td>channel_key</td><td>string</td><td>チャンネルキー(コンテンツが登録されたチャンネルを識別するキー)</td></tr><tr><td>channel_name</td><td>string</td><td>コンテンツが登録されたチャンネル名</td></tr><tr><td>profile_key</td><td>string</td><td>コンテンツがトランスコーディングされたプロファイル名(複数の場合 ‘|’で区分)</td></tr><tr><td>update_type</td><td>string</td><td>更新種類: channel_join (チャンネルにコンテンツ登録)</td></tr></tbody></table>

#### チャンネルのコンテンツ削除完了 Callback <a href="#platformcallback-channerunokontentsucallback" id="platformcallback-channerunokontentsucallback"></a>

<table><thead><tr><th width="206">POST</th><th width="120.33333333333331">Data type</th><th>備考</th></tr></thead><tbody><tr><td>content_provider_key</td><td>string</td><td>顧客のサービスアカウントキー</td></tr><tr><td>full_filename</td><td>string</td><td>アップロードされたファイル名(フォルダ含む)</td></tr><tr><td>filename</td><td>string</td><td>アップロードされたファイル名</td></tr><tr><td>upload_file_key</td><td>string</td><td>アップロードファイルキー</td></tr><tr><td>media_content_key</td><td>string</td><td>メディアコンテンツキー (配信チャンネルに登録されたコンテンツを識別するためのユニークキー)</td></tr><tr><td>channel_key</td><td>string</td><td>チャンネルキー(コンテンツが登録されたチャンネルを識別するキー)</td></tr><tr><td>channel_name</td><td>string</td><td>コンテンツが登録されたチャンネル名</td></tr><tr><td>update_type</td><td>string</td><td>更新種類: channel_leave (チャンネルからコンテンツ削除)</td></tr></tbody></table>

#### コンテンツ更新 Callback <a href="#platformcallback-kontentsucallback" id="platformcallback-kontentsucallback"></a>

<table><thead><tr><th width="241">POST</th><th width="115.33333333333331">Data type</th><th>備考</th></tr></thead><tbody><tr><td>content_provider_key</td><td>string</td><td>顧客のサービスアカウントキー</td></tr><tr><td>full_filename</td><td>string</td><td>アップロードされたファイル名(フォルダ含む)</td></tr><tr><td>filename</td><td>string</td><td>アップロードされたファイル名</td></tr><tr><td>upload_file_key</td><td>string</td><td>アップロードファイルキー</td></tr><tr><td>update_type</td><td>string</td><td>更新種類: 変更された結果が必要な場合にはAPIを呼び出して該当コンテンツの情報を確認してください。<br>API: /media/library/media_content/{upload_file_key}</td></tr><tr><td></td><td></td><td>content_title: タイトル変更<br>content_tag: タグ変更<br>content_category: カテゴリ変更<br>content_enable: コンテンツを有効化<br>content_disable: コンテンツを無効化<br>profile_add: エンコーディングプロファイルを追加<br>profile_delete: エンコーディングプロファイルを削除<br>origin_delete: 原本ファイルを削除<br>content_subtitle: 字幕をアップロード<br>content_poster: ポスターをアップロード<br>content_detail: コンテンツ詳細情報URLを変更<br>content_delete: コンテンツを削除</td></tr></tbody></table>
