SalesforceフローでSlackへメンションしてメッセージを送る

SalesforceフローでSlackへメンションしてメッセージを送る

Slack のフローコアアクション「Slack メッセージを送信」を使ったフローの設定方法のご紹介です。
SalesforceフローでSlackへメンションしてメッセージを送る
74
SalesforceフローでSlackへメンションしてメッセージを送る
chirosuke
2023/02/03 11:39:26
前回は「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 の使い方>メッセージの書式とスタイル

・ユーザへメンションする

<@SlackユーザID>


・@here(チャンネル内のアクティブなユーザ)

<!here>


・@channel(チャンネルのメンバー全員)

<!channel>


・@everyone(#general チャンネルでのみ使用)

<!everyone>


・テキストを太字にする

*太字にしたいテキスト*


・テキストを斜体にする

_斜体にしたいテキスト_


・テキストに取り消し線を引く

~取り消し線を引きたいテキスト~


・引用にする

>引用文


・コードにする

`コード`


・コードブロックにする

```

1行目 

2行目

3行目

```


↑上記の書式を全部設定して、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にした場合は、このような感じになります。


おわり

gilde tech(for Salesforce)」に入会しませんか?
登録すると、「gilde tech」に掲載されているSalesforceのノウハウを全部閲覧できるだけでなく、自分が知っている知識を発信し、他の会員と交流することもできます。
またSalesforceの知識習得に役立つイベント情報も得ることができます。
是非ここで得た知識を業務に活かしてください!
74
コメント