EmailTemplateSelector インターフェース
Support.EmailTemplateSelector インターフェースでは、ケースフィードのデフォルトのメールテンプレートを指定できます。デフォルトのメールテンプレートを使用すると、ケース発生源や件名などの条件に基づいて、指定したメールテンプレートがケースに事前に読み込まれます。
名前空間
デフォルトのテンプレートを指定するには、Support.EmailTemplateSelector を実装するクラスを作成する必要があります。
このインターフェースを実装する場合は、パラメータのない空のコンストラクタを用意します。
EmailTemplateSelector の実装例
これは、Support.EmailTemplateSelector インターフェースの実装例です。
getDefaultEmailTemplateId メソッドの実装で、指定したケース ID に対応するケースの件名と説明を取得します。次に、ケースの件名に基づいてメールテンプレートを選択し、メールテンプレート ID を返します。
1global class MyCaseTemplateChooser implements Support.EmailTemplateSelector {
2 // Empty constructor
3 global MyCaseTemplateChooser() { }
4
5 // The main interface method
6 global ID getDefaultEmailTemplateId(ID caseId) {
7 // Select the case we're interested in, choosing any fields that are relevant to our decision
8 Case c = [SELECT Subject, Description FROM Case WHERE Id=:caseId];
9
10 EmailTemplate et;
11
12 if (c.subject.contains('LX-1150')) {
13 et = [SELECT id FROM EmailTemplate WHERE DeveloperName = 'LX1150_template'];
14 } else if(c.subject.contains('LX-1220')) {
15 et = [SELECT id FROM EmailTemplate WHERE DeveloperName = 'LX1220_template'];
16 }
17
18 // Return the ID of the template selected
19 return et.id;
20 }
21}次の例では、上記のコードをテストします。
1@isTest
2private class MyCaseTemplateChooserTest {
3
4 static testMethod void testChooseTemplate() {
5
6 MyCaseTemplateChooser chooser = new MyCaseTemplateChooser();
7
8 // Create a simulated case to test with
9 Case c = new Case();
10 c.Subject = 'I\'m having trouble with my LX-1150';
11 Database.insert(c);
12
13 // Make sure the proper template is chosen for this subject
14 Id actualTemplateId = chooser.getDefaultEmailTemplateId(c.Id);
15 EmailTemplate expectedTemplate =
16 [SELECT id FROM EmailTemplate WHERE DeveloperName = 'LX1150_template'];
17 Id expectedTemplateId = expectedTemplate.Id;
18 System.assertEquals(actualTemplateId, expectedTemplateId);
19
20 // Change the case properties to match a different template
21 c.Subject = 'My LX1220 is overheating';
22 Database.update(c);
23
24 // Make sure the correct template is chosen in this case
25 actualTemplateId = chooser.getDefaultEmailTemplateId(c.Id);
26 expectedTemplate =
27 [SELECT id FROM EmailTemplate WHERE DeveloperName = 'LX1220_template'];
28 expectedTemplateId = expectedTemplate.Id;
29 System.assertEquals(actualTemplateId, expectedTemplateId);
30
31 }
32}