/*
* Add list of tags by name to list of members
*/
def addTagsByNameToUser(){
List<string> tagNamesToAdd = ['foo', 'bar']
def addResult = mailChimpService.addTagsToContactsByName(["[email protected]", "[email protected]"], tagNamesToAdd)
}
MailChimpService.groovy
import grails.util.Holders
import groovyx.net.http.Method
class MailChimpService {
def grailsApplication
ApiConsumerService apiConsumerService
final String AUTH = Holders.config.grails.mailChimp.auth
final String BASEURL = "https://us19.api.mailchimp.com/3.0/"
final String LISTID = "abc123"
//Add list of tags by name to list of subscribers by email
def addTagsToContactsByName(List emailAddresses, List tags = []) {
tags.each { tagName ->
addMembersToSegment(emailAddresses, tagName);
}
}
//Add a tag to a subscriber by name
def addMembersToSegment(List emailAddresses, String segmentName) {
def segmentsByName = getAllSegmentsInList()
String segmentId = segmentsByName["$segmentName"] as String
return addMailChimpTagToUsers(emailAddresses, segmentId)
}
//Get information about all available segments for a specific list.
def getAllSegmentsInList(Map query = [:]) {
String path = "lists/"+LISTID+"/segments/"
Map segments = [:]
def segmentResults = apiConsumerService.getRequest(BASEURL, path, AUTH, query, Method.GET)
segmentResults.segments.each { segment ->
segments.put(segment.name, segment.id)
}
return segments
}
//Add list of tags to a list members.
def addMailChimpTagToUsers(List emailAddresses = [], String segmentId) {
String path = "lists/LISTID/segments/" + segmentId
apiConsumerService.postRequest(BASEURL, path, AUTH, ['members_to_add': emailAddresses], Method.POST)
}
}
/* Create an empty inner array to hold the tags, each itself an array. */
$tags_inner_array = array();
/* Create, too, a temp array that will hold info about just one tag */
$tmp_tag_info = array();
/* Now loop through our array of checkbox names (which are tag names) and their checked state */
foreach ($postdata as $tagname => $chboxstate ){
// Convert Boolean checkbox state to an 'active|inactive' string. (test) ? value if true : value if false
$chboxstate ? $tagstate = 'active' : $tagstate = 'inactive';
// Populate array with current tag info
$tmp_tag_info['name'] = $tagname ;
$tmp_tag_info['status'] = $tagstate ;
// ... and add above tag info to the tags inner-array
array_push($tags_inner_array, $tmp_tag_info);
}
8条答案
按热度按时间ma8fv8wu1#
如果要创建成员并在执行此操作时添加标记,可以按以下方式指定标记属性:
尽管MC API有些地方会告诉你填写一个名称和一个状态,它帮助我将标签定义为一个数组,但只粘贴标签的名称。
Seefan在这个帖子中的回答帮助了我,我想我想帮助一个花了几天时间的人(像我一样)弄清楚“标签”是如何指定的:add tags to mailchimp subscriber created via api php
gywdnpxw2#
标记替换了静态段。因此,用于创建标记以及向成员添加和删除标记的端点与以前用于管理段的端点相同。以下是有关端点的文档,用于通过API管理标记,其中包括请求和响应主体参数以及示例请求和响应:
http://developer.mailchimp.com/documentation/mailchimp/reference/lists/segments/
为了给你的成员添加标签,你需要在'static_segment'数组参数中包含他们的电子邮件地址。
希望能帮上忙。
5sxhfpxr3#
这是添加标签的官方方法:https://developer.mailchimp.com/documentation/mailchimp/reference/lists/members/tags/它工作正常,只是在我的测试中,响应消息是空的,即使添加了标记。
以下是Google Apps脚本中的示例代码:
esbemjvw4#
显然Mailchimp的“标签”是“段”。
我编写了几个函数,允许我按名称(而不是ID)向成员(即订阅者)的电子邮件地址。
这依赖于https://github.com/spatie/laravel-newsletter库。
P.S.非常感谢@Jelan,他的回答让我走上了正确的道路!
mutmk8jj5#
我也花了一段时间才弄明白这一点。他们的文档不清楚,似乎有两种方法来添加标签,要么通过标签端点使用POST,要么通过更新用户通过PATCH。下面是PHP中POST的一个例子:
jgwigjjp6#
这是WordPress的代码,但应该有帮助。我确实从另一个答案中得到了大部分信息,但在其他地方找不到它的工作。请注意,只有当订阅者已经存在于列表中,然后您可以标记或取消标记它们时,此操作才有效。
ikfrs5lh7#
使用Grails按名称将标签列表添加到通过电子邮件发送的用户列表的完整示例
请注意,您可能需要设置一些错误检查,以查看MailChimp受众成员是否存在。
BusinessLogicController.groovy
MailChimpService.groovy
ApiConsumerService.groovy
lvjbypge8#
工作示例-如何使用API v3和PHP(2023)在MailChimp上添加/删除标签
即使有了所有的答案,这也需要大量的时间来工作。
由于这在2023年仍然是一个相关的问题,这里有一个例子,已经过测试,可以在2023年一步一步地工作。
这是一个比较完整的答案,不仅给出了MailChimp所需的标签数组格式,而且给出了正确生成该数组所需的所有步骤。根据我的经验,知道阵列的 * 格式 *-但不知道 * 如何创建它 * -只是成功的一半。
场景
这是HTML和JavaScript部分,允许我们获取标记列表。
PHP处理器
然后JavaScript会将上面的数组POST到我们的PHP处理器。
请注意,在下面的内容中,假设MailChimp联系人存在,我们只是希望更新其关联的标记。
让我们包括我们需要的MailChimp信息。下面的信息自然是虚拟的,你可以在这里插入自己的信息:
首先检查我们有一些POST数据,并获得标签数组(课程名称)及其相关的表单复选框状态:
如果商务英语免费被勾选,我们将收到$postdata:
这里省略了验证/过滤这些数据的代码,但对于我们的示例,我们可以假设它一切正常,由我们的表单发布,通过了我们的安全检查等。你可以添加一个WordPress nonse到数组中,如果有效,将其从数组中删除,例如只留下一个标签数组。
为了回答如何更新标签的具体问题,我们需要将这个数组转换为MailChimp喜欢的标签数组。这看起来像这样:
要创建上面结构正确的$tagsinfo数组,可以使用下面的代码首先创建上面的“最里面”数组。
现在我们可以像这样轻松地创建完整的$tags_info数组:
最后,我们可以构造应该提交给MailChimp的参数。请注意,我们在最后一行对上面的$tags_info数组进行了json_encode:
为了构造POST的URL,我们使用以下内容。注意它以'/tags'结尾:
POST到MailChimp并检索响应代码。在这里,我们使用WordPress函数来做到这一点,但要注意的关键事情-如果你用另一种方式来做-是成功的实际响应代码:
'success'响应代码是204 -注意-为了完成我们的示例,我们将创建一个数组$return_to_js来保存它:
您也可以检查错误等,但这里省略了这些代码。
最后,如果我们通过JavaScript AJAX 调用PHP处理器脚本,我们可以通过发送$return_to_js数组来传递上面创建的状态消息:
我希望这个更完整的答案是有帮助的,当你成功地更新你的标签时,你也会在房间里跳舞。