2012-04-11 71 views
1

我打算使用PHP中的exacttarget SOAP API創建列表並添加用戶詳細信息作爲其訂戶。 code api有創建列表的示例代碼。我建立在此基礎上我的自定義邏輯如下檢查列表是否存在於exacttarget API中

public function createList($siteId, $siteDescription){ 
     try { 
      $list = new ExactTarget_List(); 
      // $list->Description = "PHP Created List"; // List for the venue 
      // $list->ListName = "PHP API Created List"; // Description about the list 
      $list->Description = $siteDescription; // List for the venue 
      $list->ListName = $siteId; 
      $object = new SoapVar($list, SOAP_ENC_OBJECT, 'List', "http://exacttarget.com/wsdl/partnerAPI"); 
      $request = new ExactTarget_CreateRequest(); 
      $request->Options = NULL; 
      $request->Objects = array($object); 
      $results = $client->Create($request); 
      if ($results->OverallStatus == 'OK') 
      { 
       echo 'SUCCESS'; 
      } 
      else 
      { 
      echo 'FAILED'; 
      }  
     } 
     catch (SoapFault $e) { 
      // var_dump(e); 
      $this->success = 0; 
     } 
    } 

但我的工作流程是這樣的:如果列表中已經存在,我應該繼續添加用戶(DOH!)它否則先創建列表和添加的下一步訂戶。我找不到任何示例代碼片段來檢查列表是否存在或者不使用代碼API文檔,因此我想知道這是否可能。我對SOAP和XML的微薄理解在這裏玩得很開心,因此要求有更好的知識或想法的退伍軍人分享一些細節來幫助我的事業。

+3

我感覺對你來說,ET的docos很殘忍 – Rudiger 2012-04-27 04:07:59

回答

1

你可以抓住所有列表相當容易 - 例如,可以從以下ET技術文檔遵循代碼: http://docs.code.exacttarget.com/020_Web_Service_Guide/Technical_Articles/Retrieving_a_List_from_an_Account

這篇文章是相當不錯的(相對而言,當然),我可以保證其準確性。下面是來自PHP部分相關位:

$rr = new ExactTarget_RetrieveRequest(); 
    $rr->ObjectType = "List"; 
    $rr->Properties = array(); 
    $rr->Properties[] = "ID"; 
    $rr->Properties[] = "List.ListName";   
    $rr->Options = NULL; 

    $rrm = new ExactTarget_RetrieveRequestMsg(); 
    $rrm->RetrieveRequest = $rr;   

    $results = $client->Retrieve($rrm); 
     var_dump($results); 

搶特定列表,您可以創建一個SimpleFilterPart對象,並將其連接到您的RetrieveRequest(注 - 這部分是越野車,未經檢驗的,可怕的PHP代碼 - 我寫的在Python然後在這裏把它翻譯 - 如果你真的真的需要幫助,這部分,給我發短信):

$sfp=new ExactTarget_SimpleFilterPart; 
    $sfp=>Property = "ListID"; 
    $sfp=>SimpleOperator = new ExactTarget_SimpleOperators->equals; 
    $sfp=>Value = Array(contact_list); 
    $retrieverequest=>Filter = $sfp; 

希望可以節省一些頭痛的人。

+0

謝謝你,儘管這個問題對我來說已經過時了,我相當肯定有人肯定會從這個答案中獲益。不知道我是如何錯過列表檢索的API文檔,但它確實很好知道。非常感謝和乾杯! – optimusprime619 2012-06-01 06:02:55