#Salesforce の活動報告を #Slack にDMでプッシュしてフォームから情報を投稿させるフローの実装
今回のミッション
Salesforceの活動オブジェクトに入れた活動が終わったタイミングで、Slack上にメッセージを送り、活動結果の入力を行うための入力フォームを送ってデータ入力してもらいたい
手順
入力フォーム用の画面フローを作る
フローからSlackにメッセージを送信する
入力フォーム用の画面フローを作る
なにはともあれSlackからの入力画面を作らねばなりません。これはSalesforceの画面フローを使って構成することができます
なにはともあれお約束のrecordIdを変数に加えましょう。入力で使用可能にしないと変数を受け取れません
このrecordIdを元に、Eventオブジェクトを取得しましょう
一旦簡単に画面を作ります
画面フローに入力したDescriptionを使ってEventレコードを更新します
保存ができたら、Slackの画面も更新します
これで画面フローは完成です。素晴らしい!
フローからSlackにメッセージを送信する
フロートリガーエクスプローラーってのができたので、この非同期に実行というところから新規フローを作成してみました。通常通りの作成方法でも問題ないです(レコードトリガーフローを使ってください)
スケジュール済みパスと言うところに編集リンクがあるのでそれをクリック
すると、追加ボタン(+)があるので、そこからこんな感じの条件で設定します。
終了時刻に実行されるようにしました。
アクションで先程の画面フローを選択しましょう
こんな感じです
Slackアプリケーションが表示されない場合は、こちらの記事を参照してアプリのインストールとSalesforceの接続を終わらせてください。そうすることで選択できるようになります
SalesforceのユーザーにSlackのユーザーIDを登録してください
弊社の場合は、SalesforceのユーザーオブジェクトにSlackIDを格納しているので User.SlackID__c でユーザーのSlackIDが取得できます。
本当は皆さんにこれをやってほしい。これが無いと、Slack側で通知が起こらないんですよね。
Slackの会話IDにSlackのユーザーIDを割り当てると、Sales Cloud for SlackからDMでメッセージが届きます
送信時のメッセージはこんな形にしましたが、なにか付帯情報を付けたい場合は適宜入れ込んでください。
そういうわけで、実行してみましょう。
予定を作ってみました。
デバッグをすれば即時実行でテストができます。
パスを、終了したら実行のパスを選んで実行しましょう。
DMで連絡がくればOKです。
結果を登録ボタンを押してみましょう
レコードを開いてみると
ちゃんと保存されていました
画面フローの完了画面を少しアレンジしました
これで入力ウィンドウが更新されます
もうひと工夫:チャンネルにpostしましょう
Slackから保存できるだけだともったいないので、これをチャンネルにもpostしましょう。
画面フローの最後にSlack投稿用のアクションを追加してください
まずはSlackメッセージ送信用のメッセージテンプレートを作成します
これをアクションに追加しましょう
Slackの会話IDは、先程とは違って特定のチャンネルIDにしましょう。
先程は、その人への通知なのでDMで良かったのですが、投稿内容をシェアするという用途を考えるとチャンネルに投稿すべきです。
チャンネルIDはこちらから取得します
こうすると、こんな流れになります。
時間がくるとDMでメッセージが流れてくるのでボタン押す
モーダルが開くのでコメントを登録する
保存されると、Slackに投稿する画面になるので、ボタンを押す
Slackに投稿するボタンを押すとチャンネルにメッセージが流れる
うまくいかなかったこと
↑の最後の部分なのですが、ボタン押さずにチャンネルに投げようと思ったらエラーがでてできませんでした。なぜなのか…。
サポートに投げてみようと思います。
サポートから返事がありました
そういうことか!1トランザクションでの実行は出来ないのでボタンを押すしかなさそうですね。
noteにはこれまでの経験を綴っていこうかと思います。サポートによって思い出すモチベーションが上がるかもしれない。いや、上がるはずです。