はじめに
hkob の雑記録の第501回目(連続74日目)からは、moodle で課題 (Assignment) が作成された瞬間に外部 (Notion Worker) へ Webhook を投げて Notion にタスクを作成する仕組みについて解説します。今回は、moodle 側へのプラグインを実装していきます。
設計の修正
もともと課題追加時に webhook を呼び出す予定で設計していました。ただ、コースを複製してしまった場合、すでにルーブリックなどを設定した課題が用意されており、締切日などを修正するだけとなっています。そこで、課題の変更時にもタスク作成をするように設計変更してもらいました。あとはこの変更にしたがって、記録をとりながらプラグインを実装していきます。

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

Step 2: version.php の作成
まず、version.php を作成します。`

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

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

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

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

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

Step 5: settings.php と lang/en/local_notionwebhook.php を実装
Step 5 はやることが多いので、少しずつ進めるようです。

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

Step 6: プラグイン配置
Step 5 の結果を貼ったら、Step 6 の作業も記録してくれました。

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

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

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

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

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

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

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

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

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

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

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

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

おわりに
前日などに課題の提出日を修正するだけで、勝手にタスクを作成してくれるのは便利過ぎです。これは8月にクレジットを利用するとなっても、使い続けると思います。タスクを作成する Webhook 自体は他のことにも使えそうなので、ネタを探していこうと思います。
https://hkob.notion.site/hkob-16dd8e4e98ab807cbe3cf3cc94cdfe0f?pvs=4