|
במסמך הזה מפורטים שדות חשובים של כלי רכב שאפשר לעדכן כשיוצרים כלי רכב ומנהלים אותם.
|
רשימה מלאה של שדות הרכב מופיעה במאמרים הבאים:
|
שדה מצב הרכב
המערכת יכולה להגדיר את מצב הרכב כ-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