2014-01-17 1 views
1

Я объединил API-интерфейс с постоянным контактом. Он отлично работает при добавлении контакта в конкретный список. Я создал 5 разных списков. Когда я добавляю контакт в конкретный список Я хочу удалить эту контактную форму из другого списка, если она уже присутствует.Удалить контакт Из определенного списка из API с постоянным контактом

Сообщите нам, если у вас есть какие-либо решения.

ответ

1

Если вы используете 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), но это занимает немного больше работы, поскольку это требует как контактное лицо и список организаций (стихи просто идентификатор). Таким образом, по существу, как только вы получили контактную структуру, это будет выглядеть так:

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

Надеюсь, что это поможет!

Майк

+0

Просто хочу отметить, что '$ ctct = new ConstantContact (APIKEY);' Использование предложенного 'deleteContactFromList()' отлично работает! –

0

После прочтения документации здесь Bulk Activities - Remove Contacts Endpoint.

Я принял другой подход.

Я планирую логику и использование метода прямого CC API, конечно, вы можете динамически извлекать list_id и выполнять дополнительные проверки (например, проверить, действительно ли пользователь является членом списка), но для этой цели Я пытаюсь показать только, как удалить контакт из списка, вот основная мысль здесь.

Начнем.

  1. в моем composer.json я это:

{ "require": { "constantcontact/constantcontact": "1.3.2" } }

мне пришлось использовать старый Constant Contact API из-за клиентов серверной инфраструктуры, которая имеет установленную PHP версии 5.3.29 .

  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()); 
    } 
    

Надеется, что это поможет кому-то. Приветствия.