前回公開した段階ではうまく行っていたと思っていたのですが、環境がAD配下になっていたので他の環境ではうまく行かなかったようです。そのため一番最後の部分を修正いたしました。
みんな大好きSlack
なのですが、うちの会社でもいろいろ刺激があり、徐々に業務でも使用できる(許容される)ようになってきています。ただ、ちょっと問題があって、設定の不備なのかSlack
で書き込みのあったときに通知のトーストが表示されないことが結構あります。(Slack
のチャンネルの設定をみると通知される設定にはなっているのですが…)環境の問題かもですが、自分以外でもうまくいっていない人が多く、Slack
で更新された情報を見忘れることも多くあります。また、実際には会社組織内はYammer
の使用が推奨されていて、Slack
なのとYammer
なのかの区別が付かず苦労している状況でもあります。
使い方としては
- 社外メンバーありプロジェクト…
Slack
- 社内メンバーのみプロジェクト…
Yammer
という感じです。
できればSlack
に一本化できればいいのですが、なかなかそういうことも難しい職場環境なので、ツールチェーンサービスを使用してSlack
での書き込みが行われたら、Yammer
側へ通知を行うことを考えてみました。
IFTTT
やMicrosoft Flow
を使えれば問題は解決しそうですが、これらのサービスではSlack
の書き込みをトリガーとすることができません。そこで、他のツールチェーン機能をもつサービスを捜すことにしました。
いろいろ捜しているなかでSlack
への書き込みを監視するトリガーのあるものを見つけました!
そのサービスがZapier
でした。
このエントリーではこのZapier
を使用して「Slack
の特定のチャンネルに書き込まれたらYammer
のグループに書き込みを行う」という設定を行ってみようと思います。
Zapierの設定
Zapier
へのログイン
以下のリンクに進みます。
今回はGoogleアカウントを使用してログインするので【Sign Up With Google】ボタンをクリックします。新規でアカウント作成してもいいでしょう。
クリックすると、「どのGoogleアカウントを使用するか」と、「利用許諾」のダイアログが表示されます。複数のアカウントを持っている人は以下のように表示されますので、使用するアカウントを選択してください。
サインインするとZapier
のホーム画面に遷移します。
トリガーの設定
以下の画面がZapierのホーム画面になります。
ここからZapier
の処理をつくっていくことになります。Zapier
では処理のことをZap
と呼びます。新規にZap
を作成するには画面内の【Make a Zap!】ボタンをクリックします。(画面内に複数のボタンがありますが、どれを選択しても同じことができます。)
【Make a Zap!】ボタンをクリックすると以下のような画面に遷移します。この画面ではIFTTT
などのトリガーやアクションにあたるものの検索ができます。
今回はSlack
のチャンネルに書き込まれたことを検知したいので、【検索ボックス】にSlack
と入力して検索を行いますが、検索ボックスに入力しようとすると検索候補のプルダウンにSlack
が表示されるのでそこから選択しても大丈夫です。
Slack
と入力すると絞り込みが行われます。
絞り込まれた中から【Slackの表示】をクリックします。すると、Slack
に関連したトリガーの一覧が表示されます。ここでwindowを少し大きくすると設定画面が見やすくなるのでお勧めです。
複数のトリガーが表示されますが、その中から【New Message Posted to Channel】のラジオボタンをクリックします。
これが、特定のチャンネルに新しいメッセージが書き込まれた場合の処理のトリガーとなります。 ラジオボタンをクリックしたら、【Save + Continue】ボタンをクリックします。
するとSlack
アカウントとの紐づけ画面に遷移します。紐づけを行うので【Connect an Account】ボタンをクリックします。
新しくダイアログウインドウがひらいて、Slack
のワークスペースの選択画面が表示されます。
現在ログイン中のワークスペースが選択されているかもしれませんが、ここで新規に選択することも可能です。その場合は、ダイアログウインドウの右上にプルダウンが表示されているのでそれをクリックし【他のワークスペースにサインインする】をクリックします。
すると別のチャンネルの選択とサインインを行うことができます。ワークスペースのURLを入力し、続いてパスワードの入力も行います。
これで、ワークスペースのログインができたので、Zap
から行える操作の権限の確認をしてください。
権限に問題がなければ画面下にある【許可ボタン】をクリックします。
これでZapier
からSlack
を使用することができるようになりました。
ここで【Text】ボタンをクリックするとSlack
へ接続チェックをおこなうことができます。
問題なければ、であれば【Test】ボタンはグリーンになり【Success!」に表示が変化します。 無事成功したら、【Sava + Continue】ボタンをクリックします。
次の設定に進みます。この画面ではMessageがポストされたチャンネルの指定とBotとの区別を行います。
設定部分を拡大すると以下のようになります。
Channelの設定のプルダウンをクリックすると自動的にSlack
の接続情報からチャンネル名を補完してくれます。今回は監視するChannelをgeneralに設定することにします。ここは適宜自分の設定に合わせてください。
Channelの設定が終わった次はBotからのメッセージに反応するかという設定になりますが、基本的にはno
のままで問題ないと思います。ここまで来たら下にある【Continue】ボタンをクリックします。
これでSlack
上にある情報を取得できるようになります。(存在しない場合や新規の場合にはなにも取得されず、デフォルトの値が帰ってきます。)情報を取得する場合には【Pull in Samples】ボタンをクリックします。今回はGeneralのチャンネルが空の状態で作成しましたので以下のような感じで情報を取得してきます。
取得した情報のプルダウンをみると
パラメータなどがデフォルトの値(?)になっているようです。 今回パラメータで必要になるのはメッセージをポストしたユーザ名と実際のポストしたテキスト文になります。
アクションの作成
これまでの操作でトリガー部分(Slack
の書き込み検知)はできたので、続いては通知部分になります。通知を行いたいのはYammer
となりますが。Yammer
を使うには管理者権限が必要なため、一般ユーザーの自分には手も足もでなくなってしまいます。
ただ、Yammer
のグループには電子メール経由の書き込みも対応しています。それを使用して、Slack
で新しいポストがされたらメールを送り、送り先をYammer
グループのメールアドレスに設定をする方針へ変更していきます。
画面の左下側にある【+Add a Step】ボタンをクリックします。
するとボックスが広がり【Action・Search】機能が画面に表示されるので、それをクリックします。(ボタンぽくないです。)
すると、画面右側がActionを行うアプリケーションの検索画面になります。
そこで検索ボックスにカーソルを合わせると候補となるサービスがプルダウンに現れます。その中にGmail
があればそれを選択します。なければ検索ボックスにGmail
と入力して選択を行ってください。
Gmail
を選択するとGmail
側のActionの設定を行います。その中から【Send Email】のラジオボタンを選択します。
ラジオボタンを選択すると以下のようになります。選択したら画面下にある【Save + Continue】ボタンをクリックします。
すると今度はGmail
アカウントとの紐づけの画面に遷移するので【Connect an Account】ボタンをクリックします。
クリックするとどのGoogleアカウントのGmailかを選択することになります。(複数候補がある場合には以下のような画面になります。)候補の中からユーザ名を選択します。
アクセスの許諾関係のダイアログが表示されるので許可される操作を確認して、【許可】ボタンをクリックします。
するとGmail
とZapier
が接続されます。ここで【Test】ボタンをクリックすると接続のチェックが行われます。
クリックして無事に接続ができると【Test】ボタンは【Success!】ボタンに変化します。問題なければ【Save + Continue】ボタンをクリックします。
【Save + Continue】ボタンをクリックすると以下のような画面に遷移します。ここではGmail
を送信するための設定を行います。主に右側の部分に値を入力するので、その部分の画面を拡大してみます。
まずは宛先(To)になります。ここではまずは自分自身に対してメールを送る設定にします。(設定が成功したら、後ほどYammer
と同一のAD配下のメールアドレスにToのアドレスを変更します)
宛先アドレスを手入力します。
続いてはタイトル(Subject)になります。この項目は必須項目なので必ず入力してください。入力ボックスの右側にプルダウンのボタンがあります。
プルダウンを行うとSlack
から得られたデータが表示されるので
その中からどのChannelでメッセージがポストされたかを示すチャンネル名を参照して、
「【チャンネル名】に投稿がありました」
というメールタイトルをつけることにしました。
本文(Body)部分も必須項目になります。
こちらもプルボタンを使って、Slack
からユーザー名(User Name)、メッセージ(Text)を参照して
「【ユーザー名】さんが以下のように投稿しました。 【メッセージ】」
とすることにします。
ここまで設定できたら、画面をスクロールさせて、【Continue】ボタンをクリックします。
すると、Gmail
を使った送信のテスト画面に遷移します。この部分でこれまで入力していたパラメータが表示されるので、確認して問題がなければ
画面をスクロールさせて【Send Test To Gmail】ボタンをクリックします。
するとテストメールが送信され、以下のような画面に遷移します。 送信に成功しているようです。問題がなければ【Finish】ボタンをクリックします。
ここで送信されたを確認します。メール送信されたことが確認できます。(内容はデフォルト値なので意味不明になりますが、問題ありません)
最後にこのZapに名前をつけ、アクティブ状態にするかの設定を行います。
今回は「fromSlacktoYammer」という名前にして、Zap
をOFF(停止状態)からON(動作状態)にします。
これで設定は一旦終了となります。
(注)この時点では
では、Gmail
でメールを送信する部分のみなので、最後にYammer
のグループへ通知する必要があるので覚えておいてください。
Slack
に書き込みを行います。先程設定したのは#Generalチャンネルだったのでそちらに書き込んでみましょう。
Slack
に書き込むと設定した宛先にメールが送信されます。
無事に設定と書き込みの内容も反映されています。
Yammerとの連携にむけて
※ 以降修正が入ります
基本的にはYammer
への反映を行うのは管理者権限が必要になりメッセージのポストなどは行なえませんが、Yammer
にはグループごとのメールアドレスが存在しているのでそのアドレスへメールを送ることで書き込みができるようになります。ただしここで注意するのはYammer
と同じ組織つまりAD配下のユーザのみがそのアドレスにメール送信できる点です。
そのため、Zapier
などの外部サービスから組織のドメインへのログインがでいない環境下ではZapier
だけでは要件を満たすことができない状況になります。
そこで今回はやむを得ないのでZapierとFlowを連携させました。手順としては以下の様になります。
Slack
の書き込みを検知して、Gmail
で自分自身(Gmailのメールアドレス)へメールを送信(Zapier
での設定)Gmail
のメールボックスを監視して、該当するSubjectのメールを受信したら、Office365 Outlook
からYammer
のグループの持つメールアドレスにメールを送信(MicrosoftFlow
の設定)
これを図示すると以下のようになります。
Microsoft Flow側の設定
これまでの設定で
Slack
の書き込みを検知して、Gmail
で自分自身(Gmailのメールアドレス)へメールを送信(Zapier
での設定)
の処理に関しては終了しているので、ここからはMicrosoft Flowの設定を行う以下の処理を設定していくことになります
Gmail
のメールボックスを監視して、該当するSubjectのメールを受信したら、Office365 Outlook
からYammer
のグループの持つメールアドレスにメールを送信(MicrosoftFlow
の設定)
Yammerグループのメールアドレスを調べる(事前作業)
まず、Flow側から送信するメールアドレスを調べることにします。Yammer
の書き込み設定したいグループを表示させ、そこで画面の右端にあるAccess OPTIONSの項目の中から【Post to this group by email】をクリックします。すると…
このグループに書き込むためのメールアドレスが表示されます。
【重要】このメールアドレスをメモしておきます。このメールアドレスを先程のFlow
の送信先として設定することになります。
Microsoft Flowの設定
つづいて、```Microsoft Flowのページに移動します(ログインなど必要であればも行ってください)。左側のメニューから【マイフロー】を選択しクリックを行います。
すると以下のように作成済みのフロー一覧が表示されます。
画面上部の【新規】プルダウンを選択し、【一から作成】を選択します。
以下のような画面になるかもしれませんが、出た場合にも【一から作成】ボタンをクリックします。
すると以下のようなフローを作成する画面に遷移します。 今回は【Gmail】を使用してメールの検知をし、加えて【Office365 Outlook】を使用してメールの送信を行います。
トリガーとなるGmailの受信検知を行います。
【コネクターとトリガーの検索する】入力ボックスにGmail
と入力するか、すでに表示されている一覧にGmail
を選択します。そしてトリガーの中から【新しいメールが届いたとき】を選択します。
すると以下のような画面になります。
設定のために詳細オプションを表示するのプルダウンをクリックして以下のように表示を変更させます。
この設定で以下の部分を編集します。自分は矢印のように変更しました。
- ラベル → INBOX(初期の受信ボックス)
- 宛先 → Yammerと同じ組織下のOffice365Outlookのメールアドレス
- 件名 → 【チャンネル名】にメッセージが投稿がありました
設定が終わったら下の方にある【+ 新しいステップ】ボタンをクリックします。
トリガーの設定が終わったので、次はアクションを設定することになります。
【コネクタとアクションを検索する】入力ボックスでOffice365 Outlook
を選択します。(入力でも、下のアイコンでもOK)
するとアクションの一覧が表示されるので、その中から【メールの送信】をクリックして選択をします。
すると以下のような画面に表示が変わります。
設定項目の以下のものを設定します。自分は矢印のように変更しました。
- 宛先 → 先程調べたYammerグループのメールアドレス
- 件名 → 動的なコンテンツ内の【件名】
- 本文 → 動的なコンテンツ内の【本文】
宛先の設定は手動の入力になりますが、件名と本文はトリガー側の情報を動的なコンテンツとして反映させることができます。入力ボックスの右下ぐらいに【動的なコンテンツの追加】というプルダウンがあるのでそれをクリックすればGUIから操作できます。
Yammer
側のテスト画面がキャプチャできていませんが、正常に動作していることは確認できています。
設定が完了すると以下のようになります。
ここまできたら画面にある保存ボタンをクリックします。
あとはこのフローを有効化すれば設定は完了となります。フローにもわかりやすい名前をつけておくと後々便利です。
おわりに
いちおうこれで目的を達成することができました。これまではIFTTT
とMicrosoft Flow
の2つをメインに使用していましたが、Zapier
も細かい処理(よりプログラミング的な印象)ができるのでいいのかなと思いました。
でもなんで業務側のPCでの通知設定うまくいかないんだろうか…自宅PCではこんなことはないのですが。
【追記】会社の環境辛すぎ