एक के बाद एक ट्रिप बनाएं

इस दस्तावेज़ में, एक के बाद एक ट्रिप बनाने, सही फ़ील्ड सेट करने, और उसे पूरा करने के लिए किसी वाहन को असाइन करने का तरीका बताया गया है. इसमें यह माना जाता है कि आपने Fleet Engine सेट अप कर लिया है, वाहन बना लिए हैं, और आपके पास ड्राइवर ऐप्लिकेशन काम कर रहा है. साथ ही, आपके पास उपभोक्ता ऐप्लिकेशन भी है. आपको मांग पर की जाने वाली यात्राओं के लिए उपलब्ध यात्रा के अलग-अलग चरणों के बारे में भी पता होना चाहिए. इसके लिए, यहां दी गई संबंधित गाइड देखें:

यात्रा बनाने से जुड़ी बुनियादी बातें

इस सेक्शन में, Fleet Engine में यात्रा बनाने के लिए ज़रूरी अनुरोध की जानकारी दी गई है. gRPC और REST, दोनों में से किसी एक का इस्तेमाल करके, क्रिएशन का अनुरोध किया जाता है.

  • CreateTrip() तरीका: gRPC या REST
  • CreateTripRequest मैसेज: सिर्फ़ gRPC

यात्रा के फ़ील्ड

Fleet Engine में यात्रा बनाने के लिए, इन फ़ील्ड का इस्तेमाल करें. अलग-अलग तरह की यात्राओं के लिए, अलग-अलग फ़ील्ड का इस्तेमाल किया जा सकता है. जैसे, एक या एक से ज़्यादा मंज़िल वाली यात्राएं, एक के बाद एक की जाने वाली यात्राएं या शेयर की गई पूलिंग यात्राएं. यात्रा बनाते समय, ज़रूरी नहीं वाले फ़ील्ड की जानकारी दी जा सकती है. इसके अलावा, यात्रा को अपडेट करते समय भी यह जानकारी दी जा सकती है.

यात्रा के फ़ील्ड
नाम ज़रूरी है? ब्यौरा
parent हां यह एक स्ट्रिंग है, जिसमें प्रोजेक्ट आईडी शामिल होता है. यह आईडी, आपके पूरे Fleet Engine इंटिग्रेशन में इस्तेमाल किए गए आईडी से मेल खाना चाहिए. साथ ही, इसमें सेवा खाते की भूमिकाएं भी एक जैसी होनी चाहिए.
trip_id हां यह एक ऐसी स्ट्रिंग होती है जिसे आपने बनाया है. इससे इस यात्रा की खास तौर पर पहचान होती है. ट्रिप आईडी के लिए, कुछ पाबंदियां हैं. इनके बारे में रेफ़रंस में बताया गया है.
trip_type हां आपको जिस तरह की यात्रा के लिए यूआरएल टेंप्लेट बनाना है उसके लिए, TripType को इन वैल्यू पर सेट करें:
  • एक डेस्टिनेशन: इसे SHARED या EXCLUSIVE पर सेट करें.
  • एक से ज़्यादा डेस्टिनेशन: इसे EXCLUSIVE पर सेट करें.
  • एक के बाद एक: इसे EXCLUSIVE पर सेट करें.
  • शेयर की गई पूलिंग: इसे SHARED पर सेट करें.
pickup_point हां यात्रा शुरू करने की जगह.
बीच के डेस्टिनेशन हां

सिर्फ़ एक से ज़्यादा गंतव्य वाली यात्राओं के लिए: पिकअप और ड्रॉप-ऑफ़ के बीच ड्राइवर जिन जगहों पर जाता है उनकी सूची. dropoff_point की तरह, इस फ़ील्ड को बाद में UpdateTrip को कॉल करके भी सेट किया जा सकता है. हालांकि, एक से ज़्यादा गंतव्य वाली यात्रा में बीच के गंतव्य शामिल होते हैं.

vehicle_waypoints हां

सिर्फ़ शेयर की गई पूलिंग वाली यात्राएं: इस फ़ील्ड में, एक से ज़्यादा यात्राओं के वेपॉइंट को इंटरलीव करने की सुविधा मिलती है. इसमें असाइन किए गए वाहन के लिए, बाकी बचे सभी वेपॉइंट शामिल होते हैं. साथ ही, इस यात्रा के लिए पिकअप और ड्रॉप-ऑफ़ वेपॉइंट भी शामिल होते हैं. CreateTrip या UpdateTrip को कॉल करके, इस फ़ील्ड को सेट किया जा सकता है. UpdateVehicle को कॉल करके, waypoints फ़ील्ड के ज़रिए वाहन के वेपॉइंट भी अपडेट किए जा सकते हैं. निजता की वजहों से, यह सेवा GetTrip कॉल पर यह जानकारी नहीं दिखाती.

number_of_passengers नहीं यात्रा में शामिल यात्रियों की संख्या.
dropoff_point नहीं यात्रा की मंज़िल.
vehicle_id नहीं यात्रा के लिए असाइन किए गए वाहन का आईडी.

उदाहरण: एक के बाद एक यात्रा करना

यहां एक के बाद एक ट्रिप बनाने और उसे किसी वाहन को असाइन करने का तरीका बताया गया है. इस स्थिति में, यात्रा बनाने का तरीका, एक जगह की यात्रा बनाने के तरीके जैसा ही होता है. बाद में, आपको दूसरी यात्रा बनानी होती है और उसे ऐसे वाहन को असाइन करना होता है जिसकी यात्रा पहले से चालू है.

// A vehicle with ID 'my-vehicle' is already created and it is assigned to a trip with ID 'current-trip'.

static final String PROJECT_ID = "my-rideshare-co-gcp-project";
static final String VEHICLE_ID =" my-vehicle";
static final String TRIP_ID = "back-to-back-trip");

TripServiceBlockingStub tripService = TripService.newBlockingStub(channel);

String parent = "providers/" + PROJECT_ID;

Trip trip = Trip.newBuilder()
    .setTripType(TripType.EXCLUSIVE)
    .setPickupPoint(
        TerminalLocation.newBuilder().setPoint(
            LatLng.newBuilder()
                .setLatitude(-6.195139).setLongitude(106.820826)))
    .setDropoffPoint(
        TerminalLocation.newBuilder().setPoint(
            LatLng.newBuilder()
                .setLatitude(-6.1275).setLongitude(106.6537)))
    .setVehicleId(VEHICLE_ID)
    .build();

// Create trip request
CreateTripRequest createTripRequest = CreateTripRequest.newBuilder()
    .setParent(parent)
    .setTripId(TRIP_ID)
    .setTrip(trip)
    .build();

// Error handling.
try {
  // Fleet Engine automatically assigns a 'waypoints' list to the trip containing
  // the vehicle's current trip waypoints.
  Trip createdTrip =
      tripService.createTrip(createTripRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
    case ALREADY_EXISTS:
      break;
    case PERMISSION_DENIED:
      break;
  }
  return;
}

लगातार की जाने वाली यात्राओं की जानकारी अपडेट करना

एक के बाद एक यात्रा के लिए कोई वाहन असाइन करने का मतलब है कि आपने किसी वाहन को यात्रा असाइन की है. भले ही, उसे पहले से ही कोई यात्रा असाइन की गई हो.

Fleet Engine में बनाई गई किसी भी यात्रा को किसी वाहन को असाइन किया जाना चाहिए, ताकि Fleet Engine यात्रा के ईटीए का हिसाब लगा सके और उसे ट्रैक कर सके. ऐसा यात्रा बनाते समय या बाद में यात्रा की जानकारी अपडेट करते समय किया जा सकता है.

किसी वाहन को यात्रा असाइन करने के बाद, Fleet Engine उस वाहन के वेपॉइंट फ़ील्ड में, एक के बाद एक की जाने वाली यात्राओं से जुड़े वेपॉइंट अपने-आप जोड़ देता है. किसी यात्रा के remainingWaypoints फ़ील्ड में सभी वेपॉइंट की सूची होती है. इसमें उन दूसरी यात्राओं के वेपॉइंट भी शामिल होते हैं जहां यात्रा के ड्रॉप-ऑफ़ से पहले जाया जाएगा.

उदाहरण के लिए, मान लें कि आपने दो यात्राएं की हैं: यात्रा A और यात्रा B. वाहन ने उपभोक्ता को ट्रिप A के लिए पिक अप कर लिया है. ड्रॉप-ऑफ़ की जगह पर जाते समय, ड्राइवर को अगले ट्रिप ट्रिप B के लिए किसी दूसरे उपभोक्ता को पिकअप करने का अनुरोध मिलता है.

  • कॉल करने पर getVehicle(), remainingWaypoints मिलता है. इसमें ये शामिल हैं:
    A ड्रॉप-ऑफ़B पिकअपB ड्रॉप-ऑफ़.
  • ट्रिप A के लिए, getTrip() या onTripRemainingWaypointsUpdated कॉलबैक, remainingWaypoints दिखाता है. इसमें ये शामिल हैं:
    ड्रॉप-ऑफ़ A
    .
  • यात्रा B के लिए, getTrip() या onTripRemainingWaypointsUpdated कॉलबैक, remainingWaypoints दिखाता है. इसमें ये शामिल हैं:
    A ड्रॉप-ऑफ़B पिकअप → और B ड्रॉप-ऑफ़.

आगे क्या करना है