0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

IFTTTでTwitterの改行入りテキストをWebhookに回す方法のメモ

Posted at

前段

IFTTTで、Twitterの「New tweet by a specific user」をトリガーに、任意のWebhookにデータを回す場合、元のツイートに改行を含むと、うまくデータが回ってくれなくて困ったので、その回避方法のメモ。
他にもありそうだがとりあえず自分の対応を載せます。

対応

IFTTTのThen側、つまりWebhookへの連携の設定で、Content-Typeをapplication/x-www-form-urlencodedにする。
そのうえで、Bodyの部分にText={{Text}}&...などでパラメータを繋げばよい。
こんな感じ↓
image.png

失敗の記録

最初はContent-Typeがapplication/jsonでなんとかやりくりできないかと思ったが、駄目だった。
参考までに過去の実施記録。
ちなみにtext/plainは試してません。

  • 改行含むテキストがくると、マジにその部分で改行されたJSONデータをそのまんまWebhookに回そうとする。これはJSONの仕様に違反しているので、Webhook側のJSONパースが失敗する。以下のようなデータのイメージ。
{
  "Text":"あいうえお
かきくけこ"
}
  • だったらTweetEmbedCodeを使ってWebhook側でHTMLパースしてやるかと思ったが、TweetEmbedCodeにはHTMLコード内にダブルクォーテーションを含み、IFTTTはこれもやっぱりマジにそのまんまエスケープせずに渡すので、やはりJSON仕様に違反しており、Webhook側でJSONパースに失敗する。以下のようなデータのイメージ。
{
  "Text":"<blockquote class="twitter-tweet">..."
}
  • Content-Typeがapplication/jsonの場合でも、改行含まないテキストのケースや、そもそもテキストを連携しないケースなら、何も問題なくWebhookにデータが回っていく。

補足

IFTTTのツイートトリガーの連携は、項目があまり充実していない。
例えばツイートの投稿日時を指すCreatedAtApril 08, 2021 at 10:40AMという内容値になっており、Twitter APIなら取れるはずの「秒」の値が乗ってこない。
このため、IFTTT連携は、Text回すより、IDとか最小限の値だけにして、あとはWebhook側でTwitter API叩いて取ってくる、とかしたほうがいいかもしれない、と思った。
少なくともこんな面倒くさいことしてまでわざわざTextの値をIFTTT経由で渡すことはなかったなと、今にして振り返っております。
なお、ツイートのStatus IDはLinkeToTweetという項目に入ってるので、そこから取り出してTwitter APIに投げる形になる。(※LinkeToTweethttp://twitter.com/rm_blank_slash/status/1379207288490102787という形式なので、取り出す場合はWebhook側でsplit等が必要)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?