繁体   English   中英

如何使用PHP从Microsoft Dynamics CRM中检索销售线索

[英]How to retrieve Lead from Microsoft Dynamics CRM with PHP

在这里,我使用SOAP XML请求从CRM检索数据。 我的身份验证工作正常,并且我获得了系统用户,但我需要从CRM中检索销售线索,请帮助我..如果有人帮助您不胜感激,谢谢...

这是我用于获取系统用户详细信息的代码。

    Here is the full code i am using can you please go through it, otherwise can you give me your code with  example....


     <?php
include 'CrmAuth.php';
include 'CrmExecuteSoap.php';
include "CrmAuthenticationHeader.php";

// CRM Online
$url = "URL";
$username = "USERNAME";
$password = "PASSWORD";

$crmAuth = new CrmAuth ();
$authHeader = $crmAuth->GetHeaderOnline ( $username, $password, $url );
// End CRM Online

// CRM On Premise - IFD
// $url = "https://org.domain.com/";
// //Username format could be domain\\username or username in the form of an email
// $username = "username";
// $password = "password";

// $crmAuth = new CrmAuth();
// $authHeader = $crmAuth->GetHeaderOnPremise($username, $password, $url);
// End CRM On Premise - IFD

$userid = WhoAmI ( $authHeader, $url );
if ($userid == null)
    return;

$name = CrmGetUserName ( $authHeader, $userid, $url );

print $name;

function WhoAmI($authHeader, $url) {
    $xml = "<s:Body>";
    $xml .= "<Execute xmlns=\"http://schemas.microsoft.com/xrm/2011/Contracts/Services\">";
    $xml .= "<request i:type=\"c:WhoAmIRequest\" xmlns:b=\"http://schemas.microsoft.com/xrm/2011/Contracts\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:c=\"http://schemas.microsoft.com/crm/2011/Contracts\">";
    $xml .= "<b:Parameters xmlns:d=\"http://schemas.datacontract.org/2004/07/System.Collections.Generic\"/>";
    $xml .= "<b:RequestId i:nil=\"true\"/>";
    $xml .= "<b:RequestName>WhoAmI</b:RequestName>";
    $xml .= "</request>";
    $xml .= "</Execute>";
    $xml .= "</s:Body>";

    $executeSoap = new CrmExecuteSoap ();
    $response = $executeSoap->ExecuteSOAPRequest ( $authHeader, $xml, $url );

    $responsedom = new DomDocument ();
    $responsedom->loadXML ( $response );

    $values = $responsedom->getElementsbyTagName ( "KeyValuePairOfstringanyType" );

    foreach ( $values as $value ) {
        if ($value->firstChild->textContent == "UserId") {
            return $value->lastChild->textContent;
        }
    }

    return null;
}
function CrmGetUserName($authHeader, $id, $url) {
    $xml = '<s:Body>
            <Execute xmlns="http://schemas.microsoft.com/xrm/2011/Contracts/Services" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<RetrieveMultiple xmlns="http://schemas.microsoft.com/xrm/2011/Contracts/Services">
  <query xmlns:d4p1="http://schemas.microsoft.com/xrm/2011/Contracts" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" i:type="d4p1:QueryExpression">
    <d4p1:ColumnSet>
      <d4p1:AllColumns>false</d4p1:AllColumns>
      <d4p1:Columns xmlns:d6p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
        <d6p1:string>leadid</d6p1:string>
        <d6p1:string>subject</d6p1:string>
        <d6p1:string>statuscode</d6p1:string>
      </d4p1:Columns>
    </d4p1:ColumnSet>
    <d4p1:Criteria>
      <d4p1:Conditions>
        <d4p1:ConditionExpression>
          <d4p1:AttributeName>statuscode</d4p1:AttributeName>
          <d4p1:Operator>Equal</d4p1:Operator>
          <d4p1:Values xmlns:d8p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
            <d8p1:anyType xmlns:d9p1="http://www.w3.org/2001/XMLSchema" i:type="d9p1:int">1</d8p1:anyType>
          </d4p1:Values>
          <d4p1:EntityName i:nil="true" />
        </d4p1:ConditionExpression>
      </d4p1:Conditions>
      <d4p1:FilterOperator>And</d4p1:FilterOperator>
      <d4p1:Filters />
    </d4p1:Criteria>
    <d4p1:Distinct>false</d4p1:Distinct>
    <d4p1:EntityName>lead</d4p1:EntityName>
    <d4p1:LinkEntities />
    <d4p1:Orders />
    <d4p1:PageInfo>
      <d4p1:Count>0</d4p1:Count>
      <d4p1:PageNumber>0</d4p1:PageNumber>
      <d4p1:PagingCookie i:nil="true" />
      <d4p1:ReturnTotalRecordCount>false</d4p1:ReturnTotalRecordCount>
    </d4p1:PageInfo>
    <d4p1:NoLock>false</d4p1:NoLock>
  </query>
</RetrieveMultiple>
</Execute>
</s:Body>';

    $executeSoap = new CrmExecuteSoap ();

    $response = $executeSoap->ExecuteSOAPRequest ( $authHeader, $xml, $url );
    echo "<pre>";
        print_r($response);

    $responsedom = new DomDocument ();
    $responsedom->loadXML ( $response );

    $firstname = "";
    $lastname = "";

    $values = $responsedom->getElementsbyTagName ( "KeyValuePairOfstringanyType" );


    foreach ( $values as $value ) {
        if ($value->firstChild->textContent == "firstname") {
            $firstname = $value->lastChild->textContent;
        }

        if ($value->firstChild->textContent == "lastname") {
            $lastname = $value->lastChild->textContent;
        }
    }

    return $firstname . " " . $lastname;

}

?>

为了检索潜在客户,您的请求正文应类似于以下内容:

<s:Body>
<RetrieveMultiple xmlns="http://schemas.microsoft.com/xrm/2011/Contracts/Services">
  <query xmlns:d4p1="http://schemas.microsoft.com/xrm/2011/Contracts" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" i:type="d4p1:QueryExpression">
    <d4p1:ColumnSet>
      <d4p1:AllColumns>false</d4p1:AllColumns>
      <d4p1:Columns xmlns:d6p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
        <d6p1:string>leadid</d6p1:string>
        <d6p1:string>subject</d6p1:string>
        <d6p1:string>statuscode</d6p1:string>
      </d4p1:Columns>
    </d4p1:ColumnSet>
    <d4p1:Criteria>
      <d4p1:Conditions>
        <d4p1:ConditionExpression>
          <d4p1:AttributeName>statuscode</d4p1:AttributeName>
          <d4p1:Operator>Equal</d4p1:Operator>
          <d4p1:Values xmlns:d8p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
            <d8p1:anyType xmlns:d9p1="http://www.w3.org/2001/XMLSchema" i:type="d9p1:int">1</d8p1:anyType>
          </d4p1:Values>
          <d4p1:EntityName i:nil="true" />
        </d4p1:ConditionExpression>
      </d4p1:Conditions>
      <d4p1:FilterOperator>And</d4p1:FilterOperator>
      <d4p1:Filters />
    </d4p1:Criteria>
    <d4p1:Distinct>false</d4p1:Distinct>
    <d4p1:EntityName>lead</d4p1:EntityName>
    <d4p1:LinkEntities />
    <d4p1:Orders />
    <d4p1:PageInfo>
      <d4p1:Count>0</d4p1:Count>
      <d4p1:PageNumber>0</d4p1:PageNumber>
      <d4p1:PagingCookie i:nil="true" />
      <d4p1:ReturnTotalRecordCount>false</d4p1:ReturnTotalRecordCount>
    </d4p1:PageInfo>
    <d4p1:NoLock>false</d4p1:NoLock>
  </query>
</RetrieveMultiple>
</s:Body>

在上面的示例中,我从处于New状态(即StatusCode = 1)的Lead记录中检索LeadIdSubjectStatusCode列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM