Facebook营销API ProductAudience并没有保存一些价值

时间:2016-05-13 14:20:23

标签: php facebook api methods

我面对以下情况:

  1. 我创建了一个像素(在项目中使用它:ViewProduct,AddToBasket& Purchase)
  2. 创建目录+创建产品Feed +创建产品集
  3. 实施ProductAudience以在Facebook上创建受众。
  4. 直到那时所做的一切都很有效,但是当我去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

1 个答案:

答案 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);

希望这个解决方案能节省时间。