检查exacttarget API中是否存在列表

时间:2012-04-11 07:08:00

标签: php soap exacttarget

我计划使用PHP中的exacttarget SOAP API创建列表并将用户详细信息添加为订阅者。 code 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的微薄了解在这里玩得很开心,因此要求任何有更好知识或想法的老手分享一些有关它的细节以帮助我的事业。

1 个答案:

答案 0 :(得分: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;

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