まったりするmatayu

ツイートにゴミがついた感じのブログ

MM経由でnews-ieに投稿するplugin(投稿フォームの実装[見た目だけ])

(この記事は作業ログだから,間違いがある可能性が高い)

openInteractiveDialogで投稿フォームを開く.

基本的に次のplugin-demoを参考に実装した.

mattermost-plugin-demo/command_hooks.go at master · mattermost/mattermost-plugin-demo · GitHub

MMのAPIドキュメントに,openInteractiveDialogというmodal windowを開くためのAPIがあるのを発見した.

Server Reference

これを使って投稿フォームをslashコマンドで開けるようにする.

slashコマンド自体はExecuteCommand APIを使って実装した.

Server Reference

フォーム内容の設定は次を参考に, "github.com/mattermost/mattermost-server/v5/model" パッケージのモデルの形に従ったりplugin-demoの形を参考にしたりして書いた.

スラッシュコマンド打ったらこんな感じのフォームが出現した.

f:id:mattari_matayu:20200629145545p:plain
フォーム出たー!

gitlab

Sign in · GitLab

次以降やること

フォームからメッセージを受け取って加工できるようにする.

メッセージ(記事の題名,markdown形式の本文)

加工(hugoのmarkdown形式にする)

まずはしっかりフォームに入力してもらったものを受け取れるようにする.

作業中の殴り書き(参考にならないです. 多分.)

MMのmodal window

Interactive Dialogs — Mattermost 5.24 documentation

スラッシュコマンドでトリガーIDを含むHTTPリクエストを統合機能が受け取る必要がある.(プラグインがそれを受け取ることはできる?)

そうしたら,

https://<your-mattermost-url>/api/v4/actions/dialogs/open

にトリガーIDを含むHTTP POSTリクエストを送信することでインタラクティブダイアログを開くことができる.

スラッシュコマンドはこんな感じに書くといいのかも.

GitHub - cmeadows/mattermost-plugin-tableflip: Like the `/shrug` but better. Adds (╯°□°)╯︵ ┻━┻ to your message

modal windowを開くにはどうすれば良いのか.

トリガーIDなしでInteractive dialogを開くことができるようにするみたいな話を見つけたけどどうだろう.

MM-15340 Interactive dialogs without TriggerId by scottleedavis · Pull Request #10914 · mattermost/mattermost-server · GitHub

pull request辿ってたら,普通にopenInteractiveDialogというのが実装されていることに気づいた.

Server Reference

ここに使い方の例が載ってる.

mattermost-plugin-demo/command_hooks.go at master · mattermost/mattermost-plugin-demo · GitHub

やっとコード書けそう.

Modal windowをReact使って実装するつもりだったけど,openInteractiveDialog を使えばそこまでしなくても良さそう.

すごい巡り巡ってドキュメントまで戻ってきた感(ドキュメントしっかり読めばよかったのかも.でもその過程で色々なものの理解が深まった).