- クラウド技術
AWS Lambdaを使ってChatWorkのマイチャットにメッセージを送信してみた
- #AWS
今回は、ChatWorkのグループチャットに対してLambdaを使ってシンプルなメッセージを送信する方法を説明します。
一般的には他のAWSサービスと連携して特定のログやアラートを送信する事も出来ますが、今回はそちらのついては実装しません。
今回の設計図
見て分かる通りにとてもシンプルですね。
では早速実装していきます。
必要な物
- ChatWork API
- ChatWorkのルームID(送りたいチャットのID)
①Lambda関数を作成する
「関数の作成」を選択して「関数名」を入力してランタイムはPythonを選択、その他はデフォルトの設定で関数を作成
②Lambdaにアップロード用のPythonコードを作成
下記の内容で関数を作成
簡単なコードの説明
この部分で各変数を設定します。
※今回はmessageを設定していますが、eventに入力した値を格納して送信する事も出来ます。
headers 変数部分にChatWork API トークンとリクエストデータの形式を設定して、data 変数部分に送信するメッセージを設定して、url 変数部分にChatWork API のメッセージ送信エンドポイントを設定します。
requests.post() 関数を使って、ChatWork API に対してメッセージ送信リクエストを行い、response 変数に結果を格納してresponse.raise_for_status() 関数を使って、レスポンスのステータスコードを確認します。200 以外の場合は、例外を発生させて、エラーが発生しなかった場合は、print() 関数を使って、メッセージ送信成功時のメッセージを出力します。
except ブロックで、メッセージ送信エラーが発生した場合の処理を行います。
requests.exceptions.RequestException 例外が発生した場合、print() 関数を使って、エラーメッセージを出力します。
上記のコードをzipファイル化して対象のLambdaにアップロードします。
③環境変数を設定
ChatWork APIの確認
ChatWork画面からアカウントメニューより「サービス連携」を選択して「APIトークン」を開いて赤い部分をコピーして保管します。
※表示されていない場合はChatWorkの公式ドキュメントを参照して発行してください。
ルームIDの確認
送りたいチャットグループを開いてURLを確認します。
URLの/#!rid以降の数字をコピーして保管します。
Lambdaの設定内の「環境変数」を選択して、CHATWORK_API_TOKENとCHATWORK_ROOM_IDをそれぞれ設定します。
「CHATWORK_API_TOKEN」には先程、保管したChatWork APIを入力して「CHATWORK_ROOM_ID」には先程、保管したルームIDを入力します。
以上で実装は完了です。
実際に試してみよう
Lambdaの画面から「テスト」タブを開いて「テスト」ボタンを選択します。
テストを実行して、数秒後に画像のように「実行中の関数:成功」がLambda画面に表示されます。
ChatWork側の結果画面
対象のグループチャットを開くとメッセージを受信している為、成功しています。
まとめ
【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc. 詳細はこちらから>
今回はとてもシンプルな内容でしたが、CloudWatchアラームと連携してインスタンスの状態をモニタリングしてChatWorkに送信やGoogleカレンダー、Amazon EventBridgeと連携して定時に今日の予定をグループチャットに送信なども可能です。その他いろいろ出来るので、ぜひ試してみてください。
【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>