Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Postman Flowsで作るAPI連携LINE Bot Koki Miura(@k_miura_io)
Slide 2
Slide 2 text
自己紹介 • 三浦 耕生(こうき) • Acallのバックエンドエンジニア • JAWS UG名古屋&神戸 運営 • Cloudflare Meetup 名古屋 運営 @k_miura_io koki.miura05
Slide 3
Slide 3 text
アジェンダ • 自己紹介 • イントロダクション • Postman Flowsについて • LINE botの紹介 • デモ
Slide 4
Slide 4 text
API Night Nagoya初開催!
Slide 5
Slide 5 text
2024年9月 Serverless Days Tokyo
Slide 6
Slide 6 text
Postman API Night を名古屋に誘致
Slide 7
Slide 7 text
2日目のワークショップにて
Slide 8
Slide 8 text
ワークショップ のシナリオ
Slide 9
Slide 9 text
Postman Flowsを始めて触った
Slide 10
Slide 10 text
Postman Flowsとは? • Postmanで作成したAPIコレクションのリクエストを組み合わせて ノーコードでワークフローが作成できるツール • 作成したワークフローをWebhookで起動することができる
Slide 11
Slide 11 text
ん、Webhook?
Slide 12
Slide 12 text
LINE botって? • LINE上でメッセージのやり取りを行うbot • 自前でWebhookサーバーを立てることでLINE のプラットフォームからWebhookが飛んでくる • サーバーは受け取ったイベントに対してLINE のMessaging APIを使って返信を行う • Webhookなのでサーバーのレスポンスに決ま りがない
Slide 13
Slide 13 text
これができる!
Slide 14
Slide 14 text
というわけで作ってみた • BotのHelloWorld的存在のオウム返しボット • ユーザーが送ったメッセージをそっくりそのまま返す • テキストメッセージ以外(画像、スタンプなど)はオウ ムがえしに対応しないので、そのメッセージも返すよ うにしている
Slide 15
Slide 15 text
DEMO
Slide 16
Slide 16 text
全体のフロー
Slide 17
Slide 17 text
条件分岐 • メッセージの条件分岐にはFQL(Flows Query Language)を使用 • 条件文を記述することで下部のデータの 方向を決める • FQLは独自の言語なので、迷ったら Snippetsから選択して書き換えるのもあり (この条件もSnippetsを参照)
Slide 18
Slide 18 text
Webhookのボ ディをAPIのリク エストパラメー タにいれる • リクエストパラメータにWebhookから受け取る値を入 れたいときは、リクエストの中に変数を設定しておく • ここではreplyTokenとmessageを変数として設定して いる
Slide 19
Slide 19 text
フローから来たJSONから値を取り出す • APIのリクエストで設定した変数に入力され たWebhookから来たJSONを流し込むと変数 が格納される • 各変数に格納したい値をJSONのキーを直 接指定するとその値がリクエストに使われる • CHANNEL_ACCESS_TOKENはコレクション の変数として設定しているのでここには線を つなげていない
Slide 20
Slide 20 text
更に改良する • Postmanを使っているので他のAPIと連携したLINE Botにアレンジをしていく(タイトル回収) • GoogleのVision APIと連携してユーザーが送信し た画像に映り込んだロゴの会社を検出するボット にアレンジしていく
Slide 21
Slide 21 text
全体のフロー
Slide 22
Slide 22 text
追加で使用しているAPI • 自作API • Vision API
Slide 23
Slide 23 text
自作API • LINEのAPIで画像取得をするとバ イナリで取得されるため、Flowsで 扱うにはbase64でエンコードしない といけない • Flows内でTypeScriptを使ってエン コードをやろうとしたが、ワークフ ローの規模がでかいのか落ちた (アップデートに期待) • 仕方なくCloudflare Workersで画像 取得APIを叩いて取得したレスポン スをbase64で返す自前APIを用意
Slide 24
Slide 24 text
Vision API • よく知られるプロダクトのロゴを画像から検出 するGoogleのAPI • 入力画像をbase64形式で指定できるのが直 感的で、Flows内でリクエストもやりやすい • 右のように検出範囲を画像で出力できるが、 今回は検出したプロダクト名をテキストに返す ように修正
Slide 25
Slide 25 text
DEMO2
Slide 26
Slide 26 text
変数を格納 • タスクの出力を他のタスクで使いまわした いときは変数に格納すると確実 • 「Create Variable」ブロックをStartブロック につないでおくことで他のタスクで Webhookのボディを使い回せる
Slide 27
Slide 27 text
変数を使う • 「Get Variable」ブロックを配置し、使用したいタスクに 向けて線を引くと格納した変数を使い回すことができる • ただフローを流すだけじゃない方法で使いたい値を呼び 出せるので覚えておくと便利!
Slide 28
Slide 28 text
まとめ • Postman Flowsを使うことでWebhookを使ったイベントドリブンのワーク フローを組むことができる • LINE Messaging APIのようなWebhookのイベントから受け取る値を使う 前提のAPIの動作確認をする時に使える • 慣れないと変数の扱いとかで詰まるが、そこさえわかってしまえばアイ デア次第でいろんなワークフローを組めるようになるはず
Slide 29
Slide 29 text
今回紹介したデモの記事 https://bit.ly/3YZCrLj
Slide 30
Slide 30 text
END