মোবিলিটি অন-ডিমান্ড ট্রিপ পরিষেবার অংশ হিসেবে, আপনি SearchVehicles পদ্ধতি ব্যবহার করে কাছাকাছি যানবাহন খুঁজে নিতে পারেন।
SearchVehicles মেথডটি আপনাকে আপনার গ্রাহক মোবাইল অ্যাপে কাছাকাছি থাকা সেইসব যানবাহন খুঁজে পেতে সাহায্য করে, যেগুলো একটি নির্দিষ্ট রাইড বা ডেলিভারি অনুরোধের জন্য সবচেয়ে উপযুক্ত। SearchVehicles API-টি সেইসব যানবাহনের একটি র্যাঙ্ক করা তালিকা ফেরত দেয়, যাদের বৈশিষ্ট্যগুলো অনুরোধ করা ট্রিপের বৈশিষ্ট্যগুলোর সাথে মেলে। র্যাঙ্কিংটি পিকআপ পয়েন্ট থেকে আপনার পছন্দের ETA (আনুমানিক পৌঁছানোর সময়), দূরত্ব, অথবা সরলরৈখিক দূরত্বের উপর ভিত্তি করে সাজানো হয়।
| অনুসন্ধানের বৈশিষ্ট্য | যানবাহনের বৈশিষ্ট্য |
|---|---|
|
|
SearchVehicles পদ্ধতি ব্যবহার করুন
SearchVehicles ব্যবহার করতে, এই সাধারণ প্রক্রিয়াটি অনুসরণ করুন:
- নির্ধারিত ট্রিপের উপর ভিত্তি করে একটি
SearchVehiclesRequestতৈরি করুন। - তৈরি করা অনুরোধটি দিয়ে
SearchVehiclesAPI (vehicleService.searchVehicles) কল করুন। - এপিআই থেকে প্রাপ্ত
SearchVehicleResponseপ্রসেস করুন।
যানবাহন অনুসন্ধান অনুরোধ ক্ষেত্র
একটি SearchVehiclesRequest তৈরি করতে নিম্নলিখিত প্রয়োজনীয় অ্যাট্রিবিউট ফিল্ডগুলি ব্যবহার করুন:
| মাঠ | বর্ণনা |
|---|---|
| অভিভাবক | আবশ্যক । অবশ্যই providers/{provider} ফরম্যাটে হতে হবে। প্রোভাইডারটি অবশ্যই সেই গুগল ক্লাউড প্রজেক্টের প্রজেক্ট আইডি হতে হবে, যেটির সদস্য হলো এই কলকারী সার্ভিস অ্যাকাউন্টটি। |
| যানবাহনের প্রকারভেদ | প্রয়োজনীয় । অনুরোধকৃত যানবাহনের প্রকারভেদ: অটো, টু-হুইলার, ট্যাক্সি, ট্রাক, বাইসাইকেল অথবা পথচারী। |
| ভ্রমণের ধরণ | আবশ্যক । হয় এক্সক্লুসিভ (প্রতি ড্রাইভার একবারে একটি সক্রিয় ট্রিপ) অথবা শেয়ার্ড (প্রতি ড্রাইভার একবারে এক বা একাধিক ট্রিপ)। |
| সর্বনিম্ন_ক্ষমতা | প্রয়োজনীয় । যাত্রী পরিবহন বা পণ্য সরবরাহের জন্য নতুন ট্রিপের উদ্দেশ্যে যানবাহনটির ন্যূনতম অবশিষ্ট ধারণক্ষমতা। |
| পিকআপ_পয়েন্ট | প্রয়োজনীয় । ভ্রমণের জন্য পিকআপ স্থানের অক্ষাংশ/দ্রাঘিমাংশ স্থানাঙ্ক। |
| ড্রপঅফ_পয়েন্ট | ঐচ্ছিক। অক্ষাংশ/দ্রাঘিমাংশ স্থানাঙ্কে ট্রিপের শেষ গন্তব্যস্থল। যদি trip_types-এ TripType.SHARED থাকে, তবে এই ফিল্ডটি আবশ্যক। |
| পিকআপ_ব্যাসার্ধ_মিটার | প্রয়োজনীয় । পিকআপ পয়েন্ট থেকে যানবাহন অনুসন্ধান এলাকার ব্যাসার্ধ মিটারে। |
| ক্রম_অনুযায়ী | আবশ্যক । নিম্নলিখিতগুলির মধ্যে যেকোনো একটি অনুসারে যানবাহন অর্ডার করুন:
|
| গণনা | প্রয়োজনীয় । ফেরত আসতে সক্ষম যানবাহনের সর্বোচ্চ সংখ্যা ১ থেকে ৫০-এর মধ্যে হতে হবে। |
| ফিল্টার | ঐচ্ছিক । যানবাহন অনুসন্ধানের সময় প্রয়োগ করার জন্য একটি ফিল্টার কোয়েরি। |
| সর্বোচ্চ_বাসিভাব | ঐচ্ছিক । এটি অনুসন্ধানকে শুধুমাত্র সেইসব যানবাহনের মধ্যে সীমাবদ্ধ করে, যেগুলো নির্দিষ্ট সময়কালের মধ্যে ফ্লিট ইঞ্জিনে অবস্থানের হালনাগাদ তথ্য পাঠিয়েছে। এই ক্ষেত্রটি সেট করা না থাকলে, সার্ভার ডিফল্ট মান হিসেবে পাঁচ মিনিট ব্যবহার করে। |
SearchVehicleRequest-এর ফিল্ডগুলোর সম্পূর্ণ সেট দেখতে রেফারেন্স ডকুমেন্টেশন দেখুন।
যানবাহন অনুসন্ধানের অনুরোধের পরিস্থিতি
এই বিভাগে একটি SearchVehiclesRequest কীভাবে তৈরি করতে হয় তার উদাহরণ দেখানো হয়েছে।
উদাহরণস্বরূপ, ধরুন একজন গ্রাহক রেস্তোরাঁ X থেকে আসতে চান এবং আপনার চারটি যানবাহন আছে:
- যানবাহন ১ : রেস্তোরাঁ X থেকে ৩৫০০ মিটার দূরে।
- যানবাহন ২ : রেস্তোরাঁ X থেকে ১০০ মিটার দূরে, A এবং B স্থানে পিকআপ ও ড্রপ অফ সহ একটি সক্রিয় ট্রিপে রয়েছে।
- যানবাহন ৩ : রেস্তোরাঁ X থেকে ২০০ মিটার দূরে, এবং আরও একটি নামার জায়গা অনেক দূরে বাকি আছে।
- যানবাহন ৪ : রেস্তোরাঁ X থেকে ১০০০ মিটার দূরে।
নিম্নলিখিত অংশে ফেরত দেওয়া যানবাহন অনুযায়ী বিভিন্ন অনুরোধ দেখানো হয়েছে।
গাড়ি ৪ ফেরত দেয়
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA
যানবাহন ৩ এবং ৪ ফেরত দেয়
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, is_back_to_back enabled
যানবাহন ২, ৩ এবং ৪ ফেরত দেয়
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, current_trips_present = ALL
যানবাহন অনুসন্ধান প্রতিক্রিয়া ক্ষেত্র
একটি SearchVehiclesResponse VehicleMatch এনটিটিগুলোর একটি তালিকা থাকে, যা SearchVehiclesRequest এ নির্দিষ্ট করা order_by অ্যাট্রিবিউট অনুসারে র্যাঙ্ক করা হয়। প্রতিটি VehicleMatch এনটিটির নিম্নলিখিত ফিল্ডগুলো থাকে:
| মাঠ | বর্ণনা |
|---|---|
| যানবাহন | Vehicle অবজেক্ট, যার মধ্যে vehicle_id এবং Vehicle অ্যাট্রিবিউটগুলো অন্তর্ভুক্ত। |
| যানবাহন_পিকআপ_ইটিএ | এই ট্রিপটি এখনই গাড়িটিকে বরাদ্দ করা হলে, পিকআপ লোকেশনে গাড়িটির পৌঁছানোর আনুমানিক সময় (ETA)। |
| যানবাহন_পিকআপ_দূরত্ব_মিটার | যানবাহন এবং নতুন যাত্রার পিকআপ স্থানের মধ্যে দূরত্ব (মিটারে)। |
| vehicle_pickup_straight_line_distance_meter | যানবাহন এবং নতুন যাত্রার পিকআপ স্থানের মধ্যে সরলরৈখিক দূরত্ব (মিটারে)। |
| যানবাহন_ড্রপঅফ_ইটিএ | এই ট্রিপটি এখনই গাড়িটিকে বরাদ্দ করা হলে, গন্তব্যস্থলে গাড়িটির পৌঁছানোর আনুমানিক সময় (ETA)। |
| যানবাহন_ট্রিপ_ওয়েপয়েন্ট | যানবাহনটিতে বর্তমানে বরাদ্দ থাকা সক্রিয় ট্রিপগুলোর জন্য অবশিষ্ট ওয়েপয়েন্টগুলোর একটি তালিকা, যার মধ্যে পিকআপ এবং ড্রপ-অফ পয়েন্টও অন্তর্ভুক্ত রয়েছে। |
| গাড়ির_ম্যাচ_টাইপ | গাড়ির ট্রিপের ধরণ, যা এক্সক্লুসিভ, ব্যাক-টু-ব্যাক, কারপুল, অথবা কারপুল-ব্যাক-টু-ব্যাক হতে পারে। |
VehicleMatch ফিল্ডগুলির সম্পূর্ণ তালিকার জন্য, দেখুন:
-
VehicleMatch message(gRPC) -
VehicleMatch resource(REST)
ফিল্টার কোয়েরি ব্যবহার করুন
SearchVehicles এবং ListVehicles একটি ফিল্টার কোয়েরি ব্যবহার করে গাড়ির অ্যাট্রিবিউটের উপর ভিত্তি করে ফিল্টারিং সমর্থন করে।
ফিল্টার কোয়েরি শুধুমাত্র যানবাহনের কাস্টম অ্যাট্রিবিউটের উপর ফিল্টারিং সমর্থন করে এবং অন্য ফিল্ডের জন্য ব্যবহার করা যায় না। যখন কোনো সার্চে minimum_capacity বা vehicle_types এর মতো অন্যান্য ফিল্ড ক্রাইটেরিয়া অন্তর্ভুক্ত থাকে, তখন ফিল্টার কোয়েরিটি একটি AND ক্লজ হিসেবে কাজ করে।
উদাহরণস্বরূপ, যদি আপনি এমন একটি যানবাহন খোঁজেন যার সর্বনিম্ন ধারণক্ষমতা ৬ জন এবং ‘পোষ্য-বান্ধব’-এর মতো attributes দিয়ে ফিল্টার করেন, তাহলে আপনার শর্ত অনুযায়ী কেবল সেই যানবাহনগুলোই দেখানো হবে যেগুলো পোষ্য-বান্ধব এবং কমপক্ষে ৬ জন যাত্রী বহন করতে পারে।
ফিল্টার কোয়েরি সিনট্যাক্সের জন্য উদাহরণসহ AIP-160 দেখুন। গাড়ির অ্যাট্রিবিউট তৈরির বিস্তারিত তথ্যের জন্য, 'আপডেট ভেহিকেল ফিল্ডস' গাইডের 'ভেহিকেল অ্যাট্রিবিউটস' ফিল্ডটি দেখুন।
যানবাহন অনুসন্ধানের উদাহরণ
নিম্নলিখিত উদাহরণটি দেখায় কিভাবে জাভা gRPC লাইব্রেরি ব্যবহার করে SearchVehicles API ব্যবহার করতে হয়। সমর্থিত ভাষাগুলির সম্পূর্ণ তালিকার জন্য, অন-ডিমান্ড ট্রিপ পরিষেবাগুলির জন্য ক্লায়েন্ট লাইব্রেরিগুলি দেখুন।
static final String PROJECT_ID = "project-id";
VehicleServiceBlockingStub vehicleService =
VehicleService.newBlockingStub(channel);
String parent = "providers/" + PROJECT_ID;
SearchVehiclesRequest searchVehiclesRequest = SearchVehiclesRequest.newBuilder()
.setParent(parent)
.setPickupPoint( // Grand Indonesia East Mall
TerminalLocation.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
.setDropoffPoint( // Balai Sidang Jkt Convention Center
TerminalLocation.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.213796).setLongitude(106.807195)))
.setPickupRadiusMeters(2000)
.setCount(10)
.setMinimumCapacity(2)
.addTripTypes(TripType.EXCLUSIVE)
.addVehicleTypes(VehicleType.newBuilder().setCategory(Category.AUTO).build())
.setCurrentTripsPresent(CurrentTripsPresent.ANY)
.setFilter("attributes.on_trip=\"false\"")
.setOrderBy(VehicleMatchOrder.PICKUP_POINT_ETA)
.build();
try {
SearchVehiclesResponse searchVehiclesResponse =
vehicleService.searchVehicles(searchVehiclesRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case NOT_FOUND:
break;
case PERMISSION_DENIED:
break;
}
return;
}
List<VehicleMatch> vehicleMatches =
searchVehicleResponse.getMatchesList();
// Each VehicleMatch contains a Vehicle entity and information about the
// distance and ETA to the pickup point and drop-off point.