🤖

Momento Topic を用いてWebhookで Postman Flows を起動する際にJSONを引き渡す

に公開

https://zenn.dev/kameoncloud/articles/19d4be61c40f01
https://zenn.dev/kameoncloud/articles/8578918d4aa303
https://zenn.dev/kameoncloud/articles/c02f28cdd9c61b

今までの記事でPostman Flows 内部の変数の取り扱いやJSONの取り扱い方を纏めてきました。今日はPostman Flowsを外部からWebhook経由で起動する際にJSON Bodyを引き渡す方法を纏めます。

1. Postman Flowsの準備


新規ボタンを押して、新しいFlowを作成します。

Add blocksをクリックします。

Evaluateブロックを選択して適当な場所に配置した後、Startvalue1を矢印でつなげます。

同じ要領でResultlogをつなげます。

コードペインでvalue1を記載します。これにより。value1に入力された値が、そのままResultへ出力されます。では次にWebhookエンドポイントをcreateします。

publishをクリックします。

画面下のRunボタンを押すとJSONのPOST画面が出てきますので、以下の値を挿入してSendをクリックします。

{
   "cache":"demo-cache",
   "topic":"test",
   "event_timestamp":1725685493419,
   "publish_timestamp":1725685493419,
   "topic_sequence_number":5,
   "token_id":"",
   "text":"test"
}

この値は後ほど操作するMomento Topicsから送出されるWebhookのJSON Bodyを模したものです。正しく設定されていれば以下のようにログコンソールに値が出力されます。

では次に進む前にWebhook用URLをコピーしておきます。

2. Momento Topics の設定

では次にMomento TopicsからWebhookを飛ばす設定を行います。Momento Topicsはデータの一時保管場所としてMomento Cacheを用いますので、まずはCacheを作成します。(すでにCacheおよびTopicsを設定済の方は手順をWebhookの設定までSkipしてください)
Create Cacheをクリックします。

適当な名前とリージョンを選択してCreateをクリックします。

出来上がったキャッシュをクリックしてWebhooksをクリックします。

Create Webhookをクリックします。

Webhook nameおよびTopic nameに適当な名前を入れます。Topic nameは後ほど使用します。

Webhook Destinationに先ほどコピーしておいた、Postman Flows用WebhookURLを入力してCreate Webhookをクリックします。

3.Momento Topicsのテスト

これで準備が完了しましたのでテストを行います。
Momento マネージメントコンソールでTopicsをクリックします。

Topicには先ほどセットしたTopic Nameを入力しSubscribeをクリックします。

適当な文字列を入力してPublishをクリックします。

画面左側に以下のようにメッセージが受信されて入れば動作しています。

4. Postman Flows の動作確認

今までのStepで問題なく動作はしているのですが、Postman Flows側はWebhook経由で起動された際コンソールのログには出力されません。ログはローカル環境で動作しているものを出力するのに対して、Webhook経由で起動するPostman Flows はPostmanクラウドで動作するためです。
ということでPostman Flowsにもう一つMomento Topicsから受け取ったデータをPostするAPIコールを作成します。
まずはhttps://requestcatcher.com/にアクセスして適当な名前を入力します。以下のような待ち受け画面が出れば大丈夫です。

次に新しいHTTP Requestを設定します。

以下の画面を見ながらRequest CathcerへのPOSTを作成します。

送信ボタンを押すと以下のようにリクエストを受信していればOKです。

必ず保存ボタンを押した後、FlowでSend RequestブロックをResultとつなげます。

先ほど作成したAPIコールをコレクションから選択し以下のように矢印を2本つなげます。

完了したらWebhookのPublishを再度クリックした後、もう一度Momento Topicsでメッセージを送出します。

POST /?value1={%22cache%22:%22test%22,%22topic%22:%22test%22,%22event_timestamp%22:1725692637494,%22publish_timestamp%22:1725692637494,%22topic_sequence_number%22:5,%22token_id%22:%22%22,%22text%22:%22b%22}

%22は改行の文字コードですがこの状態では見づらいのでFlowのEvaluateブロックで少し修正します。
value1の部分をvalue1.textに変更して再度Publishしてください。

綺麗なメッセージを受信できました。

余談

1.Postman Flowsの費用について
ひと月当たり、5,000クレジットが無料枠として付与されています。
基本的に、ActionブロックやDecisionブロックは1クレジットを消費、AIブロックはモデルに応じて数クレジットを消費します。
参考: https://learning.postman.com/docs/billing/flows-usage/
これはPostmanクラウドでの実行にのみ適応されます。つまりローカルインスタス環境でRunボタンで実行している分には回数制限はありません。

2.コレクションの自動保存について
Postman Flowsで設定可能なAPIコールはコレクションで設定されているもののみです。このためコレクションの画面とFlowの画面を行ったり来たりするのですが、コレクションでの設定内容は保存を押さないと反映されません。保存の押し忘れが発生しがちなのですが以下の全体設定で自動保存モードに切り替えれます。

Discussion