【修正】Slackの特定のチャンネルに書き込まれたらYammerのグループに書き込みを行う【Zapierを使う】

前回公開した段階ではうまく行っていたと思っていたのですが、環境がAD配下になっていたので他の環境ではうまく行かなかったようです。そのため一番最後の部分を修正いたしました。

みんな大好きSlackなのですが、うちの会社でもいろいろ刺激があり、徐々に業務でも使用できる(許容される)ようになってきています。ただ、ちょっと問題があって、設定の不備なのかSlackで書き込みのあったときに通知のトーストが表示されないことが結構あります。(Slackのチャンネルの設定をみると通知される設定にはなっているのですが…)環境の問題かもですが、自分以外でもうまくいっていない人が多く、Slackで更新された情報を見忘れることも多くあります。また、実際には会社組織内はYammerの使用が推奨されていて、SlackなのとYammerなのかの区別が付かず苦労している状況でもあります。

使い方としては

  • 社外メンバーありプロジェクト…Slack
  • 社内メンバーのみプロジェクト…Yammer

という感じです。

できればSlackに一本化できればいいのですが、なかなかそういうことも難しい職場環境なので、ツールチェーンサービスを使用してSlackでの書き込みが行われたら、Yammer側へ通知を行うことを考えてみました。 IFTTTMicrosoft Flowを使えれば問題は解決しそうですが、これらのサービスではSlackの書き込みをトリガーとすることができません。そこで、他のツールチェーン機能をもつサービスを捜すことにしました。 いろいろ捜しているなかでSlackへの書き込みを監視するトリガーのあるものを見つけました!

そのサービスがZapierでした。

zapier.com

このエントリーではこのZapierを使用して「Slackの特定のチャンネルに書き込まれたらYammerのグループに書き込みを行う」という設定を行ってみようと思います。

Zapierの設定

Zapierへのログイン

以下のリンクに進みます。

zapier.com

f:id:ueponx:20181025190747p:plain

今回はGoogleアカウントを使用してログインするので【Sign Up With Google】ボタンをクリックします。新規でアカウント作成してもいいでしょう。

クリックすると、「どのGoogleアカウントを使用するか」と、「利用許諾」のダイアログが表示されます。複数のアカウントを持っている人は以下のように表示されますので、使用するアカウントを選択してください。

f:id:ueponx:20181025093338p:plain

サインインするとZapierのホーム画面に遷移します。

トリガーの設定

以下の画面がZapierのホーム画面になります。

f:id:ueponx:20181025093557p:plain

ここからZapierの処理をつくっていくことになります。Zapierでは処理のことをZapと呼びます。新規にZapを作成するには画面内の【Make a Zap!】ボタンをクリックします。(画面内に複数のボタンがありますが、どれを選択しても同じことができます。)

f:id:ueponx:20181025104647p:plain

【Make a Zap!】ボタンをクリックすると以下のような画面に遷移します。この画面ではIFTTTなどのトリガーやアクションにあたるものの検索ができます。

f:id:ueponx:20181025192514p:plain

今回はSlackのチャンネルに書き込まれたことを検知したいので、【検索ボックス】にSlackと入力して検索を行いますが、検索ボックスに入力しようとすると検索候補のプルダウンにSlackが表示されるのでそこから選択しても大丈夫です。

f:id:ueponx:20181025193009p:plain

Slackと入力すると絞り込みが行われます。

f:id:ueponx:20181025193415p:plain

絞り込まれた中から【Slackの表示】をクリックします。すると、Slackに関連したトリガーの一覧が表示されます。ここでwindowを少し大きくすると設定画面が見やすくなるのでお勧めです。 複数のトリガーが表示されますが、その中から【New Message Posted to Channel】のラジオボタンをクリックします。 f:id:ueponx:20181026071249p:plain

これが、特定のチャンネルに新しいメッセージが書き込まれた場合の処理のトリガーとなります。 ラジオボタンをクリックしたら、【Save + Continue】ボタンをクリックします。

f:id:ueponx:20181026071135p:plain

するとSlackアカウントとの紐づけ画面に遷移します。紐づけを行うので【Connect an Account】ボタンをクリックします。

f:id:ueponx:20181026071622p:plain

新しくダイアログウインドウがひらいて、Slackワークスペースの選択画面が表示されます。

f:id:ueponx:20181026073608p:plain

現在ログイン中のワークスペースが選択されているかもしれませんが、ここで新規に選択することも可能です。その場合は、ダイアログウインドウの右上にプルダウンが表示されているのでそれをクリックし【他のワークスペースにサインインする】をクリックします。

f:id:ueponx:20181026073752p:plain

すると別のチャンネルの選択とサインインを行うことができます。ワークスペースのURLを入力し、続いてパスワードの入力も行います。

f:id:ueponx:20181026073859p:plain

これで、ワークスペースのログインができたので、Zapから行える操作の権限の確認をしてください。

f:id:ueponx:20181026074243p:plain

権限に問題がなければ画面下にある【許可ボタン】をクリックします。

f:id:ueponx:20181026074538p:plain

これでZapierからSlackを使用することができるようになりました。 ここで【Text】ボタンをクリックするとSlackへ接続チェックをおこなうことができます。

f:id:ueponx:20181026075323p:plain

問題なければ、であれば【Test】ボタンはグリーンになり【Success!」に表示が変化します。 無事成功したら、【Sava + Continue】ボタンをクリックします。

f:id:ueponx:20181026075543p:plain

次の設定に進みます。この画面ではMessageがポストされたチャンネルの指定とBotとの区別を行います。

f:id:ueponx:20181026075954p:plain

設定部分を拡大すると以下のようになります。

f:id:ueponx:20181026080109p:plain

Channelの設定のプルダウンをクリックすると自動的にSlackの接続情報からチャンネル名を補完してくれます。今回は監視するChannelをgeneralに設定することにします。ここは適宜自分の設定に合わせてください。

f:id:ueponx:20181026080138p:plain

Channelの設定が終わった次はBotからのメッセージに反応するかという設定になりますが、基本的にはnoのままで問題ないと思います。ここまで来たら下にある【Continue】ボタンをクリックします。

f:id:ueponx:20181026080223p:plain

これでSlack上にある情報を取得できるようになります。(存在しない場合や新規の場合にはなにも取得されず、デフォルトの値が帰ってきます。)情報を取得する場合には【Pull in Samples】ボタンをクリックします。今回はGeneralのチャンネルが空の状態で作成しましたので以下のような感じで情報を取得してきます。

f:id:ueponx:20181026080638p:plain

取得した情報のプルダウンをみると

f:id:ueponx:20181026080919p:plain

パラメータなどがデフォルトの値(?)になっているようです。 今回パラメータで必要になるのはメッセージをポストしたユーザ名と実際のポストしたテキスト文になります。

f:id:ueponx:20181026081134p:plain

アクションの作成

これまでの操作でトリガー部分(Slackの書き込み検知)はできたので、続いては通知部分になります。通知を行いたいのはYammerとなりますが。Yammerを使うには管理者権限が必要なため、一般ユーザーの自分には手も足もでなくなってしまいます。

ただ、Yammerのグループには電子メール経由の書き込みも対応しています。それを使用して、Slackで新しいポストがされたらメールを送り、送り先をYammerグループのメールアドレスに設定をする方針へ変更していきます。

画面の左下側にある【+Add a Step】ボタンをクリックします。

f:id:ueponx:20181026081359p:plain

するとボックスが広がり【Action・Search】機能が画面に表示されるので、それをクリックします。(ボタンぽくないです。)

f:id:ueponx:20181027073339p:plain

すると、画面右側がActionを行うアプリケーションの検索画面になります。

f:id:ueponx:20181027073643p:plain

そこで検索ボックスにカーソルを合わせると候補となるサービスがプルダウンに現れます。その中にGmailがあればそれを選択します。なければ検索ボックスにGmailと入力して選択を行ってください。

f:id:ueponx:20181027074009p:plain

Gmailを選択するとGmail側のActionの設定を行います。その中から【Send Email】のラジオボタンを選択します。

f:id:ueponx:20181027074221p:plain

ラジオボタンを選択すると以下のようになります。選択したら画面下にある【Save + Continue】ボタンをクリックします。

f:id:ueponx:20181027074434p:plain

すると今度はGmailアカウントとの紐づけの画面に遷移するので【Connect an Account】ボタンをクリックします。

f:id:ueponx:20181027074754p:plain

クリックするとどのGoogleアカウントのGmailかを選択することになります。(複数候補がある場合には以下のような画面になります。)候補の中からユーザ名を選択します。

f:id:ueponx:20181027074939p:plain

アクセスの許諾関係のダイアログが表示されるので許可される操作を確認して、【許可】ボタンをクリックします。

f:id:ueponx:20181027075029p:plain

するとGmailZapierが接続されます。ここで【Test】ボタンをクリックすると接続のチェックが行われます。

f:id:ueponx:20181027075321p:plain

クリックして無事に接続ができると【Test】ボタンは【Success!】ボタンに変化します。問題なければ【Save + Continue】ボタンをクリックします。

f:id:ueponx:20181027075526p:plain

【Save + Continue】ボタンをクリックすると以下のような画面に遷移します。ここではGmailを送信するための設定を行います。主に右側の部分に値を入力するので、その部分の画面を拡大してみます。

f:id:ueponx:20181027075831p:plain

まずは宛先(To)になります。ここではまずは自分自身に対してメールを送る設定にします。(設定が成功したら、後ほどYammerと同一のAD配下のメールアドレスにToのアドレスを変更します)

f:id:ueponx:20181027080044p:plain

宛先アドレスを手入力します。

f:id:ueponx:20181027084327p:plain

続いてはタイトル(Subject)になります。この項目は必須項目なので必ず入力してください。入力ボックスの右側にプルダウンのボタンがあります。

f:id:ueponx:20181027080113p:plain

プルダウンを行うとSlackから得られたデータが表示されるので

f:id:ueponx:20181027080252p:plain

その中からどのChannelでメッセージがポストされたかを示すチャンネル名を参照して、

【チャンネル名】に投稿がありました

というメールタイトルをつけることにしました。

f:id:ueponx:20181027080325p:plain

本文(Body)部分も必須項目になります。

f:id:ueponx:20181027080210p:plain

こちらもプルボタンを使って、Slackからユーザー名(User Name)、メッセージ(Text)を参照して

【ユーザー名】さんが以下のように投稿しました。  【メッセージ】

とすることにします。

f:id:ueponx:20181027080456p:plain

ここまで設定できたら、画面をスクロールさせて、【Continue】ボタンをクリックします。

f:id:ueponx:20181027080705p:plain

すると、Gmailを使った送信のテスト画面に遷移します。この部分でこれまで入力していたパラメータが表示されるので、確認して問題がなければ

f:id:ueponx:20181027084545p:plain

画面をスクロールさせて【Send Test To Gmail】ボタンをクリックします。

f:id:ueponx:20181027084655p:plain

するとテストメールが送信され、以下のような画面に遷移します。 送信に成功しているようです。問題がなければ【Finish】ボタンをクリックします。

f:id:ueponx:20181027092258p:plain

ここで送信されたを確認します。メール送信されたことが確認できます。(内容はデフォルト値なので意味不明になりますが、問題ありません)

f:id:ueponx:20181027095114p:plain

最後にこのZapに名前をつけ、アクティブ状態にするかの設定を行います。

f:id:ueponx:20181027092507p:plain

今回は「fromSlacktoYammer」という名前にして、ZapをOFF(停止状態)からON(動作状態)にします。

f:id:ueponx:20181027092856p:plain

これで設定は一旦終了となります。 (注)この時点ではGmailでメールを送信する部分のみなので、最後にYammerのグループへ通知する必要があるので覚えておいてください。 では、Slackに書き込みを行います。先程設定したのは#Generalチャンネルだったのでそちらに書き込んでみましょう。

f:id:ueponx:20181027095701p:plain

Slackに書き込むと設定した宛先にメールが送信されます。

f:id:ueponx:20181027095010p:plain

無事に設定と書き込みの内容も反映されています。

Yammerとの連携にむけて

※ 以降修正が入ります

基本的にはYammerへの反映を行うのは管理者権限が必要になりメッセージのポストなどは行なえませんが、Yammerにはグループごとのメールアドレスが存在しているのでそのアドレスへメールを送ることで書き込みができるようになります。ただしここで注意するのはYammerと同じ組織つまりAD配下のユーザのみがそのアドレスにメール送信できる点です。 そのため、Zapierなどの外部サービスから組織のドメインへのログインがでいない環境下ではZapierだけでは要件を満たすことができない状況になります。

そこで今回はやむを得ないのでZapierとFlowを連携させました。手順としては以下の様になります。

  1. Slackの書き込みを検知して、Gmailで自分自身(Gmailのメールアドレス)へメールを送信(Zapierでの設定)
  2. Gmailのメールボックスを監視して、該当するSubjectのメールを受信したら、Office365 OutlookからYammerのグループの持つメールアドレスにメールを送信(MicrosoftFlowの設定)

これを図示すると以下のようになります。

f:id:ueponx:20181109135335p:plain

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】をクリックします。すると…

f:id:ueponx:20181027104124j:plain

このグループに書き込むためのメールアドレスが表示されます。

f:id:ueponx:20181027104134j:plain

【重要】このメールアドレスをメモしておきます。このメールアドレスを先程のFlow送信先として設定することになります。

Microsoft Flowの設定

つづいて、```Microsoft Flowのページに移動します(ログインなど必要であればも行ってください)。左側のメニューから【マイフロー】を選択しクリックを行います。

f:id:ueponx:20181109122529j:plain

すると以下のように作成済みのフロー一覧が表示されます。

f:id:ueponx:20181109123105j:plain

画面上部の【新規】プルダウンを選択し、【一から作成】を選択します。

f:id:ueponx:20181109123258j:plain

以下のような画面になるかもしれませんが、出た場合にも【一から作成】ボタンをクリックします。

f:id:ueponx:20181109123436j:plain

すると以下のようなフローを作成する画面に遷移します。 今回は【Gmail】を使用してメールの検知をし、加えて【Office365 Outlook】を使用してメールの送信を行います。

f:id:ueponx:20181109124557j:plain

トリガーとなるGmailの受信検知を行います。

【コネクターとトリガーの検索する】入力ボックスにGmailと入力するか、すでに表示されている一覧にGmailを選択します。そしてトリガーの中から【新しいメールが届いたとき】を選択します。

f:id:ueponx:20181109124852j:plain

すると以下のような画面になります。

f:id:ueponx:20181109125017j:plain

設定のために詳細オプションを表示するのプルダウンをクリックして以下のように表示を変更させます。

f:id:ueponx:20181109125122j:plain

この設定で以下の部分を編集します。自分は矢印のように変更しました。

  • ラベル → INBOX(初期の受信ボックス)
  • 宛先 → Yammerと同じ組織下のOffice365Outlookのメールアドレス
  • 件名 → 【チャンネル名】にメッセージが投稿がありました

f:id:ueponx:20181109130357j:plain

設定が終わったら下の方にある【+ 新しいステップ】ボタンをクリックします。

トリガーの設定が終わったので、次はアクションを設定することになります。

【コネクタとアクションを検索する】入力ボックスでOffice365 Outlookを選択します。(入力でも、下のアイコンでもOK)

f:id:ueponx:20181109130714j:plain

するとアクションの一覧が表示されるので、その中から【メールの送信】をクリックして選択をします。

f:id:ueponx:20181109130910j:plain

すると以下のような画面に表示が変わります。

f:id:ueponx:20181109130944j:plain

設定項目の以下のものを設定します。自分は矢印のように変更しました。

  • 宛先 → 先程調べたYammerグループのメールアドレス
  • 件名 → 動的なコンテンツ内の【件名】
  • 本文 → 動的なコンテンツ内の【本文】

宛先の設定は手動の入力になりますが、件名と本文はトリガー側の情報を動的なコンテンツとして反映させることができます。入力ボックスの右下ぐらいに【動的なコンテンツの追加】というプルダウンがあるのでそれをクリックすればGUIから操作できます。

f:id:ueponx:20181109131512j:plain

Yammer側のテスト画面がキャプチャできていませんが、正常に動作していることは確認できています。

f:id:ueponx:20181109131525j:plain

f:id:ueponx:20181109131535j:plain

設定が完了すると以下のようになります。

f:id:ueponx:20181109131624j:plain

ここまできたら画面にある保存ボタンをクリックします。

f:id:ueponx:20181109131653j:plain

あとはこのフローを有効化すれば設定は完了となります。フローにもわかりやすい名前をつけておくと後々便利です。

おわりに

いちおうこれで目的を達成することができました。これまではIFTTTMicrosoft Flowの2つをメインに使用していましたが、Zapierも細かい処理(よりプログラミング的な印象)ができるのでいいのかなと思いました。

でもなんで業務側のPCでの通知設定うまくいかないんだろうか…自宅PCではこんなことはないのですが。

【追記】会社の環境辛すぎ