개요
Kollus에서 제공하는 Callback 정보는 플랫폼에서 전달하는 내용과 플레이어에서 전달하는 내용으로 구분될 수 있습니다. 플레이어에서 전달하는 정보는 사용자가 컨텐츠를 이용한 정보를 활용할 수 있도록 관련 정보를 지정된 Url에 전달하는 기능입니다. 진도율을 전송할때 응답을 확인하지 않습니다. 단, 네트워크 오류인 경우 해당 데이터를 보관후 재 전송 가능할때 재 전송됩니다. 해당 기능을 사용하기 위해서는 Kollus에 접속하여 관련 정보를 설정하시면 Video-gateway를 통해 관련 내용이 전달되어 재생과 관련된 정보를 전달합니다.
Callback process
재생 정보를 전달 받는 흐름을 설명합니다.
- Kollus 설정에서 관련 정보 요청을 설정합니다.
- Kollus는 컨텐츠 배포 단위인 채널 마다 다양한 옵션을 지정할 수 있습니다.
- 배포하는 채널마다 지정된 데이터 수집이 가능합니다.
- 동영상 재생을 위해 Video-gateway를 호출하면 컨텐츠 재생을 위한 다양한 정보를 플레이어 전달하게 되며, 이때 재생과 관련된 정보를 전달할 설정을 함께 전달합니다.
- 재생 정보를 활용하기 위해 설정한 Url에 관련 정보를 전달합니다.
- Kollus는 컨텐츠 재생과 관련된 기본 정보를 수집하기 위해 관련 정보를 수집합니다.
- 사용자 정보를 일체 포함되지 않습니다.
- Mac Address, IP Address 개인의 위치 정보와 관련된 정보를 수집 되지 않습니다.
Customer Requirement
Kollus에서 전달하는 재생 관련 정보는 고객의 다양한 요청을 수렴하여 개발되었습니다.
概要
Kollusサービスで提供しているCallbackは、Platform CallbackとPlayer Callbackで分けていおり、ユーザーのコンテンツ利用情報を確認したい際にはPlayer Callbackが必要です。
Playerから取得された内容を指定したURLに転送する機能をLMS Callbackといいます。Playerは情報を一方転送するだけでレスポンスの受け取ることは出来ません。
この機能を使用する場合にはKollus Live管理画面から関連情報を設定する必要があります。LMS Callback URLの設定が終わりましたらVideo gatewayから再生関連情報が指定したURLに自動で転送されます。
Callback process
再生情報を受け取る流れを説明します。
- Kollus 側で情報リクエストを設定します。
- コンテンツ配信単位である"チャンネル"別に転送したい項目を指定することができます。
- Video-gatewayが呼出すとコンテンツ再生に必要な情報をPlayerに転送し、この段階で再生と関わる情報の転送設定(1で設定したCallback設定情報)を共に転送します。
- Playerは2.で指定された情報取得し、設定されたURL (顧客側) にを転送します。
- コンテンツ再生に関する情報を取得するため、関連情報を収集します。
- ユーザーの個人情報は収集されません。
- Mac Address, IP Address 位置情報に関する内容は収集されません。
Customer Requirement
Kollusから転送する再生関連情報は顧客の意見を反映して提供項目を決めています。
- 再生終了時点
- コンテンツの区間別の再生情報
- ユーザ情報 (ユーザが識別できるID)
- コンテンツ情報
- デバイス情報 (視聴環境)
- コンテンツ全体を按分して各ブロック別の情報を収集
Plugin option
- {MAC}
- Mac Address
- 사용자 개인정보에 해당하여 수집을 권장하지 않습니다.
- 고급 사용자의 경우 Mac Address를 임의로 변경할 수 있으며, 모바일 플레이어의 경우 App의 등록 제한으로 인해 지원하지 않습니다.ユーザの個人情報になるため収集を推奨しません。
- ユーザの理解度によってMac Addressが任意変更できるケースがあり、Mobile Playerの場合にApp登録制限のため対応していません。
- {IP} - RemoteAddress의 이슈로 지원하지 않습니다. (서버쪽에서 확인하도록합니다.)
- 컨텐츠를 재생하는 사용자 PC의 IP Address
- 사용자 개인정보에 해당하여 수집을 권장하지 않습니다. 공유기를 사용하는 환경에서 수집 되는 IP Address는 Private 영역 IP Address 입니다. 정확한 사용자의 IP를 수집하기 위해서는 Callback을 받는 Web 서버에서 Remote_Address를 확인하는 것이 정확합니다.RemoteAddressの問題のため対応していません。(サーバー側で確認してください。)
- コンテンツを再生するデバイスのIP Address
- ユーザの個人情報になるため収集を推奨しません。
- ルーターを使用する環境で収集されたIP AddressはPrivate IP Addressになります。正確なIPを集計する場合CallbackがリターンされるWebサーバー側でRemote_Addressを確認する必要があります。
- {CLIENT_USER_ID}
- 사용자의 User ID 입니다.
- MediaToken 생성시 파라미터로 입력한 사용자의 ID 정보입니다. 이때 입력된 사용자 ID는 Kollus 시스템에서 관리되지 않고 사용자를 구분하는 Unique 정보로만 사용됩니다.ユーザー(顧客サービス会員)のUser ID
- MediaTokenを生成する際にパラメータとして入力されたユーザID情報と同一です。入力されたユーザIDはKollus側に保存されません。ユーザのユニーク性を識別する用途で使用されます。
- {START_AT}
- Video-gateway를 호출한 시점의 Unixtimestamp 입니다.사용자의 컨텐츠 이용중 다수의 재생정보 전달이 발생할 수 있습니다. 동일한 요청에 같은 gatewayをリクエストした時点のUnixtimestamp
- コンテンツ再生中に複数の再生情報が転送される可能性があります。同一リクエストに同一{START_AT} 값을 갖게 되며, 같은 시간에 다수의 이용자가 발생할 경우 Unixtimestamp 이기 때문에 중복될 수 있습니다.다운로드 컨텐츠의 경우 start_at은 컨텐츠 재생시 단말의 unixtimestamp 입니다.値が付与されるため、同時間に多数の再生件数が発生する場合Unixtimestampが重複されることがあります。
- ダウンロードしたコンテンツの場合、start_atはコンテンツを再生したデバイスのunixtimestampが適用されます。
- {BLOCK_CNT}
- Kollus에서 설정한 블럭의 개수입니다.
- 재생 정보를 지정된 블럭 개수로 나누어 관리하며 정보 전달시 함께 포함시킬수 있습니다.Kollus側で設定したブロックの数
- 再生情報を指定したブロック数に分けて管理し、データを転送する際に追加することが可能です。
- {PLAY_TIME}
- 전체 재생 시간 全体再生時間 (단위単位 : 초秒)
- 배속 기능을 사용하는 경우 배속을 포함한 시간입니다. 시간 값은 누적입니다.
- 10초간 2배속으로 재생한 경우 20초로 계산됩니다.
- 모든 재생 시간을 포함한 시간입니다. (구간반복을 한 경우도 모두 포함됩니다.:累計
- 倍速が適用された場合、倍速時間も計上されます。
- 10秒間 2倍速で再生した場合、Play Timeは20秒に計算
- 全ての再生時間が計上されます。(リピート、倍速再生など全ての再生時間含まれます。)
- {PLAYTIME_PERCENT}
- DURATION에 대한 전체 재생 비율 (단위DURATION対比全体再生比率 (単位:%, 정수, 절사)컨텐츠를 두번 반복해서 본 경우 200%로 계산됩니다.定数: 小数点以下切り捨て)
- コンテンツを繰り返して2回見た場合には200%に計算されます。
- {DURATION}
- 컨텐츠 길이 コンテンツの長さ (단위単位: 초秒)
- {MEDIA_CONTENT_KEY}
- Kollus media_content_keyメディアコンテンツキー
- {ENCODING_PROFILE_KEY}
- Kollus encoding profile keyエンコーディングプロファイルキー
- {PLAY_BLOCK_JSON}
- 데이터 포멧データのフォーマット: JSON
- 블럭 재생 정보ブロックの再生情報
- {BLOCK_PLAY_1}~{BLOCK_PLAY_##{BLOCK_CNT}}
- 블럭 재생 여부
- 재생하지 않고 Skip
- 해당 블럭 재생 (0초 이상 재생하면 1로 설정됩니다.ブロックの再生有無
- 0: 再生してない (Skip)
- 1: 該当ブロックを再生(再生時間が0秒を超過すると1に設定されます。)
- {BLOCK_TIME_1} ~{BLOCK_TIME_##{BLOCK_CNT}}
- 해당 블럭을 재생한 시간입니다. (단위:초)
- 플레이어의 배속기능을 이용해 재생한 경우 재생시간은 배속을 적용하여 계산됩니다.
- 반복해서 3초의 범위를 갖는 블럭을 2회 재생한 경우 블럭의 재생시간은 6초입니다.該当ブロックを再生した時間 (単位:秒)
- Playerの倍速再生機能が動作した場合、倍速を適用した再生時間に計算されます。
- ブロック単位が3秒にした場合、ブロックが2回再生されたらブロックの再生時間は6秒に計算されます。
- {DURATION}이 が{BLOCK_CNT} 보다 작은 경우 より少ない場合、{BLOCK_TIME#}의 합은 の合計は{DURATION}을 초과합니다. (각 블럭의 재생시간이 밀리초로 나오는 경우 올림하여 1초로 계산합니다.を超過することになります。(各ブロックの再生時間がミリ秒になった場合、切り上げて1秒に計算されます。)
- {LAST_PLAY_AT}
- 마지막 재생 위치 最終再生時点 (단위単位: 초秒)
- {HOST_NAME}
- 비디오 링크 요청 도메인명Video Gatewayがリクエストされたドメイン名
- ex) catenoid.video.kr.kollus.com
- {PLAYER_ID}
- Kollus 플레이어의 고유 ID 입니다.
- 플레이어 설치시 생성된 고유 ID 입니다.
- 플래쉬 플레이어의 경우 kfp 라는 고유 문자열을 전송합니다.PlayerのユニークID
- Kollus Security Playerをインストールした際に生成されたID
- HTML5 Playerの場合kfp文字列を転送します。(ユニーク値)
- {PLAY_STATUS}
- 전용 플레이어에서만 사용가능(Flash, 공개 HTML5 사용안함Kollus Security Playerのみ対応 (HTML5 Player使用不可)
- play: 재생중再生中
- pause: 재생멈춤再生停止 (일시정지一時停止)
- stop: 플레이 창이 내려 갈 때Playerウィンドウが閉じられた際
- {RUN_TIME}
- JSON_DATA의 runtime과 같음
- {SHOW_TIME}
- JSON_DATA의 showtime과 같음
- {USERVALUE0}~{USERVALUE9}
- Video-gateway호출에 추가된 추가 정보 입니다.
- ex) LCD={USERVALUE0}&UCD={USERVALUE4}
- 영문,숫자 이외의 한글등의 문자열을 전달할 경우 웹 브라우저들의 차이점이 있기 때문에 해당 변수 전달시 UTF-8로 전달해야 합니다. (전달되는 문자열은 웹의 특성상 UrlEncode해서 전달해야 합니다.)
- {TIMEMAP_DATA}
- real_playtime 데이터를 초단위로 bitmap 방식으로 표시
- 1: 사용자가 시청한 구간(초)
- 2: 사용자가 시청하지 않은 구간(초)
- 예) 000111100 ... : 4~7초는 사용자가 시청한 구간
- {JSON_DATA}
- 데이터 포멧: JSON
- 모든 재생 정보를 포함한 데이터
{PLAY_BLOCK_JSON}
- {JSON_DATA}의 block_info 항목과 동일합니다.
- block_info Object의 하위 노드를 포함합니다.
{JSON_DATA}
user_info
- content_provider_key : 고객사 key
- client_user_id : 사용자(고객) ID
- player_id : 플레이어(player) ID
- hardware_id : 플레이어(player) hardware ID, 고객 확인용
- host_name : 비디오 링크 요청 도메인명
- device : 디바이스명
content_info
- duration : 컨텐츠 길이
- encoding_profile : 인코딩 프로파일
- media_content_key : 미디어 컨텐츠 키
- channel_key : 채널키
- real_playtime : 실제 전체 재생 시간 (단위:초)
- 배속 기능을 사용하는 경우 배속을 포함한 시간입니다.
- 10초간 2배속으로 재생한 경우 20초로 계산됩니다.
- 모든 재생 시간을 포함한 시간입니다. (구간반복을 한 경우는 제외됩니다.)
- playtime : 컨텐츠 재생 시간
- playtime_percent : duration에 대한 전체 재생 비율
- start_at : Video-gateway를 호출한 시점의 Unixtimestamp 입니다. 다운로드 컨텐츠의 경우 start_at은 컨텐츠 재생시 단말의 unixtimestamp 입니다.
- last_play_at : 마지막 재생 위치 (단위:초)
- runtime : 플레이어 실제 구동 시간(단위:초)
- showtime : 플레이어를 실제적으로 play 한 구동 시간 (단위:초)
block_info
block_count : 구간 횟수
blocks: 마일스톤 (재생시간 단위:초)
b0 : 블럭 재생여부 (0:재생하지 않음, 1:해당블럭 재생)
b1 : 0 ~ (int)
b2 : block_period 만큼 반복됩니다.
...
t0 : 블럭 재생시간 (단위:초)
t1 : 0 ~ (int)
t2 : block_period 만큼 반복됩니다.
...
p0 : 블럭 재생 비율 (단위:퍼센트%)
p1 : 0~ (int) , 블럭 재생을 반복하는 경우 100이상으로 표시됩니다.
p2 : block_period 만큼 반복됩니다.
sessions : 사용자 블럭 재생을 시간별로 관리하는 항목 (배열) 세션 데이터는 이전 데이터를 모두 누적으로 전송합니다.
- block : 블럭 인덱스 (0부터 시작)
- start_time : 해당 블럭을 시작한 시간 (unixtimestamp-localtime)
- play_time : 해당 블럭 재생 시간
uservalues : 사용자 정의 변수, 각 변수의 전체 합은 1KB를 넘지 않도록 해야 합니다.
- uservalue0
- uservalue1
- ....
- uservalue9
Support options
플레이어별 지원 옵션을 확인할 수 있습니다. {MAC}, {IP}의 경우 개인정보에 해당하는 요소로 필요한 경우 별도 협의해 주십시오.
Option | FlashPlayer | KollusPlayer(PC) | KollusPlayer(Monlie) |
---|---|---|---|
{MAC} | X | X | X |
{IP} | X | X | X |
{CLIENT_USER_ID} | O | O | O |
{START_AT} | O | O | O |
{BLOCK_CNT} | O | O | O |
{PLAY_TIME} | O | O | O |
{PLAYTIME_PERCENT} | O | O | O |
{DURATION} | O | O | O |
{MEDIA_CONTENT_KEY} | O | O | O |
{ENCODING_PROFILE_KEY} | O | O | O |
{PLAY_BLOCK_JSON} | O | O | O |
{BLOCK_PLAY_1} ~ | O | O | O |
{BLOCK_TIME_1} ~ | O | O | O |
{LAST_PLAY_AT} | O | O | O |
{HOST_NAME} | O | O | O |
{PLAYER_ID} | X(kfp) | O | O |
{PLAYLIST_SKIP} | X | O | O |
{USERVALUE0} ~ | O | O | O |
{JSON_DATA} | O | O | O |
Settings
Callback에 대한 설정은 채널에서 할 수 있습니다. Callback이 필요한 채널 마다 설정해야 합니다.
- Callback URLs: 캐리지 리턴으로 각각 치환자를 포함한 URL을 등록합니다.
- 재생정보를 다수의 시스템에서 전달 받을 수 있도록 캐리지리턴(\n)으로 구분된 다수의 callback_url 을 등록할 수 있습니다.
- Kollus 플랫폼의 필요에 따라 URL 설정 수를 제한할 수 있습니다.
- Format: [block_count]:[period]:[enable_sessions]:[callback_url]
- 구분자 : (콜론)
- block_count
- 컨텐츠 재생 구간을 나누는 블럭의 수 입니다. 10으로 설정하면 컨텐츠의 길이가 300초의 경우 각 블럭은 30초로 구성됩니다.
- peroid
- 데이터 전송 주기
- Callback이 전송되는 주기로 지정된 period(단위:초) 마다 호출되고 프로그램(플레이어)이 종료될 때 추가로 호출 됩니다. 단, 플래시 플레이어의 경우는 플레이어 종료시 호출되지 않습니다.
- 플레이를 일시정시 또는 정지했을 때 추가로 호출 됩니다.
- 단위 :초
- enable_blocks
- 1 이면 block_info 항목에 blocks 정보를 포함 시킵니다.
- 0 이면 block_info 항목에 blocks 정보는 없습니다.
- enable_sessions
- 1 이면 block_info 항목에 sessions 정보를 포함 시킵니다.
- 0 이면 block_info 항목에 sessions 정보는 없습니다.
- callback_url
- Callback Url 입니다. 컨텐츠를 재생하는 사용자 환경에서 전송하기 때문에 방화벽 환경을 고려하여 http, 80포트 사용을 권장합니다.
Callback URLs
Code Block | ||||
---|---|---|---|---|
| ||||
10:30:1:0:http://domain.com/check.asp?ip={IP}&id={CLIENT_USER_ID}&start={START_AT}&lms={ PLAY_BLOCK_JSON}&uservalue0={USERVALUE0} 20:180:0:1:http://another_domain.com/anohter_check.php?ip={IP}&id={CLIENT_USER_ID}&start={ START_AT}&lms={JSON_DATA}&uservalue0={USERVALUE0} |
Plugin options
재생 정보를 전달하기 위한 옵션은 JSON 형태의 Array로 전달됩니다.
- progress_plugin (array)
- http://domain.com/check.asp?block_period=10&ip={IP}&id={CLIENT_USER_ID}&start={START_AT}&json_data={JSON_DATA}&uservalue0={USERVALUE0}
- http://another_domain.com/anohter_check.php?block_period=20&ip={IP}&id={CLIENT_USER_ID}&start={START_AT}&lms={PLAY_BLOCK_JSON}&uservalue0={USERVALUE0}
Callback data sample
Code Block | ||||
---|---|---|---|---|
| ||||
● URL: http://lms.servicedomain.com/lms/register ● Method: POST ● Params: ● ID={CLIENT_USER_ID} ● MAC={MAC} ● LRN={USERVALUE0} ● LHF={USERVALUE1} ● IP={IP} ● LCD={USERVALUE2} ● TM={START_AT} ● PT={PLAY_TIME} ● ET={LAST_PLAT_AT} ● B1={BLOCK_PLAY_1} ● T1={BLOCK_TIME_1} ● ... ● SKIP={PLAYLIST_SKIP} ● http://lms.servicedomain.com/lms/register?ID=pobi&MAC=123456789ABCDEF&LRN= 123456789ABCDEF&LHF=1&IP=192.168.0.118&LCD=L123&UCD=U123&TM=12345678 9&PT=123456789&E T=123456789&SKIP=0&B1=1&B2=1&B3=1&B4=1&B5=1&B6=1&B7 =1&B8=1&B9=1&B10=1&T 1=123456789&T2=123456789&T3=123456789&T4=12345678 9&T5=123456789&T6=123456789&T7=123456789&T8=123456789&T9=123456789&T10 =123456789 |
Etc.
블럭개수 제한 (Limit the number of blocks)
- 최대 100을 넘을 수 없습니다. (range: 1~100)
- 100을 넘는 데이터가 입력되면 최대값 100으로 처리 됩니다.
- 0으로 입력되는 경우 1로 처리 됩니다.
- 모든 컨텐츠의 {DURATION}보다 작거나 같도록 {BLOCK_CNT}를 설정하는 것을 권장합니다. {DURATION}이 {BLOCK_CNT}보다 작은 경우 아래와 같이 처리됩니다.
- {BLOCK_CNT}가 100일때 {DURATION}이 30이면 전송되는 블럭 정보는 30개로 조정됩니다.
Callback 호출 주기 (Callback period)
- Callback은 시스템에 설정된 Callback Url 정보의 period 설정에 따라 호출됩니다.
- 플레이어가 일시정지, 정지를 하는 경우도 Callback이 호출됩니다.
- 주기적으로 호출되는 동일한 사용자의 정보는 {START_AT}, {CLIENT_USER_ID}값으로 구분하여 마지막 정보를 확인할 수 있습니다.
- 플래시 플레이어의 경우는 플레이어 종료시 호출되지 않습니다.
USERVALUE0 ~ USERVALUE9 사용시 주의 할 점
- 특수문자(영문,숫자이외의 모든문자:한글,한자,일어등)는 반드시 UTF-8문자열을 UrlEncode된 상태로 전달되어야 합니다.
crossdomain.xml
Flash Player 사용시 callback을 받을 서버(고객사)에는 crossdomain.xml 파일이 있어야 합니다.
Code Block language js theme Midnight <?xml version="1.0"?> <!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> <cross-domain-policy> <site-control permitted-cross-domain-policies="master-only" /> <allow-access-from domain="*" to-ports="*" /> <allow-http-request-headers-from domain="*" headers="*" to-ports="*" /> </cross-domain-policy>
데이터 보안
LMS callback 데이터를 변조 방지를 위해 POST로 전달되는 모든 정보에 대해 Hash 를 생성하여 전달되는 Hash값과 일치하는 지 확인합니다.
※ Hash 생성방식에 대해 노출 우려가 있는 Flash Player, HTML5 Single Player는 제외합니다.
Hash 생성 규칙은 아래와 같습니다.
Code Block language js theme Midnight hash_1 = md5 ( post-data ) hash_2 = md5 ( hash_1 + service_account ) ← + 문자 포함 hash_2값을 post data의 hash 파라메터의 값으로 전송합니다.
전송되는 Post 데이터 예시
Code Block language js theme Midnight ID=pobi&MAC=123456789ABCDEF&LRN=123456789ABCDEF&LHF=1&IP=192.16 8.0.118&LCD=L123&UCD=U123&TM=123456789&PT=123456789&ET=123456789 &SKIP=0&B1=1&B2=1&B3=1&B4=1&B5=1&B6=1&B7=1&B8=1&B9=1&B10=1&T1= 123456789&T2=123456789&T3=123456789&T4=123456789&T5=123456789&T6=1 23456789&T7=123456789&T8=123456789&T9=123456789&T10=123456789&hash =7dec341ff384574f24c6c441b46bc9b1