当我尝试更改 Zoho 记录上的所有者时,我收到一条成功消息,但潜在客户所有者字段没有更改。记录在“Potentials”模块中(我认为这是一个自定义模块)
lead: Record = self.get_lead(int(lead_id))
user: ZCRMUser = self.get_user_by_email(owner_email)
# Perform the update
lead.add_key_value("Owner", user)
request = BodyWrapper()
request.set_data([new_record])
request.set_trigger(["approval", "workflow", "blueprint"])
response = self.record_operators.update_record(zoho_id, "Potentials", request)
更新已执行并且未报告任何错误,但不会更改“所有者”字段:
INFO Status: success
INFO Code: SUCCESS
INFO Details
INFO Modified_Time : 2024-05-13 11:23:12+10:00
INFO Modified_By : <zcrmsdk.src.com.zoho.crm.api.users.user.User object at 0x115384c10>
INFO Created_Time : 2024-05-02 14:03:19+10:00
INFO id : 68968000000476063
INFO Created_By : <zcrmsdk.src.com.zoho.crm.api.users.user.User object at 0x115347d10>
INFO Message: record updated
如果我检查引线本身,则该字段存在:
Owner = <zcrmsdk.src.com.zoho.crm.api.users.user.User object at 0x1153ae7d0>
用户对象也是一个有效的用户对象。我正在使用的 API 令牌似乎已授予所有权限。 Zoho 似乎只是悄悄地放弃了这个领域。我不知道这是权限问题、API 限制还是其他原因。
更新:我注意到我正在处理的代码已固定
zohocrmsdk2_1 = "^1.0.0"
,所以可能是一个老问题。将使用最新的 3.0.0 重新测试,看看是否有帮助。
更新2:没有帮助。与 1.1.0
的
3.0.0
和
zohocrmsdk2-1
版本存在同样的问题
不感谢 Zoho 本身,他们的支持和文档完全毫无价值,但我能够通过跟踪 API 代码解决这个问题。
事实证明,API 只会更新它认为已更改的 json 键和子键。因为 User 对象已经存在,所以它不会将 User.email 视为新值,因此它会上传一个没有电子邮件字段的空 User 密钥。
技巧是通过假装发生更改来强制 Zoho 查看电子邮件字段(这将在用户对象上内部设置
_email_modified = True
或类似的内容,并使其正确序列化为 JSON。即:
user.set_email(owner_email)
即使检索到用户对象,您也应该执行此操作。如果您只想设置记录的所有者,您可以使用新的/部分用户对象,例如:
lead = Record()
lead.set_id(int(lead_id))
user = User()
user.set_email(owner_email)
lead.add_field_value(Field.Deals.owner(), user)
request = BodyWrapper()
request.set_data([new_record])
response = RecordOperations.update_record(lead_id, 'Lead', request)