
Salesforce フローコアアクションを利用してSlackへメッセージを送信してみた
こんにちは、co-meetingにてエンジニアしているハナミズキです。
先日11月9日(水)に開催した「ゆるっとSalesforceトーク #11」ではSalseforceのニュース記事から「Salesforce Introduces New Low-Code Developer Tools to Bring Salesforce Apps and Automations into Slack」について取り上げさせていただきました。
この記事では、イベントで紹介した内容をベースに、SalesforceのフローからSlackにメッセージを送信する環境の作り方を紹介したいと思います。
なお、Salesforceのカレンダー | Advent Calendar 2022 - Qiita の季節だったのでカレンダー2 第19日目の投稿としました。
はじめに
今回のネタはSalesforceフローとSlackの連携機能の話です。
今年の春にSalesforceとSlackの連携に関する情報がリリースされ、Summer、Winterと機能が拡充されている機能になります。大きく分けて以下の2つの機能を含んでいます。
フローからSlackへ通知する
Slack上で画面フローを動かす
この記事は「フローからSlackへ通知する」仕組みについて、Salesforce フローコアアクションを利用してSlackへメッセージを送信する方法について紹介しています。
「Slack上で画面フローを動かす」仕組みについては、以下の記事を参考にしてください。
セットアップ方法
Salesforce組織の設定を開き「クイック検索」にて「Slack」と入力すると「Slackの初期設定」メニューが出てきます。基本的にこちらの管理画面に従ってセットアップを進めます。

「Salesforceのフロー」と「Slack」の連携セットアップの流れ
契約条件に同意
Salesforce 用 Slackアプリケーションを有効化
Salesforce Slackアプリケーションの権限とユーザの割り当て
アプリ「Salesforce for Slack」をSlackへインストール
1.契約条件に同意
Slack の初期化設定「Salesforce 用 Slackアプリケーションを有効化」セクションを読み「同意済み」に状態を変更してください。

2.Salesforce 用 Slackアプリケーションを有効化
フローと連携するだけなら、こちらは何もせずに「Slackアプリケーションの選択を完了しました。」にチェックをいれるだけでOKです。それ以外を触る場合は指示に従ってください。

3.Salesforce Slackアプリケーションの権限とユーザの割り当て
フローと連携するだけなら、「Salesforce を Slack に接続」「フローの実行」のシステム権限だけでOKです。
それ以外を触る場合は指示に従ってください。例えば、「Slack Sales ユーザ」権限などは、事前にSlack の初期化設定「Salesforce 用 Slackアプリケーションを有効化」セクションにて「Sales Cloud for Slack」を有効化しなければ表示されないシステム権限であるため、ご注意ください。



4.アプリ「Salesforce for Slack」をSlackへインストール
フローと連携するだけなら「Salesforce for Slack をインストール」を実施するだけでOKです。

「Salesforce for Slack の掲載」ボタンをクリックします。

「Slack に追加」ボタンをクリックします。

スクロールして、「GET SALESFORCE FOR SLACK APP」ボタンをクリックします。

「接続」ボタンをクリックします。

インストールするSalesforce組織の権限を持ったユーザでログインします。
対象ログインユーザに「Salesforce を Slack に接続」権限を付与していなければエラーメッセージ「Slackforce 組織にこの Slack アプリケーションにアクセスする権限がありません。 Salesforce システム管理者にお問い合わせください。」が発生しますので、このようなエラーメッセージが出た際は、ユーザの権限を見直してください。

Slackワークスペース環境に対するアクセス許可の設定をします。「許可する」ボタンをクリックします。

Salesforce組織側に対するアクセス許可の設定をします。「許可する」ボタンをクリックします。
以上で「Salesforceのフロー」と「Slack」の連携に必要な初期設定が完了です。
早速フローを作って挙動確認してみましょう。
Salesforce フローコアアクションを利用してSlackへメッセージを送信するフローを作成する
SalesforceからSlackへメッセージを送信するフローを作ってみます。
利用するフローのコアアクション
画面フローを作成して埋め込む
以下のような画面フローを作成します。

まずは、送信するメッセージを登録する画面を作ります。

次に、コアアクション「Slackメッセージを送信」アクションを作ります。

各項目値の詳細は、以下の公式ヘルプサイト(help.salesforce.com)を参照してください。
> Slack のフローコアアクション: Slack メッセージを送信
作成した画面フローに名前をつけて保存します。あとは実行してみます。
今回は画面フローを埋め込んで、「送信テスト、SalesforceからSlackへメッセージを投稿!」と入力して送信してみましたが、Slackにメッセージが送信できる事が確認できました。

メンションをつけてメッセージを送信する方法について
以下のキーワードをつけてメッセージを送信するとメンションをつけて送信できます。
・<@user_id> 特定の個人に通知したい場合
・<!here> チャンネル内の現在オンラインのメンバー全員に通知したい場合
・<!channel> チャンネル内のメンバー全員に通知したい場合
※user_id については、Slackでメンションしたいユーザのプロフィールを開き、メニューから「メンバーIDをコピー」で取得できます。(例:メンバーIDがU043VCRE7B4の場合は、送信文字列を"<@U043VCRE7B4> 送信したい文字列"と指定する事でメンション付きメッセージが送信できます。)
参考: https://api.slack.com/reference/surfaces/formatting
所感
SalesforceからSlackにメッセージを投稿する仕組みは、簡単に実装できました。
しかし、公式ドキュメントに書いていない制約がありました。
今回、使い方を調査するにあたって、条件さえ満たせば、[画面フロー]でも[レコードトリガフロー]でも、[自動起動フロー]でも使うフローにはあまり制限なさそうと感じました。…が、軽い気持ちで「Slack のフローコアアクション: メッセージを送信してフローを起動 (ベータ)」を利用して登録された[画面フロー]の中に、コアアクション「Slack のフローコアアクション: Slack メッセージを送信」を含めたところ、予期せぬエラーが発生しました。
これは現時点での制約なのだろうと考えられます。
現在Flow in Slackがベータ版であることを加味して、後々解決されるのかなと期待しています。
そのほか未来に期待したいこととして、Slackの投稿するチャンネル一覧を検索・取得する事ができるようなコアアクションが追加されたら、投稿先を選んでメッセージを投稿するような画面フローを作り込むことができそうです。そんなコアアクションが追加されないかなと感じました。
利用可能なSlackのフローコアアクションは、今回紹介したもの以外にもあります。それぞれマニュアルが用意されているため実際にどんなことが他にもできるのか/できないのか理解を進めていく必要がありそうです。
最後に、SlackでSalesforceの画面フローを呼び出す方法が気になる方は、こちらを参照してください。
SlackでSalesforceの画面フローを呼び出してみた(Flow in Slack)<<記事公開後に、プレビュー表記に変更します>>>>
以上です。
今回紹介した内容が皆様の助けになれば嬉しいです。
ではでは!