やりたいこと
拡張メール機能を使うとSalesforceから送信したメールは活動タイムラインに記録されますが、フローからメールを送るとそれが記録されません。
フローからメールを送ったときでも活動タイムラインに送信ログが残るように設定していきます。
設定内容
全体の流れとしてはフローでアクションを使ってメールを送信した後、EmailMessageとEmailMessageRelationに直接レコードを生成することで活動タイムラインに載るようにします。
1. メールを送信する
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F200812%2Fa6c050fb-786c-60ee-8a01-ba13f5719fbb.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=4d578e02906ca45ffc410751bd0dea48)
2. EmailMessageオブジェクトにレコードを追加する
今送ったメールの内容をそのままEmailMessageオブジェクトにinsertする。
このとき作成したレコードIDを次のEmailMessageRelationオブジェクトのinsertの時に使用するため手動で変数を割り当て
にチェックを入れてレコードIDを保持しておく。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F200812%2F0c3b052d-3b48-55bc-a2d1-09d1cad3f938.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=64733b654c189535a982ef50c33b5b44)
3. EmailMessageRelationオブジェクトにレコードを追加する
2で取得したレコードIDをEmailMessageId
に、活動タイムラインと紐付けたいリードや取引先責任者のレコードIDをRelationId
に渡す。
RelationTypeは以下の選択肢の中から、リードや取引先責任者がメールメッセージと持っている関係性がなんなのかを定義する。
- ToAddress
- CcAddress
- BccAddress
- FromAddress
- OtherAddress
今回の場合はContactへのメールをToで配信してそのリレーションを持つという想定のためToAddressを選択。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F200812%2F5690c8da-de7f-4f0e-18a3-39c93703013f.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=dacc48998c387a9fccfd2cc0204f00f1)
完成
これで無事に活動タイムラインにフローからのメール送信ログを残せるようになりました。
この処理を直接書かなくても自動で記録されるようになるといいなぁ。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F200812%2F03146e10-a5ff-2732-0b4a-4229c79810ff.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=47b41a71473af24d30616531547d8a9d)
メール送信の処理を入れる都度、この処理を書き加えるのはナンセンスなので、この部分だけ切り出してサブフローにしておいた方が良いかもしれません。