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

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

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

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

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

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

وضع عدم الاتصال بالإنترنت وضع الاتصال
استخدِم OFFLINE للإشارة إلى أنّ المركبة لا تقبل رحلات جديدة. يُرجى العِلم أنّه لا يزال بإمكان المركبة إكمال الرحلات المخصّصة لها وهي في هذه الحالة.
  • قد يتم عرض Vehicle تم إنشاؤه في الحالة ONLINE على الفور في استجابةً لطلبات بحث SearchVehicles. اطّلِع على البحث عن المركبات للحصول على مزيد من التفاصيل.
  • أمّا المركبات التي يتم إنشاؤها في الحالة 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 عند الطلب.

مثال: تفعيل نوع رحلة وسمة مخصّصة جديدَين

يتيح هذا المثال رحلات "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

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