前回は「SalesforceからSlackへメッセージを送信するフロー」を検証するために行った、SalesforceとSlackの接続設定についてご紹介いたしましたが、今回は初期設定完了後のフローの設定についてご紹介いたします。
ご相談があったフローについては、「
Slack宛てにメッセージを送信するレコードトリガフローを設定したが、トリガしたユーザ宛てのメンションだと自分宛のメンションでSlackの通知がならない」というものでしたので、今回のサンプルフローはご相談者の要件に寄せて
「
ToDoのアラーム設定した日時にSlackで割り当て者へメンションで通知する」で設定してみます。
この要件は以前の記事でもご紹介した「
ToDoのアラーム通知をモバイルアプリでも通知させたい」のSlack通知バージョンです。
ユーザ情報にSlackメンバーID情報を追加
Slackへ通知する際にダイレクトメッセージにしたり、メンションするのにSlackのメンバーIDが必要になります。
個人設定の「Slack ユーザの対応付け」に接続したワークスペースのIDとSlackユーザのIDが表示されているので、こちらの情報を使用できないかと取得方法を探してみたのですが、見つからなかったため、ユーザにカスタム項目を作成して、そちらにSlackのメンバーIDを格納する方法でご紹介いたします。
取得方法などご存じの方がいらっしゃいましたら、コメントなどで教えていただけると嬉しいです。
1.ユーザオブジェクトへSlackIDを格納するカスタム項目を作成します。
2.SlackからメンバーIDの一覧を取得します。
①Slackの左上のワークスペース名をクリックし、[設定と管理] → [メンバーを管理する]の順で開きます。
②[メンバーリストをエクスポートする]をクリックします。
③Slackbotからメッセージが届きCSVファイルが添付されていますので、こちらをダウンロードします。
CSVファイルにはemail、user id等があります。
④レポートやデータローダ等でエクスポートしたSalesforceのユーザ情報と、③でダウンロードしたCSVファイルを使用して、インポートファイルを作成し、データローダ等でユーザ情報を一括更新します。
サンプルのワークスペースのように人数が少ない場合は、1件ずつ手入力してもOKです。
カスタム表示ラベルの作成
こちらはSlackのメッセージにToDoレコードのURLを挿入するために、組織のURLを登録する設定です。メッセージにレコードのURLを挿入されない場合や、すでに作成済みの場合はこの作業はスキップしてください。
ご参考:
カスタム表示ラベルでテンプレートのURLを管理する1.[設定] から、[クイック検索] で「カスタム表示ラベル」を検索し、[カスタム表示ラベル]をクリックします。
2.[新規カスタム表示ラベル]をクリックし値に組織のURLを入力します。
フローの設定
※こちらのフローの設定方法は、Slackへ
Salesforceが構築したアプリをインストール済みが前提となります。
Slackが構築したアプリしかインストールしていない場合はこちらの「
フローコアアクション: [通知の送信] アクション」しか使えないと思います。こちらのアクションではアプリの実行者を設定できませんでした。
設定画面はこんな感じです。
Salesforce for Slackのインストール手順については、前回の記事「
Salesforce for Slackの接続設定をしてみる」等をご確認ください。
それでは、フローの設定を紹介いたします。
1.[設定] から、[クイック検索] で「フロー」を検索し、[フロー]をクリックし[新規フロー]ボタンをクリック、または、設定ホームの[作成▼]の「フロー」をクリックします。
2.「レコードトリガフロー」を選択し、以下のように開始を設定します。
・
オブジェクト:ToDo
・
フローをトリガする条件:レコードが作成または更新された
・
エントリ条件を設定:
[条件の要件] すべての条件に一致(AND)
項目 | 演算子 | 値 |
IsReminderSet(アラーム設定) | 次の文字列と一致する | True |
・
更新されたレコードでフローを実行するタイミング:条件の要件に一致するようにレコードを更新したときのみ
・
フローを最適化:アクションと関連レコード
3.[開始]の「+スケジュール済みパスを追加(省略可能)」をクリックし、以下のように設定します。
・
時間取得元:Task: アラーム日付/時間
・
オフセット数:0
・
オフセットオプション:オフセット数0の場合はどれでもOK
ちなみに今回のサンプルの要件では「スケジュール済みパス」となっていますが、「即時実行」でSlackのアクションを使用すると保存時に「
この要素をフローから削除するか、スケジュール済みパスに移動してください。レコードトリガフローは、即時実行されるパスで外部コールアウトを行うアクションを実行できません。」とエラーメッセージが表示されます。
検証のため、スケジュール済みパスで即時実行と同じ状態(時間取得元を「○○が作成または更新されたとき」を使用)になるようにパスを設定した際は、エラーなく保存でき、フローも実行されました。
4.左側のツールボックスを表示して、マネージャの[新規リソース]をクリックし、以下のように設定します。
【割り当て先のSlackメンバーIDを格納するテキスト変数】
・
リソース種別:変数
・
データ型:テキスト
【通知文のテキストテンプレート】
レコードの情報を使用しない一律のメッセージで良い場合は、こちらのリソース作成は不要です。
・
リソース種別:テキストテンプレート
・
種別:プレーンテキストとして表示
・
本文:※こちらは自由にご入力ください。また、先に「プレーンテキストとして表示」にしておかないとタグが挿入されてしまうのでご注意ください。
<@{!var_SlackID}>さん! :alarm_clock:*ToDoアラーム* >件名:{!$Record.Subject} >期日:{!$Record.ActivityDate} >レコードリンク:{!$Label.OrgURL}{!$Record.Id} |
サンプルのメッセージで使用したマークアップも含めて使いそうな書式を紹介いたします。
Slackメッセージの書式を適用するには、赤字の箇所をテキストに追加してください。
ご参考:
Slack ヘルプセンター>Slack の使い方>メッセージの書式とスタイル・ユーザへメンションする
・@here(チャンネル内のアクティブなユーザ)
・@channel(チャンネルのメンバー全員)
・@everyone(#general チャンネルでのみ使用)
・テキストを太字にする
・テキストを斜体にする
・テキストに取り消し線を引く
・引用にする
・コードにする
・コードブロックにする
↑上記の書式を全部設定して、Slackに送信したものがこちらの画像です。
・絵文字を追加する
上記の本文のサンプルのように絵文字の名前「
:alarm_clock:」を入力するだけですが、こちらの画像のように「:目覚まし時計:」で入力すると絵文字として表示されません。
コードブロックにするアイコンをクリックすると、絵文字の名前が確認できます。
他に方法があるかもしれませんが、Slackに詳しくないのでこちらの方法でのご紹介ですみません。
5.[アラーム日時](3.で設定したパスの表示ラベル)の下の⊕から[割り当て]を追加し、以下のように設定します。
・変数値を設定
変数 | 演算子 | 値 |
var_SlackID (4.で作成した変数を選択) | 次の文字列と一致する | $Record > 割り当て先 ID (User) > Slack ID |
6. [割り当て]要素の下の⊕から[アクション]を追加し、以下のように設定します。
・
アクション:Slack メッセージを送信
Slack の接続値を設定
・
Slack アプリケーション:Salesforce for Slack(接続しているアプリ)
・
Slack ワークスペース:上記アプリケーションと接続しているSlackワークスペースを選択
・
アクションの実行者:Slack アプリケーション
Slack メッセージの詳細を設定
・
Slack の会話 ID:
[個人へダイレクトメッセージの場合] → {!var_SlackID}(4.で作成した変数)
[チャンネルの場合] → チャンネルIDを入力(確認の仕方はアクション入力画面の後にあります)
・
Slack メッセージ:{!text_message}(4.で作成したテキストテンプレートまたはテキストを直接入力してください)
チャンネルIDの調べ方【URLから】
チャンネルを選択して、アドレスバーの右側のID(図の赤枠)がチャンネルIDです。
【チャンネル情報から】
①チャンネルでマウスの右クリック → 「チャンネル詳細を表示する」をクリックします。
②開いたチャンネル情報の一番したでIDを確認することができ、アイコンをクリックでIDをコピーできます。
7.フローを[保存]、 デバッグで確認します。
スケジュール済みパスでデバッグを行う場合は[デバッグ実行のパス]を設定したパスに変更します。※実際にSlackへ通知がいきますので、トリガレコードの選択にはご注意ください。
8.最後にフローを [有効化]にします。
【結果確認】
アラーム設定付きのToDoを登録してみます。アラーム設定日時は「
2023/2/2 14:00」です。
ちなみに、[設定]の「時間ベースのワークフロー」からキューに入っているか確認することができます。
「予定日」列の日時がアラーム設定日時の「
2023/2/2 14:00 」になっていることも確認できます。
ToDoの状況を「完了」にすると、アラーム設定が解除されるため、「時間ベースのワークフロー」で確認できたキューも削除されます。
Slack通知確認のため、再度、「
2023/2/2 14:00 」でアラームを設定します。
Salesforce for Slackからのメッセージでちゃんと通知が来ました。
また、フロー設定の6.の「Slack の会話 ID」をチャンネルIDにした場合は、このような感じになります。
おわり