Как добавить «Теги» подписчику mailchimp через API - PullRequest
0 голосов
/ 12 сентября 2018

Хотите добавить теги в список участников моей рассылки через API.Но я не вижу, где передавать теги в документации .Может кто-нибудь указать на пример того, как обновить теги, связанные с участником через API?

Ответы [ 3 ]

0 голосов
/ 19 сентября 2018

Очевидно, что «теги» Mailchimp являются «сегментами».

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

/**
 * 
 * @param string $emailAddress
 * @param array $tags
 * @return void
 */
public function addTagsToContact($emailAddress, $tags) {
    $list_id = $this->getDefaultListId();
    foreach ($tags as $tag) {
        $this->addMemberToSegment($emailAddress, $list_id, $tag);
    }
}

/**
 * Add a tag to a subscriber (tags replaced segments https://stackoverflow.com/a/52315577/470749)
 * 
 * @param string $emailAddress
 * @param string $list_id
 * @param string $segment_name
 * @return array
 */
public function addMemberToSegment($emailAddress, $list_id, $segment_name) {
    $api = Newsletter::getApi();
    $segmentsByName = $this->getSegments($list_id);
    $segment_id = $segmentsByName[$segment_name]['id'];
    $response = $api->post("lists/$list_id/segments/$segment_id", [
        'members_to_add' => [$emailAddress]
    ]); //https://developer.mailchimp.com/documentation/mailchimp/reference/lists/segments/#create-post_lists_list_id_segments_segment_id
    return $response;
}

/**
 * 
 * @param string $list_id
 * @return array
 */
public function getSegments($list_id) {//https://developer.mailchimp.com/documentation/mailchimp/reference/lists/segments/#%20
    $segmentsByName = [];
    $api = Newsletter::getApi();
    $count = 50; //default is 10
    $offset = 0;
    do {
        $url = "lists/$list_id/segments/?" . http_build_query(['count' => $count, 'offset' => $offset]);
        Log::debug($url);
        $response = $api->get($url);
        $total_items = $response['total_items'];
        foreach ($response['segments'] as $segment) {
            $segmentsByName[$segment['name']] = $segment;
        }
        $offset += $count;
    } while (count($segmentsByName) < $total_items);
    //Log::debug(json_encode($segmentsByName));
    return $segmentsByName;
}

/**
 * 
 * @return string
 */
public function getDefaultListId() {
    return config('newsletter.lists.subscribers.id');
}

Это зависит от библиотеки https://github.com/spatie/laravel-newsletter.

P.S. Большое спасибо @Jelan, чей ответ вывел меня на правильный путь!

0 голосов
/ 11 октября 2018

Это официальный способ добавления тегов: https://developer.mailchimp.com/documentation/mailchimp/reference/lists/members/tags/ Это работает, за исключением того, что в моем тестировании ответное сообщение пустое, хотя тег добавлен.

Вот пример кода в Google Apps Script:

payload = '{\
  "tags": [\
    {\
     "name":"' + tagName + '",\
     "status":"' + tagStatus + '"\
    }\
   ]\
}'
;

params = {
  "method": "POST",
  "headers":MC_headers,
  "payload": payload,
  "muteHttpExceptions": true
};
url = MC_url + 'lists/' + MC_IDs.listId + '/members/' + sub_hash + '/tags';
response = UrlFetchApp.fetch(url, params);
0 голосов
/ 13 сентября 2018

Теги заменены статическими сегментами.Таким образом, конечные точки, используемые для создания тегов, а также добавления и удаления тегов из элементов, являются теми же конечными точками, которые ранее использовались для управления сегментами.Вот документация по конечным точкам, которая используется для управления вашими тегами через API, которая включает параметры тела запроса и ответа, а также примеры запросов и ответов:

http://developer.mailchimp.com/documentation/mailchimp/reference/lists/segments/

Чтобы добавить теги к своим участникам, вам нужно включить их адреса электронной почты в параметр массива static_segment.

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

...