【回避策有】Discord連携でToo many requests to this host – IFTTT

問題

IFTTTにて、webhook経由でDiscordを連携、しかし

Action failed
Action failure message
Too many requests to this host.

というエラーが出て動作しない。

解決方法を探したが…

現在IFTTTからwebhookでDiscordに送信されるリクエストでこのエラーが頻発している様子。

webhook URLをリダイレクトさせるスクリプトで回避する方法があったので私はそれで一応成功。(詳細は↓の”回避策”にて紹介している。)Discordのwebhook URLそのままでの解決方法は今のところなさそう。

Twitterで「Too many requests to this host」「Too many requests to this host ifttt」「Too many requests to this host discord」とかでツイート検索してみるとたくさんの同じ症状に困っている仲間がいるようではある。中にはIFTTTの公式Twitterにリプライで今回の問題を投げかけている人もいたので、今後IFTTT公式から何かしらの説明があると嬉しいが…

この問題自体は今年初め頃からあったようなので、未だ解決してないとなると、解決するのはまだまだ先か…

回避策

新規IFTTTアカウント

私の場合、discord.comのwebhook URL以外にIFTTT側のwebhook制限がかかっていたようで、Discordだけじゃなくwebhookが絡む全てのアプレットの「check now」が全くできなかったんですが、(check now を押下するとウィンドウ上方に「There was an error during check process」と出る。)新規IFTTTアカウントを作成し、そちらで試すと問題ありませんでした。「check now」でエラーが出る方はIFTTT側のwebhook制限?がかかっている可能性も視野に入れる必要があるかもです。

追記:IFTTT側のwebhook制限、翌朝には治ってました。新規アカウントは削除。

Birdieさんのツール

discord-ifttt.vercel.app

↑Birdieさんという方が作成した回避ツール。
webhook URLの discord.com を discord-ifttt.vercel.app に置き換えるだけで利用できる。
内容直訳↓

現在、IFTTTからDiscordに送信された一部のリクエストは、too many requests to this host で失敗します。回避策として、それ自体を介してリクエストを実行し、さらに新しい機能を提供し、レート制限を処理するミラー/ブリッジを作成しました。

discord-ifttt.vercel.app

私の方ではうまく機能しました。これで解決した海外ユーザも多いようなのでぜひ試してみてください。

かなで先輩のツール←new!

IFTTT 2 Discord

webhook URLの discord.com を ifttt2discord.lemu.blue に置き換えるだけのやつです。

原因は定かではないですが、IFTTTから直接DiscordのWebhookを叩こうとすると、「Too many requests to this host.」となり、レシピがエラーになってしまうようです。数ヶ月前から発生しているようですが、いまだにIFTTT側での対応はされておらず、実際に試しましたがDiscordに投稿することができない状態です。
そこでWebhookをリダイレクトするスクリプトを設置してみました。POST内容を受け取って、そのままDiscordのWebhook URLにリダイレクトさせてるだけの簡単なものです。

IFTTT 2 Discord

私の方ではうまく機能しました。

先輩の記事↓

IFTTTからDiscordのWebhookを叩くときのToo many requests to this hostを解決する

webhookを自鯖でリダイレクトする方法

こちらはおそらく上記に似た方法を自分でやってみるような感じなんですが、先輩が提示してくれた方法なので私にはちょっと説明が難しいっす…。自鯖にwebhook URLへリダイレクトする処理を書いたphpファイルを置いて、IFTTTのwebhook URL入力欄にそのphpファイルへのURLを貼るという方法。興味のある方は↓を参考にphpファイルを作成してみてください。

別のドメインへPOST、GET双方をリダイレクト(仲介)し旧ドメインからデータを送信する方法

回避策は以上になります。

エラーが出るまでの経緯ざっくり

ここからは、私の方で出ていたエラーの詳細になります。
これをやりまくっていたら上記のIFTTT側のwebhook制限?的なものに引っかかりました。とほほ

IFTTT → test:スマホ通知 → Discordチャンネル → test:Slackチャンネル

IFTTTにて、
Twitterのテストアカウントのツイートを拾い、検証用にスマホに通知を送り、
webhookでDiscordのチャンネルと、検証用にSlackのチャンネルへツイート内容を送るアプレットを作成した。

エラーが出るまでの経緯

IFTTTのアプレットのアクションを作成。

↑TwitterのテストアカウントIDの@以降の文字列を入力。

次にアプレットのアクションを作成。

↑まず、アプレットが動作したタイミングを把握するため、スマホのIFTTTアプリで通知を受け取るアクションを作成。本来は不必要。各項目の内容はデフォルトで入っていたものを弄らず進める。Image URLは空欄だった。

次に、追加のアクションを作成。アプレット作成画面のアクション「Then」の下の「+」を押下。

↑webhookのアクションを作成。まずはDiscord。

URL:Discordのチャンネルのwebhook URLをペースト
Body:簡単に { “content” : ” {{LinkToTweet}}” }
Content Type:application/json
Method:POST

{ "content" : " {{LinkToTweet}}" }

↑もう一つwebhookのアクションを作成。次はSlack。

URL:Slackのチャンネルのwebhook URLをペースト
Body:簡単に { “content” : ” {{LinkToTweet}}” }
Content Type:application/json
Method:POST

{ "content" : " {{LinkToTweet}}" }

SlackはDiscordのwebhook連携がうまくいかなかったので検証用に追加した。本来不必要。
IFTTTにSlackアプリと直接連携する方法もあるが、webhookの検証のため無視。

これでアプレットの作成は完了。実際にTwitterのテストアカウントでツイートして様子を見てみる。

↑スマホのIFTTTアプリからの通知は受け取れた。しかしDiscordとSlackのチャンネルは音沙汰なし。

アプレットのアクティビティを確認する。

↑一応アクションである通知機能は動いたため、「ran」となっているが、下の2つのWebhooksを展開してみると…

Action failed
Action failure message
Too many requests to this host.

というエラーが出て動いていないのがわかる。

ADS