Learn365では、システムで発生するイベントに対して通知を受け取るためのサブスクライブ機能が用意されています。
例えば、「CourseEnrollment(コース登録)」というイベントをサブスクライブすることで、誰がコースに登録したかを記録するような独自のトラッキング処理を追加することができます。
これを実現するには、特定のイベント(サブスクライブしたい内容)を示すフィルターを指定して、Webhook を登録する必要があります。
Learn365 の Webhook は、ASP.NET WebHooks をベースに実装されています。これは Microsoft が ASP.NET フレームワークで使用している標準ライブラリです。
Webhook の仕組み:
- Webhook の送信側(Learn365)は、クライアントがサブスクライブできるイベントを提供します。たとえば、新しいデータが追加された、処理が完了したなど、システム内で監視可能な変更です。
- Webhook の受信側(顧客のエンドポイント)は、次の 4 つの要素を含む Webhook をあらかじめ設定することで、イベントを受け取ることができます。
- HTTP POST で送信されるイベントの通知を受け取る場所(URI)
- Webhook をトリガーさせるイベント(通知を受け取るイベント)
- HTTP POST リクエストに署名するためのシークレットキー(Learn365 からの通知であることを確認します)
- HTTP POST リクエストに含める追加の情報(HTTP ヘッダーや、リクエストボディに含まれるプロパティなど)
- イベントが発生すると、該当する Webhook の設定が検索され、指定された送信先に通知(HTTP POST)が送られます。送信先のシステムが応答しない場合やエラーが返された場合は、自動で何回か再送(リトライ)されます。
LMS365 Webhooks イベント
現在、Webhookでサブスクライブできるイベント(通知を受け取れるイベント)は以下のとおりです。
- CourseEnrollment(コース登録)
- CourseUnenrollment(コース登録解除)
- CourseStarted(コース開始)
- CourseCompleted(コース完了)
- CoursePublished(コース公開)
- CourseUnpublished(コース未公開)
- EnrollmentApprovalRequest(登録承認申請)
今後、これらのイベントはさらに追加される予定です。
また、これらの機能は Swagger で実際に試すことができます。
LMS365 のコネクタの使い方については、こちらをご参照ください。
カスタムWebhookの登録 / イベントのサブスクライブ
カスタム Webhook の登録や、イベントをサブスクライブするには、以下の URL に対して POSTリクエスト を送る必要があります。
https://api.365.systems/documentation/swaggerui3/#/WebHookRegistrations
例:
POST /webhooks/registrations/ HTTP/1.1 Host: api.365.systems Authorization: Basic <basic auth header> Content-Type: application/json Cache-Control: no-cache { "WebHookUri":":"http://customhost/api/webhooks/incoming/lms365", "Secret":"some secret", "Description":"some description", "IsPaused":false, "Filters":["CourseCompleted"] }
ここでの WebHookUri とは、お客様が用意した Webhook を受け取る場所(URL)です。
LMS365 の Webhook の仕組みや、カスタム Webhook の受信処理(ハンドラー)の作り方について理解するためには、
ASP.NET の Webhook に関するMicrosoft 公式ドキュメントを確認することをおすすめします。