1

我计划使用 PHP 中的精确目标 SOAP API 创建列表并将用户详细信息添加为订阅者。代码 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 的微薄了解在这里发挥了重要作用,因此请求是否有任何对此有更好的知识或想法的退伍军人分享一些关于它的细节以帮助我的事业。

4

1 回答 1

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;

希望这可以为某人节省一些头痛。

于 2012-06-01T00:58:28.157 回答