tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:Chatter Message Triggerの使い方

Spring'15からChatterMessageのトリガが作成できるようになりました。NGワードを判定したり、送信者にToDoを作成したりといった使い方ができると思います。

f:id:tyoshikawa1106:20150213212453p:plain


ChatterMessageのトリガを開発するにはプロファイルのシステム管理者権限にある『Chatter メッセージの管理』権限が必要になります。

f:id:tyoshikawa1106:20150213212714p:plain:w300


権限のあるユーザのみ設定から『Chatter メッセージ トリガ』にアクセスできます。

f:id:tyoshikawa1106:20150213212858p:plain


権限があれば開発者コンソールなど通常のトリガと同じ手順で開発できます。

サンプルコード

Chatter Message Trigger Sample

※Gistへのリンクです。

ChatterMessageオブジェクトについて

ChatterMessageトリガはSpring'15から作成できるようになりましたが、ChatterMessageのオブジェクトは以前から存在していました。


次のような構成となっています。


重要なのはChatterMessageとChatterConversationMemberの2つだと思います。ChatterMessageオブジェクトで送信者や送信日、メッセージの内容などの情報を持っています。


ChatterConversationMemberの方ではMemberIdという項目で送信相手のIDを持っています。ChatterMessageとChatterConversationMemberはConversationIdという項目で紐付いていました。

(ConversationIdで紐付いているのでサブクエリで取得できるかと考えたのですが、上手く行きませんでした。)


オブジェクトなのでSOQLを実行して参照することも可能です。

SELECT Id,ConversationId, SentDate, Body FROM ChatterMessage

f:id:tyoshikawa1106:20150213214210p:plain


更新はできないみたいですが削除は可能みたいです。
f:id:tyoshikawa1106:20150213214330p:plain

delete [SELECT Id, ConversationId, SentDate, Body FROM ChatterMessage]

f:id:tyoshikawa1106:20150213214628p:plain

f:id:tyoshikawa1106:20150213214636p:plain


こんな感じでChatterMessageオブジェクトにアクセスできるので、ChatterMessageトリガのテストクラスを作成するには、他のオブジェクトと同じようにINSERTでテストできるかと思っていました。


残念ながらこのオブジェクトはINSERTによるレコード作成は許可されていないみたいです。ChatterMessageのテストデータを作成するにはChatter in Apexを利用する必要があるみたいです。