我有两个不同的Facebook主导广告系列(A和B)连接到同一个FB页面,我已经使用Facebook广告PHP sdk将其连接到此guide之后的webhook,并将潜在客户传递给我CRM,一切正常,问题是我不知道主导是来自A或B 。
我试图从这个名字中拉出来:
$input = json_decode(file_get_contents('php://input'), true);
if($input)
{
$form_id = $input['entry'][0]['changes'][0]['value']['form_id'];
$form = AdsWebhookHandler::getFormName($form_id);
}
来自AdsWebhookHandler
班级:
public static function getFormName($form_id)
{
$form = new LeadgenForm($form_id);
if(!$form) return $form_id;
return $form->read();
}
但是由于某种原因,表单总是返回空({}
)。
有谁知道如何拉取表格名称?甚至更好 - 是否可以在表单中传递自定义隐藏字段?
谢谢大家的回答:)
答案 0 :(得分:1)
O.K所以我弄清楚如何获取表单名称,我需要做的就是使用Facebook PHP SDK中包含的public function getFormName($form_id)
{
$form = new LeadgenForm($form_id,null,$this->fb_instance);
if(!$form) return $form_id;
$data = $form->read()->getData();
return isset($data['name']) ? $data['name'] : $form_id;
}
函数,我的代码现在看起来像这样:
Console.ReadLine
希望它能在将来帮助某人:)
答案 1 :(得分:0)
更新:2020年
跳过这个问题,因为它是最高的结果,我也遇到了类似的问题。我通过Webhook可以获取表单数据,但是没有包括实际的表单名称。
解决方案
假设您已经具有权限,并且已经在接收表单数据,但是当前未接收到表单名称。
只需将GET请求发送给
https://graph.facebook.com/v8.0/<form_id>?access_token=<access_token>
确保使用正确的API版本。对我来说,这是当前的v8.0
我目前在Laravel上使用Guzzle,所以我的解决方法是这个。
private function getLeadFormName(string $formId, string $accessToken)
{
$client = new Client();
$url = "https://graph.facebook.com/v8.0/{$formId}?access_token={$accessToken}";
try {
$response = $client->get($url);
} catch (RequestException $e) {
// handle however you wish
}
if (!empty($response)) {
$body = json_decode($response->getBody()->getContents());
return $body->name;
}
}
希望这对其他用户有所帮助。