يقدِّم هذا الدليل تعليمات تفصيلية عن تعديل الإحالات الناجحة باستخدام خدمة Conversions
Campaign Manager 360 API. وقبل المتابعة، ننصحك بمراجعة النظرة العامة للحصول على مقدمة عن الإحالات الناجحة خارج إطار الإنترنت والتعرّف على المفاهيم التي تمت مناقشتها في هذا الدليل.
قبل البدء
يسمح لك سير عمل التعديل هذا بتعديل quantity
وvalue
للإحالات الناجحة الحالية على الإنترنت وبلا إنترنت. ولإجراء ذلك، ستحتاج إلى تقديم قيم تحدِّد الإحالات الناجحة بشكلٍ فريد وتعديلها. حسب نوع الإحالات الناجحة التي تعدّلها، ستحصل على القيم التالية بطرق مختلفة:
يمكن الحصول على القيم اللازمة لتحديد الإحالات الناجحة على الإنترنت من نقل البيانات.
يتم عرض القيم اللازمة لتحديد الإحالات الناجحة خارج إطار الإنترنت في
ConversionsBatchInsertResponse
من طلباتbatchinsert
الناجحة.
بعد تعديل إحالة ناجحة من أي نوع بنجاح، ستحتوي ConversionsBatchUpdateResponse
على القيم اللازمة لإجراء تعديلات لاحقة.
ضبط موارد الإحالة الناجحة
تتضمّن الخطوة الأولى في سير عمل التعديل إنشاء عنصر واحد أو أكثر من عناصر Conversion
.
تُستخدَم الحقول التالية لتحديد إحالة ناجحة يجب تعديلها. هذه الحقول مطلوبة ويجب أن تتطابق بدقة مع إحالة ناجحة حالية.
الحقل | الوصف |
---|---|
|
رقم تعريف المستخدم المشفّر، أو معرّف النقرة من Google، أو معرّف النقرة على الشبكة الإعلانية، أو رقم تعريف المطابقة، أو رقم تعريف الجهاز الجوّال الذي أدى إلى إجراء الإحالة الناجحة. |
floodlightActivityId |
نشاط Floodlight الذي تتم إحالة الإحالة الناجحة إليه. |
floodlightConfigurationId |
إعدادات Floodlight التي يستخدمها النشاط المحدَّد. |
ordinal |
معرِّف إزالة التكرار المرتبط بالإحالة الناجحة. |
timestampMicros |
الطابع الزمني للإحالة الناجحة بالميكرو ثانية منذ حقبة Unix |
فيما يلي الحقول التي يمكن تعديلها. هذه الحقول مطلوبة وسيتم استبدال القيم التي تقدّمها بأي قيم متوفّرة مسبقًا في الإحالة الناجحة التي يتم تعديلها.
الحقل | الوصف |
---|---|
quantity |
عدد العناصر المرتبطة بالإحالة الناجحة. |
value |
مبلغ الأرباح الناتجة عن الإحالة الناجحة. |
جميع الحقول الأخرى المذكورة في المستندات المرجعية غير متوافقة ولا يمكن تعديلها. سيؤدي تضمين حقول غير متوافقة في طلب التعديل إلى حدوث خطأ. إذا كانت الإحالة الناجحة المعدَّلة تحتوي على قيم متوفّرة مسبقًا لأي حقول غير متوافقة، سيتم الاحتفاظ بهذه القيم تلقائيًا.
يوضّح المثال التالي إنشاء عنصر موارد إحالة ناجحة بسيط لتعديله:
C#
// Find the Floodlight configuration ID based on the provided activity ID. FloodlightActivity floodlightActivity = service.FloodlightActivities.Get(profileId, floodlightActivityId).Execute(); long floodlightConfigurationId = (long) floodlightActivity.FloodlightConfigurationId; // Construct the conversion object with values that identify the conversion to update. Conversion conversion = new Conversion(); conversion.EncryptedUserId = conversionUserId; conversion.FloodlightActivityId = floodlightActivityId; conversion.FloodlightConfigurationId = floodlightConfigurationId; conversion.Ordinal = conversionOrdinal; conversion.TimestampMicros = conversionTimestamp; // Set the fields to be updated. These fields are required; to preserve a value from the // existing conversion, it must be copied over manually. conversion.Quantity = newQuantity; conversion.Value = newValue;
لغة Java
// Create a conversion object populated with values that identify the conversion to update. Conversion conversion = new Conversion(); conversion.setEncryptedUserId(encryptedUserId); conversion.setFloodlightActivityId(floodlightActivityId); conversion.setFloodlightConfigurationId(floodlightConfigurationId); conversion.setOrdinal(ordinal); conversion.setTimestampMicros(timestampMicros); // Set the fields to be updated. These fields are required; to preserve a value from the // existing conversion, it must be copied over manually. conversion.setQuantity(newQuantity); conversion.setValue(newValue);
2,999
// Find Floodlight configuration ID based on provided activity ID. $activity = $this->service->floodlightActivities->get( $values['user_profile_id'], $values['floodlight_activity_id'] ); $floodlightConfigId = $activity->getFloodlightConfigurationId(); // Create a conversion object with values that identify the conversion to // update. $conversion = new Google_Service_Dfareporting_Conversion(); $conversion->setEncryptedUserId($values['encrypted_user_id']); $conversion->setFloodlightActivityId($values['floodlight_activity_id']); $conversion->setFloodlightConfigurationId($floodlightConfigId); $conversion->setOrdinal($values['ordinal']); $conversion->setTimestampMicros($values['timestamp']); // Set the fields to be updated. These fields are required; to preserve a // value from the existing conversion, it must be copied over manually. $conversion->setQuantity($values['new_quantity']); $conversion->setValue($values['new_value']);
لغة Python
# Construct the conversion object with values that identify the conversion # to update. conversion = { 'encryptedUserId': encrypted_user_id, 'floodlightActivityId': floodlight_activity_id, 'floodlightConfigurationId': floodlight_config_id, 'ordinal': ordinal, 'timestampMicros': timestamp } # Set the fields to be updated. These fields are required; to preserve a # value from the existing conversion, it must be copied over manually. conversion['quantity'] = new_quantity conversion['value'] = new_value
Ruby
# Look up the Floodlight configuration ID based on activity ID. floodlight_activity = service.get_floodlight_activity(profile_id, existing_conversion[:floodlight_activity_id]) floodlight_config_id = floodlight_activity.floodlight_configuration_id # Construct the conversion with values that identify the conversion to # update. conversion = DfareportingUtils::API_NAMESPACE::Conversion.new( encrypted_user_id: existing_conversion[:encrypted_user_id], floodlight_activity_id: existing_conversion[:floodlight_activity_id], floodlight_configuration_id: floodlight_config_id, ordinal: existing_conversion[:ordinal], timestamp_micros: existing_conversion[:timestamp] ) # Set the fields to be updated. These fields are required; to preserve a # value from the existing conversion, it must be copied over manually. conversion.quantity = new_quantity conversion.value = new_value
تحديد معلومات التشفير
إذا كانت الإحالات الناجحة التي يتم تعديلها مرتبطة بمعرّفات مستخدمين مشفّرة، ستحتاج إلى تقديم تفاصيل عن كيفية تشفيرها كجزء من طلب التعديل. ارجع إلى دليل تحميل الإحالات الناجحة للاطّلاع على التفاصيل.
وعند الضرورة، يشكّل إنشاء كائن EncryptionInfo
يحدّد هذه القيم الخطوة الثانية في سير عمل التعديل:
C#
// Create the encryption info. EncryptionInfo encryptionInfo = new EncryptionInfo(); encryptionInfo.EncryptionEntityId = encryptionEntityId; encryptionInfo.EncryptionEntityType = encryptionEntityType; encryptionInfo.EncryptionSource = encryptionSource;
لغة Java
// Create the encryption info. EncryptionInfo encryptionInfo = new EncryptionInfo(); encryptionInfo.setEncryptionEntityId(encryptionEntityId); encryptionInfo.setEncryptionEntityType(encryptionEntityType); encryptionInfo.setEncryptionSource(encryptionSource);
2,999
$encryptionInfo = new Google_Service_Dfareporting_EncryptionInfo(); $encryptionInfo->setEncryptionEntityId($values['encryption_entity_id']); $encryptionInfo->setEncryptionEntityType($values['encryption_entity_type']); $encryptionInfo->setEncryptionSource($values['encryption_source']);
لغة Python
# Construct the encryption info. encryption_info = { 'encryptionEntityId': encryption_entity_id, 'encryptionEntityType': encryption_entity_type, 'encryptionSource': encryption_source }
Ruby
# Construct the encryption info. encryption_info = DfareportingUtils::API_NAMESPACE::EncryptionInfo.new( encryption_entity_id: encryption[:entity_id], encryption_entity_type: encryption[:entity_type], encryption_source: encryption[:source] )
إنشاء طلب تعديل
الخطوة الأخيرة في هذه العملية هي تعديل الإحالات الناجحة مع طلب المكالمة إلى batchupdate
. تقبل هذه الطريقة عنصر ConversionsBatchUpdateRequest
الذي يجمع مجموعة الإحالات الناجحة التي سيتم تعديلها مع معلومات التشفير المرتبطة بها (عند الضرورة):
C#
// Insert the conversion. ConversionsBatchUpdateRequest request = new ConversionsBatchUpdateRequest(); request.Conversions = new List<Conversion>() { conversion }; request.EncryptionInfo = encryptionInfo; ConversionsBatchUpdateResponse response = service.Conversions.Batchupdate(request, profileId).Execute();
لغة Java
ConversionsBatchUpdateRequest request = new ConversionsBatchUpdateRequest(); request.setConversions(ImmutableList.of(conversion)); request.setEncryptionInfo(encryptionInfo); ConversionsBatchUpdateResponse response = reporting.conversions() .batchupdate(profileId, request).execute();
2,999
$batch = new Google_Service_Dfareporting_ConversionsBatchUpdateRequest(); $batch->setConversions([$conversion]); $batch->setEncryptionInfo($encryptionInfo); $result = $this->service->conversions->batchupdate( $values['user_profile_id'], $batch );
لغة Python
# Update the conversion. request_body = { 'conversions': [conversion], 'encryptionInfo': encryption_info } request = service.conversions().batchupdate( profileId=profile_id, body=request_body) response = request.execute()
Ruby
# Construct the batch update request. batch_update_request = DfareportingUtils::API_NAMESPACE::ConversionsBatchUpdateRequest.new( conversions: [conversion], encryption_info: encryption_info ) # Update the conversion. result = service.batchupdate_conversion(profile_id, batch_update_request)
يُرجى الانتباه إلى أنّ "مدير الحملة 360" يحاول تعديل كل إحالة ناجحة في طلبك على أساس بذل أفضل الجهود، بدلاً من تعديل المجموعة بأكملها كمعاملة شاملة أو لا شيء على الإطلاق. وفي حال تعذّر تعديل بعض الإحالات الناجحة بشكلٍ مجمّع، قد يتم تعديل البعض الآخر بنجاح. لذلك، يُنصح بفحص علامة ConversionsBatchUpdateResponse
المعروضة لتحديد حالة كل إحالة ناجحة:
C#
// Handle the batchinsert response. if (!response.HasFailures.Value) { Console.WriteLine("Successfully updated conversion for encrypted user ID {0}.", conversionUserId); } else { Console.WriteLine("Error(s) updating conversion for encrypted user ID {0}:", conversionUserId); ConversionStatus status = response.Status[0]; foreach(ConversionError error in status.Errors) { Console.WriteLine("\t[{0}]: {1}", error.Code, error.Message); } }
لغة Java
if (!response.getHasFailures()) { System.out.printf("Successfully updated conversion for encrypted user ID %s.%n", encryptedUserId); } else { System.out.printf("Error(s) updating conversion for encrypted user ID %s:%n", encryptedUserId); // Retrieve the conversion status and report any errors found. If multiple conversions // were included in the original request, the response would contain a status for each. ConversionStatus status = response.getStatus().get(0); for (ConversionError error : status.getErrors()) { System.out.printf("\t[%s]: %s.%n", error.getCode(), error.getMessage()); } }
2,999
if (!$result->getHasFailures()) { printf( 'Successfully updated conversion for encrypted user ID %s.', $values['encrypted_user_id'] ); } else { printf( 'Error(s) updating conversion for encrypted user ID %s:<br><br>', $values['encrypted_user_id'] ); $status = $result->getStatus()[0]; foreach ($status->getErrors() as $error) { printf('[%s] %s<br>', $error->getCode(), $error->getMessage()); } }
لغة Python
if not response['hasFailures']: print('Successfully updated conversion for encrypted user ID %s.' % encrypted_user_id) else: print('Error(s) updating conversion for encrypted user ID %s.' % encrypted_user_id) status = response['status'][0] for error in status['errors']: print '\t[%s]: %s' % (error['code'], error['message'])
Ruby
if result.has_failures puts format('Error(s) updating conversion for encrypted user ID %s.', existing_conversion[:encrypted_user_id]) status = result.status[0] status.errors.each do |error| puts format("\t[%s]: %s", error.code, error.message) end else puts format('Successfully updated conversion for encrypted user ID %s.', existing_conversion[:encrypted_user_id]) end
سيحتوي حقل status
في الرد، كما هو موضّح أعلاه، على عنصر ConversionStatus
لكل إحالة ناجحة مضمّنة في الطلب الأصلي. وإذا كنت مهتمًا فقط بالإحالات الناجحة التي تعذّر تعديلها، يمكن استخدام الحقل hasFailures
لتحديد ما إذا كانت أي إحالة ناجحة مجمّعة قد تعذّر إجراؤها.