これは、SORACOM Advent Calendar 2019の21日目の記事です。
SORACOM FunkとSORACOM Napterは神。
だと思っている人です。
前説
ボタンネタで書こうと思ったものの、何を書くかなーと悩んでました。
そういえば、ボタンを使って承認するって話しあったなー。
承認するといえば、ワークフロー。
そういえば、最近Slackにワークフローできたなー。
よし。ボタン押したら、SORACOM Funk経由で、Lambdaを呼び出して、SlackにPOSTして、ワークフローを起動させよう。
っていうのをやってみた話です。
Funkが使える #しろボタンと#ひげボタン はもちろんですが、
AWS IoT-1ClickからLambdaを呼び出すことができるので、#あのボタン でも使えます。
構成図
ソース
githubにおいてあります。
https://github.com/Kenichiro-Wada/advent-calendar/tree/master/soracom-2019
AWS LambdaのNode v12.xランタイムにおいて動作確認しています。
デプロイはServerless Frameworkで実施してます。
Slackのチャネル名、チャネルID、下で取得するSlackのトークンはAWS Key Management Service (KMS)で暗号化しています。
serverless-kms-secrets を導入する手順
を参考にしました。
SORACOM側設定
SORACOM Funkに作成したLambdaを
SORACOM Funkを使ってみた。 に書いてあるので、こちらをみてください(宣伝)
Slack API設定
以前使ったことがあるIncoming Webhookだと、できなそうだったので、APIを叩いています。
利用するために、トークンが必要なので、ワークスペースにAPIの設定を行って、取得しています。
https://api.slack.com/apps
にアクセスして、Create New Appをクリックして、追加するワークスペースと、名前を設定
完成したら、左ペインの OAuth & Permissions
を選んで、権限を付与していきます。
こんな感じ
権限設定が終わったら、
OAuth Tokens & Redirect URLs にあるInstall App to Workspaceを押して、トークンを生成します。
上記の通り、生成したトークンは、Lambdaの環境変数にAWS KMSを使って暗号化した上でセットしています。
Slackワークフロー
Slackのワークフローの作り方は、こんな感じ。
公式
発動条件を決めるます
ワークフローの発動条件としては、以下がありますが、今回は絵文字リアクションを設定させています・
- チャンネルへの追加
- アクションメニュー
- 絵文字リアクション
そのあとのアクションを決めます。
今回はフォーム作成する にしています。
動作
今回ボタンの動作で、以下のようなアクションにしています。
- シングルクリック : 承認 -> 承認メッセージ追加
- ダブルクリック : 否認 -> 依頼メッセージに、NGアイコンを表示して、それを条件に否認理由入力するためのワークフロー発動させています
- ロングクリック : 保留 -> 依頼メッセージに、ハンドアイコンを表示して、それを条件に否認理由入力するためのワークフロー発動させています
自分個人のSlackワークスペースで作ってみたので、他にユーザーいないので。自己承認・自己否認になってますw
実際のところは・・・。
使うのか・・・と言われると。。。
こういうこともできるよってネタになります。
作ってて、思ったのですが、
最後のポストしか承認できないから、
むむむ。上申の印鑑もらう行列と同じような承認もらう行列になってしまうー。
注意事項
Slackのワークフローは、無料プランでは利用できません。
有料プランにする必要があります。はい。
最後に
あまりボタンのことを書いてなかったのでw、Twitterには呟いたんですが、ボタンについての所見等々を
SORACOM LTE-M Button powered by AWSが発売されてから約1年たち、Enterprise button、Button Plusが発売されて、色々な使い方ができるようになった気がします(自分では大した事例出せないのが申し訳ない)。
また、IoT1-Click経由でしかLambdaを呼べなかったけど、Funnel->AWS IoT Coreで呼ベるようになり、そして、Funkを使うことで、簡単にLambdaを呼べるようになりました。
いや、ほんとすごい。
通信環境も、今年も押しまくってた時期があったんですが、1年でだいぶ改善された感じがしてます。あれ、以前より通信の成功率上がったな感(えらい上目線w)。
来年、2020/02/18にはSORACOM Technology Camp 2020があり、今回もナイトイベントあるらしいので、そこでLT募集でもあったら、募集申し込んでみようかと思う2019年の師走の午後でした。