我面对以下情况:
直到那时所做的一切都很有效,但是当我去Facebook并导航到产品受众时,它在创建受众时没有设置任何数据。 (例如,PIXEL_ID,PRODUCT_SET_ID,INCLUSIONS& EXCLUSIONS未设置)
这就是我的代码的样子:
use FacebookAds\Object\ProductAudience;
use FacebookAds\Object\Fields\ProductAudienceFields;
$productAudience = new ProductAudience($this->id, <myFacebookAdAccountId>);
$audienceData = [
ProductAudienceFields::PIXEL_ID => <myPixelId>,
ProductAudienceFields::PRODUCT_SET_ID => <myProductSetId>,
ProductAudienceFields::NAME => 'Name for the audience',
];
if (count($this->inclusions)) $audienceData[ProductAudienceFields::INCLUSIONS] = $this->inclusions;
if (count($this->exclusions)) $audienceData[ProductAudienceFields::EXCLUSIONS] = $this->exclusions;
$productAudience->setData($audienceData);
return $productAudience->create();
所以我想知道,我做错了什么?希望得到一些指导......已经失去了一个工作日试图修复它而没有任何结果。
我还尝试通过API检索数据:
$productAudience = new ProductAudience($this->id);
return $productAudience->read([
ProductAudienceFields::PIXEL_ID,
ProductAudienceFields::NAME,
ProductAudienceFields::DESCRIPTION,
]);
返回以下对象:
#data: array:7 [
"id" => "6047126484024"
"name" => "Name for the audience"
"description" => null
"product_set_id" => null
"pixel_id" => null
"inclusions" => null
"exclusions" => null
]
这些值也设置为空......使用的API I版本是2.5.0
答案 0 :(得分:0)
为我的问题找到了解决方案
$productAudience = new ProductAudience($this->id);
$productAudience->read([
ProductAudienceFields::PIXEL_ID,
ProductAudienceFields::NAME,
ProductAudienceFields::DESCRIPTION,
'data_source',
]);
它没有设置值,所以product_set_id和其他几个字段仍然设置为null,但我们得到了&#39; creation_params&#39;中的所有字段。对象
我还创建了一个帮助函数来设置所需的值:
private function fieldsFromDataSourceToObject(ProductAudience &$productAudience)
{
$creationParams = json_decode($productAudience->data_source['creation_params']);
$productAudience->setData([
ProductAudienceFields::PRODUCT_SET_ID => $creationParams->product_set_id,
ProductAudienceFields::INCLUSIONS => json_decode($creationParams->inclusions, true),
ProductAudienceFields::EXCLUSIONS => json_decode($creationParams->exclusions, true),
]);
}
因此,在阅读现有产品受众后,我只需将响应调用为辅助函数作为参数
$this->fieldsFromDataSourceToObject($productAudience);
希望这个解决方案能节省时间。