何をするもの?
タイトルにもある通り、単語を書いてslack channelにメッセージを送信すると、我が家のslack bot、Vocabbyちゃんが単語の意味や例文を引いてきて返信してくれます。Oxford Dictionaries APIを使います。調べた結果はGoogle Sheetsに書き込んでくれます。
Slack botについて
数年前に、出費をメッセージするとそれまでの出費合計を教えてくれるbotを作って使っていたのですが、改めて調べてみるとずいぶんやり方が変わってしまっていることに気がつきました。調べれば調べるほど現行のものには合わない記述にも出くわして混乱します。Slash commandやらshortcutなども試しつつ、いろいろ試行錯誤しながら作ったので、うまく筋道だてて説明できる自信がありません。すんません。手元にあるメモ(Oct 24, 2021)には、
- 結局App。Appに名前をつけてさらにbot名を与える。
- Websocketを使ったコードにするとresponse urlがいらない。Shake handsのための確認とか、そういうものがいらなくなる。便利。Slask app tokenの発行が必要。
- python libraryはslack_bolt。
とありますが、slack自体が出しているページの情報を見ても、ところどころわかりにくかったりスクリーンショット通りのページがでなかったりするので、あちこち飛び回りながら作ることになると思います。
スタートはConnect tools & automate tasksのページになると思います。
- https://slack.com/help/articles/115005265703-Create-a-bot-for-your-workspace
Oxford Dictionary APIとGoogle Sheetsへの書き込み
Oxford Dictionary APIの使い方については本家のページを参考にしました。Google sheetsへの書き込みはたくさん見つかりますが、今回はqiitaで見つけたページを参考にさせていただきました。
実際に使用しているコードセットはGithubに上げました。myKeys.pyはcredentialsを保存するファイルなので、ご自分のものを取得して記述する必要があります。
- slack bot token, slack app token
- oxford dict app id, oxford dict app key
- google service account key (path to json file), spread sheet key
python コード
Raspberry pi 3B(1号機)で実際に走らせているコードをGithubにのせておきました。
家族からの拡張リクエスト
Google sheetsに書き込んだものを3日間だけ毎日決まった時間に読み上げてほしい。
とのことで、sheetsには”read out”というカラムを用意しました。読み上げるごとに1, 2, 3と増やしていき、3までたどりついたらもう読まないという仕掛けにするつもりです。
読み上げコード追加!(Dec12, 2021)
家族にはなかなか好評で、便利に使ってくれています。読み上げはまだなの?に応えるべく、コードを一つ追加してGithubに上げました。readVocabbyGSheets.pyを実行すると、一回に3つ、Google Sheetsのリストの上から順に単語と品詞、意味と例文をGoogle Homeが読み上げてくれます。今のところ合計3度読まれたものは次には読まれないようにしています。(これは単にコード内での設定なので、どのようにでも変更できます)
Hello, everyone. I am Vocabby. It’s time for vocabby today. Please get ready!
wondrous, Adjective, definition: inspiring a feeling of wonder or delight; marvellous. example: this wondrous city
stupendous, Adjective, definition: extremely impressive. example: the most stupendous views
oppressive, Adjective, definition: inflicting harsh and authoritarian treatment. example: an oppressive dictatorship
How was it? I’ve updated the “read count” on google sheets. See you tomorrow.
ある日の読み上げより
Raspberry piでの実行は、crontabで一日に一度、定時(みんながそろっている時間)に行っています。
(家族)ユーザーの声より
- ウェブの辞書で調べるのも便利なのですが、Vocabbyを使えば必要なステップが圧倒的に少ないので気に入ってます。その上、Sheetsに記録までしてくれるのは素晴らしい!- L
- 辞書替わりに使えて、それも自動でGoogle Sheetsに記入してくれるところがとても気に入っています! – E
- えー。まだ一回も使ったことないんですけど。 – R