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