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) 在创建电子邮件消息对象时,传递 ToIds
、CcIds
、BccIds
而不是 ToAddress
、CcAddress
,……当联系人存在于 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'
)
【讨论】:
请问您如何设置ToIds
、CcIds
和BccIds
?我认为它们应该是 Python 字符串,但我的请求一直失败......以上是关于Salesforce API:可以创建 EmailMessage 并关联联系人吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 API 将自定义字段添加到 SalesForce 中的布局部分
Cometd/bayeux 客户端 + Salesforce 流 API 问题
我可以使用现有的SOAP API会话验证Salesforce REST API吗?