इस दस्तावेज़ में एक से ज़्यादा डेस्टिनेशन वाली यात्रा बनाने का तरीका बताया गया है. इसके लिए, अपनी पसंद का विकल्प चुनें फ़ील्ड में बदलाव कर सकता है और उसे पूरा करने के लिए किसी वाहन को असाइन कर सकता है. इसमें हम मान लेते हैं कि आपने फ़्लीट सेट अप कर लिया है इंजन, आपके पास वाहन हैं, आपका ड्राइवर ऐप्लिकेशन काम कर रहा है, और विकल्प के तौर पर, उपभोक्ता ऐप्लिकेशन. आपको अलग-अलग यात्राओं की जानकारी भी होनी चाहिए मांग पर उपलब्ध यात्राओं के स्टेटस की जानकारी. इनके लिए नीचे दी गई गाइड देखें के हिसाब से:
- Fleet Engine सेट अप करना
- वाहन बनाना
- मांग पर उपलब्ध यात्राओं की खास जानकारी में, यात्रा की स्थितियां
यात्रा तैयार करने से जुड़ी बुनियादी बातें
इस सेक्शन में, यात्रा बनाने के लिए ज़रूरी अनुरोध की जानकारी दी गई है फ़्लीट इंजन. gRPC और REST में से किसी एक का इस्तेमाल करके अनुरोध बनाने का अनुरोध किया जाता है.
यात्रा के फ़ील्ड
Fleet Engine में ट्रिप बनाने के लिए, नीचे दिए गए फ़ील्ड का इस्तेमाल करें. अलग-अलग तरह की यात्राओं के लिए, अलग-अलग फ़ील्ड का इस्तेमाल किया जा सकता है: एक या कई डेस्टिनेशन, एक के बाद एक या शेयर की गई पूलिंग वाली यात्राएं. आपने लोगों तक पहुंचाया मुफ़्त में यात्रा बनाते समय वैकल्पिक फ़ील्ड दे सकते हैं या उन्हें सेट कर सकते हैं जब आप यात्रा अपडेट करते हैं.
नाम | ज़रूरी है? | ब्यौरा |
---|---|---|
parent | हां | प्रोजेक्ट आईडी वाली स्ट्रिंग. यह आईडी, इस्तेमाल किए गए आईडी से मेल खाना चाहिए एक ही सेवा खाते से, सभी Fleet Engine इंटिग्रेशन पर काम करें भूमिकाएं. |
trip_id | हां | आपने जो स्ट्रिंग बनाई है वह इस ट्रिप की खास तौर पर पहचान करती है. ट्रिप आईडी पर कुछ पाबंदियां हैं, जैसा कि रेफ़रंस में बताया गया है. |
trip_type | हां | जो यात्रा टाइप बनाया जा रहा है उसके लिए इन वैल्यू पर TripType सेट करें:
|
pickup_point | हां | यात्रा की शुरुआत की जगह. |
बीच के लेवल पर डेस्टिनेशन | हां | सिर्फ़ एक से ज़्यादा डेस्टिनेशन की यात्राएं: उन इंटरमीडिएट डेस्टिनेशन की सूची जिन पर ड्राइवर के बीच में विज़िट किया जाता है
लेने और छोड़ने की सुविधा उपलब्ध है. |
vehicle_waypoints | हां | सिर्फ़ शेयर की गई पूल की गई यात्राएं: इस फ़ील्ड की मदद से, एक से ज़्यादा यात्राओं के वे रास्ते जोड़े जा सकते हैं.
इसमें, असाइन किए गए वाहन के लिए बचे हुए सभी वेपॉइंट के साथ-साथ, इस यात्रा के लिए पिकअप और ड्रॉप-ऑफ़ वेपॉइंट भी शामिल होते हैं. आप इस फ़ील्ड को सेट कर सकते हैं
|
number_of_passengers | नहीं | यात्रा के दौरान यात्रियों की संख्या. |
dropoff_point | नहीं | यात्रा की मंज़िल. |
vehicle_id | नहीं | यात्रा के लिए असाइन किए गए वाहन का आईडी. |
उदाहरण: एक से ज़्यादा डेस्टिनेशन की यात्रा बनाना
एक से ज़्यादा डेस्टिनेशन की खास यात्रा बनाने का तरीका नीचे बताया गया है एक पिक अप पॉइंट, ड्रॉप-ऑफ़ पॉइंट, और एक इंटरमीडिएट डेस्टिनेशन है.
static final String PROJECT_ID = "my-rideshare-co-gcp-project";
static final String TRIP_ID = "multi-destination-trip-A";
TripServiceBlockingStub tripService = TripService.newBlockingStub(channel);
// Trip initial settings.
String parent = "providers/" + PROJECT_ID;
Trip trip = Trip.newBuilder()
.setTripType(TripType.EXCLUSIVE)
.setPickupPoint(
TerminalLocation.newBuilder().setPoint(
LatLng.newBuilder()
.setLatitude(-6.195139).setLongitude(106.820826)))
.setNumberOfPassengers(1)
.setDropoffPoint(
TerminalLocation.newBuilder().setPoint(
LatLng.newBuilder()
.setLatitude(-6.1275).setLongitude(106.6537)))
// Add the list of intermediate destinations.
.addAllIntermediateDestinations(
ImmutableList.of(
TerminalLocation.newBuilder().setPoint(
LatLng.newBuilder()
.setLatitude(-6.195139).setLongitude(106.820826)).build()))
.build();
// Create the Trip request.
CreateTripRequest createTripRequest = CreateTripRequest.newBuilder()
.setParent(parent)
.setTripId(TRIP_ID) // Trip ID assigned by the Provider server.
.setTrip(trip) // Initial state is NEW.
.build();
// Error handling.
try {
Trip createdTrip =
tripService.createTrip(createTripRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case ALREADY_EXISTS: // Trip already exists.
break;
case PERMISSION_DENIED:
break;
}
return;
}
एक से ज़्यादा मंज़िलों की यात्रा अपडेट करना
आपको यात्रा को वाहन के आईडी के साथ कॉन्फ़िगर करना होगा, ताकि फ़्लीट इंजन ट्रैक कर सके अपने रास्ते में आने वाले वाहन. किसी यात्रा की जानकारी अपडेट करने के बारे में जानने के लिए, यात्रा की जानकारी अपडेट करना और उसकी स्थिति मैनेज करना लेख पढ़ें.
अगर यात्रा की योजना बनाते समय, आपने ड्रॉप-ऑफ़ या बीच में रुकने की जगहों की जानकारी नहीं दी है, तो इस समय ऐसा किया जा सकता है.
यात्रा की जानकारी अपडेट करने का उदाहरण
इंटरमीडिएट की सूची जोड़ने के लिए, यात्रा को अपडेट करने का तरीका यहां बताया गया है वाहन आईडी सेट करें.
static final String PROJECT_ID = "my-rideshare-co-gcp-project";
static final String TRIP_ID = "multi-destination-trip-A";
String tripName = "providers/" + PROJECT_ID + "/trips/" + TRIP_ID;
TripServiceBlockingStub tripService = TripService.newBlockingStub(channel);
// The trip settings to be updated.
Trip trip = Trip.newBuilder()
// Add the list of intermediate destinations.
.addAllIntermediateDestinations(
ImmutableList.of(
TerminalLocation.newBuilder().setPoint(
LatLng.newBuilder()
.setLatitude(-6.195139).setLongitude(106.820826)).build()))
.setVehicleId("8241890")
.build();
// The trip update request.
UpdateTripRequest updateTripRequest = UpdateTripRequest.newBuilder()
.setName(tripName)
.setTrip(trip)
.setUpdateMask(
FieldMask.newBuilder()
.addPaths("intermediate_destinations")
.addPaths("vehicle_id")
.build())
.build();
// Error handling.
try {
Trip updatedTrip =
tripService.updateTrip(updateTripRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case NOT_FOUND: // The trip doesn't exist.
break;
case PERMISSION_DENIED:
break;
}
return;
}
एक से ज़्यादा डेस्टिनेशन वाली यात्राओं के लिए, यात्रा की स्थिति मैनेज करें
TripStatus
एनोटेशन की किसी एक वैल्यू का इस्तेमाल करके, यात्रा की स्थिति बताई जाती है. जब यात्रा की स्थिति बदलती है, उदाहरण के लिए ENROUTE_TO_PICKUP
से बदलकर
ARRIVED_AT_PICKUP
, आपको फ़्लीट इंजन में यात्रा की स्थिति अपडेट करनी होगी. ट्रिप की स्थिति हमेशा NEW
की वैल्यू से शुरू होती है और COMPLETE
या CANCELED
की वैल्यू पर खत्म होती है.
एक से ज़्यादा डेस्टिनेशन वाली यात्रा के लिए, आपको यात्रा की स्थिति को अपडेट करना होगा. ठीक उसी तरह जैसे एक डेस्टिनेशन वाली यात्रा के लिए किया जाता है. साथ ही, जब भी आपका वाहन किसी इंटरमीडिएट डेस्टिनेशन पर पहुंचता है, तो आपको ये चीज़ें भी अपडेट करनी होंगी:
intermediateDestinationIndex
intermediateDestinationsVersion
ऐसा करने के लिए, TripStatus
की गणना में मौजूद इन वैल्यू का इस्तेमाल करें.
ENROUTE_TO_PICKUP
ARRIVED_AT_PICKUP
ENROUTE_TO_INTERMEDIATE_DESTINATION
ARRIVED_AT_INTERMEDIATE_DESTINATION
ENROUTE_TO_DROPOFF
COMPLETE
इंटरमीडिएट डेस्टिनेशन वाली यात्रा का उदाहरण
एक से ज़्यादा डेस्टिनेशन की यात्रा बनाने का तरीका नीचे बताया गया है पिकअप पॉइंट है, और अब इसके पहले इंटरमीडिएट डेस्टिनेशन तक पहुंच चुका है.
static final String PROJECT_ID = "my-rideshare-co-gcp-project";
static final String TRIP_ID = "multi-destination-trip-A";
String tripName = "providers/" + PROJECT_ID + "/trips/" + TRIP_ID;
// Get the trip object from either the Fleet Engine or storage.
Trip trip = …;
TripServiceBlockingStub tripService = TripService.newBlockingStub(channel);
// The trip settings to be updated.
Trip trip = Trip.newBuilder()
// Trip status cannot return to a previous state once it has passed.
.setTripStatus(TripStatus.ENROUTE_TO_INTERMEDIATE_DESTINATION)
// Enroute to the first intermediate destination.
.setIntermediateDestinationIndex(0)
// You must provide an intermediate_destinations_version to ensure that you
// have the same intermediate destinations list as the Fleet Engine.
.setIntermediateDestinationsVersion(
trip.getIntermediateDestinationsVersion())
.build();
// The trip update request.
UpdateTripRequest updateTripRequest = UpdateTripRequest.newBuilder()
.setName(tripName)
.setTrip(trip)
.setUpdateMask(
FieldMask.newBuilder()
.addPaths("trip_status")
.addPaths("intermediate_destination_index")
// intermediate_destinations_version must not be in the update mask.
.build())
.build();
// Error handling.
try {
Trip updatedTrip =
tripService.updateTrip(updateTripRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case NOT_FOUND: // The trip doesn't exist.
break;
case FAILED_PRECONDITION: // Either the trip status is invalid, or the
// intermediate_destinations_version doesn't
// match Fleet Engine's.
break;
case PERMISSION_DENIED:
break;
}
return;
}