|
במסמך הזה מפורטים שדות חשובים של כלי רכב שאפשר לעדכן כשיוצרים ומנהלים כלי רכב.
|
רשימה מלאה של השדות שזמינים במודעות למכירת רכב מופיעה במאמרים הבאים: |
השדה של מאפייני הרכב
אפשר להשתמש בשדה attributes רכב כדי ליצור קריטריונים מותאמים אישית שיאפשרו לצרכנים או למנהלי צי רכב למצוא רכבים בצי הרכב שלכם על סמך מגוון רחב יותר של קריטריונים לחיפוש. כך האפליקציות שלכם יוכלו לספק התאמות טובות יותר של כלי רכב, בהשוואה לשימוש בקריטריונים לחיפוש שמבוססים רק על שדות אחרים של כלי רכב. לכל רכב יכולים להיות עד 100 מאפיינים, ולכל אחד מהם חייב להיות מפתח ייחודי. הערכים יכולים להיות מחרוזות, ערכים בוליאניים או מספרים.
לדוגמה, אתם יכולים להצהיר על מאפיין מותאם אישית בשם zone כדי להבדיל בין האזורים בעיר שבהם פועלים רכבי המשלוחים שלכם. כדי לייצג אזורים שונים, אפשר להשתמש בערכים מסוג מחרוזת כמו 1B, 2C ו-3A. אחר כך תוכלו להשתמש במסנן ב-Fleet Tracking כדי להציג רק את כלי הרכב שפועלים באזור ספציפי למפעיל שאחראי על האזור הזה.
עם זאת, ערכי מאפיינים מותאמים אישית לא צריכים להיות ייחודיים. אפשר להשתמש בקריטריונים כמו available-at-night (זמין בלילה) ו-has-refrigeration (יש קירור). כל אחד מהם יכול להיות מאפיין מותאם אישית נפרד שמשתמש בערכים בוליאניים. לרכב מסוים אפשר להקצות את כל שלושת המאפיינים המותאמים אישית האלה, יחד עם המאפיין המותאם אישית zone שמוגדר לערך המחרוזת המתאים.
עדכון מאפייני הרכב
לכל מפתח attributes יכול להיות רק ערך אחד לכל רכב. כדי להצהיר על מאפייני רכב מותאמים אישית, משתמשים ב-attributes במסכת השדות, ואז מספקים ערכים על סמך השיטה שבהמשך.
ב-API הזה של UpdateDeliveryVehicle אי אפשר לעדכן רק מאפיין אחד. כשמשתמשים בשיטה הזו, כל שימוש בשדה attributes במסכת השדות גורם להצהרה מחדש על כל קבוצת מאפייני הרכב. כתוצאה מכך, כל מאפיין קיים שלא נכלל במפורש במסכת השדות יוחלף. אם אתם משתמשים בשיטה הזו כדי להצהיר על מאפיין חדש בהתאמה אישית, אתם צריכים גם להצהיר מחדש על כל מאפיין בהתאמה אישית שאתם רוצים שהרכב ישמור. אם לא כוללים את attributes במסכת השדות, השיטה הזו משאירה את המאפיינים המותאמים אישית הקיימים כפי שהוגדרו קודם לרכב.
אם משתמשים ב-attributes במסכת השדות, אבל בלי להגדיר ערכים, זה שווה ערך להסרת כל המאפיינים המותאמים אישית של הרכב.
דוגמה לעדכון שדות של רכב
בקטע הזה מוסבר איך לעדכן שדות של רכבים באמצעות UpdateDeliveryVehicleRequest, שכולל update_mask כדי לציין אילו שדות לעדכן. פרטים נוספים מופיעים במסמכי התיעוד בנושא מאגר אחסון לפרוטוקולים על field masks.
כדי לעדכן שדות אחרים מלבד last_location, נדרשות הרשאות אדמין של Fleet Engine Delivery.
דוגמה: הגדרת מאפיין מותאם אישית
בדוגמה הזו מצוין מאפיין חדש: zone. כמו שצוין קודם במאמר עדכון מאפייני רכב, כשמעדכנים את השדה attributes בשיטה הזו צריך לציין את כל המאפיינים המותאמים אישית שרוצים לשמור.
לכן בדוגמה מוצג ערך available-at-night שנכתב כדי למנוע את הדריסה שלו במהלך פעולת עדכון שבה מצוין השדה attributes.
אפשר לעיין במאמר העזרה בנושא providers.deliveryVehicles.patch.
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String VEHICLE_ID = "vehicle-8241890";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Vehicle settings
String vehicleName = "providers/" + PROJECT_ID + "/deliveryVehicles/" + VEHICLE_ID;
DeliveryVehicle myDeliveryVehicle = DeliveryVehicle.newBuilder()
.addAllAttributes(ImmutableList.of(
DeliveryVehicleAttribute.newBuilder().setKey("zone").setValue("1B").build(),
DeliveryVehicleAttribute.newBuilder().setKey("available-at-night").setValue("true").build()))
.build();
// DeliveryVehicle request
UpdateDeliveryVehicleRequest updateDeliveryVehicleRequest =
UpdateDeliveryVehicleRequest.newBuilder() // No need for the header
.setName(vehicleName)
.setDeliveryVehicle(myDeliveryVehicle)
.setUpdateMask(FieldMask.newBuilder()
.addPaths("attributes"))
.build();
try {
DeliveryVehicle updatedDeliveryVehicle =
deliveryService.updateDeliveryVehicle(updateDeliveryVehicleRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case NOT_FOUND:
break;
case PERMISSION_DENIED:
break;
}
return;
}
REST
# Set JWT, PROJECT_ID, VEHICLE_ID, TASK1_ID, and TASK2_ID in the local
# environment
curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/deliveryVehicles/${VEHICLE_ID}?updateMask=attributes" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"attributes": [
{"key": "zone", "value": "1B"},
{"key": "available-at-night", "value": "true"}
]
}
EOM