|
במסמך הזה מפורטים שדות חשובים של כלי רכב שאפשר לעדכן כשיוצרים כלי רכב ומנהלים אותם.
|
רשימה מלאה של שדות הרכב מופיעה במאמרים הבאים:
|
שדה מצב הרכב
המערכת יכולה להגדיר את מצב הרכב כ-OFFLINE או כ-ONLINE. לדוגמה, אפשר להגדיר את מצב הרכב לONLINE כל יום בשעה 9:00 ולOFFLINE כל יום בשעה 17:00.
| מצב אופליין | מצב ONLINE |
|---|---|
משתמשים ב-OFFLINE כדי לציין שאי אפשר להזמין נסיעות חדשות ברכב. הערה: הרכב עדיין יכול להשלים נסיעות שהוקצו לו כשהוא במצב הזה. |
|
השדה 'מאפייני הרכב'
אפשר להשתמש בשדה attributes של כלי הרכב כדי ליצור קריטריונים מותאמים אישית שיאפשרו ללקוחות או למנהלי צי רכב למצוא כלי רכב בצי לפי מגוון רחב יותר של קריטריונים לחיפוש. כך משפרים את היכולות של האפליקציות לספק התאמות טובות יותר של כלי רכב בהשוואה למה שהיה מתקבל משימוש בקריטריונים לחיפוש שמבוססים רק על שדות אחרים של כלי רכב. לכל רכב יכולים להיות עד 100 מאפיינים, וכל אחד מהם חייב להיות בעל מפתח ייחודי. הערכים יכולים להיות מחרוזות, ערכים בוליאניים או מספרים.
לדוגמה, אפשר להצהיר על מאפיין מותאם אישית בשם class כדי להבדיל בין כלי הרכב של שירות הנסיעות השיתופיות ברמות שונות של מחירים. כדי לייצג את רמות הסיווג של כלי רכב, משתמשים בערכי המחרוזת הבאים: ECONOMY, STANDARD ו-LUXURY.
עם זאת, ערכי מאפיינים מותאמים אישית לא חייבים להיות ייחודיים. אפשר להשתמש בקריטריונים כמו מתאים לחיות מחמד, ללא עישון ואפשר לנסוע למרחקים ארוכים יותר. כל אחד מהם יכול להיות מאפיין מותאם אישית נפרד שמשתמש בערכים בוליאניים. לרכב מסוים יכולים להיות שלושת המאפיינים המותאמים אישית האלה, וגם המאפיין המותאם אישית class עם ערך המחרוזת המתאים.
שימוש במאפיינים בצורה הזו יכול לספק לכם מגוון רחב של תכונות שימושיות למציאת רכבים לנסיעות עם צרכים ספציפיים. הוראות לשימוש במאפיינים מותאמים אישית כמסנני אילתות זמינות במאמר חיפוש כלי רכב.
עדכון מאפייני הרכב
אפשר לעדכן את מאפייני הרכב באמצעות UpdateVehicle או UpdateVehicleAttributes. לכל מפתח attributes יכול להיות רק ערך אחד לכל רכב. אתם יכולים להצהיר על מאפייני רכב מותאמים אישית באמצעות attributes
במסכת השדות, ואז לספק ערכים על סמך השיטה שבהמשך.
UpdateVehicle |
UpdateVehicleAttributes |
|
|---|---|---|
אי אפשר לעדכן רק מאפיין אחד באמצעות ה-API הזה. כשמשתמשים בשיטה הזו, כל שימוש בשדה attributes במסכת השדות גורם להצהרה מחדש של כל קבוצת מאפייני הרכב. התוצאה היא החלפה של כל מאפיין קיים שלא נכלל באופן מפורש במסכת השדות. אם משתמשים בשיטה הזו כדי להצהיר על מאפיין מותאם אישית חדש, צריך גם להצהיר מחדש על כל מאפיין מותאם אישית שרוצים שהרכב ישמור. אם לא כוללים את attributes במסכת השדות,
השיטה הזו משאירה את המאפיינים המותאמים אישית הקיימים כפי שהוגדרו קודם
עבור הרכב. אם משתמשים ב-attributes במסכת השדות, אבל לא מגדירים ערכים, זה שווה ערך להסרת כל המאפיינים המותאמים אישית של הרכב.
|
ה-method הזה מקבל רשימה ספציפית של מאפיינים לעדכון. הבקשה מעדכנת או מוסיפה רק את המאפיינים שצוינו במסכת השדה. מאפיינים קיימים שלא צוינו יישארו ללא שינוי. |
דוגמה לעדכון שדות של כלי רכב
בקטע הזה מוסבר איך לעדכן שדות של כלי רכב באמצעות UpdateVehicleRequest, שכולל update_mask כדי לציין אילו שדות לעדכן. פרטים נוספים זמינים במסמכי התיעוד של Protocol Buffers בנושא field masks.
כדי לעדכן שדות אחרים מלבד last_location, צריך הרשאות אדמין של Fleet Engine On-demand.
דוגמה: הפעלת סוג נסיעה חדש ומאפיין מותאם אישית
בדוגמה הזו מפעילים את back_to_back ברכב ומציינים גם מאפיין חדש: class. כמו שצוין קודם במאמר עדכון מאפייני רכב, אם משתמשים בגישה הזו כדי לעדכן את השדה attributes, צריך לציין את כל המאפיינים המותאמים אישית שרוצים לשמור. לכן בדוגמה מוצג ערך cash_only שנכתב כדי למנוע דריסה במהלך פעולת עדכון שבה מצוין השדה attributes.
כדי לעדכן רק את הערך של צמד אחד של מאפיין מפתח/ערך, צריך להשתמש במקום זאת בשיטה UpdateVehicleAttributes ולא לכלול את השדה attribute במסכת השדות של בקשת UpdateVehicle.
פרטים נוספים זמינים במאמרי העזרה של providers.vehicles.update (gRPC, REST).
gRPC
static final String PROJECT_ID = "project-id";
static final String VEHICLE_ID = "vid-8241890";
VehicleServiceBlockingStub vehicleService = VehicleService.newBlockingStub(channel);
String vehicleName = "providers/" + PROJECT_ID + "/vehicles/" + VEHICLE_ID;
Vehicle updatedVehicle = Vehicle.newBuilder()
.setVehicleState(VehicleState.ONLINE)
.addAllAttributes(ImmutableList.of(
VehicleAttribute.newBuilder().setKey("class").setValue("ECONOMY").build(),
VehicleAttribute.newBuilder().setKey("cash_only").setValue("false").build()))
.setBackToBackEnabled(true)
.build();
UpdateVehicleRequest updateVehicleRequest = UpdateVehicleRequest.newBuilder()
.setName(vehicleName)
.setVehicle(updatedVehicle)
.setUpdateMask(FieldMask.newBuilder()
.addPaths("vehicle_state")
.addPaths("attributes")
.addPaths("back_to_back_enabled"))
.build();
try {
Vehicle updatedVehicle =
vehicleService.updateVehicle(updateVehicleRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case NOT_FOUND:
// Most implementations will call CreateVehicle in this case
break;
case PERMISSION_DENIED:
break;
}
return;
}
// If no Exception, Vehicle updated successfully.
REST
curl -X PUT \
"https://fleetengine.googleapis.com/v1/providers/project-id/vehicles/vid-8241890?updateMask=vehicle_state,attributes,back_to_back_enabled" \
-H "Authorization: Bearer $JWT" \
-H "Content-Type: application/json" \
--data-binary @- << EOM
{
"vehicleState": "ONLINE",
"attributes": [
{"key": "class", "value": "LUXURY"},
{"key": "cash_only", "value": "false"}
],
"backToBackEnabled": true
}
EOM