slackのbotにWikipediaを調べてもらう(Python on AWS Lambda + API Gateway)
slackのbotに少しでも役に立ってもらおうと、Wikipediaを調べてもらう事にしました。
環境は手前味噌ですが「slackのbotをAWS Lambda(Python)+API Gatewayで構築」をご参照ください。
Wikipediaモジュールを使う
Wikipediaモジュールをインストールします。
AWS lambdaにアップロードするために実行ファイルと同じフォルダにインストールします。
1 2 |
pip install wikipedia -t . |
投稿に「って何」が含まれているか、用意したトリガーがない場合はとりあえずWikipediaを調べてもらう事にしました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
import wikipedia def lambda_handler(event, context): try: user_name = event['user_name'] text = event['text'] msg = user_name + 'さん ' if text == '': msg += 'はい!' elif text.find('おはよ') > -1: msg += 'おはようございます!' elif text.find('こんにちは') > -1: msg += 'こんにちは' elif text.find('疲') > -1 or text.find('お先') > -1: msg += 'お疲れさまでした!' elif text.find('って何') > -1: msg += wikipediaSearch(text) else: msg += 'その言葉は分からないから調べてみました。:sweat:\n' + wikipediaSearch(text) payload={'text':msg} return payload except Exception as e: print(e) raise e def wikipediaSearch(text): response_string = '' wikipedia.set_lang('ja') index = text.find('って何') search_text = text[0:index] search_response = wikipedia.search(search_text) if len(search_response) > 0: try: wiki_page = wikipedia.page(search_response[0]) except Exception as e: try: wiki_page = wikipedia.page(search_response[1]) except Exception as e: response_string = 'すいません。お探しの言葉ではエラーを起こしてしまいました。改善出来るように頑張ります。:cold_sweat:\n' + e.message + '\n' + str(e) response_string = '説明しよう:triumph:\n' response_string += wiki_page.content[0:200] + '.....\n' response_string += wiki_page.url else: response_string = '今はまだ見つけられませんでした。でも頑張って見つけられるようになります。' return response_string |
- wikipedia.set_lang(‘ja’)で日本版のwikipediaを検索しています。
- wikipedia.search(search_text)で検索結果が配列で返ります。
- wikipedia.page(search_response[0])で1番上の候補を結果としてページを取得ます。
配列1番目にページが入っていない場合があるようで、pageでエラーになるのでその時は2番目を取得するようにしています。 - wiki_page.contentで内容が、wiki_page.urlでURLが返ります。
slackに返すtextに「:triumph:」とかを入れると絵文字も返してくれるのですね。
少しづつ愛着が湧いてきます。
最後までお読みいただきましてありがとうございました!
【PR】 「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
【PR】 「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第2版」という本を書きました。
【PR】 「ポケットスタディ AWS認定 デベロッパーアソシエイト」という本を書きました。
【PR】 「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
【PR】 「AWSではじめるLinux入門ガイド」という本を書きました。

開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
AWS複数アカウントのリソースをLambda(Python)から一括操作したくて
AWSの複数アカウント(30ちょい)のリソースをまとめて自動処理したくて。 とり …
-
-
macOSにAWS Schema Conversion Toolをインストール
環境 macOS BigSur バージョン11.5(20G71) MacBook …
-
-
AWSアカウント ルートユーザーのMFAが使えなくなったので復旧
AWSのルートユーザーどころか、MFAが使えるログインすべてが使えなくなって焦り …
-
-
AWS Client VPNの接続ログを確認しました
AWS Client VPNを設定しましたで証明書とかせっかく作ったので、いろい …
-
-
新しいVPCウィザード(2022年)がすんごく便利になってました
VPCウィザードがすんごく便利になってました。 ウィザードの左ペインで設定を選択 …
-
-
AWS Systems Manager Fleet Manager Windows RDP Connectを試してみました
AWS Systems Manager Fleet Manager Window …
-
-
API GatewayからLambdaを介さずにSNSトピックへ送信
やりたいこと APIリクエストをまずLambdaで受けて、SNSトピックへ送信す …
-
-
S3 過去のオブジェクトバージョンをコピーしてロールバックしました
バージョニングを有効にしているS3バケットで、オブジェクトを以前のバージョンに戻 …
-
-
Rocket.ChatにAPIで投稿するテスト(Postman)
トレーニング期間中で一時利用するチャットが欲しいなあと思い、Rocket.Cha …
-
-
JAWS-UG関西IoT専門支部 ✕ SORACOM UG 関西「Wio LTE + 絶対圧センサーで遊ぼう!」ワークショップにいってきた
JAWS-UG関西IoT専門支部 ✕ SORACOM UG 関西「Wio LTE …