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

时间:2014-01-17 08:13:05

标签: php constantcontact

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

如果您有任何解决方案,请建议。

2 个答案:

答案 0 :(得分:1)

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

您也可以清除所有列表:

// 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);

希望有所帮助!

麦克

答案 1 :(得分:0)

在此阅读文档Bulk Activities - Remove Contacts Endpoint之后。

我采取了不同的方法。

我将布置逻辑和使用正确的CC API方法,当然,您可以动态检索list_id并进行额外的检查(例如,检查用户是否真的是列表的成员),但为此目的我我试图只显示如何从列表中删除联系人,这是主要的想法。

让我们开始。

  1. 在我的composer.json我有这个:
  2. { "require": { "constantcontact/constantcontact": "1.3.2" } }

    由于安装了 PHP版本 5.3.29 的客户端服务器基础结构,我不得不使用旧的Constant Contact API

    1. 在终端导航到您的源根并运行composer update

    2. 安装依赖项后,我们就可以开始了。

    3. 以我的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());
      }
      
    4. 希望它会帮助某人。欢呼声。