Salesforce API:创建EmailMessage并关联联系人吗?

时间:2016-11-11 12:57:31

标签: python api salesforce

我正在开展一个项目,其中(已发送)电子邮件应保存到Salesforce并与相应的Salesforce联系人匹配。

创建新的电子邮件非常简单。例如,使用simple_salesforce python库,我的代码如下所示:

from simple_salesforce import Salesforce

[…]

sf = Salesforce(instance_url=instance_url, session_id=session_id)
sf.EmailMessage.create(
    {'FromAddress': 'foo@example.com',
     'ToAddress': 'bar@example.com',
     'Subject': 'Email: Fancy Subject', 
     'TextBody': 'lorem ipsum dolor sit amet',  
     'Status': 2
    })

这成功创建了一个新的EmailMessage,但邮件与联系人不匹配(假设bar@example.com是Salesfored中的现有联系人)。这可以在Salesforce UI中的许多位置看到。例如:

  • 这不是联系人活动历史记录的一部分
  • 查看电子邮件详细信息时,“发件人和收件人”部分为空

使用Salesforce UI创建新电子邮件时,关联正确完成。比较我的EmailMessage对象与Salesforce生成的对象有一个明显的区别:ActivityId没有为我的对象设置。

当我尝试设置ActivityId时,我收到格式错误的请求异常INSUFFICIENT_ACCESS_OR_READONLY

是否可以使用API​​创建这些关联?

2 个答案:

答案 0 :(得分:0)

相反,您可以将此邮件设置为联系人的附件。最好是如果您有一个自定义对象来存储邮件。

如果您打算使用附件,请给parentId作为联系ID。

如果您打算创建自定义对象,请将联系人对象设置为查找列(salesforce中的关系类型),这将允许您为新创建的列设置联系人ID。

PS-EmailMessage是另一种对象,无法存储。

答案 1 :(得分:0)

对我来说,解决方案是:

a)创建电子邮件对象时,当联系人存在于以下位置时,传递ToIdsCcIdsBccIds而不是ToAddressCcAddress,... SF。

b)不幸的是,没有FromIds字段。因此,对于电子邮件的发件人,可以通过在以后创建EmailMessageRelation来解决。例如:

sf.EmailMessageRelation.create({
                'EmailMessageId': email_message_id, # id of the email message created before
                'RelationAddress': from_contact_address, # sender email address
                'RelationId': from_relation_id, # SF Human object ID (in my case user id or contact id)
                'RelationType': 'FromAddress'
            })