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