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

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

  • ‫vehicle_state: تحدّد مدى توفّر المركبة للرحلات الجديدة.
  • ‫vehicle_type: حقل مطلوب عند إنشاء مركبة. يمكن أن يعمل الحقل أيضًا كمعيار فلترة للمركبات المطابقة. يُرجى الاطّلاع على مقالة إنشاء مركبة لمعرفة تفاصيل حول ضبط هذا الحقل.
  • attributes[]: مصفوفة اختيارية من النوع VehicleAttribute. ويمكنك استخدامها لتحديد معايير مخصّصة من أجل تحسين سلوك الفلترة عند البحث عن المركبات أو إدراجها.
 

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

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

يمكن لنظامك ضبط حالة المركبة على "OFFLINE" أو "ONLINE". على سبيل المثال، يمكنك ضبط حالة المركبة على ONLINE كل يوم في الساعة 9 صباحًا وOFFLINE كل يوم في الساعة 5 مساءً.

وضع عدم الاتصال بالإنترنت وضع "على الإنترنت"
استخدِم OFFLINE للإشارة إلى أنّ المركبة لا تقبل رحلات جديدة. يُرجى العِلم أنّ المركبة يمكنها إكمال الرحلات المحدّدة لها أثناء وجودها في هذه الحالة.
  • قد يتم عرض Vehicle تم إنشاؤه في الحالة ONLINE على الفور استجابةً لطلبات البحث SearchVehicles. لمزيد من التفاصيل، يمكنك الاطّلاع على المركبات التي تظهر في "بحث Google".
  • يجب أن تستخدم المركبات التي تم إنشاؤها في ولاية ONLINE الحقل last_location في طلب CreateVehicle.

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

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

على سبيل المثال، يمكنك تحديد سمة مخصّصة باسم class للتمييز بين مركبات النقل المشترك حسب مستويات الفئة. يمكنك استخدام قيم السلسلة التالية لتمثيل مستويات فئة المركبة: ECONOMY وSTANDARD وLUXURY.

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

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

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

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

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

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

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

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

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