Skip to content

webhook

Tatsuya Koishi edited this page Dec 13, 2020 · 43 revisions

拙作tomato-shriekerからの移植。
webhookのURLに短文のPOSTを行うと、その短文を投稿することができる。Slack Incoming Webhooksと下位互換。

利用を始める

モロヘイヤHOMEから「トークンの登録」を行い、利用開始する。
以下のようなコマンドトゥートで、手動でアクセストークンを登録することも可能。

command: user_config
webhook:
  token: your_token

URLを調べる

webhookのURLは、モロヘイヤHOMEで確認する。
webhookのURLは公開せず、パスワード同様の厳重な管理をすること。

投稿を行う

JSONの書式は、Slack Incoming Webhooksのサブセット。curlを例にすると、以下の様なPOSTで実際に投稿出来る。
いずれも、実在しないフックダイジェスト(ID)には404を、JSONに適切な投稿本文が含まれていない場合等は422を返す。

テキストのみの投稿

curl -H 'Content-Type: application/json' -X POST -d '{"text":"敵が増えてきた時に仕掛けてくるフラッシュ攻撃には気をつけろ!"}' https://mstdn.example.com/mulukhiya/webhook/xxxx

添付画像を含む投稿

attachments要素に注目。

curl -H 'Content-Type: application/json' -X POST -d '{"text":"つかみ男につかまれると、体力ゲージが減少していく。","attachments":[{"image_url": "https://image.example.com/image.png"}]}' https://mstdn.example.com/mulukhiya/webhook/xxxx

ペイロード詳細

通常形式

{
  "spoiler_text": "ネタバレ注意",
  "text": "つかみ男につかまれると、体力ゲージが減少していく。",
  "attachments": [
    {
      "image_url": "https://image.example.com/image.png"
    }
  ]
}
  • 通常用途にはこちらを推奨。
  • attachmentsspoiler_text は省略可能。

Slack Incoming Webhooksのblocks形式

Slack Incoming Webhooksとの互換性の為に、通常の形式とは別にこちらも利用可。
元々の仕様 https://api.slack.com/reference/messaging/payload

以下の様に、モロヘイヤではSlack Incoming Webhooksの一部の必須項目を省略してよい。

{
  "blocks": [
    {
      "type": "header",
      "text": {
        "text": "ネタバレ注意"
      }
    },
    {
      "type": "section",
      "text": {
        "text": "つかみ男につかまれると、体力ゲージが減少していく。"
      }
    },
    {
      "type": "image",
      "image_url": "https://image.example.com/image.png"
    }
  ]
}
Clone this wiki locally