learningBOX PUSH通知 仕様¶
学習者が設定されたバッジを取得した際、指定URLにJSONデータをPOSTする仕組みです(learningBOX 2.9.0以降)。
概要¶
- 指定された通知URLに対して、通知タイプに依存したJSONデータをPOSTします。現在は「バッジ取得時」に対応しています。
利用用途¶
- ユーザーが指定したアクションを起こした際、基幹システムへ情報をポストする用途で利用できます(現状はバッジ取得時のみ)。
通信仕様¶
- プロトコル: https
- HTTPメソッド: POST
- Content-Type: application/json
- エンドポイント: 指定されたURL
動作とリトライ¶
- 通知タイプがLMS通知の場合、戻り値を判定し、成功以外ならリトライします。
- リトライは10分おきに3回実行します。全て失敗した場合は設定に従い管理者へ失敗メールを送付します。
受信側の期待レスポンス¶
- 反映完了時: HTTP 200 OK かつ レスポンスボディ「"1"」を返してください。
- データ登録失敗時: 任意の戻り値。
POSTされるJSON項目¶
- scope: PUSH通知の区分("badge" 固定)
- action: create | delete
- sco_id: 弊社システムのDB内に保存されている教材の内部的なID
- sco_code: 教材コード
- badge_code: バッジコード
- score: 成績の点数/達成率
- user_id: 弊社システムDB内に保存されているユーザーの内部的なID
- user_login: ユーザーのログインID
- user_email: ユーザーが登録しているメールアドレス
- datetime: 日時
- hash: 通知内容を検証するハッシュ値(後述)
JSON例¶
{
"scope": "badge",
"action": "create",
"sco_id": "12345",
"sco_code": "course001",
"badge_code": "beginner_badge",
"score": "85",
"user_id": "67890",
"user_login": "sample_user",
"user_email": "user@example.com",
"datetime": "2024-01-15 10:30:45",
"hash": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6a7b8c9d0e1f2"
}
ハッシュ検証の方法¶
- 通知内容各項目とシークレットキーを「|」で結合し、SHA-256でハッシュ化して生成します。
- 連結順序(厳守): {scope}|{action}|{sco_id}|{sco_code}|{badge_code}|{score}|{user_id}|{user_login}|{user_email}|{datetime}|{secret}
- 例(連結文字列): "badge|create|12345|course001|beginner_badge|85|67890|sample_user|user@example.com|2024-01-15 10:30:45|your_secret_key"
- 注意:
- secret は通知先設定画面で入力する「シークレットキー」です。
- 文字列結合の順序を誤ると検証に失敗します。
改定履歴¶
- 2.9.0: 正式リリース
- 2.19.0: 通知内容追加