Facebook市场营销API--受众优化marketing-api-audiences

     最近做了一个facebook(简称:fb)的受众优化功能。受众优化?什么是受众?什么是受众优化?简单来说就是:在fb上发广告时,你会在发广告的时候设置这条广告可以被什么样的人看到。例如我想让江苏省,年龄在20~30之间的女性看到这条广告,这在facebook市场营销中,是可以发广告,来定位这些人群的。而这些人群就是受众。受众优化:就是通过AI学习,让你的广告被更可能买你产品的人看到。所以我们要做的就是将crm(客户关系管理系统)中的有效数据(我们传的是crm中的邮箱)通过fb的接口传给fb,这样AI拿到数据,就可以进行学习,让受众更加准确。详解见facebook官网https://developers.facebook.com/docs/marketing-api/audiences-api

将自己系统中crm中邮箱数据,传到fb;这里需要注意的是:我们上传到fb数据是json数组,而不是一个json对象

import java.util.ArrayList;
import java.util.List;

import com.facebook.ads.sdk.APIContext;
import com.facebook.ads.sdk.CustomAudience;
import com.facebook.ads.sdk.User;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.xhl.cuss.social.audienceoptimization.util.FBAudienceOptimizationUtil;

public class TestAudience {
	public void testFacebookAudience() throws Exception{
		List<String> emails = new ArrayList<String>();//需要受众优化的邮箱集合
		emails.add("*****@163.com");
		emails.add("*****@qq.com");
		String fbToken = "";//fbtoken
		String audienceId = "23843006257588608";//自定义受众id
		APIContext context = new APIContext(fbToken).enableDebug(true);
		JsonObject params = new JsonObject();
		JsonArray emailsha = new JsonArray();
		emailsha.add("EMAIL_SHA256");
		params.add("schema", emailsha);
		JsonArray email = FBAudienceOptimizationUtil.transformEmails(emails);
		params.add("data", email);//json数组,而不是json对象
//		String params3 = "{\"schema\":[\"EMAIL_SHA256\"],\"data\":[[\"*****@163.com\"], 
        //[\"*******@qq.com\"]]}";
		if(email != null && email.size() > 0){
			if (audienceId != null && !"".equals(audienceId)) {
				User user =  new CustomAudience(audienceId, 
         context).createUser().setPayload(params.toString()).execute();//使用单键匹配添加用户
			}
		}
	}
}

由于fb要求必须使用 SHA256 对数据进行哈希处理,所有下面是对数据哈希处理的工具类

import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.util.ArrayList;
import java.util.List;
import com.google.gson.JsonArray;


public class FBAudienceOptimizationUtil {
	
	public static String sha256(String message) {
		try {
			MessageDigest digest = MessageDigest.getInstance("SHA-256");
			byte[] hash = digest.digest(message
					.getBytes(StandardCharsets.UTF_8));
			return toHex(hash);
		} catch (Exception e) {
			return null;
		}
	}

	public static String toHex(byte[] bytes) {
		StringBuilder sb = new StringBuilder();
		for (byte b : bytes) {
			sb.append(String.format("%1$02x", b));
		}
		return sb.toString();
	}
	
	public static JsonArray transformEmails(List<String> emails){
		JsonArray email1 = null;
		JsonArray result = new JsonArray();
		if(emails != null && emails.size() > 0){
			for(String email : emails){
				if(email == null || "".equals(email))
					continue;
				email1 = new JsonArray();
				email1.add(email.trim());
				result.add(email1);
			}
		}
		
		return result;
	}
	public static void main(String[] args) {
		String params3 = "{\"schema\":[\"EMAIL_SHA256\"],\"data\": 
      [[\"******@gmail.com\"],[\"******@qq.com\"]]}";
		List<String> emails = new ArrayList<String>();
		emails.add("*********@gmail.com");
		emails.add("*********@gmail.com");
		emails.add("*********@gmail.com");
		
		System.out.println(transformEmails(emails));
		System.out.println(transformEmails(emails).toString());
		System.out.println(params3);
	}
}

注意:我们这里是将数据上传到自定义受众中,然后进行受众优化。即您在fb商务管理平台https://business.facebook.com上创建的应该是下面的自定义受众;怎么在fb商务平台创建受众,就咨询你们公司的运营同事吧~~~

   

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值