Php 从常量联系人API中删除特定列表中的联系人

Php 从常量联系人API中删除特定列表中的联系人,php,constantcontact,Php,Constantcontact,我已经集成了常数接触API。将联系人添加到特定列表时,它工作正常。我已经创建了5个不同的列表。当我将联系人添加到特定列表时 如果此联系人表单已存在,我想将其从其他列表中删除 请建议您是否有任何解决方案。如果您正在使用PHP SDK,最简单的方法可能是访问联系人对象的列表属性,并删除您不再希望用户订阅的列表对象 您还可以清除所有列表,例如: // Clear all lists $contact->lists = array(); // Add the particular list yo

我已经集成了常数接触API。将联系人添加到特定列表时,它工作正常。我已经创建了5个不同的列表。当我将联系人添加到特定列表时 如果此联系人表单已存在,我想将其从其他列表中删除


请建议您是否有任何解决方案。

如果您正在使用PHP SDK,最简单的方法可能是访问联系人对象的列表属性,并删除您不再希望用户订阅的列表对象

您还可以清除所有列表,例如:

// Clear all lists
$contact->lists = array();

// Add the particular list you want
$contact->addList('listId');

// Update Contact
$ctct->updateContact(ACCESS_TOKEN, $contact, false);
否则,您也可以使用
deleteContactFromList($accessToken,$contact,$list)
方法,但这需要更多的工作,因为它需要联系人实体和列表实体(而不仅仅是ID)。因此,基本上,一旦您获得了联系人实体,它将如下所示:

$contact = $ctct->getContactByEmail(ACCESS_TOKEN, $email_address)->results[0];
$listToDelete = new ContactList($listId);
$ctct->deleteContactFromList(ACCESS_TOKEN, $contact, $listToDelete);
希望有帮助


Mike阅读了此处的文档后

我采取了不同的方法

我将布局逻辑和使用正确的CC API方法,当然,您可以动态检索列表id并进行其他检查(例如,检查用户是否真的是列表的成员),但出于此目的,我仅尝试展示如何从列表中删除联系人,这是本文的主要思想

让我们开始吧

  • 在我的
    composer.json
    中,我有:
  • {
    “要求”:{
    “constantcontact/constantcontact”:“1.3.2”
    }
    }

    由于安装了PHP 5.3.29版的客户端服务器基础设施,我不得不使用旧版

  • 在终端中导航到源根目录并运行
    composer update

  • 安装依赖项后,我们就可以开始了

  • 以我的
    index.php
    为例,我会说:

    require_once('/vendor/autoload.php');
    use Ctct\ConstantContact;
    use Ctct\Services;
    use Ctct\Components\Contacts\Contact;
    use Ctct\Exceptions\CtctException;
    
    define("APIKEY", "YOUR_API_KEY_HERE");//Write your API key
    define("ACCESS_TOKEN", "YOUR_ACCESS_TOKEN_HERE");//Write your Access Token here
    
    $cc = new ConstantContact(APIKEY);
    $ca = new Services\ActivityService(APIKEY);
    $error = 0;
    
    try {
        $response = $cc->getContactByEmail(ACCESS_TOKEN, $email);
        if (empty($response->results)) {
            //Create new contact if needed
        } else {
            $action = "Remove contact from subscribe list";
            $contact = $response->results[0];
            try {
                $ca->addRemoveContactsFromListsActivity(
                    ACCESS_TOKEN, 
                    array($contact->email_addresses[0]->email_address), 
                    array('1894839946')//List Id from which you want the contact to be removed from
                );
            } catch (Exception $e) {
                var_dump($e->getMessage());
            }
            /*
             * The third parameter of updateContact defaults to false, but if this were set to true it would tell
             * Constant Contact that this action is being performed by the contact themselves, and gives the ability to
             * opt contacts back in and trigger Welcome/Change-of-interest emails.
             *
             * See: http://developer.constantcontact.com/docs/contacts-api/contacts-index.html#opt_in
             */
            $returnContact = $cc->updateContact(ACCESS_TOKEN, $contact, true);
        }         
    } catch (Exception $e) {
        var_dump($e->getMessage());
    }
    

  • 希望它能帮助别人。干杯。

    只想注意,
    $ctct=new ConstantContact(APIKEY)
    使用建议的
    deleteContactFromList()
    效果很好!