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

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

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

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

שדה מצב הרכב

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

מצב אופליין מצב אונליין
משתמשים בערך 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

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