העלאה של קהלים בהתאמה ללקוחות

אפשר ליצור קהלים מסוג 'התאמה ללקוחות' באמצעות העלאת הפרטים של אנשי הקשר ללקוחות מידע או מזהים של מכשירים ניידים באמצעות הצג Video 360 API בדף הזה נסביר איך כדי ליצור קהל ראשוני מסוג 'התאמה ללקוחות' ולהוסיף נתוני לקוחות חדשים קהל קיים באמצעות רשת המדיה Video 360 API

הכנת נתוני משתמשים

נתוני המשתמשים שמשמשים לאכלוס קהלים מסוג 'התאמה ללקוחות' הם רגישים וצריך להיות בהם הכנה כראוי לפני ההעלאה.

גיבוב (hash) של מידע אישי רגיש

חלק מהקהלים מסוג 'התאמה ללקוחות' נוצרים באמצעות פרטי קשר רגישים של לקוחות מידע. תצוגה ו כדי להשתמש ב-Video 360, צריך לבצע גיבוב של מידע אישי רגיש באמצעות אלגוריתם SHA256 לפני ההעלאה. שדות הנתונים הבאים צריכים להיות מגובבים (hash) לפני ההעלאה:

  • שם פרטי
  • שם משפחה
  • כתובות אימייל
  • מספרי טלפון

אין לבצע גיבוב (hash) של מספרי המיקוד והמדינות לפני ההעלאה. מתבצע ניסיון כשמעלים נתוני לקוחות לא מגובבים (hashed), מתקבלת הודעת שגיאה.

לפני הגיבוב של הנתונים, חשוב לוודא את התנאים הבאים:

  • צריך להסיר רווחים לבנים מהשם הפרטי, משם המשפחה ומכתובת האימייל. ערכים.
  • כל הערכים צריכים להיות באותיות קטנות.
  • כל מספרי הטלפון צריכים להיות בפורמט של פורמט E.164 וגם כוללים את קידומת החיוג למדינה.

כשמעלים נתוני משתמשים, צריך להשתמש בשדות consent ContactInfoList או אובייקטים של MobileDeviceIdList להעברת אותות הסכמה שניתנה על ידי המשתמשים הכלולים.

הגדרה של אחד מהשדות באובייקט Consent לערך CONSENT_STATUS_DENIED תגרום לשגיאה.

אותות הסכמה מוגדרים לכל המשתמשים שנוספו לרשימה אחת firstAndThirdPartyAudiences.create או firstAndThirdPartyAudiences.editCustomerMatchMembers בקשה. צריך להעלות משתמשים עם אותות הסכמה שונים בקבצים נפרדים בקשות.

יצירת קהל מסוג 'התאמה ללקוחות'

כדי ליצור קהל מסוג 'התאמה ללקוחות', firstAndThirdPartyAudiences.create. על הקהל להיות מוגדר כקהל מאינטראקציה ישירה, וצריכה להיות להם audienceType מתוך CUSTOMER_MATCH_CONTACT_INFO או CUSTOMER_MATCH_DEVICE_ID. נתוני ההתאמה ללקוחות צריכים להיות סופקו באמצעות השדה המתאים בשדה האיחוד members

הנה דוגמה ליצירת פרטים חדשים ליצירת קשר עבור 'התאמה ללקוחות' קהל עם משך חברות בלתי מוגבל באמצעות רשימה מגובבת (hashed) שסופקה מספרי טלפון:

Java

// Create Customer Match audience object.
FirstAndThirdPartyAudience customerMatchAudience =
    new FirstAndThirdPartyAudience()
        .setDisplayName(display-name)
        .setFirstAndThirdPartyAudienceType(
            "FIRST_AND_THIRD_PARTY_AUDIENCE_TYPE_FIRST_PARTY"
        )
        .setAudienceType("CUSTOMER_MATCH_CONTACT_INFO")
        .setMembershipDurationDays(10000L);

// Build list of contact information objects.
ContactInfoList contactInfoList = new ContactInfoList();
ArrayList<ContactInfo> contactInfos = new ArrayList<ContactInfo>();
for (String hashedPhoneNumber : list-of-hashed-phone-numbers) {
  ContactInfo contactInfo = new ContactInfo();
  ArrayList<String> phoneNumberList = new ArrayList<String>();
  phoneNumberList.add(hashedPhoneNumber);
  contactInfo.setHashedPhoneNumbers(phoneNumberList);
  contactInfos.add(contactInfo);
}
contactInfoList.setContactInfos(contactInfos);

// Build consent object for passing consent if granted by the end user.
Consent consent =
    new Consent()
        .setAdUserData(ad-user-data-consent)
        .setAdPersonalization(ad-personalization-consent);
ContactInfoList.setConsent(consent);

// Assign contact info list to Customer Match audience.
customerMatchAudience.setContactInfoList(contactInfoList);

// Create Customer Match audience.
FirstAndThirdPartyAudience response =
    service
        .firstAndThirdPartyAudiences()
        .create(customerMatchAudience)
        .setAdvertiserId(advertiser-id)
        .execute();

// Display name of new audience.
System.out.printf(
    "Customer Match audience %s was created.",
    response.getName()
);

Python

# Build list of Contact Info objects
contact_infos = []
for hashed_phone_number in list-of-hashed-phone-numbers:
  contact_infos.append({'hashedPhoneNumbers': [hashed_phone_number]})

# Create a Customer Match first- and third-party audience object.
audience_obj = {
    'displayName': display-name,
    'firstAndThirdPartyAudienceType':
        'FIRST_AND_THIRD_PARTY_AUDIENCE_TYPE_FIRST_PARTY',
    'audienceType': 'CUSTOMER_MATCH_CONTACT_INFO',
    'membershipDurationDays': 10000,
    'contactInfoList': {
        'contactInfos': [
            contact_infos
        ],
        'consent': {
            'adUserData': ad-user-data-consent,
            'adPersonalization': ad-personalization-consent
        }
    }
}

# Build and execute request.
audience = service.firstAndThirdPartyAudiences().create(
    advertiserId=advertiser-id,
    body=audience_obj
).execute()

# Display name of new audience.
print('Customer Match audience %s was created.' % audience["name"])

PHP

// Create a Customer Match first- and third-party audience object.
$audience = new Google_Service_DisplayVideo_FirstAndThirdPartyAudience();
$audience->setDisplayName(display-name);
$audience->setFirstAndThirdPartyAudienceType(
    'FIRST_AND_THIRD_PARTY_AUDIENCE_TYPE_FIRST_PARTY'
);
$audience->setAudienceType('CUSTOMER_MATCH_CONTACT_INFO');
$audience->setMembershipDurationDays(10000);

// Build list of contact information objects.
$contactInfoList = new Google_Service_DisplayVideo_ContactInfoList();
$contactInfos = array();
foreach (list-of-hashed-phone-numbers as $hashedPhoneNumber) {
    $contactInfo = new Google_Service_DisplayVideo_ContactInfo();
    $contactInfo->setHashedPhoneNumbers(array($hashedPhoneNumber));
    $contactInfos[] = $contactInfo;
}
$contactInfoList->setContactInfos($contactInfos);

// Build consent object for passing consent if granted by the end user.
$consent = new Google_Service_DisplayVideo_Consent();
$consent->setAdUserData(ad-user-data-consent);
$consent->setAdPersonalization(ad-personalization-consent);
$contactInfoList->setConsent($consent);

// Assign contactInfoList to audience object.
$audience->setContactInfoList($contactInfoList);

// Call the API, creating the audience.
$result = $this->service->firstAndThirdPartyAudiences->create(
    $audience,
    array('advertiserId' => advertiser-id)
);

// Display name of new audience.
printf('Customer Match audience %s was created.', $result['name']);

עדכון של רשימת החברים בקהל מסוג 'התאמה ללקוחות'

אם זיהיתם לקוחות נוספים שאתם רוצים לטרגט, צריך: חידוש לקוחות חברויות קיימות בקהלים, או שאתם רוצים להסיר לקוחות מתוך קהל, אפשר לעדכן את נתוני הלקוחות של לקוח קיים התאמת הקהל עם firstAndThirdPartyAudiences.editCustomerMatchMembers . אפשר להוסיף לקוחות לרשימה באמצעות שדה איחוד added_members ולהסיר לקוחות רשימה עם שדה האיחוד removed_members.

סינגל firstAndThirdPartyAudiences.editCustomerMatchMembers מותר להוסיף או להסיר רק חברים ברשימה. ניסיון בקשה אחד כדי לבצע את שתי התוצאות ולקבל שגיאה INVALID_ARGUMENT.

הנה דוגמה שממחישה איך להוסיף לקוח יחיד כחבר מועדון קיים פרטים ליצירת קשר קהל התאמה ללקוחות באמצעות נתוני הכתובת למשלוח דואר שסופקו:

Java

// Create an edit members request object.
EditCustomerMatchMembersRequest editCustomerMatchMembersRequest =
    new EditCustomerMatchMembersRequest()
        .setAdvertiserId(advertiser-id);

// Build contact information object to add to audience.
ContactInfoList contactInfoList = new ContactInfoList();
ArrayList<ContactInfo> contactInfos = new ArrayList<ContactInfo>();
ContactInfo contactInfo =
    new ContactInfo()
        .setHashedFirstName(hashed-customer-first-name)
        .setHashedLastName(hashed-customer-last-name)
        .setZipCodes(customer-zip-codes-list)
        .setCountryCode(customer-country-code);
contactInfos.add(contactInfo);
contactInfoList.setContactInfos(contactInfos);

// Build consent object for passing consent if granted by the end user.
Consent consent =
    new Consent()
        .setAdUserData(ad-user-data-consent)
        .setAdPersonalization(ad-personalization-consent);
ContactInfoList.setConsent(consent);

// Assign contact info list to request body.
editCustomerMatchMembersRequest.setAddedContactInfoList(contactInfoList);

// Edit Customer Match audience membership.
EditCustomerMatchMembersResponse response =
    service
        .firstAndThirdPartyAudiences()
        .editCustomerMatchMembers(
            audience-id,
            editCustomerMatchMembersRequest
        )
        .execute();

// Display ID of updated audience.
System.out.printf(
    "The membership of Customer Match audience ID %s was edited.",
    response.getFirstAndThirdPartyAudienceId()
);

Python

# Create an edit members request object.
edit_member_request_obj = {
    'advertiserId': advertiser-id,
    'addedContactInfoList': {
        'contactInfos': [
            {
                'hashedFirstName': hashed-customer-first-name,
                'hashedLastName': hashed-customer-last-name,
                'countryCode': customer-country-code,
                'zipCodes': customer-zip-codes-list
            }
        ],
        'consent': {
          'adUserData': ad-user-data-consent,
          'adPersonalization': ad-personalization-consent
        }
    }
}

# Build and execute request.
response = service.firstAndThirdPartyAudiences().editCustomerMatchMembers(
    firstAndThirdPartyAudienceId=audience-id,
    body=edit_member_request_obj
).execute()

# Display ID of updated audience.
print('The membership of the Customer Match audience ID %s was updated.'
      % response["firstAndThirdPartyAudienceId"])

PHP

// Create an edit members request object.
$editMemberRequest =
    new Google_Service_DisplayVideo_EditCustomerMatchMembersRequest();
$editMemberRequest->setAdvertiserId(advertiser-id);

// Build contact information object to add to audience.
$contactInfoList = new Google_Service_DisplayVideo_ContactInfoList();
$contactInfos = array();
$contactInfo = new Google_Service_DisplayVideo_ContactInfo();
$contactInfo->setHashedFirstName(hashed-customer-first-name);
$contactInfo->setHashedLastName(hashed-customer-last-name);
$contactInfo->setCountryCode(customer-country-code);
$contactInfo->setZipCodes(array(customer-zip-codes-list));
$contactInfos[] = $contactInfo;
$contactInfoList->setContactInfos($contactInfos);

// Build consent object for passing consent if granted by the end user.
$consent = new Google_Service_DisplayVideo_Consent();
$consent->setAdUserData(ad-user-data-consent);
$consent->setAdPersonalization(ad-personalization-consent);
$contactInfoList->setConsent($consent);

// Assign contactInfoList to edit members request body.
$editMemberRequest->setAddedContactInfoList($contactInfoList);

// Call the API, editing the audience membership.
$response = $this
    ->service
    ->firstAndThirdPartyAudiences
    ->editCustomerMatchMembers(
        audience-id,
        $editMemberRequest
    );

// Display ID of updated audience.
printf(
    'The membership of Customer Match audience ID %s was edited',
    $result['firstAndThirdPartyAudienceId']
);