Как обновить списки контактов адреса электронной почты в сетке отправки?

Я использую API SendGrid для управления контактами и связанными с ними списками контактов. Ссылаясь на документацию здесь, я изначально создал адрес электронной почты и присвоил его спискам контактов (XXXXX, YYYYY), используя следующий запрос:

curl -X PUT "https://api.sendgrid.com/v3/marketing/contacts" \
--header "Authorization: Bearer <<YOUR_API_KEY_HERE>>" \
--header "Content-Type: application/json" \
--data '{"list_ids":["057204d4-755b-4364-a0d1-XXXXXX", "057204d4-755b-4364-a0d1-YYYYY"], "contacts": [{"email": "[email protected]"}]}'

Теперь я хочу обновить связанный с контактом список контактов на другой (ZZZZZ), используя тот же запрос. Итак, я дал следующую команду:

curl -X PUT "https://api.sendgrid.com/v3/marketing/contacts" \
--header "Authorization: Bearer <<YOUR_API_KEY_HERE>>" \
--header "Content-Type: application/json" \
--data '{"list_ids":["057204d4-755b-4364-a0d1-ZZZZZ"], "contacts": [{"email": "[email protected]"}]}'

Однако при поиске адреса электронной почты по следующему запросу:

curl -X POST "https://api.sendgrid.com/v3/marketing/contacts/search/emails" \
--header "Authorization: Bearer <<YOUR_API_KEY_HERE>>" \
--header "Content-Type: application/json" \
--data '{"emails": ["[email protected]"]}'

Я заметил, что список контактов адреса электронной почты не был обновлен до ZZZZ; вместо этого все три списка все еще присутствуют:

{
    "result": {
        "[email protected]": {
            "contact": {
                ...........
                "email": "[email protected]",
                "list_ids": [
                    "057204d4-755b-4364-a0d1-XXXXXX",
                    "057204d4-755b-4364-a0d1-YYYYYY",
                    "057204d4-755b-4364-a0d1-ZZZZZZ"
                ],
               ..........
            }
        }
    }
}

Может ли кто-нибудь подсказать мне, как правильно обновить списки контактов, связанные с адресом электронной почты?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
91
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я заметил, что список контактов адреса электронной почты не был обновлен до ZZZZ; вместо этого все три списка все еще присутствуют

Этого и следовало ожидать - https://docs.sendgrid.com/api-reference/contacts/add-or-update-a-contact#body говорит:

list_ids- array[string] — массив строк идентификатора списка, в который будет добавлен этот контакт.

Там не сказано, что контакт будет удален из других списков, в которых он уже есть.

Чтобы удалить контакт из списка, вам нужно пройти через конечную точку списков, а точнее /v3/marketing/lists/{id}/contacts. Вам необходимо сделать запрос DELETE и передать параметр contact_ids, содержащий разделенные запятыми идентификаторы контактов, которые вы хотите удалить из списка.

https://docs.sendgrid.com/api-reference/lists/remove-contacts-from-a-list

// Update SendGrid contact's list association
$apiKey = 'YOUR_API_KEY_HERE';
$url = 'https://api.sendgrid.com/v3/marketing/contacts';
$contactEmail = '[email protected]';
$newListIds = ['057204d4-755b-4364-a0d1-ZZZZZ'];

$data = [
  'list_ids' => $newListIds,
  'contacts' => [['email' => $contactEmail]]
];
$payload = json_encode($data);
$headers = [
  'Authorization: Bearer ' . $apiKey,
  'Content-Type: application/json',
  'Content-Length: ' . strlen($payload)
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

echo $response;

Понимание управления контактами в SendGrid

что если в следующий раз, когда я захочу заменить list_ids на другой, 057204d4-755b-4364-a0d1-ZZZZZ будет удален? его не удаляют, вот в чем проблема, с которой я столкнулся

Azad 14.03.2024 17:41

Другие вопросы по теме