این راهنما دستورالعملهای دقیقی را برای ویرایش تبدیلها با استفاده از سرویس Campaign Manager 360 API Conversions
ارائه میکند. قبل از ادامه، توصیه می شود برای آشنایی با تبدیل های آفلاین و آشنایی با مفاهیم مطرح شده در این راهنما، مرور کلی را مرور کنید.
قبل از شروع
این گردش کار ویرایش به شما امکان میدهد quantity
و value
تبدیلهای آنلاین و آفلاین موجود را تغییر دهید. برای انجام این کار، باید مقادیری را ارائه دهید که تبدیلهای مورد ویرایش را بهطور منحصربهفرد شناسایی کنند. بسته به نوع تبدیل هایی که ویرایش می کنید، این مقادیر را به روش های مختلف به دست خواهید آورد:
مقادیر لازم برای شناسایی تبدیل های آنلاین را می توان از انتقال داده به دست آورد.
مقادیر لازم برای شناسایی تبدیلهای آفلاین در
ConversionsBatchInsertResponse
درخواستهای موفقیت آمیزbatchinsert
برگردانده میشوند.
هنگامی که یک تبدیل از هر نوع را با موفقیت ویرایش کردید، ConversionsBatchUpdateResponse
حاوی مقادیر لازم برای انجام ویرایش های بعدی خواهد بود.
پیکربندی منابع تبدیل
اولین مرحله در گردش کار ویرایش شامل ایجاد یک یا چند شی منبع Conversion
است.
از فیلدهای زیر برای شناسایی تبدیل به ویرایش استفاده می شود. این فیلدها الزامی هستند و باید دقیقاً با تبدیل موجود مطابقت داشته باشند.
میدان | توضیحات |
---|---|
| شناسه کاربر رمزگذاری شده، شناسه کلیک Google، شناسه کلیک روی نمایش، شناسه مطابقت یا شناسه دستگاه تلفن همراه که تبدیل را ایجاد کرده است. |
floodlightActivityId | فعالیت Floodlight که تبدیل به آن نسبت داده می شود. |
floodlightConfigurationId | پیکربندی Floodlight که توسط فعالیت مشخص شده استفاده می شود. |
ordinal | شناسه deduplication مرتبط با تبدیل. |
timestampMicros | مهر زمانی تبدیل، در میکروثانیه از دوران یونیکس. |
فیلدهای قابل ویرایش در زیر لیست شده است.
این فیلدها الزامی هستند و مقادیری که ارائه میکنید، مقادیر از قبل موجود در تبدیل در حال ویرایش را بازنویسی میکنند.
میدان | توضیحات |
---|---|
quantity | تعداد موارد مرتبط با تبدیل. |
value | مقدار درآمد حاصل از تبدیل. |
این فیلدها اختیاری هستند. در صورت تنظیم نشدن مقدار بدون تغییر خواهد بود.
میدان | توضیحات |
---|---|
customVariables | متغیرهای نورافکن سفارشی تبدیل. اگر متغیر تنظیم شده باشد، مقدار را به روز می کند یا درج می کند. مقدار متغیر در صورت تنظیم نشدن تغییر نمی کند. |
تمام فیلدهای دیگر ذکر شده در مستندات مرجع پشتیبانی نمی شوند و قابل تغییر نیستند. گنجاندن فیلدهای پشتیبانی نشده در درخواست ویرایش شما منجر به خطا می شود. اگر تبدیل در حال ویرایش حاوی مقادیر از قبل موجود برای فیلدهای پشتیبانی نشده باشد، آن مقادیر به طور خودکار حفظ خواهند شد.
مثال زیر ایجاد یک شی منبع تبدیل ساده برای ویرایش را نشان می دهد:
سی شارپ
// 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;
جاوا
// 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);
PHP
// 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']);
پایتون
# 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
روبی
# 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
که این مقادیر را مشخص می کند، دومین مرحله در گردش کار ویرایش است:
سی شارپ
// Create the encryption info. EncryptionInfo encryptionInfo = new EncryptionInfo(); encryptionInfo.EncryptionEntityId = encryptionEntityId; encryptionInfo.EncryptionEntityType = encryptionEntityType; encryptionInfo.EncryptionSource = encryptionSource;
جاوا
// Create the encryption info. EncryptionInfo encryptionInfo = new EncryptionInfo(); encryptionInfo.setEncryptionEntityId(encryptionEntityId); encryptionInfo.setEncryptionEntityType(encryptionEntityType); encryptionInfo.setEncryptionSource(encryptionSource);
PHP
$encryptionInfo = new Google_Service_Dfareporting_EncryptionInfo(); $encryptionInfo->setEncryptionEntityId($values['encryption_entity_id']); $encryptionInfo->setEncryptionEntityType($values['encryption_entity_type']); $encryptionInfo->setEncryptionSource($values['encryption_source']);
پایتون
# Construct the encryption info. encryption_info = { 'encryptionEntityId': encryption_entity_id, 'encryptionEntityType': encryption_entity_type, 'encryptionSource': encryption_source }
روبی
# 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
را میپذیرد که مجموعه تبدیلهایی را که باید ویرایش شوند با اطلاعات رمزگذاری مرتبط با آنها ترکیب میکند (در صورت لزوم):
سی شارپ
// Insert the conversion. ConversionsBatchUpdateRequest request = new ConversionsBatchUpdateRequest(); request.Conversions = new List<Conversion>() { conversion }; request.EncryptionInfo = encryptionInfo; ConversionsBatchUpdateResponse response = service.Conversions.Batchupdate(request, profileId).Execute();
جاوا
ConversionsBatchUpdateRequest request = new ConversionsBatchUpdateRequest(); request.setConversions(ImmutableList.of(conversion)); request.setEncryptionInfo(encryptionInfo); ConversionsBatchUpdateResponse response = reporting.conversions() .batchupdate(profileId, request).execute();
PHP
$batch = new Google_Service_Dfareporting_ConversionsBatchUpdateRequest(); $batch->setConversions([$conversion]); $batch->setEncryptionInfo($encryptionInfo); $result = $this->service->conversions->batchupdate( $values['user_profile_id'], $batch );
پایتون
# Update the conversion. request_body = { 'conversions': [conversion], 'encryptionInfo': encryption_info } request = service.conversions().batchupdate( profileId=profile_id, body=request_body) response = request.execute()
روبی
# 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)
توجه داشته باشید که Campaign Manager 360 سعی می کند هر تبدیل در درخواست شما را بر اساس بهترین تلاش ویرایش کند، نه اینکه کل دسته را به عنوان یک تراکنش همه یا هیچ به روز کند. اگر برخی از تبدیلها در یک دسته بهروزرسانی نشوند، برخی دیگر ممکن است همچنان با موفقیت بهروزرسانی شوند. بنابراین، توصیه می شود برای تعیین وضعیت هر تبدیل، ConversionsBatchUpdateResponse
برگشتی را بررسی کنید:
سی شارپ
// 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); } }
جاوا
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()); } }
PHP
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()); } }
پایتون
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'])
روبی
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
میتوان برای تعیین سریع اینکه آیا هر تبدیل در دسته ارائهشده ناموفق بود یا خیر، استفاده کرد.