webhook 呼び出し moodle プラグインの実装 : hkob の雑記録 (501)

はじめに

hkob の雑記録の第501回目(連続74日目)からは、moodle で課題 (Assignment) が作成された瞬間に外部 (Notion Worker) へ Webhook を投げて Notion にタスクを作成する仕組みについて解説します。今回は、moodle 側へのプラグインを実装していきます。

設計の修正

もともと課題追加時に webhook を呼び出す予定で設計していました。ただ、コースを複製してしまった場合、すでにルーブリックなどを設定した課題が用意されており、締切日などを修正するだけとなっています。そこで、課題の変更時にもタスク作成をするように設計変更してもらいました。あとはこの変更にしたがって、記録をとりながらプラグインを実装していきます。

設計書の修正

Step 1: フォルダの作成

今度は実装のページに移動して、手順をまとめてもらいました。早速 Step 1 が指示されています。

Step 1

Step 2: version.php の作成

まず、version.php を作成します。`

Step 2: version.php

$plugin->requires の値を取得するために、config.php から取得しました。

version の取得

Step 3: db/events.php の作成

次に observers の設定をお願いしました。ただ、修正前の情報から作成したのか、created のみしか作ってくれませんでした。

events.php の作成

ここで、course_module_updated も追加するようにお願いしました。

course_module_updated も追加

Step 4: classes/observer.php の作成

次に classes/observer.php を作成してもらいます。

classes/observer.php の作成

ソースの payload の title が空でした。このため title を課題名から取得するように依頼しました。

payload の title を設定

Step 5: settings.php と lang/en/local_notionwebhook.php を実装

Step 5 はやることが多いので、少しずつ進めるようです。

Step 5-1

ファイルを作成後は確認です。

確認失敗

Step 6: プラグイン配置

Step 5 の結果を貼ったら、Step 6 の作業も記録してくれました。

Step 6

これがうまくいきませんでした。いろいろと Notion AI と確認したところ、以下のように原因を追求してくれました。確かに moodle のバージョンが上がって root の場所が移動したのを思い出しました。

root 位置の変更

色々とやり取りしましたが、ようやくプラグインのインストールに成功しました。

インストール成功

moodle の管理画面でもインストールされたプラグインを確認できました。

moodle 管理画面

プラグインの設定

上記のローカルプラグインの名前をクリックすると設定画面が表示されました。

プラグイン設定画面

デバッグ

それでもうまく動かなかったので、デバッグすることにしました。一時的にデバッグをオンにします。

デバッグ設定

いろいろとデバッグしたところ、Worker 側で updated を受け取っていないことに気づきました。そういえば、この変更をしたのは今日なので、当然 updated はスキップしていました。

原因究明

デバッグ情報を外し、worker の修正を依頼しました。

worker 側の修正

これで課題を編集したら無事にタスクが生成されました。

生成されたタスク

ただ、Alfred で作成した場合には、このようにコースの短縮名を入れていました。課題名だけでは科目がわからないので同じように課題名を入れてもらうようにしましょう。

Alfred で作成したタスク

早速直してもらいます。流れ的に worker の方を修正されてしまいました。私の意図と異なるので、やり直してもらいます。

コース短縮名の追加 (失敗)

worker の修正を戻してもらい、moodle のプラグイン側を修正してもらいます。

コース短縮名の追加 (修正)

ということで、明日の課題を作成したところ、無事にコースの短縮名が入りました。

修正後に生成されたタスク

おわりに

前日などに課題の提出日を修正するだけで、勝手にタスクを作成してくれるのは便利過ぎです。これは8月にクレジットを利用するとなっても、使い続けると思います。タスクを作成する Webhook 自体は他のことにも使えそうなので、ネタを探していこうと思います。

https://hkob.notion.site/hkob-16dd8e4e98ab807cbe3cf3cc94cdfe0f?pvs=4