AWS Lambdaを使ってSlackBotを作ってみた

はじめに

こんにちは!AWS初心者の踏台です。
AWS使った事はありますか? 私は触ったことがありませんでした。
そんな私がAWSを知るためにSlackBotを作成しました。
作成してどうだったかをこの記事では、書いていこうと思います!!

作った物

「Wiki Bot」という名前のSlackBotを作成しました。
内容としては、Wikipedia に投稿されているアクセス数上位の投稿を取得し、Slackに定期的に投稿するBotです。

作った理由

前提としてAWSを学習する為というのもありますが、世間でどんな事が起こっているか
やんわりと知れるBotがあれば良いなと思ったので、作成しました。

機能

お昼(PM12:00)にWkikpediaで、アクセス数の多かった記事をURLと共に3件投稿してくれます。

表示内容

  1. 記事のタイトル
  2. 閲覧数
  3. URLとプレビュー

記事の投稿方法

Wiki BotではSlackに対して記事を投稿するのみ、だったのでIncoming Webhooksを使用しました。
Incoming WebhooksはPostでメッセージを送信する事が出来るので、Wiki Botにピッタリです。

Pz-LinkCard
- URLの記述に誤りがあります。
- URL=

記事の取得方法

記事の取得にはWikipediaのパブリックAPIを使用しました。

Pz-LinkCard
- URLの記述に誤りがあります。
- URL=

例)2015 年 10 月 10 日に**日本**で 最もアクセスされた記事の上位 1,000 件を取得します。
https://wikimedia.org/api/rest_v1/metrics/pageviews/top/jp.wikipedia/all-access/2015/10/10

apiを呼び出すだけで、アクセス数上位1000件を取得出来るのでとても便利でした。

構成

AWSのEventBridgeとLambdaを用いてSlackBotを作成しました。

処理フローは以下の通りです。

困った事 Slackのプレビューが表示されない

Wiki Botでurlを投稿した際に何故かプレビュー表示されませんでした。(手動だと表示される)

色々原因を調査したところ、WebHooksではプレビューを表示する際、bodyにunfurl_linksのflagを持たせなければプレビューが表示されない事がわかりました。

Pz-LinkCard
- URLの記述に誤りがあります。
- URL=

これが原因かなと思ったのでプログラムを修正して、もう一度動かしましたが、それでも
プレビューは表示されませんでした。

何で表示されないのかなーと色々試したのですが原因分からず、プレビュー使うのを
諦めようとした途端に表示されるようになりました。

どうもSlackには同じチャンネル内で、同じURLを投稿した際に1度表示したプレビューは、
表示されない仕組みがあるみたいです。

Pz-LinkCard
- URLの記述に誤りがあります。
- URL=

本来はプレビューが表示されない場合、ポップアップが表示されます。
ですが、今回Bot側で投稿している為、プレビューが表示されない旨のポップアップ
も無く、気づきませんでした...

元のプレビューを表示してから1時間経過した結果、プレビューが表示されるようになり
どうにか気づけた次第です。

AWS触ってみて

AWSを触ってみた感想なのですが、とても楽だなと思いました。
SlackBotを作るだけなら、面倒な環境構築も無くすぐに動かせる所が良かったです。
(今回どちらかといえば、Slack側で詰まりました...)

Amplifyなどにも興味を持ったので、今後もAWSを触っていこうと思いました。
以上、最後まで読んでいただき、ありがとうございました!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です