🎉

AWS Step FunctionsでLINEにメッセージを送ってみよう

2024/12/17に公開

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