Skip to content

webhook

Tatsuya Koishi edited this page Sep 11, 2020 · 43 revisions

拙作tomato-shriekerからの移植。
webhookのURLに短文のPOSTを行うと、その短文を投稿することができる。Slackのwebhookと互換性あり。(サブセット)

利用を始める

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

command: user_config
webhook:
  token: your_token

URLを調べる

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

投稿を行う

JSONの書式は、Slackのサブセット。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のblocks形式

元々の仕様 https://api.slack.com/reference/messaging/payload

これが、画像とCWを含むミニマム。

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

モロヘイヤでは、ここまで省略して良い。

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