【AWS】LambdaからLINE notifyで通知してみた【LINE】
こんにちは!nomurabbitです。
AWSで作ったシステムから
通知が欲しいケースってけっこうありますよね。
ある値が閾値を超えたら
通知してほしいとか。
毎日決まった時刻に
通知してほしいとかとか。
Amazon SNSもいいけど、
スマホのメッセージってあんま見ないんだよなー。
LINEなら見るんだけど…。
そんなみなさん!
LINE notifyはいかがでしょう?
APIをたたくだけなので、
使い方はとっても簡単!
HTTPクライアントが使えれば
どこからでも呼べます。
もちろんLambdaからも呼べますよ!
というわけで、
この記事ではLambdaからLINE notifyに
メッセージを送る方法を紹介したいと思います。
そもそもLINE notifyって?
LINE notifyは
LINEから公式にリリースされている
通知サービスです。
APIにリクエストを投げると、
指定したトークに任意のメッセージを送ることができます。
公式のドキュメントはこちら
notify-bot.line.me
トークンは管理画面から手動で発行することもできますし、
発行の手続きをOAuthで実装することもできます。
この記事では手動でトークンを発行して、
Lambdaからメッセージを送信してみます。
トークンの発行
まずはLINEのアカウントを作成して
管理画面にログインしてみましょう。
LINE notify 管理画面
notify-bot.line.me
ログイン後、画面右上のメニューから
マイページを選択します。
マイページの画面下部に
トークンを発行するボタンがあるので
こちらをクリックします。
ダイアログが表示されるので、
トークン名と送信先のトークルームを選択して
発行するボタンをクリックします。
トークンが表示されるので控えておきましょう。
後ほどLambdaからメッセージを送信するときに必要です。
マイページに戻ると先ほどの入力内容が
連携中のサービスとして表示されます。
以上でトークンの発行は終了です。
メッセージの送信
先程取得したトークンを使って
メッセージを送信します。
まずはLambdaのテンプレートの準備です。
.NET Core3.1のテンプレートは、
この記事やこの記事を参考にしてください。
ソースコードについて、
ポイントは下記の通りです。
private async Task<string> LineNotify() { try { string responseContent = ""; string token = "line notify token"; string message = "hello! this is nomurabbit."; var parameters = new Dictionary<string, string>() { { "message" , message }, }; string lineNotifyRequestString = new FormUrlEncodedContent(parameters).ReadAsStringAsync().Result; HttpRequestMessage request = new HttpRequestMessage(); request.RequestUri = new Uri("https://notify-api.line.me/api/notify"); request.Method = HttpMethod.Post; request.Headers.Add("Authorization", "Bearer " + token); request.Content = new System.Net.Http.StringContent(lineNotifyRequestString, Encoding.UTF8, "application/x-www-form-urlencoded"); using (var client = new HttpClient()) { HttpResponseMessage response = await client.SendAsync(request); responseContent = response.Content.ReadAsStringAsync().Result; } LineNotifyResponse lineNotifyResponse = JsonSerializer.Deserialize<LineNotifyResponse>(responseContent, ApiUtil.GetJsonSerializerOptionsDefault()); return lineNotifyResponse.Message; } catch (System.Exception e) { throw e; } }
先ほど発行したトークンを
Bearerトークンとして
HTTPヘッダーに書き込みます。
Lambdaをキックすると、
このようにメッセージが送信されます。
送信先のトークルームに
LINE notifyさんを招待しておいてくださいね。
GitHubにソースコードを載せていますので、
よろしければ参考にしてください。
以上でLambdaからLINE notifyで
メッセージを送ることができました。
よかったら試してみてください。
では!