تعديل حقول مركبات التوصيل

يتناول هذا المستند حقول المركبات المهمة التي يمكنك تعديلها عند إنشاء المركبات وإدارتها.

  • ‫type: نوع مركبة التسليم هذه ويؤثر ذلك في المسارات التي يتم إنشاؤها لهذه المركبة.
  • ‫attributes[]: مصفوفة اختيارية من النوع DeliveryVehicleAttribute. ويمكنك استخدامها لتحديد معايير مخصّصة للمركبات في خدمتك من أجل تحسين سلوك الفلترة عند البحث عن المركبات أو إدراجها.
 

للاطّلاع على قائمة كاملة بحقول المركبات، يُرجى مراجعة:

حقل سمات المركبات

استخدِم حقل attributes الخاص بالمركبة لإنشاء معايير مخصّصة تتيح للمستهلكين أو مشغّلي الأسطول العثور على المركبات في أسطولك من خلال مجموعة متنوعة من معايير البحث. يؤدي ذلك إلى تحسين إمكانات تطبيقاتك لتقديم مركبات مطابقة بشكل أفضل مما يمكنك تقديمه باستخدام معايير البحث المستندة فقط إلى حقول المركبات الأخرى. يمكن أن تحتوي كل مركبة على 100 سمة كحدّ أقصى، ويجب أن يكون لكلّ سمة مفتاح فريد. يمكن أن تكون القيم سلاسل أو قيمًا منطقية أو أرقامًا.

على سبيل المثال، يمكنك تعريف سمة مخصّصة باسم zone (منطقة) للتمييز بين المناطق التي تعمل فيها مركبات التوصيل في المدينة. يمكنك استخدام قيم السلسلة مثل ما يلي لتمثيل مناطق مختلفة: 1B و2C و3A. يمكنك بعد ذلك استخدام فلتر في "تتبُّع الأسطول" لعرض المركبات التي تعمل في منطقة معيّنة فقط للمشغّل المسؤول عن تلك المنطقة.

ومع ذلك، ليس من الضروري أن تكون قيم السمات المخصّصة متنافية. يمكنك استخدام معايير مثل متاح-ليلاً ويحتوي-على-ثلاجة. يمكن أن يكون كلّ من هذه الخيارات سمة مخصّصة منفصلة تستخدم قيمًا منطقية. يمكن تخصيص هذه السمات المخصّصة الثلاث لمركبة معيّنة، بالإضافة إلى السمة المخصّصة zone التي يتم ضبطها على قيمة السلسلة المناسبة.

تعديل سمات المركبة

يمكن أن يكون لكل مفتاح attributes قيمة واحدة فقط لكل مركبة. يمكنك تحديد سمات المركبات المخصّصة باستخدام attributes في قناع الحقل، ثم تقديم القيم استنادًا إلى الطريقة أدناه.

لا تسمح واجهة برمجة التطبيقات UpdateDeliveryVehicle هذه بتعديل سمة واحدة فقط. عند استخدام هذه الطريقة، يؤدي أي استخدام لحقل attributes في قناع الحقل إلى إعادة تعريف المجموعة الكاملة من سمات المركبة. ويؤدي ذلك إلى استبدال أي سمة حالية غير مضمّنة صراحةً في قناع الحقل. إذا استخدمت هذه الطريقة للإعلان عن سمة مخصّصة جديدة، يجب أيضًا إعادة الإعلان عن كل سمة مخصّصة تريد أن تحتفظ بها المركبة. في حال استبعاد attributes في قناع الحقل، ستترك هذه الطريقة السمات المخصّصة الحالية كما تم تحديدها سابقًا للمركبة. إذا استخدمت attributes في قناع الحقل، ولكن بدون ضبط القيم، يعادل ذلك إزالة جميع السمات المخصّصة من المركبة.

مثال على تعديل حقول المركبة

يوضّح هذا القسم كيفية تعديل حقول المركبات باستخدام UpdateDeliveryVehicleRequest، والذي يتضمّن update_mask للإشارة إلى الحقول التي يجب تعديلها. لمزيد من التفاصيل، يُرجى الاطّلاع على مستندات Protocol Buffers حول أقنعة الحقول.

تتطلّب التعديلات على الحقول بخلاف 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

الخطوات التالية