עדכון השדות של כלי הרכב למשלוח

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

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

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

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

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

לדוגמה, אפשר להצהיר על מאפיין מותאם אישית שנקרא zone כדי עליכם להבחין באיזה אזור של העיר שבו פועלים רכבי המשלוחים שלכם. תוכל משתמשים בערכי מחרוזת כמו בדוגמאות הבאות כדי לייצג אזורים שונים: 1B, 2C ו-3A. לאחר מכן אפשר להשתמש במסנן ב'מעקב אחר כלל המכשירים' כדי להציג רק כלי רכב שעובדים באזור מסוים למפעיל האחראי באותו אזור.

עם זאת, הערכים של המאפיינים המותאמים אישית לא חייבים להיות ייחודיים. ייתכן ש יש להשתמש בקריטריונים כמו זמין בלילה ויש קירור. כל אחד מאלה יכול להיות מאפיין מותאם אישית נפרד שמשתמש בערכים בוליאניים. רכב נתון אפשר להקצות את כל שלושת המאפיינים המותאמים אישית יחד עם התחום (zone). מוגדר לערך המחרוזת המתאים.

עדכון מאפייני הרכב

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

ה-API הזה של UpdateDeliveryVehicle לא מאפשר לעדכן רק גרסה אחת . כשמשתמשים בשיטה הזו, כל שימוש בשדה attributes המסכה של השדות מובילה לכל הקבוצה של מאפייני הרכב שצוינו בהצהרה מחדש לרכב. התוצאה היא החלפה של מאפיין קיים שאינו קיים כלולה במפורש במסכת השדות. אם אתם משתמשים בשיטה הזו כדי להצהיר (declare) על מאפיין מותאם אישית, צריך גם להצהיר מחדש על כל מאפיין מותאם אישית שרוצים את הרכב שצריך להחזיק. אם לא כוללים את attributes במסכת השדות, משאירה מאפיינים מותאמים אישית קיימים כפי שהוגדרו קודם לכן עבור הרכב. אם משתמשים ב-attributes במסכת השדות אבל בלי להגדיר ערכים, כלומר מקבילה להסרה של כל המאפיינים המותאמים אישית מהרכב.

דוגמה לעדכון שדות הרכב

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

לעדכונים בשדות שאינם last_location נדרש מסירה ב-Fleet Engine הרשאות אדמין.

דוגמה: הגדרת מאפיין מותאם אישית

בדוגמה הזו מצוין מאפיין חדש: zone. כפי שצוין ב צריך לעדכן את מאפייני הרכב קודם, כדי לעדכן את השדה attributes באמצעות בשיטה הזו תצטרכו לציין את כל המאפיינים המותאמים אישית שאתם רוצים לשמור. לכן בדוגמה מוצג ערך available-at-night שנכתב כדי לשמר אותו. מוחלף במהלך פעולת עדכון שמציינת את שדה attributes.

מידע נוסף זמין בחומר העזר providers.deliveryVehicles.patch.

gRPC

  static final String PROJECT_ID = "my-delivery-co-gcp-project";
  static final String VEHICLE_ID = "vehicle-8241890";

  DeliveryServiceBlockingStub deliveryService =
    DeliveryServiceGrpc.newBlockingStub(channel);

  // Vehicle settings
  String vehicleName = "providers/" + PROJECT_ID + "/deliveryVehicles/" + VEHICLE_ID;
  DeliveryVehicle myDeliveryVehicle = DeliveryVehicle.newBuilder()
      .addAllAttributes(ImmutableList.of(
          DeliveryVehicleAttribute.newBuilder().setKey("zone").setValue("1B").build(),
          DeliveryVehicleAttribute.newBuilder().setKey("available-at-night").setValue("true").build()))
      .build();

  // DeliveryVehicle request
  UpdateDeliveryVehicleRequest updateDeliveryVehicleRequest =
    UpdateDeliveryVehicleRequest.newBuilder()  // No need for the header
        .setName(vehicleName)
        .setDeliveryVehicle(myDeliveryVehicle)
        .setUpdateMask(FieldMask.newBuilder()
            .addPaths("attributes"))
        .build();

  try {
    DeliveryVehicle updatedDeliveryVehicle =
        deliveryService.updateDeliveryVehicle(updateDeliveryVehicleRequest);
  } catch (StatusRuntimeException e) {
    Status s = e.getStatus();
    switch (s.getCode()) {
       case NOT_FOUND:
         break;
       case PERMISSION_DENIED:
         break;
    }
    return;
  }

REST

  # Set JWT, PROJECT_ID, VEHICLE_ID, TASK1_ID, and TASK2_ID in the local
  # environment
  curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/deliveryVehicles/${VEHICLE_ID}?updateMask=attributes" \
    -H "Content-type: application/json" \
    -H "Authorization: Bearer ${JWT}" \
    --data-binary @- << EOM
  {
      "attributes": [
        {"key": "zone", "value": "1B"},
        {"key": "available-at-night", "value": "true"}
      ]
  }
  EOM

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