コンテンツにスキップ

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: 通知内容追加