Fleet Engine On-मांग राइडs and Deliveryies API की मदद से, यात्राओं को मैनेज किया जा सकता है और वाहन की स्थिति की जानकारी पाएं. यह ड्राइवर SDK टूल, उपभोक्ता SDK टूल, और आपके बैकएंड सेवा -- यह बनाएँ और फ़्लीट इंजन के साथ या तो gRPC या REST कॉल.
ज़रूरी शर्तें
डेवलपमेंट के लिए, पक्का करें कि आपने Cloud इंस्टॉल किया हो SDK टूल (gcloud) इस्तेमाल करने के साथ-साथ आपका प्रोजेक्ट.
शेल
gcloud auth login
आपको सफल होने का मैसेज दिखना चाहिए, जैसे:
You are now logged in as [my-user@example.com].
Your current project is [project-id]. You ...
पक्का करें कि मांग पर राइड और डिलीवरी सॉल्यूशन फ़्लीट इंजन के एपीआई सही तरीके से कॉन्फ़िगर किए गए हों.
शेल
gcloud --project=project-id services enable fleetengine.googleapis.com
अगर इस निर्देश की वजह से कोई गड़बड़ी होती है, तो अपने प्रोजेक्ट एडमिन से संपर्क करें और अपने Google सहायता प्रतिनिधि से संपर्क करें.
लॉग इन हो रहा है
Fleet Engine उसे मिलने वाले एपीआई कॉल के बारे में लॉग मैसेज लिख सकता है Google Cloud प्लैटफ़ॉर्म के लॉग में डालें. Cloud Logging से जुड़ा दस्तावेज़ देखें लॉग पढ़ने और उनका विश्लेषण करने के तरीके के बारे में खास जानकारी.
पहले बनाए गए प्रोजेक्ट के लिए हो सकता है कि लॉग इन करने की सुविधा डिफ़ॉल्ट रूप से चालू न हो 10 फ़रवरी, 2022. ज़्यादा जानकारी के लिए, लॉग इन करने के लिए दस्तावेज़ देखें.
क्लाइंट लाइब्रेरी
हम क्लाइंट लाइब्रेरी को कई सामान्य प्रोग्रामिंग भाषाओं में पब्लिश करते हैं. ये लाइब्रेरी, RAW REST या gRPC के मुकाबले बेहतर डेवलपर अनुभव देने में मदद करती हैं. अपने सर्वर ऐप्लिकेशन के लिए क्लाइंट लाइब्रेरी पाने का तरीका जानने के लिए, देखें क्लाइंट लाइब्रेरी.
इस दस्तावेज़ में दिए गए Java के उदाहरणों को लगता है कि gRPC के बारे में आपको अच्छी तरह पता है.
पुष्टि करना और अनुमति देना
आप यात्रा और ऑर्डर की प्रगति से मिली क्षमताओं को इसके ज़रिए कॉन्फ़िगर कर सकते हैं Google Cloud Console. इन एपीआई और SDK टूल के लिए ऐसे JSON वेब टोकन इस्तेमाल करने की ज़रूरत होती है जो इनसे बनाए गए सेवा खातों का इस्तेमाल करके साइन किया गया है Cloud Console पर जाएं.
Cloud प्रोजेक्ट का सेटअप
क्लाउड प्रोजेक्ट सेट अप करने के लिए, पहले अपना प्रोजेक्ट बनाएं और फिर सेवा खाते बनाएं.
Google Cloud प्रोजेक्ट बनाने के लिए:
- Google Cloud Console का इस्तेमाल करके, Google Cloud प्रोजेक्ट बनाएं.
- API और सेवाएं डैशबोर्ड का उपयोग करके, लोकल राइड और डिलीवरी की सुविधा देने वाला एपीआई.
सेवा खाते, एक या उससे ज़्यादा भूमिकाओं से जुड़े हैं. उनका इस्तेमाल इन कामों को करने में किया जाता है JSON वेब टोकन, जो GA4 की अनुमतियों के अलग-अलग सेट देते हैं भूमिकाएं. आम तौर पर, गलत इस्तेमाल की संभावना को कम करने के लिए, कई ग्रुप बनाए जा सकते हैं सेवा खाते, जिनमें से हर खाते में कम से कम भूमिकाएं दी गई हों.
यात्रा और ऑर्डर की प्रोग्रेस, इन भूमिकाओं का इस्तेमाल करती है:
भूमिका | ब्यौरा |
---|---|
फ़्लीट इंजन उपभोक्ता SDK टूल का उपयोगकर्ता
roles/fleetengine.consumerSdkUser |
वाहन खोजने और उनकी जानकारी वापस पाने की अनुमति देता है वाहनों और यात्राओं के बारे में ज़्यादा जानें. इसके साथ सेवा खाते के बनाए गए टोकन भूमिका का इस्तेमाल आम तौर पर आपके राइडशेयरिंग या डिलीवरी उपभोक्ता ऐप्लिकेशन के मोबाइल डिवाइस से किया जाता है. |
फ़्लीट इंजन ड्राइवर SDK टूल का उपयोगकर्ता
roles/fleetengine.driverSdkUser |
वाहन की जगह की जानकारी और रास्ते की जानकारी अपडेट करने की अनुमति देता है का इस्तेमाल करें. टोकन बनाए गए उस भूमिका वाले सेवा खाते के ज़रिए किया जाता है, जिसका इस्तेमाल आम तौर पर आपके राइडशेयरिंग या डिलीवरी ड्राइवर ऐप्लिकेशन वाले मोबाइल डिवाइसों पर उपलब्ध है. |
फ़्लीट इंजन मांग पर एडमिन
roles/fleetengine.ondemandAdmin |
वाहन और यात्रा से जुड़े सभी संसाधनों के लिए, पढ़ने और लिखने की अनुमति दें. इस भूमिका वाले मुख्य खातों को JWT का इस्तेमाल करने की ज़रूरत नहीं है. उन्हें ऐसा करना चाहिए ऐप्लिकेशन डिफ़ॉल्ट क्रेडेंशियल का इस्तेमाल करें. कस्टम JWT दावों को अनदेखा किया जाता है. यह भूमिका, भरोसेमंद प्लैटफ़ॉर्म (ग्राहक बैकएंड) तक सीमित होनी चाहिए. |
roles/fleetengine.serviceSuperUser |
वाहन और यात्रा से जुड़े सभी एपीआई को अनुमति देता है. मिंट किए गए टोकन
इस्तेमाल कर रहे हैं, तो आम तौर पर आपके बैकएंड से
सर्वर. यह भूमिका अब काम नहीं करती. प्राथमिकता दें
अगर आपके पास इन फ़ॉर्मैट की फ़ाइल नहीं है, तो roles/fleetengine.ondemandAdmin बटन का इस्तेमाल करें. |
उदाहरण के लिए, तीनों भूमिकाओं में से हर एक के लिए सेवा खाता बनाएं और अलग-अलग भूमिकाएं चुन सकते हैं.
gcloud --project=project-id iam service-accounts create fleet-engine-consumer-sdk gcloud projects add-iam-policy-binding project-id \ --member=serviceAccount:fleet-engine-consumer-sdk@project-id.iam.gserviceaccount.com \ --role=roles/fleetengine.consumerSdkUser gcloud --project=project-id iam service-accounts create fleet-engine-driver-sdk gcloud projects add-iam-policy-binding project-id \ --member=serviceAccount:fleet-engine-driver-sdk@project-id.iam.gserviceaccount.com \ --role=roles/fleetengine.driverSdkUser gcloud --project=project-id iam service-accounts create fleet-engine-su gcloud projects add-iam-policy-binding project-id \ --member=serviceAccount:fleet-engine-su@project-id.iam.gserviceaccount.com \ --role=roles/fleetengine.serviceSuperUser
ड्राइवर और उपभोक्ता SDK टूल, इन स्टैंडर्ड भूमिकाओं के आधार पर बनाए जाते हैं.
इसके अलावा, ऐसी कस्टम भूमिकाएं भी बनाई जा सकती हैं जो आपको अनुमतियों का आर्बिट्रेरी सेट होता है, जिसे एक साथ बंडल किया जाता है. ड्राइवर और उपभोक्ता SDK टूल तब गड़बड़ी के मैसेज दिखाएगा, जब आवश्यक अनुमति नहीं है. इस वजह से, हम खास तौर पर यह सुझाव देते हैं इसमें कस्टम रोल के बजाय, ऊपर दी गई भूमिकाओं के स्टैंडर्ड सेट का इस्तेमाल किया जा सकता है.
अगर आपको गैर-भरोसेमंद क्लाइंट के लिए JWT टोकन बनाने की ज़रूरत है, तो अगर उपयोगकर्ता, सेवा खाते के टोकन क्रिएटर की भूमिका में हैं, तो उन्हें टोकन बनाने होंगे gcloud कमांड लाइन टूल के साथ.
gcloud projects add-iam-policy-binding project-id \
--member=user:my-user@example.com \
--role=roles/iam.serviceAccountTokenCreator
जहां my-user@example.com
का इस्तेमाल ईमेल किया जाता है
gcloud (gcloud auth list
--format='value(account)'
) की मदद से पुष्टि करें.
फ़्लीट इंजन ऑथ लाइब्रेरी
फ़्लीट इंजन, JSON वेब टोकन (JWT) का इस्तेमाल करके, इन चीज़ों के ऐक्सेस पर पाबंदी लगाता है फ़्लीट इंजन एपीआई. नई फ़्लीट इंजन ऑथ लाइब्रेरी, GitHub पर उपलब्ध, फ़्लीट इंजन JWT बनाना आसान बनाता है और उन्हें सुरक्षित तरीके से साइन करता है.
इस लाइब्रेरी से ये फ़ायदे मिलते हैं:
- यह फ़्लीट इंजन टोकन बनाने की प्रोसेस को आसान बनाता है.
- क्रेडेंशियल फ़ाइलों का इस्तेमाल करने के अलावा, अन्य टोकन पर हस्ताक्षर करने के तरीके उपलब्ध कराता है. जैसे किसी सेवा खाते की पहचान का इस्तेमाल किया है.)
- यह किसी gRPC स्टब या GAPIC क्लाइंट.
अनुमति पाने के लिए JSON वेब टोकन (JWT) बनाना
जब फ़्लीट इंजन ऑथ लाइब्रेरी का इस्तेमाल नहीं किया जा रहा हो, तब JSON वेब टोकन (JWT) को यह होना चाहिए इसे सीधे आपके कोड बेस में बनाया जाता है. इसके लिए ज़रूरी है कि आपके पास JWT को समझना और यह समझना कि वे फ़्लीट इंजन से कैसे जुड़े हैं. इसलिए, हमने फ़्लीट इंजन ऑथ लाइब्रेरी का इस्तेमाल करने का सुझाव दिया जाता है.
फ़्लीट इंजन में, JSON वेब टोकन (जेडब्ल्यूटी), कम समय तक पुष्टि करने की सुविधा देते हैं और यह पक्का करें कि डिवाइस सिर्फ़ जिसके लिए उन्हें अनुमति मिली हुई है. JWT में एक हेडर और एक दावा सेक्शन होता है. हेडर सेक्शन में इस्तेमाल करने के लिए निजी कुंजी (सेवा खातों से ली गई) और एन्क्रिप्शन एल्गोरिदम. दावे वाले सेक्शन में, यह जानकारी शामिल होती है: टोकन को बनाने का समय, टोकन के लाइव होने का समय, ऐसी सेवाएं जो को ऐक्सेस करने और अनुमति देने से जुड़ी अन्य जानकारी का दावा करना ऐक्सेस; उदाहरण के लिए, वाहन का आईडी.
JWT के हेडर सेक्शन में ये फ़ील्ड होते हैं:
फ़ील्ड | ब्यौरा |
---|---|
Alg | एल्गोरिदम का इस्तेमाल करना है. `RS256`. |
टाइप | टोकन का टाइप. `JWT`. |
बच्चा | आपके सेवा खाते का निजी पासकोड आईडी. आपको यह वैल्यू दिखेगी आपके सेवा खाते की JSON फ़ाइल के `private_key_id` फ़ील्ड में मौजूद वैल्यू डालें. पक्का करें कि सेवा खाते की ऐसी कुंजी का इस्तेमाल किया जा रहा हो जिसके पास अनुमतियों के सही लेवल हों. |
JWT के दावे सेक्शन में ये फ़ील्ड होते हैं:
फ़ील्ड | ब्यौरा |
---|---|
iss | आपके सेवा खाते का ईमेल पता. |
बदले में खेलने वाला खिलाड़ी | आपके सेवा खाते का ईमेल पता. |
ऑडियो | आपके सेवा खाते का Service_NAME, इस मामले में https://fleetengine.googleapis.com/ |
आईएटी | टोकन बनाने के समय का टाइमस्टैंप, जिसे कुछ सेकंड बीत चुका है 1 जनवरी, 1970 को रात 12:00:00 यूटीसी से. तिरछा होने पर 10 मिनट दें. अगर अगर टाइमस्टैंप बहुत पहले या आने वाले समय का है, तो सर्वर गड़बड़ी की शिकायत कर सकता है. |
अनुभव | टोकन की समयसीमा खत्म होने का टाइमस्टैंप, जिसे कुछ सेकंड बीत चुका है 1 जनवरी, 1970 को रात 12:00:00 यूटीसी से. अनुरोध तब पूरा नहीं होता, जब टाइमस्टैंप अगले एक घंटे में. |
अनुमति देना | इस्तेमाल के उदाहरण के हिसाब से, इसमें `vehicleid` या `tripid` हो सकते हैं. |
JWT टोकन बनाने का मतलब है, इसे साइन करना. निर्देशों और कोड सैंपल के लिए JWT बनाने और हस्ताक्षर करने के लिए, देखें OAuth के बिना सेवा खाते की अनुमति. इसके बाद, gRPC कॉल या इस्तेमाल किए गए अन्य तरीकों में हस्ताक्षर किया गया टोकन अटैच किया जा सकता है फ़्लीट इंजन को ऐक्सेस करने के लिए.
JWT के दावे
JWT पेलोड बनाते समय, अनुमति में एक और दावा जोड़ें
सेक्शन जिसकी vehicleid
या tripid
कुंजी को
उस वाहन का आईडी या ट्रिप आईडी जिसके लिए कॉल किया जा रहा है.
ड्राइवर SDK टूल, हमेशा vehicleid
दावे का इस्तेमाल करता है. भले ही, वह चालू हो
यात्रा या वाहन. फ़्लीट इंजन का बैकएंड पक्का करता है कि वाहन
बदलाव करने से पहले, अनुरोध की गई यात्रा से जुड़ा हो.
उपभोक्ता SDK टूल, हमेशा tripid
दावे का इस्तेमाल करता है.
राइडशेयर या डिलीवरी की सेवा देने वाली कंपनी को "*" के साथ vehicleid
या tripid
का इस्तेमाल करना चाहिए से
सभी वाहनों और यात्राओं से मैच कर सकता है. ध्यान दें कि JWT में दोनों टोकन हो सकते हैं,
यह सुविधा ज़रूरी न होने पर भी, टोकन पर हस्ताक्षर करने की प्रोसेस को आसान बना सकती है.
JWT के इस्तेमाल के उदाहरण
यहां Provider सर्वर के लिए टोकन का एक उदाहरण दिया गया है:
{
"alg": "RS256",
"typ": "JWT",
"kid": "private_key_id_of_provider_service_account"
}
.
{
"iss": "provider@yourgcpproject.iam.gserviceaccount.com",
"sub": "provider@yourgcpproject.iam.gserviceaccount.com",
"aud": "https://fleetengine.googleapis.com/",
"iat": 1511900000,
"exp": 1511903600,
"authorization": {
"vehicleid": "*",
"tripid": "*"
}
}
कंज़्यूमर ऐप्लिकेशन के लिए टोकन का उदाहरण नीचे दिया गया है:
{
"alg": "RS256",
"typ": "JWT",
"kid": "private_key_id_of_consumer_service_account"
}
.
{
"iss": "consumer@yourgcpproject.iam.gserviceaccount.com",
"sub": "consumer@yourgcpproject.iam.gserviceaccount.com",
"aud": "https://fleetengine.googleapis.com/",
"iat": 1511900000,
"exp": 1511903600,
"authorization": {
"tripid": "trip_54321"
}
}
यहां Driver ऐप्लिकेशन के लिए टोकन का उदाहरण दिया गया है:
{
"alg": "RS256",
"typ": "JWT",
"kid": "private_key_id_of_driver_service_account"
}
.
{
"iss": "driver@yourgcpproject.iam.gserviceaccount.com",
"sub": "driver@yourgcpproject.iam.gserviceaccount.com",
"aud": "https://fleetengine.googleapis.com/",
"iat": 1511900000,
"exp": 1511903600,
"authorization": {
"vehicleid": "driver_12345"
}
}
- हेडर में
kid
फ़ील्ड के लिए, अपने सेवा खाते की निजी कुंजी बताएं आईडी. आपको यह वैल्यू, अपनी सेवा केprivate_key_id
फ़ील्ड में मिलेगी खाते की JSON फ़ाइल. iss
औरsub
फ़ील्ड के लिए, अपने सेवा खाते का ईमेल पता बताएं. आपको यह वैल्यू, अपने सेवा खाते केclient_email
फ़ील्ड में दिखेगी JSON फ़ाइल.aud
फ़ील्ड के लिए, https://SERVICE_NAME/ बताएं.iat
फ़ील्ड के लिए, टोकन बनाने के समय का टाइमस्टैंप इस्तेमाल करें, जिसे 1 जनवरी, 1970 को 00:00:00 UTC के बाद से सेकंड बीत चुका है. तिरछा होने पर 10 मिनट दें. अगर टाइमस्टैंप काफ़ी पहले का है, तो ऐसा भी हो सकता है कि आने वाले समय में सर्वर किसी गड़बड़ी की शिकायत करे.exp
फ़ील्ड के लिए, टोकन की समयसीमा खत्म होने के बाद का टाइमस्टैंप इस्तेमाल करें, 1 जनवरी, 1970 को 00:00:00 यूटीसी से सेकंड के तौर पर दिखाया गया है. ज़्यादा से ज़्यादाiat
+ 3,600 की वैल्यू दी जा सकती है.
किसी मोबाइल डिवाइस पर JWT पास करने के लिए, साइन करते समय ड्राइवर या उपभोक्ता SDK टूल की भूमिका के लिए, सेवा खाता. या फिर, मोबाइल डिवाइस के पास उस स्थिति को बदलने की सुविधा होगी जो उसमें नहीं होनी चाहिए.
इसी तरह, खास अधिकारों वाले कॉल के लिए JWT पर हस्ताक्षर करते समय, का इस्तेमाल, सुपर उपयोगकर्ता की भूमिका वाले सेवा खाते के लिए किया जा सकता है. या फिर, कार्रवाई नहीं की जा सकेगी.
जांच के लिए JWT जनरेट करना
टर्मिनल से टोकन जनरेट करना, जांच के दौरान मददगार हो सकता है.
इन चरणों का पालन करने के लिए, आपका उपयोगकर्ता खाते में सेवा खाता टोकन क्रिएटर की भूमिका होनी चाहिए:
gcloud projects add-iam-policy-binding project-id \
--member=user:my-user@example.com \
--role=roles/iam.serviceAccountTokenCreator
नीचे दिए गए कॉन्टेंट के साथ unsigned_token.json
नाम की एक नई फ़ाइल बनाएं. iat
प्रॉपर्टी, epoch के बाद के सेकंड की संख्या का मौजूदा समय है, जो
अपने टर्मिनल में date +%s
चलाकर वापस लाया है. exp
प्रॉपर्टी
समय अवधि को epoch के बाद सेकंड में तय करें, जिसका हिसाब इस तरह लगाया जा सकता है:
iat
में 3600 जोड़ रहा है. समयसीमा खत्म होने की तारीख,
आने वाले समय में इस्तेमाल करें.
{ "aud": "https://fleetengine.googleapis.com/", "iss": "super-user-service-account@project-id.iam.gserviceaccount.com", "sub": "super-user-service-account@project-id.iam.gserviceaccount.com", "iat": iat, "exp": exp, "authorization": { "vehicleid": "*", "tripid": "*" } }
इसके बाद, अपने सुपर की ओर से टोकन पर साइन करने के लिए, नीचे दिया गया gcloud निर्देश चलाएं उपयोगकर्ता सेवा खाता:
gcloud beta iam service-accounts sign-jwt --iam-account=super-user-service-account@project-id.iam.gserviceaccount.com unsigned_token.json signed_token.jwt
अब साइन किए गए Base64-एन्कोडेड JWT को फ़ाइल में सेव किया जाना चाहिए
signed_token.jwt
. यह टोकन अगले एक घंटे के लिए मान्य है.
अब वाहन की सूची के लिए curl
कमांड चलाकर, टोकन की जांच की जा सकती है
REST एंडपॉइंट:
curl -X GET "https://fleetengine.googleapis.com/v1/providers/project-id/vehicles" -H "Authorization: Bearer $(cat signed_token.jwt)"
वाहन और उनका लाइफ़साइकल
वाहन, ड्राइवर-वाहन की जोड़ी का प्रतिनिधित्व करने वाली इकाई है. इस समय, ड्राइवर और वाहन को अलग-अलग ट्रैक नहीं किया जा सकता. राइडशेयर या डिलीवरी की सेवा देने वाली कंपनी सेवा देने वाली कंपनी के आईडी का इस्तेमाल करके वाहन बनाता है (जो Google Cloud प्रोजेक्ट का प्रोजेक्ट आईडी, जिसमें सेवा खाता शामिल है का इस्तेमाल, फ़्लीट इंजन एपीआई को कॉल करने के लिए किया जाता है) और राइडशेयर या डिलीवरी की सुविधा देने वाली कंपनी के मालिकाना हक वाले वाहन का आईडी.
अगर कोई वाहन सात दिनों के बाद भी UpdateVehicle
के ज़रिए अपडेट नहीं किया गया है, तो
अपने-आप मिट जाएगी. साथ ही, अगर कोई यात्रा है, तो उसे
असाइन नहीं किया गया है. वाहन को उपलब्ध रखने का सुझाया गया तरीका
अपनी जगह की जानकारी को समय-समय पर अपडेट करते रहना चाहिए. ज़्यादातर से अपडेट
Vehicle
इकाई के अन्य फ़ील्ड भी इसकी अवधि बढ़ाएंगे. हालांकि, इसके लिए ज़रूरी है कि
नई फ़ील्ड की वैल्यू मौजूदा फ़ील्ड की वैल्यू से अलग है.
ध्यान दें: device_settings
जैसी Vehicle
इकाई के कुछ फ़ील्ड पूरी तरह से डीबग होते हैं
ऐसी जानकारी जो फ़्लीट इंजन में सेव नहीं होती है. उन्हें अपडेट करने से
Vehicle
इकाई के जीवन की अवधि को बढ़ाया जा सकता है.
CreateVehicle
को इस
सेवा देने वाली कंपनी का आईडी/वाहन के आईडी का जोड़ा पहले से मौजूद. ऐसे वाहनों का मामला
बार-बार अपडेट नहीं किए जाते, तो इनसे दो तरीकों से निपटा जा सकता है: बार-बार
CreateVehicle
में, कंपनी का अनुमानित आईडी/वाहन का आईडी जोड़ा जा सकता है और खारिज किया जा रहा है
अगर वाहन पहले से मौजूद है, तो गड़बड़ी होगी; या, किसी विशेष समय के बाद CreateVehicle
UpdateVehicle
, NOT_FOUND
गड़बड़ी के साथ जवाब देता है.
गाड़ी की जगह की जानकारी के अपडेट
Fleet Engine के साथ सबसे अच्छी परफ़ॉर्मेंस के लिए, इसे वाहन की एक स्ट्रीम दें जगह की जानकारी के अपडेट. ये अपडेट देने के लिए, इनमें से किसी एक तरीके का इस्तेमाल करें:
- ड्राइवर SDK टूल का इस्तेमाल करें - Android, iOS -- सबसे आसान विकल्प.
- कस्टम कोड का इस्तेमाल करें -- यह तब फ़ायदेमंद होता है, जब जगहें आपके बैकएंड के ज़रिए, या Android के अलावा दूसरे डिवाइसों का इस्तेमाल करने पर या iOS पर.
वाहन के प्रकार
वाहन की इकाई में, VehicleType
फ़ील्ड शामिल करना ज़रूरी है. इसमें यह फ़ील्ड होना चाहिए
Category
ईनम, जिसे AUTO
, TAXI
, TRUCK
,
TWO_WHEELER
, BICYCLE
या PEDESTRIAN
. इस वाहन का इस्तेमाल,
SearchVehicles
और ListVehicles
में फ़िल्टर करने की शर्तें.
वाहनों के लिए, सभी रूटिंग में RouteTravelMode
का इस्तेमाल किया जाएगा, अगर:
कैटगरी को AUTO
, TWO_WHEELER
, BICYCLE
या PEDESTRIAN
पर सेट किया गया है.
अगर कैटगरी को TAXI
या TRUCK
पर सेट किया जाता है, तो रूटिंग को इसके जैसा ही माना जाता है
AUTO
मोड.
वाहन की विशेषताएं
वाहन की इकाई में, VehicleAttribute
का दोहराया गया फ़ील्ड मौजूद है. ये
एट्रिब्यूट को फ़्लीट इंजन समझा नहीं जाता. SearchVehicles
एपीआई में एक ऐसा फ़ील्ड शामिल है जिसके लिए Vehicles
से मेल खाने वाले फ़ील्ड में सभी वैल्यू शामिल होनी चाहिए
शामिल किए गए एट्रिब्यूट, दी गई वैल्यू पर सेट हों.
ध्यान दें कि एट्रिब्यूट फ़ील्ड, इस्तेमाल किए जा सकने वाले कई अन्य फ़ील्ड के साथ-साथ होता है
Vehicle
मैसेज में, जैसे कि vehicle_type
और supported_trip_types
.
वाहन के लिए बचे हुए वेपॉइंट
वाहन की इकाई में, TripWaypoint
(RPC | REST) का दोहराया गया फ़ील्ड मौजूद है,
नाम waypoints
(RPC | REST) होता है.
इस फ़ील्ड में यात्राओं में बचे हुए वेपॉइंट शामिल होते हैं, ताकि
गाड़ी उन तक पहुंचती है. फ़्लीट इंजन इस फ़ील्ड को यात्रा के तौर पर कैलकुलेट करता है
असाइन किया जाता है. साथ ही, यात्रा की स्थिति बदलने पर इसे अपडेट भी कर देता है.
इन वेपॉइंट की पहचान, TripId
फ़ील्ड और WaypointType
फ़ील्ड से की जा सकती है.
मैच के लिए वाहन की ज़रूरी शर्तें पूरी की जा रही हैं
आम तौर पर, मेल खाती यात्रा के लिए राइडशेयर या डिलीवरी की सेवा देने वाली कंपनी की सेवाएं ज़िम्मेदार होती हैं
वाहनों के ऐक्सेस का अनुरोध करता है. यह सेवा, वाहन के एट्रिब्यूट का इस्तेमाल करके, ये चीज़ें शामिल कर सकती है:
खोजने के लिए बड़ी संख्या में खोज करनी पड़ती है. उदाहरण के लिए, सेवा देने वाली कंपनी,
दिए गए फ़ायदों या क्षमताओं के हिसाब से एट्रिब्यूट का सेट
एक वाहन. उदाहरण के लिए, तीन लेवल बूलियन वाले एट्रिब्यूट का सेट हो सकते हैं
वैल्यू: is_bronze_level
, is_silver_level
, और is_gold_level
. वाहन
वह इन तीनों की ज़रूरी शर्तें पूरी कर सकता है. जब फ़्लीट इंजन को
के लिए सिल्वर लेवल की क्षमताओं की ज़रूरत होती है, तो खोज में वह वाहन भी शामिल होता है.
एट्रिब्यूट का इस्तेमाल करके, कई तरह के वाहन ऑफ़र किए जाते हैं
सुविधाएं.
वाहन के एट्रिब्यूट अपडेट करने के दो तरीके हैं. एक UpdateVehicle
है
एपीआई. इस एपीआई का इस्तेमाल करने पर, वाहन की विशेषताओं का पूरा सेट
वैल्यू पर सेट होना चाहिए. सिर्फ़ एक एट्रिब्यूट को अपडेट नहीं किया जा सकता.
दूसरा तरीका UpdateVehicleAttributes
एपीआई है. इस तरीके से सिर्फ़
एट्रिब्यूट को अपडेट करना है. अनुरोध में शामिल एट्रिब्यूट ये होंगे
नई वैल्यू पर सेट या जोड़ी गई हो; अनिर्दिष्ट विशेषताओं को नहीं बदला जाएगा.
कैसे करें: वाहन बनाने का तरीका
हर वाहन को फ़्लीट में ट्रैक करने के लिए, Vehicle
इकाई बनानी होगी.
बनाने के लिए CreateVehicleRequest
के साथ CreateVehicle
एंडपॉइंट का इस्तेमाल करें
वाहन.
Vehicle
का provider_id
, प्रोजेक्ट आईडी होना चाहिए
(उदाहरण के लिए, my-on-मांग-प्रोजेक्ट) से लिंक किया जाता है, जिसमें
ऐसे सेवा खाते जिनका इस्तेमाल फ़्लीट इंजन को कॉल करने के लिए किया जाएगा. ध्यान दें कि हालांकि
एक से ज़्यादा सेवा खाते एक ही राइडशेयर के लिए फ़्लीट इंजन को ऐक्सेस कर सकते हैं
या डिलीवरी कंपनी के लिए, Fleet इंजन फ़िलहाल इनके सेवा खातों की सुविधा नहीं देता
एक ही Vehicles
को ऐक्सेस करने वाले कई Google Cloud प्रोजेक्ट.
Vehicle
को OFFLINE
या ONLINE
स्थिति में बनाया जा सकता है. अगर आपने
ONLINE
बनाया गया. इसे SearchVehicles
के जवाब में तुरंत लौटाया जा सकता है
क्वेरी.
CreateVehicle
कॉल में शुरुआती last_location
शामिल किए जा सकते हैं.
Vehicle
को अनुमति मिलने के बावजूद, ONLINE
राज्य में इसके बिना नहीं बनाया जाना चाहिए
last_location
.
वाहन के बारे में जानकारी पाने के लिए, वाहन का टाइप देखें फ़ील्ड टाइप करें.
ज़्यादा जानकारी के लिए, वाहन की विशेषताएं देखें एट्रिब्यूट फ़ील्ड पर.
CreateVehicle
से मिला मान, बनाई गई Vehicle
इकाई है.
उदाहरण
शेल
curl -X POST \
"https://fleetengine.googleapis.com/v1/providers/project-id/vehicles?vehicleId=vid-8241890" \
-H "Authorization: Bearer $JWT" \
-H "Content-Type: application/json" \
--data-binary @- << EOM
{
"vehicleState": "OFFLINE",
"supportedTripTypes": ["EXCLUSIVE"],
"maximumCapacity": 4,
"vehicleType": {"category": "AUTO"},
"attributes": [{"key": "on_trip", "value": "false"}]
}
EOM
यहां जाएं: providers.vehicles.create संदर्भ.
Java
static final String PROJECT_ID = "project-id";
VehicleServiceBlockingStub vehicleService =
VehicleService.newBlockingStub(channel);
String parent = "providers/" + PROJECT_ID;
Vehicle vehicle = Vehicle.newBuilder()
.setVehicleState(VehicleState.OFFLINE) // Initial state
.addSupportedTripTypes(TripType.EXCLUSIVE)
.setMaximumCapacity(4)
.setVehicleType(VehicleType.newBuilder().setCategory(VehicleType.Category.AUTO))
.addAttributes(VehicleAttribute.newBuilder()
.setKey("on_trip").setValue("false")) // Opaque to the Fleet Engine
// Add .setBackToBackEnabled(true) to make this vehicle eligible for trip
// matching while even if it is on a trip. By default this is disabled.
.build();
CreateVehicleRequest createVehicleRequest =
CreateVehicleRequest.newBuilder() // no need for the header
.setParent(parent)
.setVehicleId("vid-8241890") // Vehicle ID assigned by Rideshare or Delivery Provider
.setVehicle(vehicle) // Initial state
.build();
// In this case, the Vehicle is being created in the OFFLINE state and
// no initial position is being provided. When the Driver App checks
// in with the Rideshare or Delivery Provider, the state can be set to ONLINE and
// the Driver App will update the Vehicle Location.
try {
Vehicle createdVehicle =
vehicleService.createVehicle(createVehicleRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case ALREADY_EXISTS:
break;
case PERMISSION_DENIED:
break;
}
return;
}
// If no Exception, Vehicle created successfully.
वाहन बनाने के लिए, Google Cloud Platform के लॉग
Fleet Engine API, Google Cloud Platform के लॉग से लॉग एंट्री लिखता है. ऐसा तब होता है, जब
CreateVehicle
एंडपॉइंट पर कॉल रिसीव किया गया है. लॉग एंट्री में यह शामिल है
CreateVehicle
अनुरोध में मौजूद वैल्यू के बारे में जानकारी. अगर कॉल
अपलोड कर देता है, तो इसमें उस Vehicle
के बारे में जानकारी भी शामिल होगी
वापस किया गया.
शेल
gcloud --project=project-id logging read --freshness=1h '
jsonPayload.request.vehicleId="vid-8241890"
jsonPayload.@type="type.googleapis.com/maps.fleetengine.v1.CreateVehicleLog"
'
नीचे दिए गए रिकॉर्ड जैसा कोई रिकॉर्ड प्रिंट करना चाहिए:
---
insertId: c2cf4d3a180251c1bdb892137c14f022
jsonPayload:
'@type': type.googleapis.com/maps.fleetengine.v1.CreateVehicleLog
request:
vehicle:
attributes:
- key: on_trip
value: 'false'
maximumCapacity: 4
state: VEHICLE_STATE_OFFLINE
supportedTrips:
- EXCLUSIVE_TRIP
vehicleType:
vehicleCategory: AUTO
vehicleId: vid-8241890
response:
attributes:
- key: on_trip
value: 'false'
availableCapacity: 4
currentRouteSegmentHandle: AdSiwAwCO9gZ7Pw5UZZimOXOo41cJTjg/r3SuwVPQmuuaV0sU3+3UCY+z53Cl9i6mWHLoCKbBt9Vsj5PMRgOJ8zX
maximumCapacity: 4
name: providers/project-id/vehicles/vid-8241890
state: VEHICLE_STATE_OFFLINE
supportedTrips:
- EXCLUSIVE_TRIP
vehicleType:
vehicleCategory: AUTO
labels:
vehicle_id: vid-8241890
logName: projects/project-id/logs/fleetengine.googleapis.com%2Fcreate_vehicle
receiveTimestamp: '2021-09-22T03:25:16.361159871Z'
resource:
labels:
location: global
resource_container: projects/project-id
type: fleetengine.googleapis.com/Fleet
timestamp: '2021-09-22T03:25:15.724998Z'
वाहन बनाने के बारे में Cloud Pub/Sub सूचनाएं
Fleet Engine API, Cloud Pub/Sub के ज़रिए सूचना पब्लिश करता है. ऐसा तब होता है, जब वाहन बनाया गया है. ये सूचनाएं पाने के लिए, कृपया निर्देश यहां पढ़ें.
कैसे करें: वाहन की जगह की जानकारी अपडेट करना
अगर वाहन की जगह की जानकारी अपडेट करने के लिए, ड्राइवर SDK टूल का इस्तेमाल नहीं किया जा रहा है, तो वाहन की जगह की जानकारी के साथ फ़्लीट इंजन को सीधे कॉल करना. किसी भी चालू वाहन के लिए, Fleet Engine की मदद से, हर मिनट में कम से कम एक बार जगह की जानकारी अपडेट की जाती है हर 5 सेकंड में एक बार. इन अपडेट के लिए, सिर्फ़ फ़्लीट इंजन ड्राइवर SDK टूल के उपयोगकर्ता की ज़रूरत है खास अधिकारों को ऐक्सेस करना होगा.
उदाहरण
शेल
curl -X PUT \
"https://fleetengine.googleapis.com/v1/providers/project-id/vehicles/vid-8241890?updateMask=last_location" \
-H "Authorization: Bearer $JWT" \
-H "Content-Type: application/json" \
--data-binary @- << EOM
{
"supplementalLocation": {"latitude": 12.1, "longitude": 14.5},
"supplementalLocationTime": "$(date -u --iso-8601=seconds)",
"supplementalLocationSensor": "CUSTOMER_SUPPLIED_LOCATION",
"supplementalLocationAccuracy": 15
}
EOM
यहां जाएं: providers.vehicles.update संदर्भ.
Java
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()
.setLastLocation(VehicleLocation.newBuilder()
.setSupplementalLocation(LatLng.newBuilder()
.setLatitude(37.3382)
.setLongitude(121.8863))
.setSupplementalLocationTime(now())
.setSupplementalLocationSensor(LocationSensor.CUSTOMER_SUPPLIED_LOCATION)
.setSupplementalLocationAccuracy(DoubleValue.of(15.0))) // Optional)
.build();
UpdateVehicleRequest updateVehicleRequest = UpdateVehicleRequest.newBuilder()
.setName(vehicleName)
.setVehicle(updatedVehicle)
.setUpdateMask(FieldMask.newBuilder()
.addPaths("last_location"))
.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.
कैसे करें: वाहन के अन्य फ़ील्ड अपडेट करना
वाहन की स्थिति के अन्य एट्रिब्यूट में किए जाने वाले अपडेट, इनके मुकाबले कम होते हैं
स्थिति अपडेट. last_location
के अलावा किसी दूसरे एट्रिब्यूट को अपडेट करना ज़रूरी है
फ़्लीट इंजन के सुपर उपयोगकर्ता के खास अधिकार.
UpdateVehicleRequest
में एक update_mask
शामिल होता है. इससे पता चलता है कि किन फ़ील्ड का इस्तेमाल करना है
अपडेट. फ़ील्ड का व्यवहार वैसा ही होता है जैसा इसके प्रोटोबफ़ दस्तावेज़ में किया गया है
फ़ील्ड मास्क.
जैसा कि वाहन की विशेषताओं में बताया गया है,
attributes
फ़ील्ड को सुरक्षित रखने के लिए सभी एट्रिब्यूट को लिखना ज़रूरी है. यह
सिर्फ़ एक की-वैल्यू पेयर की वैल्यू अपडेट नहीं की जा सकती
UpdateVehicle
कॉल. खास एट्रिब्यूट की वैल्यू अपडेट करने के लिए,
UpdateVehicleAttributes
एपीआई का इस्तेमाल किया जा सकता है.
उदाहरण
इस उदाहरण में, back_to_back
चालू है.
शेल
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": "on_trip", "value": "true"},
{"key": "cash_only", "value": "false"}
],
"backToBackEnabled": true
}
EOM
यहां जाएं: providers.vehicles.update संदर्भ.
Java
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("on_trip").setValue("true").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();
// Attributes and vehicle state are being updated, so both are
// included in the field mask. Note that of on_trip were
// not being updated, but rather cash_only was being changed,
// the desired value of "on_trip" would still need to be written
// as the attributes are completely replaced in an update operation.
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.
वाहन के अपडेट के लिए Google Cloud Platform के लॉग
Fleet Engine API, Google Cloud Platform के लॉग से लॉग एंट्री लिखता है. ऐसा तब होता है, जब
UpdateVehicle
एंडपॉइंट पर कॉल रिसीव किया गया है. लॉग एंट्री में यह शामिल है
UpdateVehicle
अनुरोध में मौजूद वैल्यू के बारे में जानकारी. अगर कॉल
अपलोड कर देता है, तो इसमें उस Vehicle
के बारे में जानकारी भी शामिल होगी
वापस किया गया.
शेल
gcloud --project=project-id logging read --freshness=1h '
jsonPayload.request.vehicleId="vid-8241890"
jsonPayload.@type="type.googleapis.com/maps.fleetengine.v1.UpdateVehicleLog"
'
वाहन के अपडेट के लिए, Cloud Pub/Sub की सूचनाएं
Fleet Engine API, Cloud Pub/Sub के ज़रिए सूचना पब्लिश करता है. ऐसा तब होता है, जब गाड़ी की जानकारी अपडेट कर दी गई है. ये सूचनाएं पाने के लिए, कृपया निर्देश यहां पढ़ें.
कैसे करें: वाहन ढूंढें
फ़्लीट इंजन की मदद से, वाहन खोजने में मदद मिलती है. SearchVehicles
एपीआई की मदद से, आपके आस-पास मौजूद ऐसे ड्राइवर खोजे जा सकते हैं जो काम के लिए सबसे सही हों, जैसे कि
राइड बुक करना या डिलीवरी का अनुरोध करना. SearchVehicles
एपीआई,
वाहन की विशेषताओं के साथ टास्क एट्रिब्यूट से मेल खाने वाले ड्राइवरों की रैंक की सूची:
शामिल हैं. ज़्यादा जानकारी के लिए, यह देखें
आस-पास मौजूद ड्राइवर ढूंढें जा रहे हैं.
उदाहरण
उपलब्ध वाहनों की खोज करते समय, फ़्लीट इंजन वाहनों को चालू यात्राएं डिफ़ॉल्ट रूप से. राइडशेयर या डिलीवरी की सेवा देने वाली कंपनी की सेवाओं के लिए ज़रूरी है कि उन्हें खोज अनुरोधों में साफ़ तौर पर शामिल कर सकता है. नीचे दिए गए उदाहरण में, उस वाहन को इंडोनेशिया ईस्ट मॉल से बलाई सिडैंग जकार्ता कन्वेंशन सेंटर.
शेल
सबसे पहले, पिछले चरण में वाहन की जगह की जानकारी अपडेट करें, ताकि यह योग्य है. असल में, यह काम ड्राइवर SDK टूल की मदद से किया जाता है Android या iOS डिवाइस पर Android या iOS डिवाइस का इस्तेमाल कर सकते हैं.
curl -X PUT \
"https://fleetengine.googleapis.com/v1/providers/project-id/vehicles/vid-8241890?updateMask=last_location,attributes" \
-H "Authorization: Bearer $JWT" \
-H "Content-Type: application/json" \
--data-binary @- << EOM
{
"lastLocation": {
"updateTime": "$( date -u +"%Y-%m-%dT%H:%M:%SZ" )",
"location": {
"latitude": "-6.195139",
"longitude": "106.820826"
}
},
"attributes": [{"key": "on_trip", "value": "false"}]
}
EOM
खोजने से कम से कम वह वाहन मिलेगा.
curl -X POST \
"https://fleetengine.googleapis.com/v1/providers/project-id/vehicles:search" \
-H "Authorization: Bearer $JWT" \
-H "Content-Type: application/json" \
--data-binary @- << EOM
{
"pickupPoint": {
"point": {"latitude": "-6.195139", "longitude": "106.820826"}
},
"dropoffPoint": {
"point": {"latitude": "-6.1275", "longitude": "106.6537"}
},
"pickupRadiusMeters": 2000,
"count": 10,
"minimumCapacity": 2,
"tripTypes": ["EXCLUSIVE"],
"vehicleTypes": [{"category": "AUTO"}],
"filter": "attributes.on_trip=\"false\"",
"orderBy": "PICKUP_POINT_ETA",
"includeBackToBack": true
}
EOM
यहां जाएं: providers.vehicles.search संदर्भ.
Java
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 Jakarta 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(VehicleType.Category.AUTO))
.setFilter("attributes.on_trip=\"false\"")
.setOrderBy(VehicleMatchOrder.PICKUP_POINT_ETA)
.setIncludeBackToBack(true) // Fleet Engine includes vehicles that are en route.
.build();
// Error handling
// If matches are returned and the authentication passed, the request completed
// successfully
try {
SearchVehiclesResponse searchVehiclesResponse =
vehicleService.searchVehicles(searchVehiclesRequest);
// Search results: Each vehicle match contains a vehicle entity and information
// about the distance and ETA to the pickup point and dropoff point.
List<VehicleMatch> vehicleMatches = searchVehiclesResponse.getMatchesList();
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case NOT_FOUND:
break;
case PERMISSION_DENIED:
break;
}
return;
}
वाहन को फ़िल्टर करने से जुड़ी क्वेरी
SearchVehicles
और ListVehicles
में, वाहन के एट्रिब्यूट को फ़िल्टर किया जा सकता है
फ़िल्टर क्वेरी का इस्तेमाल करके. फ़िल्टर क्वेरी सिंटैक्स के लिए, देखें
उदाहरणों के लिए AIP-160.
ध्यान दें कि फ़िल्टर क्वेरी का इस्तेमाल, सिर्फ़ वाहन के एट्रिब्यूट के हिसाब से फ़िल्टर करने के लिए किया जा सकता है.
का इस्तेमाल अन्य फ़ील्ड के लिए नहीं किया जा सकता. फ़िल्टर क्वेरी, AND
क्लॉज़ के तौर पर काम करती है
में minimum_capacity
या vehicle_types
जैसी अन्य पाबंदियों के साथ
SearchVehiclesRequest
.
कैसे करें: वाहनों की सूची बनाएं
SearchVehicles
को, रैंक की गई कुछ गाड़ियों को खोजने के लिए ऑप्टिमाइज़ किया गया है
बहुत तेज़ी से ऑर्डर करते हैं और इसका उपयोग मुख्य रूप से आस-पास के उन ड्राइवरों को खोजने में किया जाता है जो सबसे बढ़िया हैं
टास्क को पूरा किया जा सकता है. हालांकि, कभी-कभी आपको उन सभी वाहनों को ढूंढना होगा जो
कई शर्तों को पूरा करना ज़रूरी है. ListVehicles
है
डिज़ाइन किया गया है.
ListVehicles
एपीआई की मदद से, उन सभी वाहनों को ढूंढा जा सकता है जो कुछ खास
अनुरोध के विकल्प. ListVehicles
एपीआई, वाहनों की जानकारी वाले पेजों की सूची दिखाता है
वह प्रोजेक्ट जो कुछ ज़रूरतों को पूरा करता है.
वाहन के एट्रिब्यूट के हिसाब से फ़िल्टर करने के लिए, कृपया यहां जाएं वाहन को फ़िल्टर करने से जुड़ी क्वेरी.
उदाहरण
यह उदाहरण, vehicle_type
और एट्रिब्यूट पर फ़िल्टर करने की प्रोसेस को पूरा करता है. इसके लिए,
filter
स्ट्रिंग.
शेल
curl -X POST \
"https://fleetengine.googleapis.com/v1/providers/project-id/vehicles:list" \
-H "Authorization: Bearer $JWT" \
-H "Content-Type: application/json" \
--data-binary @- << EOM
{
"vehicleTypes": [{"category": "AUTO"}],
"filter": "attributes.on_trip=\"false\"",
}
EOM
यहां जाएं: providers.vehicles.list संदर्भ.
Java
static final String PROJECT_ID = "project-id";
VehicleServiceBlockingStub vehicleService = VehicleService.newBlockingStub(channel);
String parent = "providers/" + PROJECT_ID;
ListVehiclesRequest listVehiclesRequest = ListVehiclesRequest.newBuilder()
.setParent(parent)
.addTripTypes(TripType.EXCLUSIVE)
.addVehicleTypes(VehicleType.newBuilder().setCategory(VehicleType.Category.AUTO))
.setFilter("attributes.on_trip=\"false\"")
.setIncludeBackToBack(true) // Fleet Engine includes vehicles that are en route.
.build();
// Error handling
// If matches are returned and the authentication passed, the request completed
// successfully
try {
ListVehiclesResponse listVehiclesResponse =
vehicleService.listVehicles(listVehiclesRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case NOT_FOUND:
break;
case PERMISSION_DENIED:
break;
}
return;
}
यात्राएं और उनका लाइफ़साइकल
ट्रिप एपीआई और लाइफ़साइकल, वाहन एपीआई और लाइफ़साइकल की तरह ही हैं.
फ़्लीट इंजन का इस्तेमाल करके यात्राएं तैयार करने की ज़िम्मेदारी, राइडशेयर की सुविधा देने वाली कंपनी की है
इंटरफ़ेस. फ़्लीट इंजन, RPC सेवा, दोनों उपलब्ध कराता है.
TripService
, और REST रिसॉर्स, provider.trips
को अपनाएं. ये इंटरफ़ेस यात्रा इकाई बनाने, जानकारी के अनुरोध, और खोज की सुविधा को चालू करते हैं
और अपडेट की सुविधा
उपलब्ध है.
Trip
में स्टेटस फ़ील्ड होता है, ताकि लाइफ़साइकल के ज़रिए इसकी प्रोग्रेस को ट्रैक किया जा सके.
वैल्यू, NEW
से COMPLETE
प्लस CANCELED
और UNKNOWN_TRIP_STATUS
में बदल जाती हैं
को अपनाएं. आरपीसी के लिए trip_status
पर जाएं
या REST के लिए यात्रा की स्थिति.
NEW
ENROUTE_TO_PICKUP
ARRIVED_AT_PICKUP
ENROUTE_TO_INTERMEDIATE_DESTINATION
ARRIVED_AT_INTERMEDIATE_DESTINATION
ENROUTE_TO_DROPOFF
COMPLETE
आपकी सेवा इनमें से किसी भी स्थिति से, CANCELED
की यात्रा को अपडेट कर सकती है.
जब आपकी सेवा कोई यात्रा बनाती है, तो इंजन स्टेटस को NEW
के तौर पर सेट करता है. ऐप्लिकेशन
vehicle_id
का इस्तेमाल करना ज़रूरी नहीं है. वाहनों की तरह ही, असाइन नहीं की गई यात्राओं की जानकारी अपने-आप मिट जाती है
सात दिन बाद बिना किसी अपडेट के मिलता है. अगर आपकी सेवा
यह आईडी पहले से मौजूद है, तो एक गड़बड़ी का मैसेज दिखता है. किसी यात्रा को ‘ऐक्टिव’ माना जाता है, अगर
यह COMPLETE
या CANCELED
के अलावा किसी दूसरी स्थिति में है. यह फ़र्क़
वाहन की इकाई और SearchTripsRequest
के active_trips
फ़ील्ड में ज़रूरी वैल्यू डालें.
आपकी सेवा किसी यात्रा के लिए असाइन किए गए vehicle_id
में बदलाव सिर्फ़ तब कर सकती है, जब यात्रा करना ज़रूरी हो
चालू है. उदाहरण के लिए, आप ऐसा तब करेंगे जब कोई ड्राइवर यात्रा को रद्द करते समय en
और यात्रा किसी दूसरे वाहन को असाइन कर दी जाती है.
'एक के बाद एक सवाल' लागू करते समय, स्टेटस अहम होता है यात्रा से जुड़ी सहायता उपलब्ध है. इस सहायता की मदद से, सेवा देने वाली कंपनी, वाहन के लिए नई यात्रा असाइन कर सकती है जब वह वाहन किसी चालू यात्रा पर हो. कोड का इस्तेमाल एक बार में एक यात्रा बनाने के लिए किया जाता है. वाहन आईडी. फ़्लीट इंजन ने नई यात्रा की शुरुआत की जगह और मंज़िल को वाहन के वेपॉइंट. एक के बाद एक होने वाली यात्राओं के बारे में ज़्यादा जानकारी के लिए देखें मल्टी-वेपॉइंट यात्राएं बनाएं.
यात्रा के लिए बचे हुए वेपॉइंट
यात्रा की इकाई में, TripWaypoint
(RPC | REST) का दोहराया गया फ़ील्ड होता है,
remainingWaypoints
(RPC | REST) कहा जाता है.
इस फ़ील्ड में वे सभी वेपॉइंट शामिल हैं जहां वाहन को ऑर्डर में यात्रा करनी होगी
की इस यात्रा के अंतिम ड्रॉप ऑफ़ पॉइंट से पहले करें. यह इससे हिसाब लगाता है
वाहन के बचे हुए वेपॉइंट.
बैक-टू-बैक और कारपूल इस्तेमाल के मामलों में, इस सूची में वेपॉइंट शामिल हैं
इस यात्रा से पहले की जाने वाली अन्य यात्राएं, लेकिन इसमें वेपॉइंट शामिल नहीं हैं
इस यात्रा के बाद. सूची में वेपॉइंट की पहचान, TripId
से की जा सकती है
और WaypointType
.
यात्रा की स्थिति और वाहन के बचे हुए वेपॉइंट के बीच संबंध
वाहन के बाकी वेपॉइंट (आरपीसी | REST)
फ़्लीट इंजन को यात्रा की स्थिति बदलने का अनुरोध मिलने पर इसे अपडेट किया जाएगा. कॉन्टेंट बनाने
जब पिछला वेपॉइंट वाहन के बचे हुए वेपॉइंट की सूची से हटा दिया जाएगा, तब
tripStatus
(RPC | REST)
अन्य स्थिति से ENROUTE_TO_XXX में बदल गया है. इसका मतलब है कि जब
यात्रा की स्थिति ENROUTE_TO_PICKUP से ARRIVED_AT_PICKUP में बदल गई है, यात्रा की
पिकअप पॉइंट अब भी वाहन के वेपॉइंट की बची हुई सूची में रहेगा. हालांकि, यात्रा के दौरान ऐसा होगा
स्थिति ENROUTE_TO_INTERMEDIATE_DESTINATION या ENROUTE_TO_DROPOFF में बदल दी गई है,
इसके बाद, इसका पिक अप पॉइंट, वाहन के बचे हुए वेपॉइंट से हटा दिया जाएगा.
यह ARRIVED_AT_INTERMEDIATE_DESTINATION और अन्य ENROUTE_TO_INTERMDEDIATE_DESTINATION. जब ARRIVED_AT_INTERMEDIATE_DESTINATION, मौजूदा इंटरमीडिएट डेस्टिनेशन को वाहन के बचे हुए डेस्टिनेशन से नहीं हटाया जाएगा वेपॉइंट सूची तब तक दिखाई जाती है, जब तक वाहन अगले वेपॉइंट पर जाने की सूचना नहीं देता.
यात्रा की स्थिति को COMPLETED
में बदलने पर, इस यात्रा से कोई वेपॉइंट नहीं होगा
वाहन के बाकी वेपॉइंट सूची में.
कैसे करें: यात्रा बनाएं
यात्रा के हर अनुरोध को ट्रैक करने के लिए, एक Trip
इकाई होनी चाहिए
फ़्लीट में मौजूद वाहनों से मैच हो जाते हैं. CreateTripRequest
के साथ CreateTrip
एंडपॉइंट का इस्तेमाल करें
कोई यात्रा बनाएं.
यात्रा बनाने के लिए इन एट्रिब्यूट की ज़रूरत होती है:
parent
- एक स्ट्रिंग जिसमें कंपनी का वह आईडी शामिल होता है जो Google की क्लाउड प्रोजेक्ट बनाया गया.trip_id
- ऐसी स्ट्रिंग जो राइडशेयर की सुविधा देने वाली कंपनी ने बनाई है.trip
- यात्रा की जानकारी देने वाला बुनियादी मेटाडेटा वाला कंटेनर.trip_type
- इनम से पता चलता है कि यात्रा में अन्य राइडर हो सकते हैं या नहीं एक ही वाहन (SHARED
) में किसी दूसरी जगह और मंज़िल से या सिर्फ़ एक पक्ष (EXCLUSIVE
).pickup_point
- TerminalLocation, जहां यात्रा. आरपीसी रेफ़रंस देखें या REST रेफ़रंस
यात्रा बनाते समय number_of_passengers
, dropoff_point
दिए जा सकते हैं
और vehicle_id
. हालांकि, ये फ़ील्ड ज़रूरी नहीं हैं. हालांकि, अगर आपने इन्हें दिया है, तो
उन्हें सेव करके रखा जाता है. यात्रा के दूसरे सभी फ़ील्ड को अनदेखा कर दिया जाता है. उदाहरण के लिए, सभी यात्राएं
NEW
के trip_status
से शुरू करें, भले ही आप trip_status
CANCELED
को बनाने के अनुरोध में शामिल किया गया है.
उदाहरण
नीचे दिए गए उदाहरण में, ग्रैंड इंडोनेशिया ईस्ट मॉल की यात्रा के बारे में बताया गया है. ट्रिप
सिर्फ़ दो यात्रियों के लिए है. Trip
का provider_id
यह होना चाहिए
वही होना चाहिए जो प्रोजेक्ट आईडी के जैसा हो. उदाहरण में, राइडशेयर की सेवा देने वाली कंपनी ने
Google Cloud प्रोजेक्ट, project-id. इस प्रोजेक्ट में
फ़्लीट इंजन को कॉल करने के लिए इस्तेमाल किए जाने वाले सेवा खाते. यात्रा की स्थिति NEW
है.
बाद में, वाहन की यात्रा का मिलान करने के बाद, सेवा देने वाली कंपनी कॉल कर सकती है
UpdateTrip
और वाहन को यात्रा के समय असाइन किए जाने पर vehicle_id
को बदलें.
शेल
curl -X POST \
"https://fleetengine.googleapis.com/v1/providers/project-id/trips?tripId=tid-1f97" \
-H "Authorization: Bearer $JWT" \
-H "Content-Type: application/json" \
--data-binary @- << EOM
{
"tripType": "EXCLUSIVE",
"numberOfPassengers": 2,
"pickupPoint": {
"point": {"latitude": "-6.195139", "longitude": "106.820826"}
},
"dropoffPoint": {
"point": {"latitude": "-6.1275", "longitude": "106.6537"}
}
}
EOM
यहां जाएं: providers.trips.create संदर्भ.
Java
static final String PROJECT_ID = "project-id";
TripServiceBlockingStub tripService = TripService.newBlockingStub(channel);
String parent = "providers/" + PROJECT_ID;
Trip trip = Trip.newBuilder()
.setTripType(TripType.EXCLUSIVE) // Use TripType.SHARED for carpooling
.setPickupPoint( // Grand Indonesia East Mall
TerminalLocation.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
// Provide the number of passengers if available.
.setNumberOfPassengers(2)
// Provide the drop-off point if available.
.setDropoffPoint(
TerminalLocation.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.1275).setLongitude(106.6537)))
.build();
CreateTripRequest createTripRequest =
CreateTripRequest.newBuilder() // no need for the header
.setParent(parent)
.setTripId("tid-1f97") // Trip ID assigned by the Provider
.setTrip(trip) // Initial state
.build();
// Error handling
// If Fleet Engine does not have trip with that id and the credentials of the
// requestor pass, the service creates the trip successfully.
try {
Trip createdTrip =
tripService.createTrip(createTripRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case ALREADY_EXISTS:
break;
case PERMISSION_DENIED:
break;
}
return;
}
यात्रा बनाने के लिए Google Cloud Platform के लॉग
Fleet Engine API, Google Cloud Platform के लॉग का इस्तेमाल करके लॉग एंट्री लिखता है, जब
CreateTrip
एंडपॉइंट पर कॉल रिसीव किया गया है. लॉग एंट्री में यह शामिल है
CreateTrip
अनुरोध में मौजूद वैल्यू के बारे में जानकारी. अगर कॉल
हो जाता है, तो इसमें लौटाए गए Trip
की जानकारी भी शामिल होगी.
कैसे करें: यात्रा अपडेट करना
यात्रा की इकाई में ऐसे फ़ील्ड होते हैं जो सेवा और
ड्राइवर SDK टूल से यात्रा की जानकारी और
उपभोक्ता SDK टूल. प्रॉपर्टी अपडेट करने के लिए, UpdateTripRequest
का इस्तेमाल करें
दिखाई देगा. इससे अनुरोध के field_mask
के मुताबिक, यात्रा वाले फ़ील्ड अपडेट हो जाते हैं.
UpdateTripRequest देखें.
इन एट्रिब्यूट को अपडेट करने की ज़िम्मेदारी, राइडशेयर की सुविधा देने वाली कंपनी की है:
- यात्रा की स्थिति.
- वाहन का आईडी. ऐसा वाहन बनाते समय या वाहन को सेट करने के बाद यात्रा.
- पिकअप, ड्रॉपऑफ़ या वेपॉइंट में बदलाव.
इसका इस्तेमाल करने पर, फ़्लीट इंजन इन फ़ील्ड को अपने-आप अपडेट कर देता है: ड्राइवर SDK टूल या उपभोक्ता SDK टूल के ज़रिए, गतिविधि शेयर करने की सुविधा:
- रास्ते
- ETA
- बची हुई दूरी
- वाहन की जगह की जानकारी
- शेष वेपॉइंट
Trip
आरपीसी में देखें या
REST में Resource.Trip
.
यात्रा से जुड़े अपडेट के लिए Google Cloud Platform के लॉग
Fleet Engine API, Google Cloud Platform के लॉग का इस्तेमाल करके लॉग एंट्री लिखता है, जब
UpdateTrip
एंडपॉइंट पर कॉल रिसीव किया गया है. लॉग एंट्री में यह शामिल है
UpdateTrip
अनुरोध में मौजूद वैल्यू के बारे में जानकारी. अगर कॉल पूरा होता है,
इसमें, लौटाए गए Trip
की जानकारी भी शामिल होगी.
कैसे करें: सर्च ट्रिप
फ़्लीट इंजन की मदद से, यात्राओं की जानकारी खोजी जा सकती है. जैसा कि पहले बताया गया है, एक यात्रा
सात दिन के बाद अपने-आप मिट जाता है. इसलिए, SearchTrips
इससे सभी यात्राओं का पूरा इतिहास दिखता है.
SearchTrips
एक सुविधाजनक एपीआई है, लेकिन नीचे दी गई सूची में इस्तेमाल के दो उदाहरण दिए गए हैं.
वाहन की चालू यात्राओं की जानकारी तय करना -- सेवा देने वाली कंपनी यह तय कर सकती है कि वाहन में फ़िलहाल कौनसी यात्राएं चालू हैं.
SearchTripsRequest
के अंदर,vehicle_id
को वाहन पर सेट किया गया है. साथ ही, इसेactive_trips_only
पर सेट किया गया है.true
पर सेट होना चाहिए.सेवा देने वाले और फ़्लीट इंजन की स्थिति का मिलान करना -- सेवा देने वाली कंपनी,
SearchTrips
को पक्का किया जाएगा कि उनकी यात्रा की स्थिति और फ़्लीट इंजन की स्थिति आपस में मेल खाती हो. TripStatus के लिए यह खास तौर पर ज़रूरी है. अगर असाइन की गई यात्रा की स्थिति वाहन के लिए ठीक सेCOMPLETE
याCANCELED
पर सेट नहीं किया गया है, वाहनSearchVehicles
द्वारा शामिल नहीं किया गया है.
SearchTrips
को इस तरह इस्तेमाल करने के लिए, vehicle_id
को खाली छोड़ें, active_trips_only
सेट करें
true
पर सेट करें और minimum_staleness
को यात्रा की ज़्यादातर अवधियों से ज़्यादा समय पर सेट करें.
उदाहरण के लिए, एक घंटे का इस्तेमाल किया जा सकता है. नतीजों में ऐसी यात्राएं शामिल हैं जो
पूरा नहीं हुआ और न ही रद्द किया गया. साथ ही, इसे एक घंटे से ज़्यादा समय में अपडेट नहीं किया गया. प्रोवाइडर
को इन यात्राओं की जाँच करनी चाहिए, ताकि यह पक्का किया जा सके कि फ़्लीट इंजन में उनकी स्थिति
सही तरीके से अपडेट किया गया.
समस्या का हल
DEADLINE_EXCEEDED
गड़बड़ी होने पर, फ़्लीट इंजन की स्थिति यह है
अज्ञात. सेवा देने वाले को CreateTrip
को फिर से कॉल करना चाहिए, जिससे या तो
201 (बनाया गया) या 409 (झूला) है. बाद वाले मामले में, पिछला अनुरोध सफल रहा
DEADLINE_EXCEEDED
से पहले करें. ज़्यादा जानकारी के लिए उपभोक्ता एपीआई की गाइड देखें
यात्रा की गड़बड़ियों को ठीक करने के बारे में जानकारी: Android
या iOS पर अपग्रेड करें.
कारपूल राइड सहायता
TripType.SHARED
की सुविधा वाले वाहन के लिए, एक से ज़्यादा SHARED
यात्राएं असाइन की जा सकती हैं.
आपको असाइन की गई सभी यात्राओं के लिए, पास नहीं किए गए सभी वेपॉइंट का क्रम तय करना होगा
जब आप असाइन करते हैं, तब Trip.vehicle_waypoints
के ज़रिए इस शेयर की गई राइड में शामिल वाहन
शेयर की गई यात्रा के लिए vehicle_id
(CreateTrip
या UpdateTrip
के अनुरोध में).
आरपीसी के लिए vehicle_waypoints
पर जाएं
या REST के लिए vehicleWaypoints
.
एक से ज़्यादा डेस्टिनेशन मैनेज किए जा सकते हैं
किसी मध्यवर्ती गंतव्य की पहचान करना
फ़ील्ड intermediateDestinations
और फ़ील्ड intermediateDestinationIndex
यात्रा में (RPC | REST)
जिन्हें गंतव्य दिखाने के लिए इस्तेमाल किया जा सकता है.
इंटरमीडिएट डेस्टिनेशन को अपडेट करें
बीच के डेस्टिनेशन को UpdateTrip
की मदद से अपडेट किया जा सकता है. अपडेट करते समय
इंटरमीडिएट डेस्टिनेशन के लिए, आपको इंटरमीडिएट डेस्टिनेशन की पूरी सूची देनी होगी,
इसमें वे लोग शामिल हैं जिन्हें पहले विज़िट किया गया है, न कि सिर्फ़ एक नया
शामिल नहीं किया जाएगा या उसमें बदलाव किया जाना है.
जब intermediateDestinationIndex
की स्थिति के बाद इंडेक्स पर ले जाता है
नया जोड़ा गया/बदलाव किया गया इंटरमीडिएट डेस्टिनेशन, नया/अपडेट किया गया इंटरमीडिएट
गंतव्य को वाहन के waypoints
या यात्रा के remainingWaypoints
में नहीं जोड़ा जाएगा.
वजह यह है कि intermediateDestinationIndex
से पहले के सभी इंटरमीडिएट डेस्टिनेशन
को पहले ही विज़िट किया जा चुका है.
यात्रा की स्थिति में बदलाव
(RPC | REST) में intermediateDestinationsVersion
फ़ील्ड
यात्रा की स्थिति अपडेट करने का अनुरोध करते समय, फ़्लीट इंजन को भेजना ज़रूरी है
मध्यवर्ती गंतव्य बीत चुका है. टारगेट किया गया इंटरमीडिएट डेस्टिनेशन
को intermediateDestinationIndex
फ़ील्ड के ज़रिए दर्ज किया गया है.
जब tripStatus
(RPC | REST) ENROUTE_TO_INTERMEDIATE_DESTINATION होता है, तो इनके बीच की कोई संख्या
[0..N-1] से पता चलता है कि वाहन किस इंटरमीडिएट डेस्टिनेशन से आगे जाएगा.
जब tripStatus
ARRIVED_AT_INTERMEDIATE_DESTINATION होता है, तो इनके बीच की कोई संख्या
[0..N-1] से पता चलता है कि वाहन किस इंटरमीडिएट डेस्टिनेशन पर है.
उदाहरण
नीचे दिया गया कोड उदाहरण, यात्रा की स्थिति को अपडेट करने के तरीके के बारे में बताता है. अपने पहले मध्यवर्ती गंतव्य तक पहुंच सकता है, यह मानते हुए कि आपने कई मंज़िलों की यात्रा हो और यात्रा अपने पिक अप पॉइंट से निकल चुकी हो.
Java
static final String PROJECT_ID = "project-id";
static final String TRIP_ID = "multi-destination-trip-A";
String tripName = "providers/" + PROJECT_ID + "/trips/" + TRIP_ID;
Trip trip = …; // Fetch trip object from FleetEngine or your storage.
TripServiceBlockingStub tripService = TripService.newBlockingStub(channel);
// Trip settings to update.
Trip trip = Trip.newBuilder()
// Trip status cannot go back to a previous status once it is passed
.setTripStatus(TripStatus.ENROUTE_TO_INTERMEDIATE_DESTINATION)
// Enrouting to the first intermediate destination.
.setIntermediateDestinationIndex(0)
// intermediate_destinations_version MUST be provided to ensure you
// have the same picture on intermediate destinations list as FleetEngine has.
.setIntermediateDestinationsVersion(
trip.getIntermediateDestinationsVersion())
.build();
// 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: // Trip does not exist.
break;
case FAILED_PRECONDITION: // The given trip status is invalid, or the
// intermediate_destinations_version
// doesn’t match FleetEngine’s.
break;
case PERMISSION_DENIED:
break;
}
return;
}
कैसे करें: Fleet Engine API से सूचना वाले मैसेज पाने के लिए सदस्यता लें
Fleet Engine API में, Google Cloud Pub/Sub का इस्तेमाल किया जाता है उपभोक्ता Google Cloud के ज़रिए बनाए गए विषय पर सूचनाएं पब्लिश करने के लिए प्रोजेक्ट. आपके Google Cloud पर फ़्लीट इंजन के लिए, Pub/Sub डिफ़ॉल्ट रूप से चालू नहीं होता प्रोजेक्ट. Pub/Sub को चालू करने के लिए, कृपया सहायता मामला दर्ज करें या अपने ग्राहक इंजीनियर से संपर्क करें.
अपने Cloud प्रोजेक्ट के लिए विषय बनाने के लिए, इन निर्देशों का पालन करें. विषय का आईडी 'fleet_engine_Notification' होना चाहिए.
विषय उसी Cloud प्रोजेक्ट में बनाया जाना चाहिए जिससे Fleet Engine को कॉल किया जा रहा है एपीआई.
विषय बनाने के बाद, आपको Fleet Engine API की अनुमति देनी होगी
आपको विषय पर पब्लिश करने की अनुमति देनी होगी. ऐसा करने के लिए, आप जिस विषय पर
ने अभी-अभी बनाया है और एक नई अनुमति जोड़ी है. अनुमतियों में बदलाव करने वाला टूल खोलने के लिए, आपको जानकारी पैनल दिखाएं पर क्लिक करना पड़ सकता है.
मूल रकम geo-fleet-engine@system.gserviceaccount.com
होनी चाहिए
और भूमिका Pub/Sub publisher
होनी चाहिए.
सूचनाएं पाने की सदस्यता लेने के लिए अपना क्लाउड प्रोजेक्ट सेट अप करने के लिए, इन निर्देशों का पालन करें
Fleet Engine API हर सूचना को दो अलग-अलग डेटा में पब्लिश करेगा
फ़ॉर्मैट, protobuf
और
json
. हर सूचना के लिए डेटा फ़ॉर्मैट की जानकारी
PubsubMessage एट्रिब्यूट
कुंजी को data_format
के तौर पर और protobuf
या json
के तौर पर वैल्यू डालें.
सूचना का स्कीमा:
प्रोटोबफ़
// A batch of notifications that is published by the Fleet Engine service using
// Cloud Pub/Sub in a single PubsubMessage.
message BatchNotification {
// Required. At least one notification must exist.
// List of notifications containing information related to changes in
// Fleet Engine data.
repeated Notification notifications = 1;
}
// A notification related to changes in Fleet Engine data.
// The data provides additional information specific to the type of the
// notification.
message Notification {
// Required. At least one type must exist.
// Type of notification.
oneof type {
// Notification related to changes in vehicle data.
VehicleNotification vehicle_notification = 1;
}
}
// Notification sent when a new vehicle was created.
message CreateVehicleNotification {
// Required.
// Vehicle must contain all fields that were set when it was created.
Vehicle vehicle = 1;
}
// Notification sent when an existing vehicle is updated.
message UpdateVehicleNotification {
// Required.
// Vehicle must only contain name and fields that are present in the
// field_mask field below.
Vehicle vehicle = 1;
// Required.
// Contains vehicle field paths that were specifically requested
// by the Provider.
google.protobuf.FieldMask field_mask = 2;
}
// Notification related to changes in vehicle data.
message VehicleNotification {
// Required. At least one type must be set.
// Type of notification.
oneof type {
// Notification sent when a new vehicle was created.
CreateVehicleNotification create_notification = 1;
// Notification sent when an existing vehicle is updated.
UpdateVehicleNotification update_notification = 2;
}
}
JSON
BatchNotification: {
"description": "A batch of notifications that is published by the Fleet Engine service using Cloud Pub/Sub in a single PubsubMessage.",
"type": "object",
"required": ["notifications"],
"properties": {
"notifications": {
"description": "At least one notification must exist. List of notifications containing information related to changes in Fleet Engine data.",
"type": "Notification[]"
}
}
}
Notification: {
"description": "A notification related to changes in Fleet Engine data. The data provides additional information specific to the type of the notification.",
"type": "object",
"properties": {
"vehicleNotification": {
"description": "Notification related to changes in vehicle data.",
"type": "VehicleNotification"
}
}
}
VehicleNotification: {
"description": "Notification related to changes in vehicle data.",
"type": "object",
"properties": {
"createNotification": {
"description": "Notification sent when a new vehicle was created.",
"type": "CreateVehicleNotification"
},
"updateNotification": {
"description": "Notification sent when an existing vehicle is updated.",
"type": "UpdateVehicleNotification"
}
}
}
CreateVehicleNotification: {
"description": "Notification sent when a new vehicle was created.",
"type": "object",
"required": ["vehicle"],
"properties": {
"vehicle": {
"description": "Vehicle must contain all fields that were set when it was created.",
"type": "Vehicle"
}
}
}
UpdateVehicleNotification: {
"description": "Notification sent when an existing vehicle is updated.",
"type": "object",
"required": ["vehicle", "fieldMask"],
"properties": {
"vehicle": {
"description": "Vehicle must only contain name and fields that are present in the fieldMask field below.",
"type": "Vehicle"
},
"fieldMask": {
"description": "Contains vehicle field paths that were specifically requested by the Provider.",
"type": "FieldMask"
}
}
}