AWS Lambdaを使ってChatWorkのマイチャットにメッセージを送信してみた 

この記事を書いたチーム:chocochip
AWS Lambdaを使ってChatWorkのマイチャットにメッセージを送信してみた  Smallit 技術ブログ

今回は、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_TOKENCHATWORK_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. 詳細はこちらから>

Smallitのサービス