AWS Step FunctionsでLINEにメッセージを送ってみよう
Social Databank Advent Calendar 2024 の17日目です。
はじめに
SDBのどいです!
AWS Step Functionsはコードを書かずに、様々なAWSサービスを連携してワークフローを実行できる便利なサービスです。
この記事では、AWS Step Functions の Call HTTP APIsアクションを使って
LINE公式アカウントから友だちにメッセージを送信する方法を紹介していきます。
Lambdaでコードを書かずにAWSで構築するためにはどうすればよいかと考え、今回はStep Functionsを採用して構築してみました。
Step Functions作成
それでは早速 AWS Step Functionsのワークフローを作成していきます。
まず、Step Functionsのコンソール画面にいき、作成
ボタンをクリックします。
様々なテンプレートから作成できますが、ステートマシンクエリ言語をJSONata
にして選択
をクリックします。
次に、アクションからCall HTTP APIs
を見つけて、ワークフローにドラッグ & ドロップします。
次に、Call HTTP APIs
の設定を入れていきます。
項目 | 値 |
---|---|
APIエンドポイント | https://api.line.me/v2/bot/message/push |
HTTPメソッド | POST |
接続 | (次のセクションで作成するので一旦スキップ) |
リクエスト本文(オプション) | 以下のjsonを指定 |
{
"to": "{% $states.input.to %}",
"messages": [
{
"type": "text",
"text": "{% $states.input.text %}"
}
]
}
https://api.line.me/v2/bot/message/push
はLINE公式アカウントにpushメッセージを送信するためのエンドポイントです。
to
(送信先のユーザーID)と text
(送信するメッセージの内容)は変数にして、送信先やメッセージの内容を変えられるようにしています。
さて、ここまで設定をしてきたのですが、このAPIを実行するためには 認証情報(チャネルアクセストークン) が必要です。
この認証情報を取得するために、EventBridgeで接続設定を行っていきます。
EventBridge 接続作成
チャネルアクセストークンの取得するために、EventBridge接続を作成していきます。
今回はOAuth認証で一時的に使用できるステートレスチャネルアクセストークンを取得できるようにします。
ステートレスアクセストークンについては、LINE公式ドキュメント を参考にしてください。
まず、EventBridgeのコンソール画面から、接続 > 接続を作成をクリックします。
設定画面が表示されるので、以下の項目を入力していきます。
セクション | 項目 | 値 | 備考 |
---|---|---|---|
名前と説明 | 接続名 | (任意) | |
説明 | (任意) | ||
呼び出しを設定 | APIタイプ | パブリック | |
認証を設定 | カスタム設定 | - | |
認証タイプ | OAuthクライアントの認証情報 | ||
OAuth 認可エンドポイント | パブリック | ||
認可エンドポイント | https://api.line.me/oauth2/v3/token | ||
HTTPメソッド | POST | ||
クライアントID | LINE Messaging APIチャネルのチャネルID | LINE公式アカウントのコンソール画面から確認できます | |
クライアントシークレット | LINE Messaging APIチャネルのチャネルシークレット | LINE公式アカウントのコンソール画面から確認できます |
LINE公式ドキュメント に従って、OAuth Http パラメータに以下の設定を入れます。
パラメータタイプ | キー | 値 | 備考 |
---|---|---|---|
ヘッダー | Content-Type | application/x-www-form-urlencoded | |
本文フィールド | grant_type | client_credentials |
設定値が入力できたら作成
をクリックします。ステータスが認証済み
となればOKです。
EventBridge接続が作成できたら、Step Functionsのコンソール画面に移動し、
前の手順でスキップしたStep Functionsの接続設定に、今回作成したEventBridge接続を指定して保存しましょう。
テスト
一通り設定が完了したら、Step Functionsを実行して、メッセージ送信をテストします。
テスト時には、to
(送信先のユーザーID)と text
(送信するメッセージの内容)を入れて実行します。
{
"to": "U**********************************",
"text": "Hello!"
}
実行してメッセージが送信されれば成功です!
まとめ
本記事では、AWS Step FunctionsからLINE公式アカウントにメッセージを送信する方法を紹介しました。
今後もアドベントカレンダー続きますので、引き続きお楽しみに!
Discussion