はじめに
こんにちは。ニフティ株式会社の並木です。
今回は「Zapier」でAPIを呼び出し、実行結果をSlackに通知する方法についてご紹介いたします。
背景
以前「Zapierを使ってRSSフィードの更新をトリガーにしたTwitterへの自動投稿機能を作ってみた」で紹介した方法で、RSSフィードの更新をトリガーにしたX(旧Twitter)への自動投稿機能を作成したのですが、上記記事の「④Twitterに文章を投稿したい」で紹介した機能が2023年9月に使用できなくなってしまいました。(詳細:https://help.zapier.com/hc/en-us/articles/18657531069965)
別の方法で自動投稿機能を復活できないかという話になり、前から使用していた「Zapier」を流用しつつ、新たに「Amazon API Gateway」「AWS Lambda」「X API」を使用して、自動投稿を実現することにしました。
構成図は以下の通りです。
構成図の【1】【2】については、「Zapierを使ってRSSフィードの更新をトリガーにしたTwitterへの自動投稿機能を作ってみた」の①~③の処理をそのまま流用します。
【4】の手順は「API GatewayとLambdaでX投稿するAPIを作ってみた」に記載しています。
【5】の手順は「LambdaでX APIを呼び出してみた」に記載しています。
「【3】ZapierからAPI Gatewayを呼び出す」と「【6】SlackにXの投稿結果を通知」が今回の説明範囲になります。
前準備(必要な材料をそろえる)
Zapierを使用するにあたって、必要となるものを準備します。
■ 呼び出すAPIのURLを取得する
「API GatewayとLambdaでX投稿するAPIを作ってみた」で作成したAPIのURLを取得します。
URLの取得方法は公式ドキュメントの「API の呼び出し URL の取得」に記載があります。
画像の赤枠部分をコピーすればOKです。
■ 呼び出すAPIのAPIキーを取得する
「API GatewayとLambdaでX投稿するAPIを作ってみた」で作成したAPIのAPIキーを取得します。
API Gatewayのコントロールパネルの左メニューの「APIキー」から確認できます。
「Zapier」から「Amazon API Gateway」を呼び出す
前準備で取得したURLとAPIキーを使って、ZapierからAPIを呼び出します。
■ App&Event
Appは「Webhooks by Zapier」、Eventは「POST」を選択します。
■ Action
URLには、前準備で取得したAPIのURLを入力します。
「API GatewayとLambdaでX投稿するAPIを作ってみた」の中で、JSON形式で「hoge」というリクエストパラメータをAPIで受け取れるようにしました。
なので、Payload Typeは「JSON」を選択します。
Dataには「hoge」というキー名と、Xにポストする文章を設定します。
認証周りですが、Basic Authは今回使わないため空欄でOKです。
今回はAPIキーによる認証を行うため、Headersに「x-api-key」というキー名と、前準備で取得したAPIキーを設定します。
これでZapierからXに投稿できるようになりました!
SlackにXの投稿結果を通知する
「API GatewayとLambdaでX投稿するAPIを作ってみた」で作成したAPIから、以下の通りJSON形式で値が返却されます。
1 2 3 4 5 6 7 8 9 10 |
{ "statusCode": 200, "headers": { "Content-Type": "application/json" }, "body": { "result": "Xの投稿結果", "api_response": "XAPIからのレスポンス内容" } } |
上記の中から"result": "Xの投稿結果"
を取り出してSlackに投稿し、Xの投稿の成功/失敗を通知できるようにします。
■ App&Event、
Appは「Webhooks by Zapier」、Eventは「POST」を選択します。
■ Account
自分のSlackアカウントを選択します。
■ Action
Channelに通知したいチャンネル名を選択します。
MessageTextに通知したい内容を入力します。ここに"result": "Xの投稿結果"
を埋め込みます。
これでSlackにXの投稿結果が通知されるようになりました!
おわりに
「Zapierを使ってRSSフィードの更新をトリガーにしたTwitterへの自動投稿機能を作ってみた」で紹介した方法が、2023年9月に使用できなくなり焦りましたが、無事に自動投稿機能を復活させることができ一安心しました。
APIを自作することで、以前は無かった「Xの投稿結果を通知する」という機能を付けることができたので、結果的に良かったのではないかと思います。