使用 Dynamics CRM Web API 创建帖子

Posted

技术标签:

【中文标题】使用 Dynamics CRM Web API 创建帖子【英文标题】:Creating Post with Dynamics CRM Web API 【发布时间】:2016-11-24 00:54:02 【问题描述】:

无法使用 Dynamics CRM 2016 Online Web API 创建帖子实体 (https://msdn.microsoft.com/en-us/library/mt607553.aspx)。

这个有效载荷应该在POST /api/data/v8.1/posts上创建一个帖子


    "text": "Test Single Post",
    "source": 1,
    "type": 7

(来源 1 是自动帖子,类型 7 是状态帖子)

但它会返回:


    "error":
    
        "code":"",
        "message":"An unexpected error occurred.",
        "innererror"
        
            "message":"An unexpected error occurred..."
        
    

仅使用“文本”提交相同的有效负载也会失败。

请注意,Post 实体没有允许我设置相关实体​​(联系人、帐户等)的单值导航属性 (https://msdn.microsoft.com/en-us/library/mt607553.aspx#bkmk_SingleValuedNavigationProperties)。

例如,创建任务实体 (https://msdn.microsoft.com/en-us/library/mt607619.aspx) 可以在 POST /api/data/v8.1/tasks 上正常工作


    "subject": "Test Single Task",
    "description": "Test One Description of Task",
    "regardingobjectid_contact_task@odata.bind": "/contacts(<someguid>)",
    "scheduledend": "2016-07-21T12:11:19.4875892Z"

在我看来,Post 应该公开类似regardingobjectid_contact_post@odata.bind 的内容,但事实并非如此。

对于上下文,这是通过 SOAP 端点和 SDK 创建 Post 的方法:

var result = Client.getOrganizationService().Create(new Post

    Text = post.text,
    RegardingObjectId = new EntityReference(
        entityName,
        Guid.Parse(post.regarding_guid)
    )
);

有没有人有通过 Web API 创建的帖子的工作示例?这是 Dynamics CRM Web API 中的遗漏吗?

限制中似乎没有列出这个:https://msdn.microsoft.com/en-us/library/mt628816.aspx

更新

似乎 postregarding 实体是应该创建链接到联系人/帐户的位置。这可以通过查询来证明:

/posts?$filter=postregardingid/regardingobjectid_contact/contactid eq <someguid>

但是,像这样的“深度插入”是行不通的:


    "text":"sometext",
    "postregardingid": 
         
             "regardingobjectid_contact@odata.bind":"/contacts(someguid)"
         

回复是

不能在父实体之前创建子实体。

【问题讨论】:

【参考方案1】:

没有地方提到不能使用 webapi 创建 Post(活动提要)。实际上,它并没有像您指出的那样被列为 crm webapi 限制。

同样通过比较,post 的 _regardingobjectid_value 查找属性与 activitypointer 不同。单值导航属性也是如此。

出于好奇,我的调查转向了合作伙伴 - post_PostRegardings

唯一有意义的事情 - postregarding 是严格内部使用的。这可能是所有此类行为的原因。这是我今天的 v8.2 理论(2017 年 8 月 12 日)

描述:表示活动提要帖子所涉及的对象。 仅供内部使用。实体集路径:[组织 URI]/api/data/v8.2/postregardings基本类型:crmbaseentity EntityType显示名称:帖子相关主键:postregardingid

参考:https://msdn.microsoft.com/en-us/library/mt608103.aspx

更新

看起来 MS 建议社区使用组织服务来创建自定义帖子记录。 Web api 仍然损坏。 Read more

【讨论】:

以上是关于使用 Dynamics CRM Web API 创建帖子的主要内容,如果未能解决你的问题,请参考以下文章

Dynamics CRM 2015/2016/365 Web API:级联查询

Dynamics CRM 2016 Web API 消息列表

Dynamics CRM 2015/2016 Web API:注册 APP(调用CRM Online Web API)

Dynamics CRM 2015/2016 Web API:聚合查询

Dynamics CRM2016 Web API之Use custom FetchXML

Dynamics CRM 2016 Web API 消息列表