プログラマ38の日記

主にプログラムメモです。

Salesforce: レコードのフォローを自動化する

レコードのフォローを自動化するには、

ConnectApi.ChatterUsers.follow(String communityId, String userId, String subjectId)

を使います。

 

実際使ってみて気づいた点をメモしておこうと思います。

 

  1. 内部ユーザが外部ユーザのuserIdを指定できるが、外部ユーザが内部ユーザのuserIdを指定するとエラーとなる。
  2. communityIdは、userIdのユーザ種別に応じてセットの内容を変える必要がある。

 

1.内部ユーザが外部ユーザのuserIdを指定できるが、外部ユーザが内部ユーザのuserIdを指定するとエラーとなる。

レコードの新規作成時に対象のユーザ(内部ユーザとコミュニティユーザ)がレコードをフォローするというトリガを作りました。
内部ユーザがトリガを実行すれば正しく動作しますが、コミュニティユーザがトリガが実行すると「System.NoAccessException: アクセス権がありません: アクセス権がないため要求を実行できません。」が発生しました。

コミュニティユーザはそのユーザは参照できるように設定してもこのエラーは解消できませんでした。

外部ユーザが外部ユーザのuserIdを指定する場合はエラーになりませんでした。

 

2.communityIdは、userIdのユーザ種別に応じてセットの内容を変える必要がある。

内部ユーザのレコードのフォローを自動化するには、

ConnectApi.ChatterUsers.follow(null , 内部ユーザのID, レコードのID);

となります。

 

内部ユーザのレコードのフォローを自動化するには、

 

ConnectApi.ChatterUsers.follow(外部ユーザのコミュニティID , 外部ユーザのID, レコードのID);

となります。

外部ユーザのコミュニティIDは、ネットワーク(Network)オブジェクトから取得したものをセットします。

 

最後に

レコードのフォローの自動化は、様々な状況に対応させるには難しさを感じました。
例えば、社内ユーザに限定して動作させたりといったように用途を限定すれば比較的に簡単に使えそうだなと思いました。