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

Posted

技术标签:

【中文标题】Salesforce API:可以创建 EmailMessage 并关联联系人吗?【英文标题】:Salesforce API: Creating EmailMessage and associating a Contact possible? 【发布时间】:2017-03-25 17:11:46 【问题描述】:

我正在处理一个项目,其中(已发送的)电子邮件应保存到 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 创建这些关联?

【问题讨论】:

你找到解决办法了吗? 【参考方案1】:

除此之外,您可以将此邮件设置为联系人的附件。或者最好有一个自定义对象来存储邮件。

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

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

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

【讨论】:

谢谢!如果您是 SF 组织的管理员,这很有效,但不幸的是,这不是客户集成的可行解决方案。【参考方案2】:

我的解决方案是:

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'
            )

【讨论】:

请问您如何设置ToIdsCcIdsBccIds?我认为它们应该是 Python 字符串,但我的请求一直失败......

以上是关于Salesforce API:可以创建 EmailMessage 并关联联系人吗?的主要内容,如果未能解决你的问题,请参考以下文章

Salesforce 工具 API - 停用触发器

如何通过 API 将自定义字段添加到 SalesForce 中的布局部分

Cometd/bayeux 客户端 + Salesforce 流 API 问题

我可以使用现有的SOAP API会话验证Salesforce REST API吗?

通过 salesforce API 更改“潜在客户所有者”的流程是啥?

Salesforce API describeSObjects 权限