書く書くといいつつ、ずっと放ったらかしだったので、いい加減書かないとなということで書きます。
notestockには実験的な機能として、「webhook呼び出し」があります。
これは、投稿内容に合わせて、他のサービスに投稿内容をリレーすることが可能です。
ただし利用する際には「正規表現」辺りの技術知識が必要になることがあります。
設定項目として
- regular expression
正規表現で条件を指定する - webhook URL
- method
- Content-Type
- enable/disable
- send body
- 正規表現のマッチ結果が変数として$1から順に当てはめられるので、置換が可能です。
- 「$JSON」だけを書くとJSON形式で送信。
- 「$JMESPath:」を先頭に置くとJMESPath(https://jmespath.org/)で処理された文字列を送信。
があります。
基本的な動作としては、 「regular expressionに条件となる正規表現を書き、webhook URLに対してsend bodyが送信される」という流れになります。
enable/disableにチェックを付けていないものは、無効状態となり動作しません。
一時的に処理を止めておきたいときなどにチェックを外しておくと便利です。
(例1)
マストドンの開発→アプリで「write:accounts」にチェックを入れて設定。
- regular expression
(?:あんた|おまえ)の名前は(.+)だ。 - webhook URL
https://poo6k2fbp3.execute-api.ap-northeast-1.amazonaws.com/prod/mstdn_update_name - method
POST - send body
domain=ドメイン名&token=さっき作ったアプリのアクセストークン&new_nickname=$1
を入れて保存すると、診断メーカーの湯婆婆に名前付けてもらえるやつを投稿するだけでマストドンの名前が変わります。(これは自分で名前を投稿する必要があり、本来Twitterで流行っていた『update name』の他人から名前を変更される面白さが無いのですが)
(例2)
- regular expression
.*
- send body
$JSON
を入れると、全ての投稿が、送信先に投稿データがJSON形式のまま渡されます。
自分でプログラムなどができる人は、この形式が一番処理しやすいかもしれません。
(例3)
- send body
$JMESPath:[notag, id] | join(' ', @)
を入れると、投稿データがJMESPathで処理され、この例では「投稿内容 URL」の文字列として渡されます。JSONで処理するまでもない簡単なデータでは、こちらが便利かもしれません。
テストボタンで条件が認識されるかどうか確認できます。
「呼び出し」にチェックを付けると、実際にwebhookの呼び出しまで行われます。
JSONやJMESPathの処理をテストするときは、「テスト投稿。書き換えてテストしてください。」の部分に投稿データのURL(正式な投稿アドレス、Mastodonなら https://example.com/users/example/statuses/~ 、Misskeyなら https://example.com/note/~)を指定してください。
Webhook.site(https://webhook.site/)などを使うと、実際に送られてくるデータの確認がしやすいかもしれません。
webhookは実験的な機能ですので、何か不具合があってもすぐにサポートされない場合があります。
ご了承ください。