• 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 等等。篇中有错误的地方欢迎指出,有疑问的地方欢迎留言。

  • 相关阅读:
    PerfDog携手Imagination,助力开发者获取GPU关键数据
    WeTest云手机升级,支持iOS 15全新系统
    洞穿性能测试痛点,PerfDog以提升应用和游戏的品质为使命
    使用xmlhttprequest遇到CORS报错的处理
    Hive的联级(cascade)-新增字段(column)后,旧分区无法更新数据问题
    数据异常检测入门
    Linux查看文件或文件夹大小: du命令
    k8s pod自动重启原因(jvm内存设置)
    计算容器运行至今多长时间
    期刊论文在线投稿审稿系统day1数据库设计
  • 原文地址:https://www.cnblogs.com/zero-zyq/p/10503083.html
Copyright © 2020-2023  润新知