بخش 2 از 3 در مورد اشکال زدایی گزارش انتساب. گزارش های اشکال زدایی خود را تنظیم کنید.
واژه نامه
- The reporting origin is the origin
that sets the Attribution Reporting source and trigger headers.
All reports generated by the browser are sent to this origin. In this guidance,
we use
https://adtech.example
as the example reporting origin. - An attribution report (report for short) is the final report (event-level or aggregatable) that contains the measurement data you've requested.
- A debug report contains additional data about an attribution report, or about a source or trigger event. Receiving a debug report does not necessarily mean that something is working incorrectly! There are two types of debug reports
- A transitional debug report is a debug report that requires a cookie to be set in order to be generated and sent. Transitional debug reports will be unavailable if a cookie is not set, and once third-party cookies are deprecated. All debug reports described in this guide are transitional debug reports.
- Success debug reports track successful generation of an attribution report. They relate directly to an attribution report. Success debug reports have been available since Chrome 101 (April 2022).
- Verbose debug reports can track missing reports and help you determine why
they're missing. They indicate cases where the browser did not record a source
or trigger event, (which means it will not generate an attribution report), and
cases where an attribution report can't be generated or sent for some reason.
Verbose debug reports include a
type
field that describes the reason why a source event, trigger event or attribution report was not generated. Verbose debug reports are available starting in Chrome 109 (Stable in January 2023). - Debug keys are unique identifiers you can set on both the source side and the trigger side. Debug keys enable you to map cookie-based conversions and attribution-based conversions. When you've set up your system to generate debug reports and set debug keys, the browser will include these debug keys in all attribution reports and debug reports.
For more concepts and key terms used throughout our documentation, refer to the Privacy Sandbox glossary.
سوالات اجرایی؟
اگر هنگام تنظیم گزارشهای اشکالزدایی با مشکلی مواجه شدید، در مخزن پشتیبانی برنامهنویس ما مشکلی ایجاد کنید و ما به شما در عیبیابی کمک میکنیم.
برای تنظیم گزارش های اشکال زدایی آماده شوید
قبل از تنظیم گزارش های اشکال زدایی، این مراحل را دنبال کنید:
بررسی کنید که بهترین روشها را برای یکپارچهسازی API اعمال کردهاید
بررسی کنید که کد شما در پشت تشخیص ویژگی قرار دارد. برای اینکه مطمئن شوید API توسط Permissions-Policy مسدود نشده است، کد زیر را اجرا کنید:
if (document.featurePolicy.allowsFeature('attribution-reporting')) { // the Attribution Reporting API is enabled }
اگر این بررسی تشخیص ویژگی درست را برگرداند، API در زمینه (صفحه) جایی که بررسی اجرا می شود مجاز است.
(در مرحله آزمایش لازم نیست: بررسی کنید که یک Permissions-Policy تنظیم کرده اید)
مشکلات اساسی یکپارچه سازی را برطرف کنید
در حالی که گزارشهای اشکالزدایی برای کمک به شناسایی و تجزیه و تحلیل ضرر در مقیاس مفید هستند، برخی از مشکلات یکپارچهسازی را میتوان به صورت محلی شناسایی کرد. مشکلات پیکربندی نادرست سرصفحه منبع و راهانداز، مشکلات تجزیه JSON، زمینه ناامن (غیر HTTPS) و سایر مشکلاتی که مانع از عملکرد API میشوند، در برگه DevTools Issues ظاهر میشوند.
مشکلات DevTools می تواند انواع مختلفی داشته باشد. اگر با مشکل invalid header
مواجه شدید، سرصفحه را در ابزار اعتبارسنجی هدر کپی کنید. این به شما کمک می کند فیلدی را که مشکل ایجاد می کند شناسایی و برطرف کنید.
اعتبار سنجی سرصفحه های گزارش انتساب
میتوانید از اعتبارسنجی سرصفحه برای اعتبارسنجی سرصفحههای مرتبط با API گزارش انتساب استفاده کنید. برای تسهیل اشکالزدایی API، میتوانید خطاهای اعتبارسنجی ناشی از مرورگر را نظارت کنید.
برای شرکت در دریافت گزارشهای اشکالزدایی، با report-header-errors
به عنوان بخشی از سرصفحه پاسخ Attribution-Reporting-Info پاسخ دهید.
Attribution-Reporting-Info: report-header-errors
توجه داشته باشید که Attribution-Reporting-Info یک هدر ساختار یافته فرهنگ لغت Attribution-Reporting-Info
است، بنابراین ارائه کلید report-header-errors
منطقی به معنای یک مقدار واقعی است.
گزارش های اشکال زدایی بلافاصله به نقطه پایانی گزارش ارسال می شوند:
https://<reporting origin>/.well-known/attribution-reporting/debug/verbose
داده های گزارش در بدنه درخواست به عنوان یک لیست JSON از اشیاء دارای این فرم گنجانده شده است:
[{
"type": "header-parsing-error",
"body": {
"context_site": "https://source.example",
"header": "Attribution-Reporting-Register-Source",
"value": "!!!", // header value received in the response
"error": "invalid JSON" // optional error details that may vary across browsers or different versions of the same browser
}
}]
تنظیم گزارش های اشکال زدایی: مراحل مشترک برای گزارش های موفقیت و گزارش های پرمخاطب
کوکی زیر را روی منبع گزارش تنظیم کنید:
Set-Cookie: ar_debug=1; SameSite=None; Secure; Path=/; HttpOnly
مرورگر وجود این کوکی را هم در ثبت منبع و هم در ثبت ماشه بررسی می کند. گزارش اشکال زدایی موفقیت آمیز تنها در صورتی ایجاد می شود که کوکی در هر دو زمان موجود باشد.
توجه داشته باشید که گزارشهای اشکالزدایی را میتوان برای مرورگرها در حالت B فعال کرد، جایی که کوکیهای شخص ثالث غیرفعال هستند تا آزمایش و آمادهسازی برای از بین رفتن کوکیهای شخص ثالث را تسهیل کنند. برای مرورگرهای حالت B، نیازی به تنظیم کوکی اشکال زدایی برای فعال کردن گزارش های اشکال زدایی ندارید. برای تنظیم کلیدهای اشکال زدایی برای گزارش های اشکال زدایی موفقیت آمیز، به مرحله 2 بروید.
مرحله 2: کلیدهای اشکال زدایی را تنظیم کنید
هر کلید اشکال زدایی باید یک عدد صحیح بدون علامت 64 بیتی باشد که به صورت رشته پایه 10 فرمت شده است. هر کلید اشکال زدایی را یک شناسه منحصر به فرد قرار دهید. گزارش اشکال زدایی موفقیت آمیز تنها در صورتی ایجاد می شود که کلیدهای اشکال زدایی تنظیم شده باشند.
- کلید اشکالزدایی سمت منبع را به اطلاعات اضافی در زمان منبع که فکر میکنید برای اشکالزدایی برای شما مرتبط است، ترسیم کنید.
- کلید اشکالزدایی سمت ماشه را به اطلاعات اضافی در زمان ماشه که فکر میکنید برای اشکالزدایی مرتبط است، ترسیم کنید.
برای مثال می توانید کلیدهای اشکال زدایی زیر را تنظیم کنید:
- شناسه کوکی + مهر زمان منبع به عنوان کلید اشکال زدایی منبع (و همان مهر زمانی را در سیستم مبتنی بر کوکی خود ثبت کنید)
- شناسه کوکی + مهر زمانی راهاندازی بهعنوان کلید اشکالزدایی راهانداز (و همان مهر زمانی را در سیستم مبتنی بر کوکیهای خود ثبت کنید)
با این کار، میتوانید از اطلاعات تبدیل مبتنی بر کوکی برای جستجوی گزارشهای اشکالزدایی یا گزارشهای اسناد مربوطه استفاده کنید. در قسمت 3: کتاب آشپزی بیشتر بیاموزید.
کلید اشکال زدایی سمت منبع را با source_event_id
متفاوت کنید، تا بتوانید گزارش های فردی را که دارای شناسه رویداد منبع یکسان هستند، متمایز کنید.
Attribution-Reporting-Register-Source:
{
// … Usual fields for Attribution-Reporting-Register-Source
"debug_key":"647775351539539"
}
Attribution-Reporting-Register-Trigger:
{
// … Usual fields for Attribution-Reporting-Register-Trigger
"debug_key":"938321351539743"
}
کد نسخه ی نمایشی: کلید اشکال زدایی منبع کد آزمایشی: کلید اشکال زدایی را فعال کنید
گزارش های اشکال زدایی موفقیت را تنظیم کنید
کد مثال در این بخش، گزارشهای اشکالزدایی موفقیت را هم برای گزارشهای سطح رویداد و هم برای گزارشهای تجمیعپذیر تولید میکند. گزارشهای سطح رویداد و تجمیعپذیر از کلیدهای اشکالزدایی یکسان استفاده میکنند.
مرحله 3: یک نقطه پایانی برای جمع آوری گزارش های اشکال زدایی موفقیت آمیز تنظیم کنید
یک نقطه پایانی برای جمع آوری گزارش های اشکال زدایی تنظیم کنید. این نقطه پایانی باید شبیه به نقطه پایانی اصلی باشد، با یک رشته debug
اضافی در مسیر:
- نقطه پایانی برای گزارشهای اشکالزدایی موفقیت در سطح رویداد :
https://adtech.example/.well-known/attribution-reporting/debug/report-event-attribution
- نقطه پایانی برای گزارشهای اشکالزدایی موفقیت جمعآوریشده :
https://adtech.example/.well-known/attribution-reporting/debug/report-aggregate-attribution
- نقطه پایانی برای گزارشهای اشکالزدایی موفقیت جمعآوریشده :
هنگامی که یک انتساب فعال می شود، مرورگر بلافاصله یک گزارش اشکال زدایی را از طریق یک درخواست POST
به این نقطه پایانی ارسال می کند. کد سرور شما برای رسیدگی به گزارشهای اشکالزدایی موفقیتآمیز ورودی ممکن است به شکل زیر باشد (در اینجا در نقطه پایانی گره):
// Handle incoming event-Level Success Debug reports
adtech.post(
'/.well-known/attribution-reporting/debug/report-event-attribution',
async (req, res) => {
// Debug report is in req.body
res.sendStatus(200);
}
);
// Handle incoming aggregatable Success Debug reports
adtech.post(
'/.well-known/attribution-reporting/debug/report-aggregate-attribution',
async (req, res) => {
// Debug report is in req.body
res.sendStatus(200);
}
);
کد آزمایشی: نقطه پایانی اشکال زدایی در سطح رویداد را گزارش می دهد
کد آزمایشی: نقطه پایانی گزارش اشکال زدایی قابل جمع آوری
مرحله 4: تأیید کنید که راهاندازی شما گزارشهای اشکال زدایی موفقیت آمیز را ایجاد میکند
-
chrome://attribution-internals
را در مرورگر خود باز کنید. - اطمینان حاصل کنید که چک باکس Show Debug Reports در هر دو برگه Event-Level Reports و Aggregatable Reports علامت زده شده باشد.
- سایتهایی را که Attribution Reporting را در آنها پیادهسازی کردهاید باز کنید. مراحلی را که برای تولید گزارش های انتساب استفاده می کنید تکمیل کنید. همین مراحل گزارش های اشکال زدایی موفقیت آمیز را ایجاد می کنند.
- در
chrome://attribution-internals
:- بررسی کنید که گزارش های انتساب به درستی ایجاد شده باشند.
- در برگه گزارشهای سطح رویداد و برگه گزارشهای جمعآوری ، بررسی کنید که گزارشهای اشکالزدایی موفقیتآمیز نیز تولید میشوند. آنها را در لیست با مسیر
debug
آبی رنگشان شناسایی کنید.
- در سرور خود، بررسی کنید که نقطه پایانی شما فوراً این گزارش های اشکال زدایی موفقیت را دریافت کند. حتماً گزارشهای اشکالزدایی موفقیت در سطح رویداد و جمعآوری را بررسی کنید.
مرحله 5: گزارش های اشکال زدایی موفقیت را مشاهده کنید
گزارش اشکال زدایی موفقیت آمیز با گزارش انتساب یکسان است و شامل کلیدهای اشکال زدایی سمت منبع و سمت ماشه است.
{
"attribution_destination": "https://advertiser.example",
"randomized_trigger_rate": 0.0000025,
"report_id": "7d76ef29-d59e-4954-9fff-d97a743b4715",
"source_debug_key": "647775351539539",
"source_event_id": "760938763735530",
"source_type": "event",
"trigger_data": "0",
"trigger_debug_key": "156477391437535"
}
{
"aggregation_service_payloads": [
{
"debug_cleartext_payload": "omRkYXRhgqJldmFsdWVEAACAAGZidWNrZXRQPPhnkD+7c+wm1RjAlowp3KJldmFsdWVEAAARMGZidWNrZXRQJFJl9DLxbnMm1RjAlowp3GlvcGVyYXRpb25paGlzdG9ncmFt",
"key_id": "d5f32b96-abd5-4ee5-ae23-26490d834012",
"payload": "0s9mYVIuznK4WRV/t7uHKquHPYCpAN9mZHsUGNiYd2G/9cg87Y0IjlmZkEtiJghMT7rmg3GtWVPWTJU5MvtScK3HK3qR2W8CVDmKRAhqqlz1kPZfdGUB4NsXGyVCy2UWapklE/r7pmRDDP48b4sQTyDMFExQGUTE56M/8WFVQ0qkc7UMoLI/uwh2KeIweQCEKTzw"
}
],
"shared_info": "{\"api\":\"attribution-reporting\",\"attribution_destination\":\"https://advertiser.example\",\"debug_mode\":\"enabled\",\"report_id\":\"4a04f0ff-91e7-4ef6-9fcc-07d000c20495\",\"reporting_origin\":\"https://adtech.example\",\"scheduled_report_time\":\"1669888617\",\"source_registration_time\":\"1669852800\",\"version\":\"0.1\"}",
"source_debug_key": "647775351539539",
"trigger_debug_key": "156477391437535"
}
گزارش های اشکال زدایی مفصل را تنظیم کنید
مرحله 3: در هدرهای منبع و ماشه از اشکال زدایی کامل استفاده کنید
debug_reporting
در Attribution-Reporting-Register-Source
و Attribution-Reporting-Register-Trigger
روی true
تنظیم کنید.
Attribution-Reporting-Register-Source:
{
// … Usual fields for Attribution-Reporting-Register-Source
"debug_key":"938321351539743",
"debug_reporting": true // defaults to false if not present
}
Attribution-Reporting-Register-Trigger:
{
// … Usual fields for Attribution-Reporting-Register-Trigger
"debug_key":"938321351539743",
"debug_reporting": true // defaults to false if not present
}
مرحله 4: یک نقطه پایانی برای جمعآوری گزارشهای اشکال زدایی پرمخاطب تنظیم کنید
یک نقطه پایانی برای جمع آوری گزارش های اشکال زدایی تنظیم کنید. این نقطه پایانی باید شبیه به نقطه پایانی انتساب اصلی باشد، با یک رشته debug/verbose
اضافی در مسیر:
https://adtech.example/.well-known/attribution-reporting/debug/verbose
هنگامی که گزارشهای اشکالزدایی کامل ایجاد میشوند، یعنی زمانی که منبع یا راهاندازی ثبت نشده است، مرورگر بلافاصله یک گزارش اشکالزدایی کامل را از طریق یک درخواست POST
به این نقطه پایانی ارسال میکند. کد سرور شما برای رسیدگی به گزارش های اشکال زدایی پرمخاطب ورودی ممکن است به شکل زیر باشد (در اینجا در نقطه پایانی گره):
// Handle incoming verbose debug reports
adtech.post(
'/.well-known/attribution-reporting/debug/verbose',
async (req, res) => {
// List of verbose debug reports is in req.body
res.sendStatus(200);
}
);
برخلاف گزارش های اشکال زدایی موفقیت آمیز، تنها یک نقطه پایانی برای گزارش های پرمخاطب وجود دارد. گزارشهای پرمخاطب که به گزارشهای سطح رویداد و گزارشهای انبوه مربوط میشوند، همگی به یک نقطه پایانی ارسال میشوند.
کد نسخه ی نمایشی: نقطه پایانی اشکال زدایی مفصل را گزارش می کند
مرحله 5: تأیید کنید که راهاندازی شما گزارشهای اشکال زدایی مفصل ایجاد میکند
در حالی که انواع مختلفی از گزارشهای عیبزدایی کامل وجود دارد، کافی است تنظیمات اشکالزدایی کامل خود را تنها با یک نوع گزارش اشکالزدایی کامل بررسی کنید. اگر این یک نوع گزارش اشکال زدایی پرمخاطب به درستی تولید و دریافت شود، به این معنی است که همه انواع گزارشهای اشکال زدایی کامل به درستی تولید و دریافت خواهند شد، زیرا همه گزارشهای اشکالزدایی کامل از پیکربندی یکسانی استفاده میکنند و به یک نقطه پایانی ارسال میشوند.
-
chrome://attribution-internals
را در مرورگر خود باز کنید. - یک منبع (تبدیل) را در سایت خود فعال کنید که با گزارش Attribution تنظیم شده است. با توجه به اینکه قبل از این تبدیل هیچ تعامل تبلیغاتی (نمایش یا کلیک) وجود نداشته است، باید انتظار داشته باشید که یک گزارش اشکال زدایی مفصل از نوع
trigger-no-matching-source
ایجاد شود. - در
chrome://attribution-internals
، برگه گزارشهای اشکالزدایی Verbose را باز کنید و بررسی کنید که یک گزارش اشکالزدایی کامل از نوعtrigger-no-matching-source
ایجاد شده است. - در سرور خود، بررسی کنید که نقطه پایانی شما بلافاصله این گزارش اشکال زدایی مفصل را دریافت کرده است.
مرحله 6: گزارش های اشکال زدایی مفصل را مشاهده کنید
گزارشهای اشکالزدایی پرمخاطب که در زمان راهاندازی ایجاد میشوند، شامل کلید اشکالزدایی سمت منبع و سمت ماشه میشوند (اگر منبع منطبقی برای ماشه وجود داشته باشد). گزارشهای اشکالزدایی کامل که در زمان منبع تولید میشوند شامل کلید اشکالزدایی سمت منبع است.
مثالی از یک درخواست حاوی گزارشهای اشکالزدایی کامل، ارسال شده توسط مرورگر:
[
{
"body": {
"attribution_destination": "http://arapi-advertiser.localhost",
"randomized_trigger_rate": 0.0000025,
"report_id": "92b7f4fd-b157-4925-999e-aad6361de759",
"source_debug_key": "282273499788483",
"source_event_id": "480041649210491",
"source_type": "event",
"trigger_data": "1",
"trigger_debug_key": "282273499788483"
},
"type": "trigger-event-low-priority"
},
{
"body": {
"attribution_destination": "http://arapi-advertiser.localhost",
"limit": "65536",
"source_debug_key": "282273499788483",
"source_event_id": "480041649210491",
"source_site": "http://arapi-publisher.localhost",
"trigger_debug_key": "282273499788483"
},
"type": "trigger-aggregate-insufficient-budget"
}
]
هر گزارش کامل حاوی فیلدهای زیر است:
-
Type
- چه چیزی باعث ایجاد گزارش شده است. برای آشنایی با انواع گزارشهای پرمخاطب و اقداماتی که باید بسته به هر نوع انجام دهید، مرجع گزارشهای پرمخاطب در قسمت 3: کتاب آشپزی اشکالزدایی را مرور کنید.
-
Body
- بدنه گزارش بستگی به نوع آن خواهد داشت. مرجع گزارش های پرمخاطب را در قسمت 3: کتاب آشپزی اشکال زدایی مرور کنید.
بدنه یک درخواست حداقل یک و حداکثر دو گزارش مفصل خواهد داشت:
- اگر شکست فقط بر گزارشهای سطح رویداد تأثیر میگذارد (یا اگر فقط بر گزارشهای جمعآوریشده تأثیر میگذارد، یک گزارش پرمخاطب). عدم موفقیت ثبت منبع یا ماشه تنها یک دلیل دارد. از این رو می توان یک گزارش پرمخاطب برای هر شکست و هر نوع گزارش (در سطح رویداد یا جمع آوری) ایجاد کرد.
- اگر شکست بر گزارشهای سطح رویداد و گزارشهای انبوه تأثیر بگذارد، دو گزارش پرمخاطب - با یک استثنا: اگر دلیل شکست برای گزارشهای سطح رویداد و گزارشهای انباشته یکسان باشد، فقط یک گزارش پرمخاطب تولید میشود (مثال:
trigger-no-matching-source
)