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

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

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

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

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

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

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

ومع ذلك، ليس من الضروري أن تكون قيم السمات المخصّصة غير متكرّرة. يمكنك استخدام معايير مثل available-at-night وhas-refrigeration. يمكن أن تكون كلّ من هاتَين السمتَين سمة مخصّصة منفصلة تستخدِم قيمًا منطقية. يمكن أن يتم تخصيص كل هذه السمات المخصّصة الثلاث لمركبة معيّنة، بالإضافة إلى السمة المخصّصة 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

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