classroomの更新は、サーバーを通ってユーザーの端末(Edge)へ通知されます。
sequenceDiagram
participant U as Edge
participant S as Server
participant C as Classroom
C->>S: classroom更新の通知
S->>U: 通知の送信
また、端末(Edge)への通知は、通常のアプリでの通知(Notification)だけではなく、メールもできます。
sequenceDiagram
participant U as Edge
participant S as Server
participant C as Classroom
C->>S: classroom更新の通知
S->>U: Mailの送信
まとめると、
sequenceDiagram
participant U as Edge
participant S as Server
participant M as Mail-Sever
participant C as Classroom
U->>C: classroom更新
C->>M: classroom更新の通知
C->>S: classroom更新の通知
U->>S: fetch
U->>M: fetch
S->>U: 通知
M->>U: 通知
データは、必ずEdgeへ向かいます。
APIを使用すると、以下の様になります。
sequenceDiagram
participant U as Edge
participant C as Classroom
U->>C: fetch
C->>U: HTTP response
しかし、今回ではAPIは、使えないため、Edge上での処理になります。
説明が長くなりましたが、おおまかな仕組みはこんな感じです。
sequenceDiagram
participant L as Line
participant U as Edge
participant M as Mail-Server
participant C as Classroom
participant A as ChatGPT
U->>C: classroom更新リクエスト
C->>M: classroom更新の通知
U->>M: fetch(通知受信)
M->>U: 通知データ返却
U->>U: データの解析(通知本文抽出)
U->>U: データの整形(変数分離・準備)
U->>U: Mail→HTML変換(URL専用処理①)
U->>U: HTML→RTF変換(URL専用処理②)
U->>U: RTFの解析(URL専用処理③)
U->>U: 再整形(URL専用処理④)
U->>U: プライバシー保護処理(ChatGPT向け整形)
U->>A: 通信を確立
U->>A: 要約プロンプトと処理を送信
A->>U: 要約結果の応答
U->>U: 応答の整形
U->>L: 整形済みデータをLineに送信
<aside> <img src="/icons/emoji-angry_gray.svg" alt="/icons/emoji-angry_gray.svg" width="40px" />
セキュリティの問題で自動で実行できなかったから、Edgeのセキュリティ下げまくった…
因みに、セキュリティの問題でurlは取得できない…
他の方法を使ってます。
MailをHTMLに変換して、HTMLからRTFに変換します。
RTFでURLを抜き出して、項目を算出して、送信時にURLを整形してから送信しています。
</aside>