🍎

Slack WorkflowとSiriショートカットを組み合わせホームボタンだけでラクラク勤怠報告!

2021/05/07に公開

Slack Workflowがwebhookでの起動に対応し、外部からのAPIコールでアクションを起こすことができるようになりました。
これをSiriショートカットから呼び出すことで、iPhoneからの音声による起動で定形メッセージをSlackへ流すことができます。
そこで今回は、私が普段の勤怠管理で使っている 「音声での勤怠連絡」という小技について紹介します。
これが非常に便利で、すでに3ヶ月以上使用していますが勤怠報告にかける負荷がかなり軽減されたのでSiriとSlack Workflowの良い活用方法だと自負しております。
コードは不要、設定も比較的簡単なのでぜひ一度試してみてほしいと思います!!

作った思ったきっかけ

(中身が気になる人は「動作イメージ」まで飛ばしてください)

自分の会社ではリモート勤怠を行う際、勤怠を会社指定の勤怠管理ツール(APIは利用不可)で行うのですが、チームメンバーに出勤の状況が伝わるよう、Slack上でも別途勤怠報告を行っています。
例えば私のチームの勤怠チャンネルでは、このようにスタンプを使って出勤や退勤、休憩、ランチなどを報告しあっています。

絵文字があるので文章を打つより便利ではあるのですが、それでも報告のためには

  1. ブラウザ or Slackを開き
  2. 指定のチャンネルへ移動し
  3. テキスト or : から始まるスタンプ文字列を入力する

必要があって、このステップが個人的に毎回面倒だなと感じていました。
また退勤後に急いでいて、報告を忘れてしまうということも時々ありました。

そんな折、Slack Workflowにwebhookトリガーが追加されたことを知り、これを利用しようということになったのです。
これを使うと、外部からURLを叩くことで指定のフォーマットでメッセージをSlackに流すことができるようになります。
他方、iOSで利用できるSiriショートカットには、指定したURLにHTTPリクエストを送るためのアクションを指定できます。
そしてここで作ったショートカットは音声でも呼び出すことができます。

つまり、SiriショートカットからSlack Workflowのwebhookに対してリクエストを送ることで、ワンボタン&音声で勤怠報告ができるようになることに気づいたのです!!
呼び出しフローは以下の図のようになります。

動作の様子

では実際の動作の様子をご覧ください。
ホームボタンを長押ししてSiriを起動し、ショートカット名を音声入力するだけでSlackにメッセージが送信されます。
後述しますが 複数のSiriショートカットボタンを作り1つSlack Workflowから異なるメッセージを送ることも可能です。


音声は出ていませんがSiriから音声で起動したりボタンで呼び出したりしています

設定方法

ここからは「作業報告」のショートカットを例に各種設定の方法をお伝えします。
この「作業報告」ショートカットは以下のような動作をします。

  • iPhone側でボタンまたは音声で起動
  • フォームが表示されて任意のテキストで作業内容を入力する
  • OKを押すと指定のSlackチャンネルにフォーマットされた内容が送信される


動作時のイメージはこんな感じです、見えてませんが2回目は音声入力を使っています。

Slack Workflowの設定

はじめにSlack Workflow側から設定していきます。
ワークフロービルダーから任意の名前でSlack Workflowを作成し「このワークフローを開始する方法を選択する」で「webhook」を選択します。

すると「変数を追加する」というボタンが表示されます。
この変数は、POSTリクエストのペイロードに付加される値のkey/valueになります。 なので、必要な分だけ変数を定義しSlack Workflow側で受け取ることができるのです。
今回はテキストを送るだけなので value という変数を1つ定義しておけばよいでしょう。

選択可能な値の種類としては、テキストの他に「Slackのeメールアドレス」と「ユーザーID」を指定することもできます。これらはメッセージ受信後のアクション先として指定できるため、変数で指定したユーザーにDMやメールを送ることも可能です。
今回は省略しますが、Siriショートカット側でうまく分岐させることができると同じアクションを異なるユーザーに実行することも可能かもしれません。

変数を定義したら、後は通常のSlack Workflowと同様にメッセージ送信などのアクションを定義していくだけです。

そしてSlack Workflowを公開すると、webhookを受けるURLが表示されるようになりますので、これをどこかにメモしておきます。

Slack Workflow側の設定はこれで終了です。

Siriショートカット

続いてiPhoneでSiriショートカットを起動します。
Siriショートカット自体もSlack Workflowと同様にあるイベントに反応して複数のステップを組み合わせて最終的なアクションを決めるというものです。

まずは右上の+ボタンから新規作成をしてみましょう。Siriショートカットは作った時点でボタン化されるので、最初のステップとして「任意のテキスト入力を受け付ける」というアクションを定義します。
アクションの中の書類メニューから、または検索で「テキスト」アクションを選択します。

このアクションは任意のテキスト入力できるようにするというもので、入力ソースも色々と選ぶことができますが、ここではシンプルに「毎回尋ねる」を選びましょう。

こうするとSiriショートカットを起動した時に都度フォームが現れてテキストを入力できるようになります。

では次に「テキスト」 アクションで受け取った内容を先ほどのURLに送信してみましょう。
今度は下にアクションを一つ追加して「URL」を選択します。(A)
ここにSlack Workflowで作成したエンドポイントの URL を入力します。
URLの設定はこれだけです。

続けて 「URLの内容を取得」のアクションも追加します(B)。
名前からでは少々わかりにくいですが、簡単に言えば 「指定のURLとメソッドでHTTPリクエストを送る」というものになります。
このアクションでは、基本的なリクエストメソッドである GET POST PUT PATCH DELETE を選ぶことができ、またHTTP headerとbodyも指定できるほか、bodyに至っては値の型を選べたりネストさせること(辞書を選択すると可)も可能という、高度な設定にも対応したアクションなのです。
これはなかなか強力な機能ですよね!! ファイルのアップロードなんかもできるようです。

とりあえずここでは以下のように設定します。

方法 ヘッダ 本文を要求
POST 指定なし 「JSON」を選択、キーに value 値に「テキスト」を指定

以上でSiriショートカット側の設定も終了です。
あとは好きな名前を付けてショートカットを保存して終了となります。

動作確認

では実際にSiriショートカットを呼び出してみましょう。
Siriを起動して「作業報告」(ショートカット名)と話しかけるか、Siriショートカットのアプリ内にショートカットができていますのでタップしてみます。

するとおもむろに通知からフォームが出現しますので、作業報告の内容を入力しましょう。
もちろんキーボードで打ってもいいですが音声入力を使うとさらに便利です!

そして入力後に完了ボタンを押すと...

このように Slack にテキストが飛んでいることが分かります。すごく便利ですよね!!

今の例では素のテキストを人の入力から一つ送るというものでしたが、 同じSlack Workflowを使い複数のボタンで異なるテキスト(絵文字)を送ることもできます。
例えば私が一番よく使っているのは、 業務の開始や終了を知らせるショートカットです。


これらのコメントもSiriショートカットで送られています

こちらはSlack Workflowを1つだけ定義しておき、 パラメーターに以下の2つを文字列で受け取るようにしています。

イベント
仕事・ランチ・休憩に対応した絵文字 ユーザーに対応した絵文字

そしてSiriショートカット側では、例えば「ランチ開始」であれば以下のようなパラメータを送信します。

パラメータ1 type パラメータ2 who
:lunch: :kaishi: :imaizume:

(:lunch: :kaishi: :imaizume: などはすでに絵文字としてSlackに登録済み)

これが「ランチ終了」であれば :lunch: :syuuryou: にしたショートカットを作れば良いですし、「仕事開始」であれば :shigoto: :kaishi: にしてあげれば良いわけです。

さらにwho パラメータを変えれば複数人で同じSlack Workflowを使うことができます。
なお自分は大きく目立つので絵文字にしていますが、先ほど説明したようにSlackのユーザーIDを送ってメンションされるようにしても良いでしょう。
各内容に対応するショートカットを作っておけば、あとはホームボタンを長押しして喋るだけで勤怠連絡が完結します、素晴らしい!!

まとめ

何度も言うようですが、この機能すごく便利ですよね!!
さらに自分はこれらのアクションに続けて、Slackのステータス変更APIにリクエストを送り、勤怠報告と同時にステータスも変えるようにしています。
ステータスは手動アップデートが大変で活用している人をなかなか見ないような気がしますが、これなら手間なく現在の勤務状況を共有することができますね!

ただ最初の設定が必要なのと、Siriショートカット自体の共有がiCloudを経由しないとできないという点がちょっと面倒です。
ファイルにexportして他のクラウドサービスやAirDropで送れると便利なんですが、現在はiCloudのリンクしか送れないようです(汗)

とはいえ、一度設定したら勤怠報告の効率が非常に上がりますし、リモート勤務で見えづらい相手の状況が少しでも見やすくなることは間違いありません!
iPhoneユーザーの方はぜひお試しあれ!!!

Discussion