#はじめに
去年、QA業務の契約社員として仕事に復帰してから早半年が経ちまして、何か新しいスキルを得たい+掌で腐っているJava 8 Goldをちょっと役立たせたいということで、何かChat Bot的なものを作ろうと思いました。
そこで先輩諸兄の記事を参考、もといコピペしてとりあえず動くものを手元に置いて学習していこうと思ったのですが、コピペすらままならない残念なことになり暫く頭を抱えながらあぁでもないこうでもないと試行錯誤して、3時間ほどでコピペに成功しました。コピペで3時間ってお前…。
参考記事が悪いのではなく、無知のままトライしていった僕がそもそもアホだった、と前置きしておきます。念のため。
というわけで、何とかうまくいった訳ですが、つまづいたところをメモでもしておかないと鳥頭の僕は一瞬で忘れてしまうため、こうして備忘録をちまちまと書いた次第です。
#参考記事
https://qiita.com/kamata1729/items/8d88ea10dd3bb61fa6cc
https://qiita.com/kamata1729/items/fc6c31a3039599b48305
感謝。
#コード
ほとんど参考記事そのままなので省略。開発環境はEclipse、ビルドはMaven。どうもEclipseから直接Lambdaへアップロードするとテスト失敗するのは今も謎。ビルドしたjarファイルをブラウザ経由でアップロードすることで動くものは出来ました。
非同期処理はほぼ2つ目の記事そのまま。Node.jsのasyncでも出来るのかもしれない…?
#つまづいたところ:Slack
botのuser idってどこに書いてあるの?
- とりあえずワークスペースにアプリをインストールする
- Slackアプリを開いて
▼App
下に表示されている(はず)のインストールしたアプリをクリックする - 右上の をクリックする
- その他をクリックする
「メンバーIDをコピー」に表示されている U
から始まる文字列がbotのuser id。これをlambdaの環境変数にぶち込めばOK。
#つまづいたところ:lambda
環境変数を間違って設定していた。原因を掘り下げるのに無駄に時間がかかってしまった。
具体的には、SLACK_APP_AUTH_TOKEN
のxoxp-から始まるものと、SLACK_BOT_USER_ACCESS_TOKEN
のxoxb-から始まるものをあべこべに設定してしまった。
結果、アプリにメンションつけてチャットしてもbotではなく自分が返事している状態になっていた。バカ。
lambda側で設定する環境変数名とトークンが合っているのが普通・当たり前だろうという先入観のせいで、そこかよ!ってなるまで時間がかかってしまった。
#さいごに
他にもつまづいたところがあったかもしれない。思い出したら追記していこうと思います。