Nano Hash - криптовалюты, майнинг, программирование

Как использовать createUser в рекламе Facebook (для замены устаревших addUsers)

Теперь, когда я обновился до "facebook/php-ads-sdk": "2.8.*" (https://github.com/facebook/facebook-php-ads-sdk), эта моя функция больше не работает:

public function addToCustomAudience($entriesArray, $audienceId, $inputType = CustomAudienceTypes::EMAIL) {
    $audience = new CustomAudience($audienceId);
    $result = $audience->addUsers($entriesArray, $inputType);
    return $result;
}

Судя по всему, addUsers больше нет в наличии.

Я вижу функцию createUser, но она выглядит совсем по-другому, и в Интернете нет документации о том, как перейти с addUsers на createUser.

То, что я хочу сделать, просто.

Учитывая массив адресов электронной почты и идентификатор аудитории, как я могу добавить все эти адреса электронной почты в эту пользовательскую аудиторию Facebook?


Ответы:


1

Из того, что я вижу в коде, addUsers все еще там, и это задокументировано на сайте разработчика.

Я только что использовал последнюю версию SDK вместе со следующим кодом для обновления аудитории:

use FacebookAds\Object\CustomAudience;
use FacebookAds\Object\Values\CustomAudienceTypes;

$emails = array(
  '[email protected]',
  '[email protected]',
  '[email protected]',
);

$audience = new CustomAudience(<CUSTOM_AUDIENCE_ID>);

$audience->addUsers($emails, CustomAudienceTypes::EMAIL);
17.05.2017
  • Вы можете видеть, что addUsers существовал еще 5 октября 2016 года, но был помечен как устаревший (github.com/facebook/facebook-php-ads-sdk/blob/) и в более поздних коммитах (github.com/facebook/facebook-php-ads-sdk/ blob/) его больше нет. 17.05.2017
  • ах, это странно, позвольте мне найти новый способ сделать это. 18.05.2017
  • Похоже, мы ввели здесь ошибку и исправляем ее, надеюсь, мы сможем выпустить исправление сегодня. 18.05.2017
  • Круто, я вижу, что addUsers снова вернулся в SDK: github.com/facebook/facebook-php-ads-sdk/blob/ 23.05.2017
  • На github.com/facebook/facebook-php-ads-sdk/releases, я вижу, что github.com/facebook/facebook-php- ads-sdk/tree/ — это последняя версия (2.9.1), но ее разница с «master» показывает, что addUsers еще не прочитано (github.com/facebook/facebook-php-ads-sdk/compare/). И теперь я начинаю Failed to update the custom audience: This audience was created from data source FILE_IMPORTED.MULTI_HASHES, which does not support data source FILE_IMPORTED.HASHES_OR_USER_IDS очень расстраиваться. 07.06.2017
  • Я вижу, что если я перейду с 2.8.2 на 2.9.2, я снова смогу использовать addUsers. Вот отличия SDK: 19.07.2017
  • Привет, @PaulBain, я надеялся, что ты заглянешь в этот вопрос о LTV Custom Audiences. Спасибо! stackoverflow .com/questions/45438479/ 07.08.2017
  • @Ryan, ты смог решить проблему This audience was created from data source FILE_IMPORTED.MULTI_HASHES, which does not support data source FILE_IMPORTED.HASHES_OR_USER_IDS? Получив то же самое в Python SDK, сообщил об этом здесь: github.com/facebook /facebook-python-ads-sdk/issues/433 16.01.2018
  • @MikhailDubov По моему опыту, FB совершенно не заботятся о разработчиках или владельцах бизнеса. Они оставляют свои проблемы и даже пулл-реквесты заброшенными. Они вносят критические изменения в свой API почти без предупреждения. К сожалению, у меня нет для вас предложений. Надеюсь, их команда Python больше заботится об этом. Удачи. 16.01.2018
  • @Ryan Ах, грустно это слышать! По крайней мере, я думаю, что понял, что было не так в моем случае - похоже, эта проблема возникает только тогда, когда пользовательская аудитория была создана вручную на панели объявлений, но исчезает, если вы создаете ее с помощью API. Я хотел бы, чтобы это было четко сформулировано в их документах... 16.01.2018

  • 2

    Кажется, это работает для моих целей.

    Я скопировал некоторый код из facebook-php-ads-sdk в качестве обходного пути.

    $audience = new CustomAudience($audienceId);
    $params = $this->formatParams($entriesArray, $inputType, [], false);
    $audience->createUser([], $params, false); 
    
    
    /**
     * Copied this from Facebook's https://github.com/facebook/facebook-php-ads-sdk/blob/d51193b19d730ae9274d45540986e1ac311b074d/src/FacebookAds/Object/CustomAudience.php#L363
     * Take users and format them correctly for the request
     *
     * @param array $users
     * @param string $type
     * @param array $app_ids
     * @param bool $is_hashed
     * @return array
     */
    protected function formatParams(array $users, $type, array $app_ids = array(), $is_hashed = false) {
        if ($type == CustomAudienceTypes::EMAIL || $type == CustomAudienceTypes::PHONE) {
            $normalizer = new EmailNormalizer();
            $hash_normalizer = new HashNormalizer();
            foreach ($users as &$user) {
                if ($type == CustomAudienceTypes::EMAIL) {
                    $user = $normalizer->normalize(CustomAudienceTypes::EMAIL, $user);
                }
                if (!$is_hashed) {
                    $user = $hash_normalizer->normalize(
                            CustomAudienceTypes::EMAIL, $user);
                }
            }
        }
        $payload = array(
            'schema' => $type,
            'data' => $users,
        );
        if ($type === CustomAudienceTypes::ID) {
            if (empty($app_ids)) {
                throw new \InvalidArgumentException(
                "Custom audiences with type " . CustomAudienceTypes::ID . " require"
                . "at least one app_id");
            }
            $payload['app_ids'] = $app_ids;
        }
        return array('payload' => $payload);
    }
    
    17.05.2017
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..