通过REST调用向Dynamics CRM添加新的联系人记录

时间:2011-03-04 17:56:18

标签: php dynamics-crm

我知道没有关于Dynamics如何工作,我也不知道它的数据模型(我也不理解它的术语,所以如果我使用了错误的术语,我会事先道歉)。

我正在建立一个网站,当有人填写该网站上的表格时,需要在Dynamics CRM中创建一个新记录(我相信最新版本是2011年)。

本网站使用PHP构建,因此MS提供的示例代码不适用。理想情况下,我正在寻找的是一些指令或教程的链接,如下所示:

  1. 向此网址发出POST请求:http://myinstallation.com/address/to/rest/endpoint
  2. 传递这些参数:
    • 'password':应用程序密码
    • 'firstName':联系名字
    • 'lastName':联系姓氏
    • 'address1':第一行街道地址 等等。
  3. 它将以JSON字符串形式返回以下信息:
    • '错误代码':0表示成功,否则错误编号
    • '错误消息':错误描述(如果有)
  4. 我知道也许CRM中没有直接的“联系”概念,而是“机会”,“人”和“组织”的某种组合。我知道也许你不只是发送密码而是一些身份验证令牌或cookie数据。我知道它可能需要SOAP调用而不是REST调用(虽然最新版本似乎支持REST,我更喜欢它,因为它更简单)。我知道它可能不会返回JSON字符串。我上面发布的内容只是我理想答案看起来的格式的一个例子(不是要求要求,只是因为我知道MS和PHP世界之间的事情可能会“失去翻译”,所以希望这有助于解释什么对我虚弱的大脑的一个有用的答案看起来像。)

    或者我可能完全偏离基础,如果没有大量的定制化工作,那么做这种事情是不可能的?

    顺便说一下,我目前不关心“双向同步”所以我只需要告诉CRM有一个新的联系人(理想情况下它会自动标记它认为是重复的记录,但这不是必需的。)

    感谢您提供的任何指导或帮助。

2 个答案:

答案 0 :(得分:3)

我有同样的问题,经过一堆头发拉动(在这期间我遇到了你的帖子)我找到了这个人,他提供了一个预先构建的PHP库,价格非常合理需要:

http://www.zenithies.org/articles/articles/6/microsoft-dynamics-crm-4-0-php-integration-offer.html

我正在将他的代码与我的生产应用程序集成,但是这里是你要处理的界面,几乎就是你要找的东西:

$bridge = new CrmExt();
$bridge->liveUser = 'username@domain.com';
$bridge->livePassword = 'password';
$bridge->crmDiscoveryHost = 'domain.crm.dynamics.com';
$bridge->crmDiscoveryHostHttps = true;
$bridge->crmAddress = 'domain.crm.dynamics.com';
$bridge->crmHost = 'domain.api.crm.dynamics.com';
$bridge->crmHostHttps = true;

try {
    $bridge->connnect();

    $newContact = array(
        'firstname' => 'John',
        'lastname' => 'Doe',
        'emailaddress1' => 'example@example.com',
        'telephone1' => '+420 000 000 000 000',
        // etc ..
    );

    // This will send account into crm
    $newContactId = $bridge->pushContact( $newContact );
} catch (Exception $e) {
    printf(
        '<h1>Error:</h1><ul><li>%s</li></ul><pre>%s</pre>',
        $e->getMessage(),
        $bridge->dump(true)
    );
}

答案 1 :(得分:-1)

我使用了这个课程:https://github.com/Ben-Speakman/PHP-Dynamics-Online-CRM-2011-SOAP-Class

并请求:

$request = '<Execute xmlns="http://schemas.microsoft.com/xrm/2011/Contracts/Services" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
                           <request i:type="a:CreateRequest" xmlns:a="http://schemas.microsoft.com/xrm/2011/Contracts">
                            <a:Parameters xmlns:b="http://schemas.datacontract.org/2004/07/System.Collections.Generic">
                           <a:KeyValuePairOfstringanyType>
                           <b:key>Target</b:key>
                            <b:value i:type="a:Entity">
                            <a:Attributes>
                          <a:KeyValuePairOfstringanyType>
                            <b:key>firstname</b:key>
                            <b:value i:type="c:string" xmlns:c="http://www.w3.org/2001/XMLSchema">name</b:value>
                           </a:KeyValuePairOfstringanyType>
                           <a:KeyValuePairOfstringanyType>
                            <b:key>lastname</b:key>
                            <b:value i:type="c:string" xmlns:c="http://www.w3.org/2001/XMLSchema">lastname</b:value>
                           </a:KeyValuePairOfstringanyType>
                          <a:KeyValuePairOfstringanyType>
                            <b:key>department</b:key>
                            <b:value i:type="c:string" xmlns:c="http://www.w3.org/2001/XMLSchema">department_name</b:value>
                           </a:KeyValuePairOfstringanyType>
                            <a:KeyValuePairOfstringanyType>
                            <b:key>emailaddress1</b:key>
                            <b:value i:type="c:string" xmlns:c="http://www.w3.org/2001/XMLSchema">email@yahoo.com</b:value>
                           </a:KeyValuePairOfstringanyType>
                            <a:KeyValuePairOfstringanyType>
                            <b:key>telephone1</b:key>
                            <b:value i:type="c:string" xmlns:c="http://www.w3.org/2001/XMLSchema">00112233</b:value>
                           </a:KeyValuePairOfstringanyType>
                         <a:KeyValuePairOfstringanyType>
                            <b:key>description</b:key>
                            <b:value i:type="c:string" xmlns:c="http://www.w3.org/2001/XMLSchema">bla bla</b:value>
                           </a:KeyValuePairOfstringanyType>
                           <a:KeyValuePairOfstringanyType>
                          <b:key>address1_country</b:key>
                          <b:value i:type="c:string" xmlns:c="http://www.w3.org/2001/XMLSchema">My country</b:value>
                           </a:KeyValuePairOfstringanyType>
                                         </a:Attributes>
                                         <a:EntityState i:nil="true" />
                                         <a:FormattedValues />
                                         <a:Id>'.$dynamicsClient->create_guid().'</a:Id>
                                         <a:LogicalName>contact</a:LogicalName>
                                         <a:RelatedEntities />
                                       </b:value>
                                     </a:KeyValuePairOfstringanyType>
                                   </a:Parameters>
                                   <a:RequestId i:nil="true" />
                                   <a:RequestName>Create</a:RequestName>
                                 </request>
                               </Execute>';

                    $dynamicsClient->sendQuery($request);