tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:プロセスビルダーのChatter投稿機能でメンション先を動的に設定する方法

プロセスビルダーをつかえばワークフロールールと同じようにレコードの作成と更新時に処理を行うことができます。さらにワークフロールールではサポートしていなかったChatter投稿も行うことが可能です。Chatter投稿では特定のユーザにメンションを付けることも可能となっています。
f:id:tyoshikawa1106:20170323001913p:plain

f:id:tyoshikawa1106:20170323001928p:plain:w300


ですが実際にメンションを行う場合、動的に切り替えたいというケースが多々あると思います。そんなときは次のような書き方がサポートされています。

@[{![Contact].OwnerId}]

f:id:tyoshikawa1106:20170323002110p:plain:w300


こんな感じです。
f:id:tyoshikawa1106:20170323002441p:plain

f:id:tyoshikawa1106:20170323002455p:plain

利用時に注意すること

Name項目ではなくユーザIDを指定することでメンションとして認識される仕組みとなっています。数式のID文字列が認識されるかはちょっと確認してみませんが、おそらくサポートされるのやユーザの参照項目ぐらいだと思います。


所有者などユーザ項目の値にはコミュニティユーザを指定するケースもあると思います。
f:id:tyoshikawa1106:20170323003203p:plain


これで社内組織からレコード更新時に特定のコミュニティユーザにメンション通知できそうですが、実際に投稿された内容を見るとアクセス権限が付与されていないことがわかります。
f:id:tyoshikawa1106:20170323003450p:plain


Chatter投稿先をプロセスビルダーで指定していないためです。
f:id:tyoshikawa1106:20170323003533p:plain


もしかするとどこかで指定できるかもしれませんが、おそらくサポートされていないと思います。


社内ユーザがApexバッチなどで一括処理を行いその結果をコミュニティユーザにChatter経由で通知したい。と思ってもおそらくこの方法では対応できないと思います。(検証はしていませんが社内ユーザがコミュニティ組織に移動して処理を行えばもしかするとうまくいくかもしれません。)


またDEV環境で再現できなかったのですが、ユーザの参照項目をつかって動的にメンション指定する際にそのユーザがレコードのアクセス権限自体をもっていない場合、プロセスビルダーで認識されないと思われます。その結果、メンション指定されているのにユーザIDが存在しないことでシステムエラーが発生します。(再現しなかったのでもしかすると設定中にうっかりミスがあっただけかもしれませんが...) プロセスビルダーのシステムエラーメッセージは原因を確認しずらいので注意が必要です。