עדכון שדות הרכב

במסמך הזה מפורטים שדות חשובים של כלי רכב שאפשר לעדכן כשיוצרים ומנהלים כלי רכב.

  • vehicle_state: קובע את הזמינות של הרכב לנסיעות חדשות.
  • vehicle_type: שדה חובה כשיוצרים רכב. השדה יכול לשמש גם כקריטריון לסינון התאמות של כלי רכב. פרטים על הגדרת השדה הזה זמינים במאמר בנושא יצירת רכב.
  • attributes[]: מערך אופציונלי מסוג VehicleAttribute. אפשר להשתמש בהם כדי להגדיר קריטריונים מותאמים אישית לשיפור התנהגות הסינון כשמחפשים או מציגים רשימה של כלי רכב.
 

רשימה מלאה של שדות הרכב מופיעה במאמרים הבאים:

שדה מצב הרכב

המערכת יכולה להגדיר את מצב הרכב כ-OFFLINE או כ-ONLINE. לדוגמה, אפשר להגדיר את מצב הרכב לONLINE בכל יום בשעה 9:00 ולOFFLINE בכל יום בשעה 17:00.

מצב אופליין מצב ONLINE
משתמשים בתג OFFLINE כדי לציין שאי אפשר להזמין נסיעות חדשות ברכב. שימו לב: הרכב עדיין יכול להשלים נסיעות שהוקצו לו בזמן שהוא במצב הזה.
  • Vehicle שנוצר במצב ONLINE עשוי לחזור מיד בתגובה לשאילתות SearchVehicles. פרטים נוספים זמינים במאמר בנושא חיפוש כלי רכב.
  • רכבים שנוצרו במצב ONLINE צריכים להשתמש בשדה last_location בשיחה CreateVehicle.

שדה מאפייני הרכב

אפשר להשתמש בשדה 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

המאמרים הבאים