Skip to content

contentfulのwebhookを使いこなす

  • JS

📅 October 20, 2020

⏱️2 min read

今日もブログネタです。ちょっと前の、ブログ更新をtweetする | masayukiBlog でブログを更新したら、自動でtweetしてくれるようにはなったのですが、毎回投稿した記事に関わらず、ブログのトップのリンクをツイートするだけなので、非常に残念な感じになってしまっておりました。

こんな感じ↓ まさゆきさん masayuki031 Twitter

うん。非常に残念。 そこで、今回は、contentfulのwebhookで、ブログ記事のタイトルとslug(url部分)も一緒に、投げるように設定します。

デフォルトでほとんど必要な情報を取得できる

詳しくは公式サイトを見てほしいのですが、デフォルトのままで、content modelで作成したすべてのパラメーターを投げてくれているようです。

Webhook | 満足のいく

netlifyなんかの設定が済んでいるのであれば、webhookの設定画面から過去に投げた、パラメーターは確認できます。

netlify — Webhooks — Gatsby Starter for Contentful — master-2020-10-18 — Contentful

ブログ更新をtweetする | masayukiBlogの時の記事であれば、bodyはこんな感じになってました。 netlify — Webhooks — Gatsby Starter for Contentful — master-2020-10-18 — Contentful

このままでも特に、問題ないのですが、せっかくなので、必要なものだけ抽出してbodyに含めるようにします。

カスタマイズペイロードを使う

{
  "fields": {
    "title": {
      "en-US": "ブログ更新をtweetする"
    },
    "slug": {
      "en-US": "tweet"
    },
    ・・・省略
}

ブログタイトル・ブログのslugだけ、投げたい場合は、

{
  "title": "{ /payload/fields/title/en-US }",
  "slug": "{ /payload/fields/slug/en-US }"
}

というふうにすれば、titleというキーでタイトルを、slugというキーでslugを投げれるようです。 そのまんまですね。

例のごとくの記事を書いてる時は、動作確認はまだ済んでないので。 また、追記しまーす。

ちなみに、netlifyがビルドを完了するよりも前に、tweetしてしまうので、直後はNot Foundになってしまうという決定的な欠陥はまだ改善されておりません。

awsのステップファンクションとか使ったら良いのだろうけど、api gateway間にいるので、どうしたらいいんだろう・・・。 また、改善できたら、記事にしまーす

それでは、またー。

← PrevNext →
  • @masayuki031