המאמר הזה רלוונטי ל-Apigee ול-Apigee Hybrid.
לעיון במסמכי התיעוד של
Apigee Edge
מדיניות DataCapture מתעדת נתונים (כמו מטען ייעודי (payload), כותרות HTTP ופרמטרים של נתיב או שאילתה) מ-proxy ל-API לשימוש ב-Analytics. אפשר להשתמש בנתונים שנאספו בדוחות מותאמים אישית של Analytics, וגם כדי להטמיע כללי מונטיזציה ומעקב.
המדיניות הזו היא מדיניות ניתנת להרחבה, והשימוש בה עשוי להשפיע על העלויות או על ניצול המשאבים, בהתאם לרישיון Apigee שלכם. מידע על סוגי המדיניות וההשלכות של השימוש בהם זמין במאמר סוגי מדיניות.
משאב של מכשיר לאיסוף נתונים
כדי להשתמש במדיניות DataCapture, צריך קודם ליצור משאב
לאיסוף נתונים. הוראות ליצירת משאב של איסוף נתונים באמצעות ממשק המשתמש של Apigee או באמצעות Apigee API מופיעות במאמר יצירת משאב של איסוף נתונים.
<DataCapture>
רכיב <DataCapture> מגדיר מדיניות DataCapture.
<DataCapture async="true" continueOnError="true" enabled="true" name="DC">
דוגמה למדיניות DataCapture:
<DataCapture name="DC-1"> <Capture> <DataCollector>dc_data_collector</DataCollector> <Collect ref="my_data_variable" /> </Capture> </DataCapture>
האלמנט הראשי במדיניות DataCapture הוא האלמנט <Capture>, שמציין את האמצעים לאיסוף הנתונים. יש לו שני רכיבי צאצא נדרשים:
- הרכיב
<DataCollector>, שמציין משאב REST של כלי לאיסוף נתונים. במקרה הזה, שם המשאב הואdc_data_collector. - רכיב
<Collect>, שמציין את האמצעים לתיעוד הנתונים.
בדוגמה הפשוטה הזו, הנתונים מחולצים ממשתנה בשם
my_data_variable, שנוצר במקום אחר בשרת ה-proxy.
המשתנה מצוין באמצעות המאפיין ref.
בנוסף, אלמנט <Collect> מספק כמה דרכים אחרות לאיסוף נתונים ממקורות שונים באמצעות אלמנטים צאצאים.
דוגמאות נוספות לאיסוף נתונים באמצעות מדיניות DataCapture מופיעות במאמר דוגמאות.
התחביר של רכיב DataCapture הוא כדלקמן.
<DataCapture name="capturepayment" continueOnError="false" enabled="true"> <DisplayName>Data-Capture-Policy-1</DisplayName> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <ThrowExceptionOnLimit>false</ThrowExceptionOnLimit> <!-- Existing Variable --> <Capture> <Collect ref="existing-variable" default="0"></Collect> <DataCollector>dc_1</DataCollector> </Capture> <!-- JSONPayload --> <Capture> <DataCollector>dc_2</DataCollector> <Collect default="0"> <Source>request</Source> <JSONPayload> <JSONPath>result.var</JSONPath> </JSONPayload> </Collect> </Capture> <!-- URIPath --> <Capture> <DataCollector>dc_3</DataCollector> <Collect default="0"> <URIPath> <!-- All patterns must specify a single variable to extract named $ --> <Pattern ignoreCase="false">/foo/{$}</Pattern> <Pattern ignoreCase="false">/foo/bar/{$}</Pattern> </URIPath> </Collect> </Capture> </DataCapture>
לרכיב הזה יש את המאפיינים הבאים שמשותפים לכל המדיניות:
| מאפיין | ברירת מחדל | חובה? | תיאור |
|---|---|---|---|
name |
לא רלוונטי | חובה |
השם הפנימי של המדיניות. הערך של מאפיין אפשר להשתמש ברכיב |
continueOnError |
FALSE | אופציונלי | מגדירים את הערך false כדי להחזיר שגיאה אם המדיניות נכשלת. זו התנהגות צפויה ברוב המקרים. הגדרה ל-true מאפשרת להמשיך את הביצוע של התהליך גם אחרי שמדיניות נכשלת. מאמרים קשורים:
|
enabled |
TRUE | אופציונלי | מגדירים את המדיניות למצב true כדי לאכוף אותה. מגדירים את הערך false כדי להשבית את המדיניות. המדיניות לא תיאכף גם אם היא תישאר מצורפת לזרימה. |
async |
FALSE | הוצא משימוש | המאפיין הזה הוצא משימוש. |
בטבלה הבאה מופיע תיאור כללי של רכיבי הצאצא של <DataCapture>.
| רכיב צאצא | חובה | תיאור |
|---|---|---|
<Capture> |
חובה | התג הזה מתעד את הנתונים של משתנה שצוין. |
דוגמאות
בדוגמאות הבאות מוסברות דרכים שונות לשימוש במדיניות DataCapture.
איסוף נתונים למשתנה מובנה
בדוגמת הקוד הבאה אפשר לראות איך לוכדים נתונים של משתנה מובנה, message.content, שמכיל את התוכן של הבקשה, התגובה או הודעת השגיאה. מידע נוסף על משתנים מובנים זמין במאמר משתני זרימה.
<DataCapture name="DC-FullMessage">
<Capture>
<DataCollector>dc_data_collector</DataCollector>
<Collect ref="message.content" />
</Capture>
</DataCapture>בדוגמה של הקוד שלמעלה, המאפיין ref של הרכיב </Collect> מציין את המשתנה שצריך לתעד, שבמקרה הזה נקרא "message.content".
הדוגמה מתעדת את הנתונים באמצעות רכיב <Capture>, שמכיל גם רכיב <DataCollector> שמציין את השם של משאב איסוף הנתונים.
תיעוד נתונים בשורה
בדוגמה הבאה אפשר לראות איך לוכדים נתונים בתוך שורה באמצעות <JSONPayload>, שהוא רכיב משני של הרכיב <Collect>.
<DataCapture name="DC-Currency"> <Capture> <DataCollector>dc_data_collector<DataCollector> <Collect> <JSONPayload> <JSONPath>$.results[0].currency</JSONPath> </JSONPayload> </Collect> </Capture> </DataCapture>
בדוגמה של הקוד שלמעלה:
- רכיב
<JSONPayload>מציין את ההודעה בפורמט JSON שממנה נחולץ ערך המשתנה. - רכיב
<JSONPath>מציין את נתיב ה-JSON שמשמש לחילוץ הערך מההודעה, שבמקרה הזה הוא$.results[0].currency.
לדוגמה, נניח שהערך שחולץ בזמן קבלת ההודעה הוא 1120. אז
הערך שיישלח ל-Analytics יהיה
{
"dc_data_collector": "1120"
}<Capture>
האלמנט <Capture> מציין את האמצעים ללכידת הנתונים.
<Capture />
בטבלה הבאה מופיע תיאור כללי של רכיבי הצאצא של <Capture>.
| רכיב צאצא | חובה? | תיאור |
|---|---|---|
<DataCollector> |
חובה | מציינים את משאב אוסף הנתונים. |
<Collect> |
חובה | מציין את האמצעים ללכידת נתונים. |
<DataCollector>
רכיב <DataCollector> מציין את משאב אוסף הנתונים.
<DataCollector>dc_data_collector</DataCollector>
<DataCollector>.
| מאפיין | תיאור | ברירת מחדל | חובה? | סוג |
|---|---|---|---|---|
| היקף |
אם רוצים לתעד את משתני המונטיזציה, צריך לציין את המאפיין הזה ולהגדיר את הערך שלו כ- |
לא רלוונטי | אופציונלי | String |
גוף הרכיב <DataCollector> מכיל את השם של משאב איסוף הנתונים.
<Collect>
האלמנט <Collect> מציין את האמצעים ללכידת נתונים.
<Collect ref="existing-variable" default="0"/>
בטבלה הבאה מתוארים המאפיינים של הרכיב <Collect>.
| מאפיין | תיאור | ברירת מחדל | חובה? | סוג |
|---|---|---|---|---|
| ref |
המשתנה שעבורו מתבצעת לכידת נתונים. |
לא רלוונטי | אופציונלי – אם לא מציינים את ref, צריך לציין בדיוק אחד מהערכים הבאים:
QueryParam,
Header,
FormParam,
URIPath,
JSONPayload או
XMLPayload.
|
String |
| ברירת מחדל | מציין את הערך שנשלח אל Analytics אם ערך המשתנה לא מאוכלס בזמן הריצה. לדוגמה, אם מגדירים
default="0", הערך שנשלח ל-Analytics יהיה 0.
|
אם לא מציינים את הערך של default, והערך של המשתנה לא מאוכלס בזמן הריצה, הערך שנשלח אל Analytics הוא null למשתנה מספרי או "Not set" למשתנה מסוג מחרוזת.
|
חובה | String |
אפשר לתעד את הנתונים מתוך משתנה קיים באמצעות המאפיין ref או באמצעות רכיבי צאצא <Collect>.
רכיבי צאצא של <Collect>
בטבלה הבאה מופיע תיאור כללי של רכיבי הצאצא של <Collect>:
| רכיב צאצא | חובה? | תיאור |
|---|---|---|
<Source> |
אופציונלי | מציינת את המשתנה שיש לנתח. |
<URIPath> |
אופציונלי | מחלצת ערך מהפרמטר proxy.pathsuffix
של הודעת מקור הבקשה. |
<QueryParam> |
אופציונלי | הפונקציה מחלצת ערך מפרמטר השאילתה שצוין בהודעת המקור של הבקשה. |
<Header> |
אופציונלי | מחלצת ערך מכותרת HTTP שצוינה של בקשה או הודעת תגובה שצוינו. |
<FormParam> |
אופציונלי | מחולצת ערך מפרמטר הטופס שצוין בהודעה של הבקשה או התגובה שצוינה. |
<JSONPayload> |
אופציונלי | מציין את ההודעה בפורמט JSON שממנה יחולץ ערך המשתנה. |
<XMLPayload> |
אופציונלי | מציין את ההודעה בפורמט XML שממנה יחולץ ערך המשתנה. |
<Source>
מציינים משתנה שנותן שם להודעה שצריך לנתח. ערך ברירת המחדל של <Source> הוא message. הערך message תלוי בהקשר. בתהליך בקשה, message מייצג את הודעת הבקשה. בזרימת תגובה, message נפתר להודעת התגובה.
אם לא ניתן לפתור את המשתנה שצוין ב-<Source>, או אם הוא נפתר כסוג שאינו הודעה,
המדיניות לא תגיב.
| ערך ברירת המחדל | לא רלוונטי |
| חובה? | אופציונלי |
| סוג | String |
| רכיב אב |
<Collect> |
| רכיבי צאצא | לא רלוונטי |
<Source >request</Source>
<URIPath>
מחזירה ערך
מהמאפיין proxy.pathsuffix של הודעת מקור מסוג request. הנתיב שמוחל על
התבנית הוא proxy.pathsuffix, שלא כולל את נתיב הבסיס של proxy ל-API. אם
ההודעה המקורית היא מסוג response, האלמנט לא עושה כלום.
| ערך ברירת המחדל | לא רלוונטי |
| חובה? | אופציונלי |
| סוג | רמה למתקדמים מאוד |
| רכיב אב |
<Collect> |
| רכיבי צאצא | <Pattern> |
מאפיינים
| מאפיין | תיאור | ברירת מחדל | חובה? | סוג |
|---|---|---|---|---|
| ignoreCase | הגדרה להתעלמות מאותיות רישיות כשמתאימים את התבנית. |
FALSE |
אופציונלי | בוליאני |
<Collect> <URIPath> <Pattern ignoreCase="false">/foo/{$}</Pattern> </URIPath> </Collect>
אפשר להשתמש בכמה רכיבי <Pattern>:
<URIPath> <Pattern ignoreCase="false">/foo/{$}</Pattern> <Pattern ignoreCase="false">/foo/bar/{$}</Pattern> </URIPath>
<QueryParam>
מחלצת ערך
מפרמטר השאילתה שצוין בהודעת מקור request. אם ההודעה המקורית היא מסוג response, האלמנט לא עושה כלום.
| ערך ברירת המחדל | לא רלוונטי |
| חובה? | אופציונלי |
| סוג | רמה למתקדמים מאוד |
| רכיב אב |
<Collect> |
| רכיבי צאצא | <Pattern> |
מאפיינים
| מאפיין | תיאור | ברירת מחדל | חובה? | סוג |
|---|---|---|---|---|
| name | מציינים את השם של פרמטר השאילתה. אם לכמה פרמטרים של שאילתה יש את אותו שם, צריך להשתמש בהפניה עם אינדקס. המופע הראשון של פרמטר השאילתה לא מקבל אינדקס, המופע השני מקבל אינדקס 2, המופע השלישי מקבל אינדקס 3 וכן הלאה. |
לא רלוונטי |
חובה | String |
<Collect> <QueryParam name="code"> <Pattern ignoreCase="true">{$}</Pattern> </QueryParam> </Collect>
אם לכמה פרמטרים של שאילתה יש את אותו שם, צריך להשתמש באינדקסים כדי להפנות לפרמטרים:
<Collect> <QueryParam name="code.2"> <Pattern ignoreCase="true">{$}</Pattern> </QueryParam> </Collect>
הערה: צריך לציין משתנה יחיד בשם {$}.
יכולים להיות כמה רכיבי Pattern ייחודיים, אבל הדפוס הראשון שתואם לבקשה מסוימת יקבע את התוצאה.
<Header>
הפונקציה מחלצת ערך
מכותרת ה-HTTP שצוינה של ההודעה request או response שצוינה. אם לכמה כותרות יש את אותו שם, הערכים שלהן מאוחסנים במערך.
| ערך ברירת המחדל | לא רלוונטי |
| חובה? | אופציונלי |
| סוג | רמה למתקדמים מאוד |
| רכיב אב |
<Collect> |
| רכיבי צאצא | <Pattern> |
מאפיינים
| מאפיין | תיאור | ברירת מחדל | חובה? | סוג |
|---|---|---|---|---|
| name | מציינים את השם של הכותרת שממנה רוצים לחלץ את הערך. אם לכמה כותרות יש את אותו שם, צריך להשתמש בהפניה עם אינדקס. הכותרת הראשונה לא מקבלת אינדקס, השנייה מקבלת אינדקס 2, השלישית מקבלת אינדקס 3 וכן הלאה. אפשר להשתמש ב-.values כדי לקבל את כל הכותרות במערך. |
לא רלוונטי |
חובה | String |
<Collect>
<Header name="my_header">
<Pattern ignoreCase="false">Bearer {$}</Pattern>
</Header>
</Collect>אם לכמה כותרות יש את אותו שם, צריך להשתמש באינדקסים כדי להפנות לכותרות ספציפיות במערך:
<Collect>
<Header name="my_header.2">
<Pattern ignoreCase="true">{$}</Pattern>
</Header>
</Collect>או את הפקודה הבאה כדי להציג רשימה של כל הכותרות במערך:
<Collect>
<Header name="my_header.values">
<Pattern ignoreCase="true">{$}</Pattern>
</Header>
</Collect><FormParam>
מחלצת ערך מפרמטר הטופס שצוין בהודעה request או response שצוינה. אפשר לחלץ פרמטרים של טופס רק אם הכותרת Content-Type של ההודעה שצוינה היא application/x-www-form-urlencoded.
| ערך ברירת המחדל | לא רלוונטי |
| חובה? | אופציונלי |
| סוג | רמה למתקדמים מאוד |
| רכיב אב |
<Collect> |
| רכיבי צאצא | <Pattern> |
מאפיינים
| מאפיין | תיאור | ברירת מחדל | חובה? | סוג |
|---|---|---|---|---|
| name | שם הפרמטר של הטופס שממנו מחלצים את הערך. |
לא רלוונטי |
אופציונלי | String |
<Collect> <FormParam name="greeting"> <Pattern>hello {$}</Pattern> </FormParam> </Collect>
<JSONPayload>
מציין את ההודעה בפורמט JSON שממנה יחולץ ערך המשתנה. חילוץ JSON מתבצע רק כשהכותרת של Content-Type ההודעה היא application/json.
| ערך ברירת המחדל | לא רלוונטי |
| חובה? | אופציונלי |
| סוג | רמה למתקדמים מאוד |
| רכיב אב |
<Collect> |
| רכיבי צאצא | <JSONPath> |
<Collect> <JSONPayload> <JSONPath>$.results[0].currency</JSONPath> </JSONPayload> </Collect>
<JSONPath>
רכיב צאצא נדרש של הרכיב <JSONPayload>. מציין את נתיב ה-JSON שמשמש לחילוץ ערך מהודעה בפורמט JSON.
| ערך ברירת המחדל | לא רלוונטי |
| חובה? | חובה |
| סוג | String |
| רכיב אב |
<JSONPayload> |
| רכיבי צאצא | לא רלוונטי |
<JSONPath>$.rss.channel.title</JSONPath>
<XMLPayload>
מציין את ההודעה בפורמט XML שממנה יחולץ ערך המשתנה. מטענים ייעודיים (payloads) בפורמט XML
מחולצים רק אם הכותרת Content-Type של ההודעה
היא text/xml, application/xml או application/*+xml.
| ערך ברירת המחדל | לא רלוונטי |
| חובה? | אופציונלי |
| סוג | רמה למתקדמים מאוד |
| רכיב אב |
<Collect> |
| רכיבי צאצא |
<Namespaces><XPath> |
בטבלה הבאה מופיע תיאור כללי של רכיבי הצאצא של <XMLPayload>.
| רכיב צאצא | חובה? | תיאור |
|---|---|---|
<Namespaces> |
אופציונלי | מציינים אפס או יותר מרחבי שמות לשימוש בהערכת XPath. |
<XPath> |
חובה | מציינים את ה-XPath שהוגדר למשתנה. |
<Collect> <XMLPayload> <Namespaces> <Namespace prefix="soap">http://schemas.xmlsoap.org/soap/envelope/</Namespace> <Namespace prefix="ns1">http://ns1.example.com/operations</Namespace> </Namespaces> <!-- get the local name of the SOAP operation --> <XPath>local-name(/soap:Envelope/soap:Body/ns1:*[1])</XPath> </XMLPayload> </Collect>
<Namespaces>
מציין את קבוצת מרחבי השמות שאפשר להשתמש בהם בביטוי XPath. דוגמה.
<Collect> <XMLPayload> <Namespaces> <Namespace prefix="maps">http://maps.example.com</Namespace> <Namespace prefix="places">http://places.example.com</Namespace> </Namespaces> <XPath>/maps:Directions/maps:route/maps:leg/maps:endpoint/places:name</XPath> </XMLPayload> </Collect>
אם אתם לא משתמשים במרחבי שמות בביטויי XPath, אתם יכולים להשמיט את הרכיב <Namespaces> או להוסיף לו הערה, כמו בדוגמה הבאה:
<Collect> <XMLPayload> <!-- <Namespaces/> --> <XPath>/Directions/route/leg/name</XPath> </XMLPayload> </Collect>
<Namespace>
מציינים מרחב שמות אחד וקידומת תואמת לשימוש בביטוי XPath. דוגמה.
| ערך ברירת המחדל | לא רלוונטי |
| חובה? | אופציונלי |
| סוג | String |
| רכיב אב |
<Namespaces> |
| רכיבי צאצא | לא רלוונטי |
מאפיינים
| מאפיין | תיאור | ברירת מחדל | חובה? | סוג |
|---|---|---|---|---|
prefix |
התחילית שמשמשת להפניה למרחב השמות בביטוי xpath. הקידומת הזו לא חייבת להיות זהה לקידומת שבה נעשה שימוש במסמך ה-XML המקורי. |
לא רלוונטי |
חובה | String |
<Collect> <XMLPayload> <Namespaces> <Namespace prefix="maps">http://maps.example.com</Namespace> </Namespaces> <XPath>/maps:Directions/maps:route/maps:leg/maps:endpoint</XPath> </XMLPayload> </Collect>
<XPath>
רכיב צאצא נדרש של רכיב XMLPayload. מציינים את ה-XPath שהוגדר למשתנה. יש תמיכה רק בביטויים של XPath 1.0.
| ערך ברירת המחדל | לא רלוונטי |
| חובה? | חובה |
| סוג | String |
| רכיב אב |
<XMLPayload> |
| רכיבי צאצא | לא רלוונטי |
<XPath>/test/example</XPath>
הערה: אם משתמשים במרחבי שמות בביטויי XPath, צריך להצהיר על מרחבי השמות בקטע <XMLPayload><Namespaces> של המדיניות.
<ThrowExceptionOnLimit>
רכיב <ThrowExceptionOnLimit> מציין מה קורה כשמגיעים למגבלות הלכידה לגבי מספר המשתנים או הגודל המקסימלי של משתנה. מידע על אכיפת מגבלות על צילום מסך
הערך של <ThrowExceptionOnLimit> יכול להיות אחד מהערכים הבאים:
-
false: הנתונים של המשתנים נשלחים אל Analytics. -
true: מוחזרת הודעת שגיאה, והנתונים לא נשלחים אל Analytics.
הפניה לשגיאה
שגיאות זמן ריצה
בטבלה הבאה מתוארות שגיאות בזמן ריצה, שיכולות להתרחש כשהמדיניות מופעלת.
| קוד תקלה | מטרה |
|---|---|
DataCollectorTypeMismatch |
הערך שצריך לתעד לא תאם לסוג |
ExtractionFailure |
חילוץ הנתונים נכשל. |
UnresolvedVariable |
המשתנה לא קיים. |
VariableCountLimitExceeded |
מספר המשתנים שתועדו חרג מהמגבלה של 100 משתנים |
VariableValueLimitExceeded |
הגודל של ערך שתועד חרג מהמגבלה של 400 בייט למשתנה יחיד. |
MsgContentParsingFailed |
ניתוח תוכן ההודעה ל-XML או ל-JSON נכשל. |
InvalidMsgContentType |
סוג התוכן של ההודעה לא תואם לסוג התוכן הצפוי של ההודעה בסעיף מדיניות בנושא לכידת נתונים. |
NonMsgVariable |
הערך של האלמנט <Source> לא הפנה למשתנה של הודעה. |
JSONPathQueryFailed |
הפענוח של השאילתה JSONPath נכשל ולא הוחזר ערך. |
PrivateVariableAccess |
הניסיון לגשת למשתנה פרטי נכשל. |
XPathEvaluationFailed |
לא הצלחנו לפענח את XPath לערך. |
שגיאות זמן ריצה מוחזרות בשתי דרכים:
- תגובת שגיאה בחזרה ללקוח (
continueOnError=false)כשהמאפיין
continueOnErrorשל המדיניות מוגדר לערךfalse, שגיאות שמתרחשות במהלך הפעלת המדיניות יגרמו להפסקת עיבוד ההודעה ולהחזרת הודעת שגיאה תיאורית. המדיניות תנסה לתעד את כל השגיאות הרלוונטיות במדיניות איסוף הנתונים לפני החזרת ההודעה. DataCaptureשדה שגיאות ב-Analyticsהשדה
dataCapturePolicyErrorsמכיל רשימה של כל השגיאות שהתרחשו. דוגמה לאופן שבו זה יופיע במפת נתוני הניתוח מוצגת בהמשך:# Example payload [ { errorType: TypeMismatch, policyName: MyDataCapturePolicy-1, dataCollector: purchaseValue }, { errorType: MaxValueSizeLimitReached, policyName: MyDataCapturePolicy-1, dataCollector: purchasedItems }, ]
השדה הזה כפוף למגבלת הגודל של משתנים, שהיא 400 בייטים.
שגיאות פריסה
| קוד תקלה | מטרה |
|---|---|
DeploymentAssertionError |
לא נמצא DataCollector שההפניה אליו מופיעה במדיניות בארגון במהלך הפריסה. |
JsonPathCompilationFailed |
הקומפילציה עם JSONPath שצוין נכשלה. |
XPathCompilationFailed |
אם הקידומת או הערך שמשמשים ברכיב XPath לא שייכים לאף אחד ממרחבי השמות שהוגדרו במדיניות, ה-Deployment (פריסה) של proxy ל-API תיכשל. |
PatternCompilationFailed |
הקומפילציה של התבנית נכשלה. |
איתור שגיאות DataCapture בכלי לניפוי באגים
המשתנה dataCapturePolicyErrors זמין בכלי לניפוי באגים.
זהו כלי נוסף שבעזרתו אפשר לזהות שגיאות בלי להיכנס ל-Analytics.
לדוגמה, אפשר לזהות שגיאה שמתרחשת אם משדרגים את הגרסה של זמן הריצה ההיברידי ובטעות פוגעים בניתוח הנתונים בשרת proxy שכבר נפרס.
אכיפה של מגבלות על לכידת נתונים
Apigee אוכף את המגבלות הבאות על משתנים בנתונים שנאספו:
- מספר המשתנים המותר הוא 100.
- הגודל המקסימלי של כל משתנה (כולל ערכי רשימה) הוא 400 בייטים.
כשמבצעים את מדיניות איסוף הנתונים, לפני שמוסיפים ערך למיפוי איסוף הנתונים בהקשר של ההודעה:
- אם הגעתם למגבלה על מספר המשתנים, המשתנה החדש יוסר.
- אם הגעתם למגבלת הגודל של המשתנים, הערך יקוצץ כדי להתאים למגבלות הרצויות.
בשני המקרים:
- הודעת ניפוי הבאגים תתועד ביומן של מעבד ההודעות.
- הודעת השגיאה
limit reachedתצורף ל-dataCapturePolicyErrors, והיא תהיה זמינה גם ב-Analytics וגם בכלי הניפוי באגים. הערה: רק הודעת שגיאה אחת על הגעה למספר המקסימלי של משתנים מותרים תצורף. - אם הערך של <ThrowExceptionOnLimit> הוא
true, הנתונים לא נשלחים ל-Analytics ובמקום זאת מוחזרת שגיאה ללקוח.