【问题标题】:Create incident in dynamics crm using api in php在 php 中使用 api 在动态 crm 中创建事件
【发布时间】:2017-02-28 05:58:15
【问题描述】:

我正在尝试使用 php 在动态 CRM 中创建案例。为此我可以看到标题、描述和客户是必需的。所以我尝试了以下代码:

  $authHeader = 'Authorization:' . $type.' '.$access_token;
    //Request for incidents
  $data = array("title"=>"api_incident_title",
            "description" =>"api_incident_description",
    "primaryContactid" =>"https://vonageholdings.crm.dynamics.com/api/data/v8.0/accounts(ebaf25a6-f131-e611-80f8-c4346bac3990)"
        );
    //URL
    $url ='https://vonageholdings.crm.dynamics.com/api/data/v8.0/incidents';
    //request for incidents
    $data_string = json_encode($data);
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string);
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_VERBOSE, 1);
    curl_setopt($curl, CURLOPT_HEADER, 1);
    curl_setopt($curl, CURLOPT_HTTPHEADER, array($authHeader,
            'Content-Type:application/json','Accept:application/json;'));
    
    

它显示 "code":"","message":"你应该指定一个父联系人或帐户。" 我正在尝试使用导航属性。但我找不到确切的 @ 987654326@发送customerId

我已尝试使用以下链接: link1link2link3

试了半天,太郁闷了。

在我尝试@Alex 评论后,我通过以下请求推荐了create incidents

$data = array('primarycontactid@odata.bind' =>"https://xxxx.crm.dynamics.com/api/data/v8.0/contacts(4bafdfb0-08d7-e511-80eb-c4346bac3990)",
        'incident_customer_accounts'=>array("title"=>"case_account","description" =>"case")
        );

它显示A node of type 'StartObject' was read from the JSON reader when trying to read the contents of the navigation property 'incident_customer_accounts'; however, a 'StartArray' node was expected.这个错误。

现在我认为我们的请求是正确的,但格式不匹配。

【问题讨论】:

  • 您的最后一个错误(“A 类型的节点...”)看起来像是数据结构与 JSONReader 期望的问题,我将其转移到自己的问题上它
  • 是的@Alex。为此需要帮助。使用什么结构来发布数据?

标签: php api dynamics-crm-2011 microsoft-dynamics navigation-properties


【解决方案1】:

最后在 php 中使用以下请求创建案例

$data = array("title"=>"test",
        "description" =>"case",
        "customerid_contact@odata.bind" =>"/contacts(c18df8d6-74d9-e511-80eb-c4346bac3990)"
        );

 $url ='https://yyyyy.crm.dynamics.com/api/data/v8.0/incidents';

【讨论】:

    【解决方案2】:

    我对 PHP 一无所知,除了很多人使用它。你签出Alexa CRM了吗?他们有一个 php 工具包,可以简单地连接到 CRM 和 PHP 并与之交互。

    【讨论】:

    • 感谢您的回复@Daryl。我想要一个示例帖子参数和导航属性来创建案例。我正在使用Advance REST client API 来测试 api。
    【解决方案3】:

    在创建时关联实体

    要在创建新实体时将它们与现有实体关联,您必须使用@odata.bind 注释设置单值导航属性的值。

    发布到帐户实体集的以下请求正文将创建一个与现有联系人关联的新帐户,其contactid 值为00000000-0000-0000-0000-000000000001。

    请求

    POST [Organization URI]/api/data/v8.2/accounts HTTP/1.1
    
    Content-Type: application/json; charset=utf-8
    
    OData-MaxVersion: 4.0
    
    OData-Version: 4.0
    
    Accept: application/json
    
    {
    "name":"Sample Account",
    
    "primarycontactid@odata.bind":"/contacts(00000000-0000-0000-0000-000000000001)"
    }
    

    回应

    HTTP/1.1 204 No Content
    
    OData-Version: 4.0
    
    OData-EntityId: [Organization URI]/api/data/v8.2/accounts(00000000-0000-0000-0000-000000000002)
    

    Create an entity using WebAPI - MSDN link

    【讨论】:

    • 谢谢@Alex。其实我已经试过这个了。但它显示[16] => "error":{[17] => "code":"","message":"An unexpected error occurred.","innererror" 错误。我还需要通过 API 创建一个新事件(CASE)。 msdn.microsoft.com/en-us/library/… 有一些事件属性,但它用于检索事件。我需要适当的导航属性来创建事件。
    猜你喜欢
    • 2019-07-04
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    • 2020-11-11
    • 2011-03-03
    相关资源
    最近更新 更多