2

我正在开发一个网络应用程序,它允许营销人员发布活动并产生潜在客户。我想将 Facebook 线索广告平台集成到我的网络应用程序中,这样我就可以允许营销人员在两个平台上发布活动。为此,我需要来自 developers.Facebook.com 的一些资源或开发人员 API。我在那里进行了广泛的搜索,但没有成功。有人可以向我指出有关 Facebook 线索广告的特定开发人员指南吗?

4

1 回答 1

1

您可以在您的应用程序中创建一个 Webhook,该 Webhook 在产生新线索时触发。

我采取的步骤遵循这篇文章

只需创建一个 Facebook Webhook 可以使用的 API 端点

GET

POST

然后,当您的 Webhook 处于活动状态时(这就是 GET 的用途),您可以在 Facebook 发送到您的端点的 POST 中接收潜在客户信息。

一些代码为您提供上下文(使用 Express 的 Node.js):

'use strict';

var express = require('express');
var controller = require('./facebook.controller');

var router = express.Router();

router.get('/', controller.index);
router.post('/', controller.webhook);

module.exports = router;

GET 端点

// Confirm token that was set in the Webhook setup 
exports.index = function (req, res) {
  console.log(req.query);
  var challenge = req.query['hub.challenge'],
    verify_token = req.query['hub.verify_token'];
  if (verify_token === 'YOUR_TOKEN') {
    res.send(challenge);
  }
};

POST 端点

'use strict';
var _ = require('lodash');
var fb = require('fb'); 
fb.setAccessToken('acces_token');
var getResponseAPI = require('getresponse-nodejs-api')('API_KEY');

exports.webhook = function(req, res) {
  var leadName, leadEmail;
  // Lead Info 
  var fbChanges = req.body.entry[0].changes;
  var getLeadFromFacebook = new Promise(function(resolve, reject) {
    if (fbChanges !== undefined) {
      fbChanges.forEach(function(item, index) {
        //You need to retrieve the User info from the changes because Facebook Just gives you UID
        var getUserInfoFromGraph = new Promise(
          function(resolve, reject) {
            var leadId = item.value.leadgen_id;
            fb.api(leadId.toString(), function(res) {
              if (!res || res.error) {
                console.log(!res ? 'error occurred' : res.error);
                reject(res.error);
              }
              resolve(res);
            });

          }
        );
        getUserInfoFromGraph.then(function(userInfo) {
          //To give you a picture the content of the data
          console.log(JSON.stringify(userInfo.field_data));
          userInfo.field_data.forEach(function(item) {
            if (item.name === 'full_name') {
              leadName = item.values[0];
            } else if (item.name === 'email') {
              leadEmail = item.values[0];
            }
          });
        }).then(function(leadInfo) {
          //Work with info here I'm using getResponse :)
          getResponseAPI.addContact('CAMPAIGN_ID', leadName, leadEmail, null, 0, {}, function(response) {
            if (response.data.error) {
              console.log('Error' + response.data.error.message);
            }
            console.log(JSON.stringify(response));
          });

        });
      });
    } else {
      res.status(400);
    }
  });
};
于 2016-03-18T00:29:47.610 回答