如何解决如何按需捕获由电子邮件转个案创建的重复个案?
我正在尝试为我的组织实施简单的电子邮件转个案(按需)工作流程。我们的运营经理担心的一个问题是,我们的客户倾向于将他们的“紧急”问题发送到我们多年来他们似乎已经了解的几个不同的电子邮件地址,因为他们认为谁先看到它就会解决他们。我知道,我知道,首先是我们为他们提供多个联系点的错。我们的运营团队不知何故有 14 个不同的电子邮件地址,客户可以通过这些电子邮件地址联系他们,这很愚蠢,但已经完成了。我离题了...
当然,问题是每个地址都将连接到按需电子邮件转个案,我已经确认,当您向其中几个地址发送一封电子邮件时,它会创建多个个案自己的案例和线程 ID。我想“没问题,我会写一个触发器来删除重复的案例”,但像往常一样,Salesforce 没有什么是容易的。这是我的逻辑:
这是应该完成的代码:
trigger DeleteCaseIfDuplicate on Case (after insert) {
for (Case c : Trigger.new) {
if (c.Origin == 'Email') {
DateTime createdminus = c.CreatedDate.AddSeconds(-30);
List<EmailMessage> messages = new List<EmailMessage>();
messages = [SELECT Id,ParentId,RelatedToId,Subject,FromAddress FROM EmailMessage WHERE (Subject = :c.Subject AND MessageDate > :createdminus)];
if (messages.size() > 1) {
delete c;
}
}
}
}
这看起来非常简单,这正是我想要的,但是当我尝试触发此代码时,出现“尝试取消引用空对象”错误。通常,我可以弄清楚这一点,但它告诉我它在第 0 行遇到错误,所以我什至不知道从哪里开始查找。我试过在插入之前和之后触发。
也许我在这里出卖了我的经验不足,但是这段代码有什么问题?我可以在创建案例之前拦截 EmailMessage 本身并告诉它删除自己吗?有一个更好的方法吗?此处是否有最佳实践?如果有,它们是什么?
解决方法
@亚当
我在启用电子邮件到案例的情况下在沙箱上尝试了该脚本。我在某些地方修改了它并为我工作 -> 发送了两次相同主题的电子邮件,另一个案例被删除。
trigger DeleteCaseIfDuplicate on Case (after insert) {
for (Case c : Trigger.new) {
// added check c.origin is not null
if (c.Origin <> null && c.Origin == 'Email') {
DateTime createdminus = c.CreatedDate.AddSeconds(-30);
List<EmailMessage> messages = new List<EmailMessage>();
messages = [SELECT Id,ParentId,RelatedToId,Subject,FromAddress FROM EmailMessage WHERE (Subject = :c.Subject AND MessageDate > :createdminus)];
// if you use > 1,two subject duplicates are allowed
if (messages.size() > 0) {
delete c;
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。