Глядя, чтобы добавить теги к моим членам списка рассылки через API. Но я не вижу, где передавать теги в документации. Может кто-нибудь указать на пример того, как обновить теги, связанные с членом через API?
Как добавить "Теги" к подписчику mailchimp через api
Ответ 1
Теги заменяли статические сегменты. Таким образом, конечные точки, используемые для создания тегов и добавления и удаления тегов от членов, являются теми же конечными точками, которые ранее использовались для управления сегментами. Вот документация по конечным точкам, используемая для управления вашими тегами через API, который включает в себя параметры запроса и ответа, а также примеры запросов и ответов:
http://developer.mailchimp.com/documentation/mailchimp/reference/lists/segments/
Чтобы добавить теги к своим членам, вам необходимо указать их адреса электронной почты в параметре массива "static_segment".
Надеюсь, это поможет.
Ответ 2
Очевидно, "теги" 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 библиотеки.
Постскриптум Большое спасибо @Jelan, чей ответ вывел меня на правильный путь!
Ответ 3
Это официальный способ добавления тегов: 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);
Ответ 4
Таким образом, вам не нужно проходить аутентификацию здесь, чтобы сделать это?
т.е. программно вошел в MailChimp