salesforce零基礎學習(九十三)Email To Case的簡單實現
Salesforce提供了標準的功能來實現通過Email 創建 Case。我們可以設置指定的路由的地址,指定條件的郵件會自動生成到目標salesforce系統的Case數據。Salesforce提供了兩種類型的Email To Case的實現,一種是On-Demand Email-to-Case,另外一種是 Email-to-Case。On-Demand Email-to-Case可以允許你單獨使用salesforce便可以將郵件轉換成Case,Email-to-Case要求允許你使用Salesforce.com和你的郵件系統去實現。針對這兩種類型需要有不同的實現的步驟。
一. On-Demand Email-to-Case
使用 On-Demand Email-to-Case方式有以下的步驟去實現Email創建Case。
1.在你的郵件系統中定義Case提交的郵箱地址;
2.創建路由的地址,這個地址包括了Case定義的地址;
3.配置你的郵件系統轉發Case提交到Email Services 地址,這個地址由Salesforce提供;
4. 其中 On-Demand Email-to-Case。
我們通過一個實例來配置實現這個操作。
1. 啟用以下紅框的內容。
2.當保存以後下面有一個關聯列表Routing Addresses,選中picklist名稱為Email2Case然後點擊New新建一個Routing Address
3. 填寫指定的內容,其中Email Address為你的源地址,這個地址的指定的郵件會生成到salesforce生成Case,如果你指定Case Owner則通過此路由生成的Case數據的Case Owner為你設置的用戶,否則為系統設置的默認的case owner,選擇Case Origin為Email保存即可。
4. 這個時候的Routing Address還沒有生效,需要去驗證郵箱地址,點擊Verify按鈕系統會給目標郵箱發送郵件讓去verify,verify以後我們便可以使用salesforce自動生成的email service address去配置轉發功能了。
去配置的賬號會收到一封salesforce的郵件,點擊confirm的link便可以進行授權,授權以後剛才創建的Routing Address的狀態便會變成Verified。
5. 去郵件系統中配置轉發功能,我demo中配置的是163的郵箱,所以登陸我的163賬號以後,點擊上方的設置,選擇常規設置,左側選擇來信分類,然後新建一個來信分類。設置什麽條件下系統郵件會轉發到目標的email service address,這裏設置主題包含Case的郵件便會轉發,點擊轉發到其他郵箱按鈕,填寫郵箱地址為上面的email service address保存即可。
測試:發送給目標的郵件地址,主題中包括Case
Salesforce系統中便會出現一條Case信息
二. Email-to-Case
上面的方式如果能搞定肯定首選上面的方式,因為減少了定制的成本。但是有的時候標準的功能可能實現不了功能,比如當客戶重復發送同樣的Case內容會在系統中生成相同的Case,但是其實我們只需要使用其中一個進行追蹤以及服務,上面的方式便會在系統中生成多條。又比如我們希望指定的情況要assign給不同的人或者指定的情況我們需要更新不同的Case字段,再或者我們需要發送10M+的附件,但是標準的On-Demand方式只支持10M附件,這個時候便需要使用apex進行定制化開發。
對於Apex email service domain 接收的每封電子郵件,Salesforce都會創建一個單獨的InboundEmail對象,其中包含郵件的內容以及郵件的附件。當我們想要通過Email-to-Case方式實現,需要實現以下的步驟。
1. 先實現Messaging.InboundEmailHandler接口去處理一個inbound的郵件信息。
下面的demo很簡單,只是針對郵件發送的內容去插入生成Case,如果有別的特殊邏輯,可以在裏面自己增強。
1 global class Email2CaseHandler implements Messaging.InboundEmailHandler{ 2 global Messaging.InboundEmailResult handleInboundEmail(Messaging.inboundEmail email,Messaging.InboundEnvelope env){ 3 Messaging.InboundEmailResult emailResult = new Messaging.InboundEmailResult(); 4 Case case4Insert = new Case(); 5 if(String.isNotBlank(email.subject) && email.subject.contains(‘Case‘)) { 6 case4Insert.subject = email.subject; 7 } else { 8 case4Insert.Subject = ‘No subject from Email‘; 9 } 10 if(email.plainTextBody != null) { 11 case4Insert.Description = email.plainTextBody; 12 } 13 if(email.htmlBody != null) { 14 case4Insert.Description = email.htmlBody; 15 } 16 try { 17 insert case4Insert; 18 List<Messaging.InboundEmail.BinaryAttachment> binaryAttachmentList = email.binaryAttachments; 19 List<Attachment> attachmentList = new List<Attachment>(); 20 for(Messaging.InboundEmail.BinaryAttachment binaryAttachment : binaryAttachmentList) { 21 Attachment attachment = new Attachment(); 22 attachment.Body = binaryAttachment.body; 23 attachment.Name = binaryAttachment.fileName; 24 attachment.ParentId = case4Insert.Id; 25 attachmentList.add(attachment); 26 } 27 insert attachmentList; 28 emailResult.success = true; 29 } catch(Exception e) { 30 emailResult.success = false; 31 emailResult.message = e.getMessage(); 32 } 33 34 return emailResult; 35 } 36 }
2. 配置Email Services: 在setup處搜索 Email Services,新建一個Email Service,輸入主要的內容然後保存。
3. 配置Email Address:輸入主要的信息,保存後系統會自動生成一個Email Address.
4. 按照之前上面的步驟配置轉發的地址即可。
測試:我們給配置的郵件中發送了包含了Case的subject,則會在系統中生成這條Case記錄
總結:當我們要求的不高,可以使用 On-Demand方式實現可以考慮使用此種方式實現,因為這種成本比較低。如果搞定不了或者希望更加靈活的處理可以考慮Email Service的Email-to-case方式。篇中很多配置沒有詳細講解,感興趣的可以自行查看文檔。篇中demo的apex class邏輯也過於簡單,感興趣的可以自己優化。本篇只是針對email to case淺入淺出。感興趣的也可以針對第二種方式實現 email to contact, email to lead 等等。篇中有錯誤的地方歡迎指出,有疑問的地方歡迎留言。
salesforce零基礎學習(九十三)Email To Case的簡單實現