ফ্লিট পারফরম্যান্সের জন্য ফ্লিট ইঞ্জিন দিয়ে শুরু করুন

ফ্লিট ইঞ্জিন ডেলিভারি API এর মাধ্যমে ডেলিভারির প্রথম এবং শেষ মাইলের জন্য আপনার ফ্লিট কার্যকলাপের মডেল করুন। আপনি Android এবং iOS এর জন্য ড্রাইভার SDK ব্যবহার করে বা সরাসরি HTTP REST বা gRPC কল ব্যবহার করে এই API ব্যবহার করতে পারেন।

প্রাথমিক সেটআপ

আপনি Google ক্লাউড কনসোলে Fleet Engine Deliveries API কনফিগার করেন।

আপনার সেটআপ যাচাই করুন

পরিষেবা অ্যাকাউন্ট তৈরি করার পরে, যাচাই করুন যে আপনার সেটআপ সম্পূর্ণ হয়েছে এবং আপনি একটি ডেলিভারি গাড়ি তৈরি করতে পারেন। অবিলম্বে আপনার সেটআপ যাচাই করা নিশ্চিত করে যে আপনি আপনার প্রকল্প সেট আপ করার সময় উত্থাপিত সাধারণ অনুমোদন সংক্রান্ত সমস্যাগুলির সমাধান করেছেন৷ আপনার সেটআপ যাচাই করার দুটি উপায় আছে:

ক্লায়েন্ট লাইব্রেরি

কাঁচা gRPC বা REST এর উপর আরও ভাল বিকাশকারী অভিজ্ঞতার জন্য, বেশ কয়েকটি সাধারণ প্রোগ্রামিং ভাষায় ক্লায়েন্ট লাইব্রেরি ব্যবহার করুন। আপনার সার্ভার অ্যাপ্লিকেশনের জন্য ক্লায়েন্ট লাইব্রেরিগুলি কীভাবে পেতে হয় তার নির্দেশাবলীর জন্য, ক্লায়েন্ট লাইব্রেরি দেখুন।

এই ডকুমেন্টেশনের জাভা উদাহরণগুলি অনুমান করে যে আপনি gRPC এর সাথে পরিচিত।

উপাত্ত কাঠামো

ফ্লিট ইঞ্জিন ডেলিভারি এপিআই শিপমেন্টের পিকআপ এবং ডেলিভারি মডেল করতে দুটি ডেটা স্ট্রাকচার ব্যবহার করে:

  • চালান পরিবহনের জন্য ব্যবহৃত ডেলিভারি গাড়ি।
  • চালান পিক আপ এবং ডেলিভারি কাজ.

আপনি সারা দিন ড্রাইভার বিরতি এবং নির্ধারিত স্টপ মডেল করার জন্য টাস্কগুলি ব্যবহার করেন।

ডেলিভারি যানবাহন

ডেলিভারি যানবাহন একটি ডিপো থেকে একটি ডেলিভারি অবস্থানে এবং একটি পিকআপ অবস্থান থেকে ডিপোতে চালান পরিবহন করে। কিছু ক্ষেত্রে, তারা সরাসরি পিকআপ অবস্থান থেকে ডেলিভারি অবস্থানে একটি চালান পরিবহন করতে পারে।

ফ্লিট ইঞ্জিনে একটি DeliveryVehicle অবজেক্ট তৈরি করতে ড্রাইভার SDK ব্যবহার করুন এবং চালান এবং ফ্লিট ট্র্যাকিংয়ের জন্য অবস্থান আপডেট পাঠান।

দ্রষ্টব্য: আপনি DeliveryVehicle অবজেক্টগুলিতে 500টি টাস্ক এবং 300টি বাকি যানবাহন যাত্রার অংশ বরাদ্দ করতে পারেন।

কাজ

দিনের বেলায় একটি গাড়ি যে ক্রিয়া করে তার জন্য, আপনি কর্মের ধরন অনুসারে কাজগুলি বরাদ্দ করেন:

  • পিকআপ এবং ডেলিভারির জন্য, চালানের কাজগুলি বরাদ্দ করুন৷
  • যখন ড্রাইভারগুলি অনুপলব্ধ থাকে, যেমন প্রয়োজনীয় বিরতির জন্য, অনুপলব্ধতার কাজগুলি বরাদ্দ করুন৷
  • ড্রপ বক্স বা গ্রাহকের অবস্থানে অ-ড্রাইভিং কাজগুলির জন্য, নির্ধারিত স্টপ টাস্কগুলি বরাদ্দ করুন৷

আপনার দেওয়া প্রতিটি টাস্কের একটি অনন্য টাস্ক আইডি থাকতে হবে, তবে টাস্ক একই ট্র্যাকিং আইডি শেয়ার করতে পারে। যখন ফ্লিট ইঞ্জিন প্রতিটি টাস্কের জন্য ETA উইন্ডো গণনা করে, তখন এটি সমস্ত কাজ এবং অনুমান করার জন্য নির্ধারিত ক্রম ব্যবহার করে। টাস্ক আইডি সম্পর্কে আরও তথ্যের জন্য, টাস্ক আইডি নির্দেশিকা দেখুন।

ফ্লিট ইঞ্জিনে কাজ তৈরি করতে, ড্রাইভার SDK টাস্ক ম্যানেজার ব্যবহার করুন।

চালানের কাজ

একটি চালানের পিকআপ এবং ডেলিভারি উভয়ের জন্য চালানের কাজগুলি তৈরি করুন এবং নিম্নলিখিত তথ্যগুলি অন্তর্ভুক্ত করুন:

  • পিকআপ বা ডেলিভারির অবস্থান।
  • একটি ট্র্যাকিং নম্বর বা আইডি।
  • টাস্ক সম্পূর্ণ করার জন্য অতিরিক্ত সময়ের জন্য অ্যাকাউন্ট করার জন্য একটি বাস করার সময়, পার্কিং সন্ধান করুন বা হ্যান্ডঅফ অবস্থানে হাঁটুন।
  • একটি অনন্য টাস্ক আইডি। টাস্ক আইডি নির্দেশিকা দেখুন।

আরও তথ্যের জন্য, নিম্নলিখিত বিষয়গুলি দেখুন:

অ্যান্ড্রয়েড

iOS

অনুপলব্ধ কাজ

অনুপলব্ধতার কাজগুলি সেই সময়কালগুলিকে কভার করে যখন একটি গাড়ি পিকআপ বা ডেলিভারির জন্য উপলব্ধ না থাকে, যেমন গাড়ির রিফুয়েলিংয়ের জন্য বিরতি বা ড্রাইভারের বিশ্রামের বিরতি।

নিম্নলিখিত তথ্য দিয়ে একটি অনুপলব্ধ কাজ তৈরি করুন:

  • বিরতির দৈর্ঘ্য।
  • ঐচ্ছিকভাবে, বিরতির অবস্থান। আপনাকে একটি নির্দিষ্ট অবস্থান প্রদান করতে হবে না, কিন্তু তা করলে সারাদিনে আরো সঠিক ETA উইন্ডো পাওয়া যায়।

আরও তথ্যের জন্য, নিম্নলিখিত বিষয়গুলি দেখুন:

অ্যান্ড্রয়েড

iOS

নির্ধারিত স্টপ কাজ

ডেলিভারি গাড়ির যে স্টপগুলি তৈরি করতে হবে সেগুলি মডেল করার জন্য নির্ধারিত স্টপ টাস্কগুলি তৈরি করুন৷ উদাহরণস্বরূপ, একটি নির্দিষ্ট স্থানে একটি দৈনিক নির্ধারিত সংগ্রহের স্টপের জন্য একটি নির্ধারিত স্টপ টাস্ক তৈরি করুন, একই অবস্থানে অন্যান্য ডেলিভারি বা পিকআপ থেকে স্বতন্ত্র। এছাড়াও আপনি ড্রপ বক্স থেকে সংগ্রহের জন্য বা পরিষেবা কেন্দ্র এবং পরিষেবা পয়েন্টগুলিতে ফিডার-গাড়ি স্থানান্তর বা স্টপ মডেলের জন্য নির্ধারিত স্টপ টাস্ক তৈরি করতে পারেন।

আরও তথ্যের জন্য, নিম্নলিখিত বিষয়গুলি দেখুন:

অ্যান্ড্রয়েড

iOS

টাস্ক আইডি নির্দেশিকা

আপনি যখন টাস্ক আইডি তৈরি করেন, তখন এই বিষয়বস্তু এবং ফর্ম্যাট নির্দেশিকা অনুসরণ করুন:

  • অনন্য টাস্ক আইডি তৈরি করুন
  • কোনো ব্যক্তিগতভাবে-শনাক্তযোগ্য তথ্য (PII) বা পাঠ্য ডেটা পরিষ্কার করবেন না।
  • বৈধ ইউনিকোড স্ট্রিং ব্যবহার করুন।
  • 64 বা তার কম অক্ষর ব্যবহার করুন।
  • নিম্নলিখিত ASCII অক্ষরগুলির মধ্যে কোনটি অন্তর্ভুক্ত করবেন না: "/", ":", "\", "?", বা "#"৷
  • ইউনিকোড নরমালাইজেশন ফর্ম সি অনুযায়ী স্বাভাবিক করুন।

নিচে ভালো টাস্ক আইডির কিছু উদাহরণ দেওয়া হল:

  • 566c33d9-2a31-4b6a-9cd4-80ba1a0c643b
  • e4708eabcfa39bf2767c9546c9273f747b4626e8cc44e9630d50f6d129013d38
  • NTA1YTliYWNkYmViMTI0ZmMzMWFmOWY2NzNkM2Jk

নিম্নলিখিত সারণীটি অসমর্থিত টাস্ক আইডিগুলির উদাহরণ দেখায়:

অসমর্থিত টাস্ক আইডি কারণ
8/31/2019-20:48-46.70746,-130.10807,-85.17909,61.33680 PII এবং চরিত্রের প্রয়োজনীয়তা লঙ্ঘন করে: কমা, পিরিয়ড, কোলন এবং স্ল্যাশ।
JohnDoe-577b484da26f-কুপারটিনো-সান্তাক্রুজ PII প্রয়োজনীয়তা লঙ্ঘন করে।
4R0oXLToF"112 সামার ড. ইস্ট হার্টফোর্ড, CT06118"577b484da26f8a PII এবং চরিত্রের প্রয়োজনীয়তা লঙ্ঘন করে: সাদা স্থান, কমা এবং উদ্ধৃতি চিহ্ন। 64টি অক্ষরের বেশি।

আরও সম্পদ

প্রতিটি ডেটা স্ট্রাকচারে থাকা নির্দিষ্ট ক্ষেত্রগুলি দেখতে, DeliveryVehicle ( gRPC , REST ) এবং Task ( gRPC , REST ) এর জন্য API রেফারেন্স ডকুমেন্টেশন দেখুন।

যানবাহনের জীবন

DeliveryVehicle অবজেক্ট একটি প্রথম বা শেষ মাইল ডেলিভারি গাড়ির প্রতিনিধিত্ব করে। আপনি ব্যবহার করে একটি DeliveryVehicle অবজেক্ট তৈরি করুন:

  • Google ক্লাউড প্রকল্পের প্রজেক্ট আইডি যাতে ফ্লিট ইঞ্জিন API কল করার জন্য ব্যবহৃত পরিষেবা অ্যাকাউন্ট থাকে।
  • একটি গ্রাহকের মালিকানাধীন যানবাহন আইডি।

গাড়ির আইডি ব্যবহার করুন যা প্রতিটি গাড়ির জন্য অনন্য। আসল গাড়ির জন্য কোনও সক্রিয় কাজ না থাকলে গাড়ির আইডি পুনরায় ব্যবহার করবেন না।

Fleet Engine স্বয়ংক্রিয়ভাবে DeliveryVehicle অবজেক্টগুলি মুছে দেয় যেগুলি সাত দিন পর UpdateDeliveryVehicle ব্যবহার করে আপডেট করা হয়নি। একটি গাড়ি আছে কিনা দেখতে:

  1. UpdateDeliveryVehicle এ কল করুন।
  2. যদি আপনি একটি NOT_FOUND ত্রুটি পান , তাহলে গাড়িটি পুনরায় তৈরি করতে CreateDeliveryVehicle কল করুন৷ যদি কলটি একটি যানবাহন ফেরত দেয় তবে এটি এখনও আপডেট করার জন্য উপলব্ধ।

যানবাহনের বৈশিষ্ট্য

DeliveryVehicle এন্টিটিতে DeliveryVehicleAttribute এর পুনরাবৃত্ত ক্ষেত্র রয়েছে। ListDeliveryVehicles এপিআই একটি filter ক্ষেত্র অন্তর্ভুক্ত করে যা নির্দিষ্ট বৈশিষ্ট্যগুলির সাথে ফেরত DeliveryVehicle সত্তাগুলিকে সীমাবদ্ধ করতে পারে৷ DeliveryVehicleAttribute ফ্লিট ইঞ্জিন রাউটিং আচরণকে প্রভাবিত করে না।

ব্যক্তিগতভাবে সনাক্তকরণযোগ্য তথ্য (PII) বা সংবেদনশীল তথ্য বৈশিষ্ট্যগুলিতে অন্তর্ভুক্ত করবেন না কারণ এই ক্ষেত্রটি ব্যবহারকারীদের কাছে দৃশ্যমান হতে পারে।

একটি কাজের জীবন

আপনি ডেলিভারি API gRPC বা REST ইন্টারফেসের সাহায্যে ফ্লিট ইঞ্জিনে কাজগুলি তৈরি করতে, আপডেট করতে এবং অনুসন্ধান করতে পারেন৷

একটি Task অবজেক্টের জীবনচক্রের মাধ্যমে তার অগ্রগতি ট্র্যাক করার জন্য একটি রাষ্ট্রীয় ক্ষেত্র রয়েছে। মানগুলি খোলা থেকে বন্ধ হয়ে যায়৷ ওপেন অবস্থায় নতুন কাজ তৈরি করা হয়, যা নির্দেশ করে যে হয়:

  • কাজটি এখনও ডেলিভারি গাড়ির কাছে অর্পণ করা হয়নি।
  • ডেলিভারি গাড়িটি এখনও টাস্কের নির্ধারিত গাড়ির স্টপ অতিক্রম করেনি।

টাস্ক নির্দেশিকা

আপনি শুধুমাত্র একটি গাড়িকে একটি টাস্ক বরাদ্দ করতে পারেন যখন এটি খোলা অবস্থায় থাকে।

আপনি গাড়ির স্টপের তালিকা থেকে একটি টাস্ককে সরিয়ে দিয়ে বাতিল করেন, যা টাস্ক স্টেটকে স্বয়ংক্রিয়ভাবে বন্ধ করে দেয়।

যখন টাস্কের গাড়িটি টাস্কের গাড়ির স্টপটি সম্পূর্ণ করে:

  1. টাস্কের ফলাফল ক্ষেত্রটি সফল বা ব্যর্থ হয় আপডেট করুন৷

  2. ইভেন্টের টাইমস্ট্যাম্প উল্লেখ করুন।

    জাভাস্ক্রিপ্ট ফ্লিট ট্র্যাকিং লাইব্রেরি তখন টাস্কের ফলাফল নির্দেশ করে এবং টাস্ক স্ট্যাটাস স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায়। আরও তথ্যের জন্য, JavaScript ফ্লিট ট্র্যাকিং লাইব্রেরির মাধ্যমে আপনার ফ্লিট ট্র্যাক করুন দেখুন।

যানবাহনের মতো, ফ্লিট ইঞ্জিন এমন কাজগুলি মুছে দেয় যেগুলি সাত দিন পরে আপডেট করা হয়নি এবং আপনি যদি ইতিমধ্যে বিদ্যমান আইডি দিয়ে একটি টাস্ক তৈরি করার চেষ্টা করেন তবে এটি একটি ত্রুটি ফিরিয়ে দেয়।

দ্রষ্টব্য: ফ্লিট ইঞ্জিন স্পষ্টভাবে একটি টাস্ক মুছে ফেলা সমর্থন করে না। পরিষেবাটি আপডেট ছাড়াই সাত দিন পরে স্বয়ংক্রিয়ভাবে কাজগুলি মুছে দেয়। আপনি যদি সাত দিনের বেশি টাস্ক ডেটা ধরে রাখতে চান তবে আপনাকে অবশ্যই সেই ক্ষমতাটি প্রয়োগ করতে হবে।

টাস্ক বৈশিষ্ট্য

Task এন্টিটিতে TaskAttribute একটি পুনরাবৃত্ত ক্ষেত্র রয়েছে, যেটির 3 প্রকারের একটি থেকে একটি মান থাকতে পারে: স্ট্রিং, সংখ্যা এবং বুল৷ ListTasks API-এ একটি filter ক্ষেত্র রয়েছে যা নির্দিষ্ট বৈশিষ্ট্যগুলির সাথে ফিরে আসা Task সত্তাগুলিকে সীমাবদ্ধ করতে পারে। টাস্ক অ্যাট্রিবিউট ফ্লিট ইঞ্জিন রাউটিং আচরণকে প্রভাবিত করে না।

ব্যক্তিগতভাবে সনাক্তকরণযোগ্য তথ্য (PII) বা অন্যান্য সংবেদনশীল তথ্য বৈশিষ্ট্যগুলিতে অন্তর্ভুক্ত করবেন না কারণ এই বৈশিষ্ট্যগুলি ব্যবহারকারীদের কাছে দৃশ্যমান হতে পারে।

যানবাহন এবং টাস্ক জীবনচক্র পরিচালনা করুন

অনুস্মারক: আপনার অভ্যন্তরীণ সিস্টেম ডেটার বিশ্বস্ত উত্স হিসাবে কাজ করে যা Fleet Engine Deliveries API আপনার পক্ষ থেকে বৃদ্ধি করে৷

আপনার সিস্টেমে যানবাহন এবং টাস্ক লাইফসাইকেল পরিচালনা করতে, আপনার যানবাহন এবং তাদের সম্পর্কিত কাজগুলি তৈরি, আপডেট এবং ট্র্যাক করতে ফ্লিট ইঞ্জিন ডেলিভারি API ব্যবহার করুন৷

একই সময়ে, ড্রাইভার অ্যাপ্লিকেশনটি ডিভাইসের অবস্থান এবং রুটের তথ্য আপডেট করতে সরাসরি ফ্লিট ইঞ্জিনের সাথে যোগাযোগ করে। এই মডেলটি ফ্লিট ইঞ্জিনকে দক্ষতার সাথে রিয়েল-টাইম অবস্থান পরিচালনা করতে দেয়। এটি অবস্থানটি সরাসরি ট্র্যাকিং লাইব্রেরিতে পাঠায়, যা আপনি গ্রাহকদের তাদের অর্ডারের অবস্থা আপডেট করতে ব্যবহার করতে পারেন।

উদাহরণস্বরূপ, ধরুন আপনার নিম্নলিখিত দৃশ্যকল্প রয়েছে:

  • একজন ড্রাইভার ডেলিভারি স্টপের কাছে। ড্রাইভার অ্যাপ্লিকেশনটি ফ্লিট ইঞ্জিনে তার অবস্থান পাঠায়।
  • ফ্লিট ইঞ্জিন ট্র্যাকিং লাইব্রেরিতে ডিভাইসের অবস্থান পাঠায়, যা আপনার ভোক্তা অ্যাপ্লিকেশন গ্রাহককে তাদের প্যাকেজের নৈকট্য সম্পর্কে সতর্ক করতে ব্যবহার করে।
  • ড্রাইভার চালানটি সম্পূর্ণ করার পরে, তারা ড্রাইভার অ্যাপ্লিকেশনে একটি "শিপমেন্ট বিতরণ" বোতামে ক্লিক করে।
  • "শিপমেন্ট ডেলিভারি" অ্যাকশন আপনার ব্যাকএন্ড সিস্টেমে তথ্য পাঠায়, যা প্রয়োজনীয় ব্যবসায়িক বৈধতা এবং যাচাইকরণ পদক্ষেপগুলি সম্পাদন করে।
  • আপনার সিস্টেম সফল হিসাবে কাজটিকে নিশ্চিত করে এবং ডেলিভারি API ব্যবহার করে ফ্লিট ইঞ্জিন আপডেট করে।

নিম্নলিখিত চিত্রটি এই প্রক্রিয়াগুলিকে সাধারণ স্তরে চিত্রিত করে। এটি আপনার সিস্টেম, ক্লায়েন্ট এবং ফ্লিট ইঞ্জিনের মধ্যে আদর্শ সম্পর্কও দেখায়।

ডেলিভারি এপিআই ডায়াগ্রাম> একীভূত করা

ক্লায়েন্ট টোকেন পরিচালনা করুন

ড্রাইভার অ্যাপ্লিকেশন থেকে উদ্ভূত অবস্থান আপডেট এবং সরাসরি ফ্লিট ইঞ্জিনে পাঠানোর জন্য অনুমোদন টোকেন প্রয়োজন। ক্লায়েন্ট থেকে ফ্লিট ইঞ্জিনে আপডেটগুলি পরিচালনা করার জন্য এখানে প্রস্তাবিত পদ্ধতি রয়েছে:

  1. ফ্লিট ইঞ্জিন ডেলিভারি আনট্রাস্টেড ড্রাইভার ব্যবহারকারী পরিষেবা অ্যাকাউন্ট ভূমিকা ব্যবহার করে টোকেন তৈরি করুন।

  2. সীমিত সুযোগের একটি টোকেন সহ ড্রাইভার অ্যাপ্লিকেশন প্রদান করুন। এই সুযোগটি শুধুমাত্র ফ্লিট ইঞ্জিনে ডিভাইসের অবস্থান আপডেট করতে দেয়।

এই পদ্ধতি নিশ্চিত করে যে একটি মোবাইল ডিভাইস থেকে আসা কলগুলি--নিম্ন-বিশ্বাসের পরিবেশ হিসাবে বিবেচিত-- নিম্নতম বিশেষাধিকারের নীতি মেনে চলে।

অন্যান্য পরিষেবা অ্যাকাউন্ট ভূমিকা

পরিবর্তে আপনি যদি অবিশ্বস্ত ড্রাইভারের ভূমিকার মধ্যে সীমাবদ্ধ যেমন কিছু টাস্ক আপডেটের জন্য সরাসরি ফ্লিট ইঞ্জিন আপডেট করার জন্য ড্রাইভার অ্যাপ্লিকেশনগুলিকে অনুমোদন করতে চান, আপনি বিশ্বস্ত ড্রাইভার ভূমিকা ব্যবহার করতে পারেন। বিশ্বস্ত ড্রাইভারের ভূমিকা ব্যবহার করে এমন একটি মডেলের তথ্যের জন্য, বিশ্বস্ত ড্রাইভার মডেল দেখুন।

অবিশ্বস্ত এবং বিশ্বস্ত ড্রাইভার ভূমিকার ব্যবহার সম্পর্কে আরও তথ্যের জন্য, ক্লাউড প্রকল্প সেটআপ দেখুন।

একটি কাজের দিন মডেল

একটি ডেলিভারি এবং লজিস্টিক কোম্পানিতে প্রথম বা শেষ-মাইল ড্রাইভারদের কাজের দিন কেমন হতে পারে তা নিম্নলিখিত সারণীতে বর্ণনা করা হয়েছে। আপনার কোম্পানির বিশদ বিবরণে ভিন্ন হতে পারে, কিন্তু আপনি দেখতে পারেন কিভাবে আপনি একটি কাজের দিনের মডেল করতে পারেন।

সময় কার্যকলাপ মডেলিং
দিন শুরু হওয়ার 24 ঘন্টার মধ্যে ডিসপ্যাচার ডেলিভারি যানবাহন বা রুটে চালান বরাদ্দ করে। আপনি সময়ের আগে ফ্লিট ইঞ্জিনে শিপমেন্ট ডেলিভারি, পিকআপ, বিরতি এবং অন্যান্য কাজের জন্য কাজ তৈরি করতে পারেন। উদাহরণস্বরূপ, আপনি একটি শিপমেন্ট পিকআপ টাস্ক , শিপমেন্ট ডেলিভারি টাস্ক , নির্ধারিত অনুপলব্ধতা বা নির্ধারিত স্টপ তৈরি করতে পারেন।

ডেলিভারি প্যাকেজের সেট এবং সেগুলি যে ক্রমানুসারে বিতরণ করা উচিত তা চূড়ান্ত হয়ে গেলে একটি গাড়িতে কাজগুলি বরাদ্দ করুন৷
দিনের শুরু ড্রাইভার অ্যাপে লগ ইন করে ডিপোতে দিন শুরু করে। ডেলিভারি ড্রাইভার API শুরু করুন। প্রয়োজন অনুযায়ী ফ্লিট ইঞ্জিনে ডেলিভারি গাড়ি তৈরি করুন
ড্রাইভার ডেলিভারি গাড়িতে চালান লোড করে, চালান স্ক্যান করে। যদি শিপমেন্ট ডেলিভারি কাজগুলি সময়ের আগে তৈরি করা না হয়, তাহলে স্ক্যান করার সময় শিপমেন্ট ডেলিভারি কাজগুলি তৈরি করুন
ড্রাইভার সঞ্চালিত কাজের আদেশ নিশ্চিত করে। যদি সেগুলি সময়ের আগে তৈরি না করা হয়, তাহলে শিপমেন্ট পিকআপ কাজগুলি , নির্ধারিত অনুপলব্ধতা এবং নির্ধারিত স্টপগুলি তৈরি করুন৷
ড্রাইভার ডিপো ছেড়ে চলে যায় এবং পরবর্তী সংখ্যক কাজ সম্পন্ন করতে প্রতিশ্রুতি দেয়। সমস্ত কাজ বা কাজগুলির একটি উপসেট গাড়িকে তাদের সমাপ্তির আদেশ দিয়ে বরাদ্দ করুন
ড্রাইভার একটি চালান বিতরণ. ডেলিভারি স্টপে পৌঁছানোর পর, স্টপে আসা গাড়ির সাথে সম্পর্কিত ক্রিয়া সম্পাদন করুন। চালান ডেলিভারির পরে, ডেলিভারি টাস্ক বন্ধ করুন এবং, ঐচ্ছিকভাবে, চালানের স্থিতি এবং অন্যান্য মেটা তথ্য সঞ্চয় করুন । স্টপে সমস্ত কাজ শেষ করার পরে এবং পরবর্তী স্টপে গাড়ি চালানো শুরু করার আগে, গাড়ির সাথে সম্পর্কিত ক্রিয়াগুলি সম্পাদন করুন এবং গাড়িটি পরবর্তী স্টপে যাওয়ার পথে একটি স্টপ সম্পূর্ণ করে।
ডেলিভারি গাড়িতে অতিরিক্ত চালান স্থানান্তর করতে ড্রাইভার একটি ফিডার গাড়ির সাথে দেখা করে। ফিডার এবং ডেলিভারি যানবাহনের মধ্যে স্থানান্তরের জন্য মিটিং পয়েন্টটিকে একটি নির্ধারিত স্টপ হিসাবে মডেল করা উচিত।

চালান স্থানান্তর এবং স্ক্যান করার পরে, যদি সেগুলি ইতিমধ্যে তৈরি না হয়ে থাকে তবে ডেলিভারি কাজগুলি তৈরি করুন ৷ তারপরে একটি গাড়িতে টাস্ক অ্যাসাইন করে এবং টাস্ক অর্ডার আপডেট করে টাস্ক কমপ্লিশন অর্ডার আপডেট করুন।
ড্রাইভার একটি পিকআপ অনুরোধের বিজ্ঞপ্তি পায়। পিকআপের অনুরোধ গ্রহণ করার পরে, একটি চালান পিকআপ টাস্ক তৈরি করুন ৷ তারপরে একটি গাড়িতে টাস্ক বরাদ্দ করে এবং টাস্ক অর্ডার আপডেট করে টাস্ক এক্সিকিউশন অর্ডার আপডেট করুন।
দুপুর ড্রাইভার দুপুরের খাবারের বিরতি নেয়। যদি একটি অবস্থান অনুপলব্ধতা টাস্কের সাথে যুক্ত থাকে তবে এটিকে অন্য যেকোন কাজের মতই বিবেচনা করুন। একটি স্টপে আসা গাড়ির সাথে সম্পর্কিত ক্রিয়াগুলি সম্পাদন করুন, গাড়িটি একটি স্টপ সম্পূর্ণ করে এবং পরবর্তী স্টপে যাওয়ার পথে যান

অন্যথায়, বিরতি শেষ না হওয়া পর্যন্ত আর কোনো পদক্ষেপের প্রয়োজন নেই। পরবর্তী এবং অবশিষ্ট কাজগুলি নিশ্চিত করে এবং টাস্ক অর্ডার আপডেট করে টাস্কটি সরান।
ড্রাইভার একটি চালান তুলে নেয়। এটি ডেলিভারি স্টপের মতোই মডেল করা হয়েছে। একটি স্টপে পৌঁছানো এবং একটি টাস্ক বন্ধ করা এবং ঐচ্ছিকভাবে, চালানের স্থিতি এবং অন্যান্য মেটা তথ্য সংরক্ষণের সাথে সম্পর্কিত ক্রিয়াগুলি সম্পাদন করুন৷ স্টপে সমস্ত কাজ শেষ করার পরে এবং পরবর্তী স্টপে গাড়ি চালানো শুরু করার আগে, গাড়ির সাথে সম্পর্কিত ক্রিয়াগুলি সম্পাদন করুন এবং গাড়িটি পরবর্তী স্টপে যাওয়ার পথে একটি স্টপ সম্পূর্ণ করে। দ্রষ্টব্য: সঠিক বিলিং নিশ্চিত করতে, সমস্ত পিকআপের একটি সংশ্লিষ্ট ডেলিভারি টাস্ক থাকতে হবে। যদি সেই দিন পিকআপটি ড্রাইভারের একই রুটে অন্য কোনও স্থানে ডেলিভারি করতে হয়, আমরা সেই ডেলিভারি টাস্কটিকে রুটের অন্য কোনও ডেলিভারি টাস্কের মতো মডেল করার পরামর্শ দিই। ড্রাইভার যদি পিকআপটিকে ডিপোতে ফিরিয়ে আনে, আমরা ডিপো গন্তব্যে একটি ডেলিভারি টাস্ক তৈরি করার পরামর্শ দিই।
ড্রাইভার একটি ড্রপ বক্স থেকে চালান নিতে একটি নির্ধারিত স্টপ করে। এটি অন্যান্য পিকআপ স্টপের মতোই মডেল করা হয়েছে। একটি স্টপে আসা গাড়ির সাথে সম্পর্কিত ক্রিয়া সম্পাদন করুন এবং একটি টাস্ক বন্ধ করুন ৷ স্টপে সমস্ত কাজ শেষ করার পরে এবং পরবর্তী স্টপে গাড়ি চালানো শুরু করার পরে, গাড়ির সাথে সম্পর্কিত ক্রিয়াগুলি সম্পাদন করুন এবং গাড়িটি পরবর্তী স্টপে যাওয়ার পথে একটি স্টপ সম্পূর্ণ করে।
চালক একটি চালান একটি বিকল্প অবস্থানে নিয়ে যাওয়ার বিজ্ঞপ্তি পান৷ আসল শিপমেন্ট ডেলিভারি টাস্ক স্ট্যাটাস সম্পূর্ণ করে সেট করুন এবং নতুন ডেলিভারি লোকেশনের জন্য একটি নতুন চালান ডেলিভারি টাস্ক তৈরি করুন। আরও তথ্যের জন্য, একটি চালান পুনরায় রুট করুন দেখুন।
ড্রাইভার একটি প্যাকেজ বিতরণ করার চেষ্টা করেছিল কিন্তু তা করতে অক্ষম ছিল। এটি একটি সফল ডেলিভারি স্টপের অনুরূপভাবে মডেল করা হয়েছে, ডেলিভারি টাস্ককে সম্পূর্ণ হিসাবে চিহ্নিত করে৷ স্টপে আসা গাড়ির সাথে সম্পর্কিত ক্রিয়া সম্পাদন করুন। চালানটি সরবরাহ করতে ব্যর্থ হওয়ার পরে, টাস্কটি বন্ধ করুন এবং, ঐচ্ছিকভাবে, চালানের স্থিতি এবং অন্যান্য মেটা তথ্য সংরক্ষণ করুন ৷ স্টপে সমস্ত কাজ শেষ করার পরে এবং পরবর্তী স্টপে গাড়ি চালানো শুরু করার আগে, গাড়ির সাথে সম্পর্কিত ক্রিয়াগুলি সম্পাদন করুন এবং গাড়িটি পরবর্তী স্টপে যাওয়ার পথে একটি স্টপ সম্পূর্ণ করে।
চালককে একটি চালান ধরে রাখতে (ডেলিভারি না) জানানো হয়েছিল। বিজ্ঞপ্তি প্রাপ্ত এবং নিশ্চিত হওয়ার পরে, টাস্ক স্ট্যাটাসটি COMPLETED এ সেট করুন।
প্রতিশ্রুতিবদ্ধ ডেলিভারি অর্ডার পরিবর্তন করে পরবর্তীতে একটি নির্দিষ্ট চালান সরবরাহ করার জন্য ড্রাইভারকে অবহিত করা হয়েছিল। টাস্ক অর্ডার আপডেট করুন
ড্রাইভার অর্ডারের বাইরে একটি চালান সরবরাহ করতে বেছে নেয়। টাস্ক অর্ডার আপডেট করুন এবং তারপর স্বাভাবিক হিসাবে এগিয়ে যান।
ড্রাইভার একক অবস্থানে একাধিক চালান সরবরাহ করে। এটি একটি একক চালান ডেলিভারি স্টপের অনুরূপভাবে তৈরি করা হয়েছে। স্টপে পৌঁছানোর পরে, স্টপে আসা গাড়ির সাথে সম্পর্কিত ক্রিয়া সম্পাদন করুন। প্রতিটি চালান সরবরাহ করার পরে, প্রতিটি কাজ বন্ধ করুন এবং, ঐচ্ছিকভাবে, চালানের স্থিতি এবং অন্যান্য মেটা তথ্য সংরক্ষণ করুন ৷ স্টপে সমস্ত কাজ শেষ করার পরে এবং পরবর্তী স্টপে গাড়ি চালানো শুরু করার আগে, গাড়ির সাথে সম্পর্কিত ক্রিয়াগুলি সম্পাদন করুন এবং গাড়িটি পরবর্তী স্টপে যাওয়ার পথে একটি স্টপ সম্পূর্ণ করে।
দিনের শেষ ড্রাইভার ডিপোতে ফিরে আসে। ড্রাইভার যদি তাদের রুট চলাকালীন শিপমেন্ট নিয়ে ডিপোতে ফিরে আসে, তাহলে সঠিক বিলিং নিশ্চিত করার জন্য আপনাকে অবশ্যই প্রতিটি প্যাকেজ তৈরি এবং বন্ধ করতে হবে। আপনি অন্য যেকোনো ডেলিভারি স্টপের মতো ডিপো মডেলিং করে এটি করতে পারেন। যদি ডিপোটি ডেলিভারি স্টপ হিসাবে ব্যবহার করা না হয়, তবে আপনি এখনও বিকল্পভাবে ডিপোটিকে একটি নির্ধারিত স্টপ হিসাবে মডেল করতে পারেন। স্টপের মডেলিং আপনার ড্রাইভারদের ডিপোতে ফিরে যাওয়ার রুট দেখতে এবং তাদের আগমনের আনুমানিক সময়ে দৃশ্যমানতা প্রদান করতে সক্ষম করে।

অবস্থান আপডেট কিভাবে কাজ করে

ফ্লিট ইঞ্জিনের সাথে সেরা পারফরম্যান্সের জন্য, এটিকে গাড়ির অবস্থান আপডেটের একটি স্ট্রীম সরবরাহ করুন৷ এই আপডেটগুলি প্রদান করার জন্য নিম্নলিখিত উপায়গুলির মধ্যে একটি ব্যবহার করুন:

  1. ড্রাইভার SDK - Android , iOS - সহজ বিকল্পটি ব্যবহার করুন৷
  2. কাস্টম কোড ব্যবহার করুন -- যদি অবস্থানগুলি আপনার ব্যাকএন্ডের মাধ্যমে রিলে করা হয়, অথবা আপনি যদি Android বা iOS ছাড়া অন্য ডিভাইসগুলি ব্যবহার করেন তাহলে দরকারী৷

আপনি গাড়ির অবস্থানের আপডেটগুলি যেভাবে প্রদান করেন না কেন, আপনার ব্যাকএন্ড ফ্লিট ইঞ্জিন আপডেট করার জন্য দায়ী যখন একটি ডেলিভারি গাড়ি স্টপে যাওয়ার পথে (ডিপো সহ) এবং যখন এটি একটি স্টপে পৌঁছায় । ফ্লিট ইঞ্জিন এই ইভেন্টগুলি স্বয়ংক্রিয়ভাবে সনাক্ত করে না।

যানবাহন স্টপ এবং ডেলিভারি অবস্থান

একটি গাড়ির স্টপ হল যেখানে একটি ডেলিভারি গাড়ি একটি চালানের কাজ বা অন্য কোনও কাজ সম্পন্ন করে। এটি হয় একটি অ্যাক্সেস পয়েন্ট যেমন একটি লোডিং ডক বা রাস্তা-ছাড়া অবস্থান।

ডেলিভারি লোকেশন হল সেই জায়গা যেখানে চালান ডেলিভারি করা হয় বা তোলা হয়। ডেলিভারি লোকেশনে পৌঁছাতে এবং যাওয়ার জন্য গাড়ির স্টপ থেকে কিছুটা হাঁটার প্রয়োজন হতে পারে।

উদাহরণস্বরূপ, যখন একজন চালক একটি মলের একটি দোকানে একটি চালান সরবরাহ করছেন, তখন ডেলিভারি গাড়িটি দোকানের নিকটতম প্রবেশদ্বারের কাছে মলের পার্কিং লটে থামে। এই গাড়ির স্টপ। ড্রাইভার তারপরে গাড়ির স্টপ থেকে মলের অবস্থানে চলে যায় যেখানে দোকানটি অবস্থিত। এই ডেলিভারি অবস্থান.

আপনার ব্যবহারকারীদের জন্য সর্বোত্তম চালান ট্র্যাকিং অভিজ্ঞতার জন্য, যানবাহনের স্টপগুলিতে কীভাবে চালানের কাজগুলি বরাদ্দ করা হয় তা বিবেচনা করুন এবং মনে রাখবেন যে চালানের কাজের জন্য অবশিষ্ট যানবাহনের স্টপের সংখ্যা ব্যবহারকারীকে তাদের চালানের অগ্রগতি দেখতে সহায়তা করার জন্য রিপোর্ট করা হয়৷

উদাহরণস্বরূপ, যদি একজন ড্রাইভার একটি একক অফিস বিল্ডিংয়ে অনেকগুলি ডেলিভারি করে থাকে, তবে সমস্ত ডেলিভারি কাজগুলি একটি একক গাড়ির স্টপে দেওয়ার কথা বিবেচনা করুন৷ যদি প্রতিটি ডেলিভারি টাস্ক তার নিজস্ব গাড়ির স্টপে বরাদ্দ করা হয়, তাহলে আপনার চালান ট্র্যাকিং অভিজ্ঞতা আপনার ব্যবহারকারীদের জন্য কম সহায়ক হবে কারণ ট্র্যাকিং শুধুমাত্র তখনই পাওয়া যায় যখন গাড়িটি তার গন্তব্যের আগে সীমিত সংখ্যক গাড়ি থামার মধ্যে থাকে। অল্প সময়ের মধ্যে অনেক যানবাহন স্টপ সম্পন্ন করা ব্যবহারকারীকে তাদের ডেলিভারির অগ্রগতি ট্র্যাক করতে ব্যবহার করার জন্য বেশি সময় দেয় না।

মোবাইল SDK ব্যবহার করুন

আপনি ড্রাইভার SDK-এ কোনো কল করার আগে, এটি চালু করতে ভুলবেন না।

ডেলিভারি ড্রাইভার API শুরু করুন

Driver SDK-এ Delivery Driver API আরম্ভ করার আগে, নেভিগেশন SDK আরম্ভ করা নিশ্চিত করুন। তারপরে নিম্নলিখিত উদাহরণে দেখানো হিসাবে ডেলিভারি ড্রাইভার API শুরু করুন:

static final String PROVIDER_ID = "provider-1234";
static final String VEHICLE_ID = "vehicle-8241890";

NavigationApi.getNavigator(
   this, // Activity.
   new NavigatorListener() {
     @Override
     public void onNavigatorReady(Navigator navigator) {
       DeliveryDriverApi.createInstance(DriverContext.builder(getApplication())
         .setNavigator(navigator)
         .setProviderId(PROVIDER_ID)
         .setVehicleId(VEHICLE_ID)
         .setAuthTokenFactory((context) -> "JWT") // AuthTokenFactory returns JWT for call context.
         .setRoadSnappedLocationProvider(NavigationApi.getRoadSnappedLocationProvider(getApplication()))
         .setNavigationTransactionRecorder(NavigationApi.getNavigationTransactionRecorder(getApplication()))
         .setStatusListener((statusLevel,statusCode,statusMsg) -> // Optional, surfaces polling errors.
             Log.d("TAG", String.format("New status update. %s, %s, %s", statusLevel, statusCode, statusMsg)))
         .build));
     }
     @Override
     public void onError(int errorCode) {
       Log.e("TAG", String.format("Error loading Navigator instance: %s", errorCode));
     }
   });

ব্যবহারের ক্ষেত্রে

এই বিভাগটি বর্ণনা করে যে কীভাবে ডেলিভারি এপিআই ব্যবহার করতে হয় সাধারণ ব্যবহারের ক্ষেত্রে মডেল করতে।

স্বতন্ত্র সত্তা শনাক্তকারী

REST কলগুলিতে ব্যবহৃত অনন্য সত্তা শনাক্তকারীর বিন্যাস এবং মান ফ্লিট ইঞ্জিনের কাছে অস্বচ্ছ। স্বয়ংক্রিয়-বর্ধিত আইডি ব্যবহার করা এড়িয়ে চলুন, এবং নিশ্চিত করুন যে শনাক্তকারীতে কোনো ব্যক্তিগতভাবে-শনাক্তযোগ্য তথ্য (PII), যেমন ড্রাইভারের ফোন নম্বর নেই।

একটি যানবাহন তৈরি করুন

আপনি ড্রাইভার SDK থেকে বা gRPC বা REST ব্যবহার করে একটি সার্ভার পরিবেশ থেকে একটি যান তৈরি করতে পারেন।

gRPC

একটি নতুন যান তৈরি করতে, আপনি ফ্লিট ইঞ্জিনে একটি CreateDeliveryVehicle কল করুন৷ নতুন ডেলিভারি গাড়ির বৈশিষ্ট্যগুলি সংজ্ঞায়িত করতে CreateDeliveryVehicleRequest অবজেক্টটি ব্যবহার করুন। মনে রাখবেন যে ব্যবহারকারী-নির্দিষ্ট আইডিগুলির জন্য API নির্দেশিকা অনুসারে Name ক্ষেত্রের জন্য নির্দিষ্ট করা যেকোনো মান উপেক্ষা করা হবে। গাড়ির আইডি সেট করতে আপনাকে DeliveryVehicleId ফিল্ড ব্যবহার করতে হবে।

একটি DeliveryVehicle তৈরি করার সময়, আপনি ঐচ্ছিকভাবে এই ক্ষেত্রগুলি নির্দিষ্ট করতে পারেন:

  • গুণাবলী
  • শেষ অবস্থান
  • টাইপ

অন্য কোনো ক্ষেত্র সেট করবেন না। আপনি যদি তা করেন, তাহলে ফ্লিট ইঞ্জিন একটি ত্রুটি ফেরত দেয় কারণ এই ক্ষেত্রগুলি হয় শুধুমাত্র পঠনযোগ্য অথবা শুধুমাত্র UpdateDeliveryVehicle এ একটি কলের মাধ্যমে আপডেট করা যেতে পারে।

কোনো ঐচ্ছিক ক্ষেত্র সেট না করেই একটি গাড়ি তৈরি করতে, আপনি CreateDeliveryVehicleRequestDeliveryVehicle ক্ষেত্রটিকে সেট না করে ছেড়ে দিতে পারেন।

নিম্নলিখিত উদাহরণ দেখায় কিভাবে একটি যান তৈরি করতে Java gRPC লাইব্রেরি ব্যবহার করতে হয়:

    static final String PROJECT_ID = "my-delivery-co-gcp-project";
    static final String VEHICLE_ID = "vehicle-8241890"; // Avoid auto-incrementing IDs.

    DeliveryServiceBlockingStub deliveryService =
      DeliveryServiceGrpc.newBlockingStub(channel);

    // Vehicle settings
    String parent = "providers/" + PROJECT_ID;
    DeliveryVehicle vehicle = DeliveryVehicle.newBuilder()
      .addAttributes(DeliveryVehicleAttribute.newBuilder()
        .setKey("route_number").setValue("1"))  // Opaque to the Fleet Engine
      .build();

    // Vehicle request
    CreateDeliveryVehicleRequest createVehicleRequest =
      CreateDeliveryVehicleRequest.newBuilder()  // No need for the header
          .setParent(parent)
          .setDeliveryVehicleId(VEHICLE_ID)     // Vehicle ID assigned by the Provider
          .setDeliveryVehicle(vehicle)
          .build();

    // Error handling
    // If Fleet Engine does not have vehicle with that ID and the credentials of the
    // requestor pass, the service creates the vehicle successfully.

    try {
      DeliveryVehicle createdVehicle =
        deliveryService.createDeliveryVehicle(createVehicleRequest);
    } catch (StatusRuntimeException e) {
      Status s = e.getStatus();
      switch (s.getCode()) {
         case ALREADY_EXISTS:
           break;
         case PERMISSION_DENIED:
           break;
      }
      return;
    }

বিশ্রাম

একটি সার্ভার পরিবেশ থেকে একটি যান তৈরি করতে, CreateDeliveryVehicle এ একটি HTTP REST কল করুন:

POST https://fleetengine.googleapis.com/v1/providers/<project_id>/deliveryVehicles?deliveryVehicleId=<id>

<id> আপনার বহরে একটি ডেলিভারি গাড়ির জন্য একটি অনন্য শনাক্তকারী

অনুরোধের শিরোনামে অবশ্যই Bearer <token> মান সহ একটি ক্ষেত্র অনুমোদন থাকতে হবে, যেখানে <token> একটি ফ্লিট ইঞ্জিন টোকেন ফ্যাক্টরি দ্বারা জারি করা একটি টোকেন

POST বডি DeliveryVehicle ভেহিক্যাল সত্তার প্রতিনিধিত্ব করে যা তৈরি করা হবে। আপনি নিম্নলিখিত ঐচ্ছিক ক্ষেত্র নির্দিষ্ট করতে পারেন:

  • গুণাবলী
  • শেষ অবস্থান
  • টাইপ

curl কমান্ডের উদাহরণ:

# Set $JWT, $PROJECT_ID, and $VEHICLE_ID in the local
# environment
curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/deliveryVehicles?deliveryVehicleId=${VEHICLE_ID}" \
  -H "Content-type: application/json" \
  -H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
  "attributes": [{"key": "model", "value": "sedan"}],
  "lastLocation": {"location": {"latitude": 12.1, "longitude": 14.5}}
}
EOM

ফ্লিট ইঞ্জিন ব্যবহারকারী-নির্দিষ্ট আইডিগুলির জন্য API নির্দেশিকা অনুসারে DeliveryVehicle সত্তার name ক্ষেত্রটিকে উপেক্ষা করে৷ অন্য কোনো ক্ষেত্র সেট করবেন না। আপনি যদি তা করেন, তাহলে ফ্লিট ইঞ্জিন একটি ত্রুটি ফেরত দেয় কারণ এই ক্ষেত্রগুলি হয় শুধুমাত্র পঠনযোগ্য অথবা শুধুমাত্র UpdateDeliveryVehicle এ একটি কল ব্যবহার করে আপডেট করা যেতে পারে।

কোনো ক্ষেত্র সেট না করে একটি যানবাহন তৈরি করতে, POST অনুরোধের মূল অংশটি খালি রাখুন। নতুন তৈরি গাড়িটি তারপর POST URL-এ deliveryVehicleId প্যারামিটার থেকে একটি গাড়ির আইডি বের করে।

curl কমান্ডের উদাহরণ:

# Set $JWT, $PROJECT_ID, and $VEHICLE_ID in the local
# environment
curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/deliveryVehicles?deliveryVehicleId=${VEHICLE_ID}" \
  -H "Content-type: application/json" \
  -H "Authorization: Bearer ${JWT}"

একটি চালান পিক আপ টাস্ক তৈরি করুন

আপনি ড্রাইভার SDK থেকে বা gRPC বা REST ব্যবহার করে একটি সার্ভার পরিবেশ থেকে একটি শিপমেন্ট পিকআপ টাস্ক তৈরি করতে পারেন৷

gRPC

একটি শিপমেন্ট পিকআপ টাস্ক তৈরি করতে কীভাবে জাভা জিআরপিসি লাইব্রেরি ব্যবহার করতে হয় তা নিম্নলিখিত উদাহরণটি দেখায়:

static final String PROJECT_ID = "my-delivery-co-gcp-project";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Task settings
String parent = "providers/" + PROJECT_ID;
Task task = Task.newBuilder()
  .setType(Task.Type.PICKUP)
  .setState(Task.State.OPEN)
  .setTrackingId("my-tracking-id")
  .setPlannedLocation(               // Grand Indonesia East Mall
    LocationInfo.newBuilder().setPoint(
      LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
  .setTaskDuration(
    Duration.newBuilder().setSeconds(2 * 60))
  .setTargetTimeWindow(
    TimeWindow.newBuilder()
      .setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
      .setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
  .addAttributes(TaskAttribute.newBuilder().setKey("foo").setStringValue("value"))
  .addAttributes(TaskAttribute.newBuilder().setKey("bar").setNumberValue(10))
  .addAttributes(TaskAttribute.newBuilder().setKey("baz").setBoolValue(false))
  .build();

// Task request
CreateTaskRequest createTaskRequest =
  CreateTaskRequest.newBuilder()  // No need for the header
      .setParent(parent)          // Avoid using auto-incrementing IDs for the taskId
      .setTaskId("task-8241890")  // Task ID assigned by the Provider
      .setTask(task)              // Initial state
      .build();

// Error handling
// If Fleet Engine does not have a task with that ID and the credentials of the
// requestor pass, the service creates the task successfully.

try {
  Task createdTask = deliveryService.createTask(createTaskRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
     case ALREADY_EXISTS:
       break;
     case PERMISSION_DENIED:
       break;
  }
  return;
}

বিশ্রাম

একটি সার্ভার পরিবেশ থেকে একটি শিপমেন্ট পিকআপ টাস্ক তৈরি করতে, CreateTask এ একটি HTTP REST কল করুন:

`POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>`

<id> টাস্কের জন্য একটি অনন্য শনাক্তকারী । এটি চালানের জন্য ট্র্যাকিং নম্বর হওয়া উচিত নয়। আপনার সিস্টেমে টাস্ক আইডি না থাকলে, আপনি একটি সার্বজনীন অনন্য শনাক্তকারী (UUID) তৈরি করতে পারেন।

অনুরোধের শিরোনামে অবশ্যই Bearer <token> মান সহ একটি ক্ষেত্র অনুমোদন থাকতে হবে, যেখানে <token> একটি ফ্লিট ইঞ্জিন টোকেন ফ্যাক্টরি দ্বারা জারি করা একটি টোকেন

অনুরোধের অংশে অবশ্যই একটি Task সত্তা থাকতে হবে:

  • প্রয়োজনীয় ক্ষেত্র:

    মাঠ মান
    টাইপ টাইপ করুন।পিকআপ
    অবস্থা রাজ্য.খুলুন
    ট্র্যাকিং আইডি একটি চালান ট্র্যাক করতে আপনি যে নম্বর বা শনাক্তকারী ব্যবহার করছেন৷
    পরিকল্পিত অবস্থান যে স্থানে কাজটি সম্পন্ন করতে হবে, এক্ষেত্রে শিপমেন্ট পিকআপের অবস্থান।
    কার্যকাল প্রত্যাশিত সময়, সেকেন্ডের মধ্যে, এটি পিকআপ অবস্থান থেকে চালান নিতে লাগে।

  • ঐচ্ছিক ক্ষেত্র:

    মাঠ মান
    টার্গেটটাইম উইন্ডো টাইম উইন্ডো যে সময়ে কাজটি সম্পন্ন করা উচিত। এটি রাউটিং আচরণকে প্রভাবিত করে না।
    গুণাবলী কাস্টম টাস্ক বৈশিষ্ট্যের একটি তালিকা। প্রতিটি বৈশিষ্ট্যের একটি অনন্য কী থাকতে হবে।

সত্তার অন্যান্য সমস্ত ক্ষেত্র সৃষ্টির জন্য উপেক্ষা করা হয়। ফ্লিট ইঞ্জিন একটি ব্যতিক্রম ছুঁড়ে দেয় যদি অনুরোধে একটি নির্ধারিত deliveryVehicleId অন্তর্ভুক্ত থাকে। আপনি UpdateDeliveryVehicleRequest ব্যবহার করে কাজ বরাদ্দ করেন। আরও তথ্যের জন্য, একটি যানবাহনে কার্য বরাদ্দ করুন এবং UpdateDeliveryVehicleRequest দেখুন।

curl কমান্ডের উদাহরণ:

# Set $JWT, $PROJECT_ID, $TRACKING_ID, and $TASK_ID in the local
# environment
curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?taskId=${TASK_ID}" \
  -H "Content-type: application/json" \
  -H "Authorization: Bearer ${JWT}" \
  --data-binary @- << EOM
{
  "type": "PICKUP",
  "state": "OPEN",
  "trackingId": "${TRACKING_ID}",
  "plannedLocation": {
     "point": {
        "latitude": -6.195139,
        "longitude": 106.820826
     }
  },
  "taskDuration": "90s",
  "targetTimeWindow": {
    "startTime": "2023-03-29T21:00:00Z",
    "endTime": "2023-03-29T23:00:00Z"
  }
}
EOM

একটি চালান ডেলিভারি টাস্ক তৈরি করুন

ড্রাইভার SDK থেকে বা gRPC বা REST ব্যবহার করে একটি সার্ভার পরিবেশ থেকে একটি শিপমেন্ট ডেলিভারি টাস্ক তৈরি করুন৷

gRPC

নিচের উদাহরণটি দেখায় কিভাবে জাভা gRPC লাইব্রেরি ব্যবহার করে একটি চালান ডেলিভারি টাস্ক তৈরি করতে হয়:

static final String PROJECT_ID = "my-delivery-co-gcp-project";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Task settings
String parent = "providers/" + PROJECT_ID;
Task task = Task.newBuilder()
  .setType(Task.Type.DELIVERY)
  .setState(Task.State.OPEN)
  .setTrackingId("my-tracking-id")
  .setPlannedLocation(               // Grand Indonesia East Mall
    LocationInfo.newBuilder().setPoint(
      LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
  .setTaskDuration(
    Duration.newBuilder().setSeconds(2 * 60))
  .setTargetTimeWindow(
    TimeWindow.newBuilder()
      .setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
      .setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
  .addAttributes(TaskAttribute.newBuilder().setKey("foo").setStringValue("value"))
  .addAttributes(TaskAttribute.newBuilder().setKey("bar").setNumberValue(10))
  .addAttributes(TaskAttribute.newBuilder().setKey("baz").setBoolValue(false))
  .build();

// Task request
CreateTaskRequest createTaskRequest =
  CreateTaskRequest.newBuilder()  // No need for the header
      .setParent(parent)          // Avoid using auto-incrementing IDs for the taskId
      .setTaskId("task-8241890")  // Task ID assigned by the Provider
      .setTask(task)              // Initial state
      .build();

// Error handling
// If Fleet Engine does not have task with that ID and the credentials of the
// requestor pass, the service creates the task successfully.

try {
  Task createdTask = deliveryService.createTask(createTaskRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
     case ALREADY_EXISTS:
       break;
     case PERMISSION_DENIED:
       break;
  }
  return;
}

বিশ্রাম

GRPC বা REST ব্যবহার করে সার্ভার পরিবেশ থেকে একটি শিপমেন্ট ডেলিভারি টাস্ক তৈরি করতে, CreateTask এ একটি HTTP REST কল করুন:

`POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>`

<id> টাস্কের জন্য একটি অনন্য শনাক্তকারী । এটি চালানের জন্য ট্র্যাকিং নম্বর হওয়া উচিত নয়। আপনার সিস্টেমে টাস্ক আইডি না থাকলে, আপনি একটি সার্বজনীন অনন্য শনাক্তকারী (UUID) তৈরি করতে পারেন।

অনুরোধের শিরোনামে অবশ্যই Bearer <token> মান সহ একটি ক্ষেত্র অনুমোদন থাকতে হবে, যেখানে <token> একটি ফ্লিট ইঞ্জিন টোকেন ফ্যাক্টরি দ্বারা জারি করা একটি টোকেন

অনুরোধের অংশে অবশ্যই একটি Task সত্তা থাকতে হবে:

  • প্রয়োজনীয় ক্ষেত্র:

    মাঠ মান
    টাইপ টাইপ. ডেলিভারি
    অবস্থা রাজ্য.খুলুন
    ট্র্যাকিং আইডি একটি চালান ট্র্যাক করতে আপনি যে নম্বর বা শনাক্তকারী ব্যবহার করছেন৷
    পরিকল্পিত অবস্থান যে অবস্থানে কাজটি সম্পন্ন করতে হবে, এই ক্ষেত্রে এই চালানের জন্য ডেলিভারি অবস্থান।
    কার্যকাল প্রত্যাশিত সময়, সেকেন্ডের মধ্যে, যেটি ডেলিভারি অবস্থানে চালানটি ছেড়ে দিতে লাগে।

  • ঐচ্ছিক ক্ষেত্র:

    মাঠ মান
    টার্গেটটাইম উইন্ডো টাইম উইন্ডো যে সময়ে কাজটি সম্পন্ন করা উচিত। এটি রাউটিং আচরণকে প্রভাবিত করে না।
    গুণাবলী কাস্টম টাস্ক বৈশিষ্ট্যের একটি তালিকা। প্রতিটি বৈশিষ্ট্যের একটি অনন্য কী থাকতে হবে।

সত্তার অন্যান্য সমস্ত ক্ষেত্র সৃষ্টির জন্য উপেক্ষা করা হয়। ফ্লিট ইঞ্জিন একটি ব্যতিক্রম ছুঁড়ে দেয় যদি অনুরোধে একটি নির্ধারিত ডেলিভারি ভেহিক্যালআইডি অন্তর্ভুক্ত থাকে। আপনি UpdateDeliveryVehicleRequest ব্যবহার করে কাজ বরাদ্দ করেন। আরও তথ্যের জন্য, একটি যানবাহনে কার্য বরাদ্দ করুন এবং UpdateDeliveryVehicleRequest দেখুন।

curl কমান্ডের উদাহরণ:

# Set $JWT, $PROJECT_ID, $TRACKING_ID, and $TASK_ID in the local
# environment
curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?taskId=${TASK_ID}" \
  -H "Content-type: application/json" \
  -H "Authorization: Bearer ${JWT}" \
  --data-binary @- << EOM
{
  "type": "DELIVERY",
  "state": "OPEN",
  "trackingId": "${TRACKING_ID}",
  "plannedLocation": {
     "point": {
        "latitude": -6.195139,
        "longitude": 106.820826
     }
  },
  "taskDuration": "90s",
  "targetTimeWindow": {
    "startTime": "2023-03-29T21:00:00Z",
    "endTime": "2023-03-29T23:00:00Z"
  }
}
EOM

ব্যাচ টাস্ক তৈরি করুন

আপনি gRPC বা REST ব্যবহার করে সার্ভার পরিবেশ থেকে কাজের একটি ব্যাচ তৈরি করতে পারেন।

gRPC

নিম্নলিখিত উদাহরণটি দেখায় কিভাবে জাভা gRPC লাইব্রেরি ব্যবহার করে দুটি কাজ তৈরি করতে হয়, একটি ডেলিভারির জন্য এবং একটি একই স্থানে পিকআপের জন্য:

static final String PROJECT_ID = "my-delivery-co-gcp-project";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Delivery Task settings
Task deliveryTask = Task.newBuilder()
  .setType(Task.Type.DELIVERY)
  .setState(Task.State.OPEN)
  .setTrackingId("delivery-tracking-id")
  .setPlannedLocation(               // Grand Indonesia East Mall
    LocationInfo.newBuilder().setPoint(
      LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
  .setTaskDuration(
    Duration.newBuilder().setSeconds(2 * 60))
  .build();

// Delivery Task request
CreateTaskRequest createDeliveryTaskRequest =
  CreateTaskRequest.newBuilder()  // No need for the header or parent fields
      .setTaskId("task-8312508")  // Task ID assigned by the Provider
      .setTask(deliveryTask)      // Initial state
      .build();

// Pickup Task settings
Task pickupTask = Task.newBuilder()
  .setType(Task.Type.PICKUP)
  .setState(Task.State.OPEN)
  .setTrackingId("pickup-tracking-id")
  .setPlannedLocation(               // Grand Indonesia East Mall
    LocationInfo.newBuilder().setPoint(
      LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
  .setTaskDuration(
    Duration.newBuilder().setSeconds(2 * 60))
  .build();

// Pickup Task request
CreateTaskRequest createPickupTaskRequest =
  CreateTaskRequest.newBuilder()  // No need for the header or parent fields
      .setTaskId("task-8241890")  // Task ID assigned by the Provider
      .setTask(pickupTask)        // Initial state
      .build();

// Batch Create Tasks settings
String parent = "providers/" + PROJECT_ID;

// Batch Create Tasks request
BatchCreateTasksRequest batchCreateTasksRequest =
  BatchCreateTasksRequest.newBuilder()
      .setParent(parent)
      .addRequests(createDeliveryTaskRequest)
      .addRequests(createPickupTaskRequest)
      .build();

// Error handling
// If Fleet Engine does not have any task(s) with these task ID(s) and the
// credentials of the requestor pass, the service creates the task(s)
// successfully.

try {
  BatchCreateTasksResponse createdTasks = deliveryService.batchCreateTasks(
    batchCreateTasksRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
     case ALREADY_EXISTS:
       break;
     case PERMISSION_DENIED:
       break;
  }
  return;
}

বিশ্রাম

একটি সার্ভার পরিবেশ থেকে একটি বিতরণ এবং একটি পিকআপ টাস্ক তৈরি করতে, BatchCreateTasks এ একটি HTTP REST কল করুন:

POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks:batchCreate

অনুরোধের শিরোনামে অবশ্যই Bearer <token> মান সহ একটি ক্ষেত্র অনুমোদন থাকতে হবে, যেখানে <token> একটি ফ্লিট ইঞ্জিন টোকেন ফ্যাক্টরি দ্বারা জারি করা একটি টোকেন

অনুরোধের অংশে অবশ্যই একটি BatchCreateTasksRequest সত্তা থাকতে হবে:

  • প্রয়োজনীয় ক্ষেত্র:

    মাঠ মান
    অনুরোধ অ্যারে< CreateTasksRequest >

  • ঐচ্ছিক ক্ষেত্র:

    মাঠ মান
    হেডার 'ডেলিভারি রিকোয়েস্ট হেডার'

requests প্রতিটি CreateTasksRequest এলিমেন্টকে অবশ্যই CreateTask অনুরোধের মতো একই বৈধতা নিয়ম পাস করতে হবে, parent এবং header ক্ষেত্রগুলি ঐচ্ছিক। সেট করা থাকলে, সেগুলি অবশ্যই শীর্ষ স্তরের BatchCreateTasksRequest এ তাদের নিজ নিজ ক্ষেত্রের সাথে অভিন্ন হতে হবে। একটি শিপমেন্ট পিকআপ টাস্ক তৈরি করুন এবং প্রতিটির জন্য নির্দিষ্ট বৈধতা নিয়মের জন্য একটি চালান ডেলিভারি টাস্ক তৈরি করুন দেখুন।

আরও তথ্যের জন্য BatchCreateTasks ( gRPC , REST ) ​​এর জন্য API রেফারেন্স ডকুমেন্টেশন দেখুন।

curl কমান্ডের উদাহরণ:

# Set $JWT, $PROJECT_ID, $DELIVERY_TRACKING_ID, $DELIVERY_TASK_ID,
# $PICKUP_TRACKING_ID, and $PICKUP_TASK_ID in the local environment
curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks:batchCreate" \
  -H "Content-type: application/json" \
  -H "Authorization: Bearer ${JWT}" \
  --data-binary @- << EOM
{
  "requests" : [
    {
      "taskId": "${DELIVERY_TASK_ID}",
      "task" : {
        "type": "DELIVERY",
        "state": "OPEN",
        "trackingId": "${DELIVERY_TRACKING_ID}",
        "plannedLocation": {
          "point": {
              "latitude": -6.195139,
              "longitude": 106.820826
          }
        },
        "taskDuration": "90s"
      }
    },
    {
      "taskId": "${PICKUP_TASK_ID}",
      "task" : {
        "type": "PICKUP",
        "state": "OPEN",
        "trackingId": "${PICKUP_TRACKING_ID}",
        "plannedLocation": {
          "point": {
              "latitude": -6.195139,
              "longitude": 106.820826
          }
        },
        "taskDuration": "90s"
      }
    }
  ]
}
EOM

নির্ধারিত অনুপলব্ধতা

আপনি ড্রাইভার SDK বা gRPC বা REST ব্যবহার করে সার্ভার পরিবেশ থেকে অনুপলব্ধতা নির্দেশ করে (উদাহরণস্বরূপ, ড্রাইভার ব্রেক বা গাড়ির রিফুয়েলিংয়ের জন্য) একটি টাস্ক তৈরি করতে পারেন। একটি নির্ধারিত অনুপলব্ধতা কাজ একটি ট্র্যাকিং আইডি অন্তর্ভুক্ত করা উচিত নয়. আপনি ঐচ্ছিকভাবে একটি অবস্থান প্রদান করতে পারেন.

gRPC

নিম্নলিখিত উদাহরণ দেখায় কিভাবে একটি অনুপলব্ধ কাজ তৈরি করতে Java gRPC লাইব্রেরি ব্যবহার করতে হয়:

    static final String PROJECT_ID = "my-delivery-co-gcp-project";

    DeliveryServiceBlockingStub deliveryService =
      DeliveryServiceGrpc.newBlockingStub(channel);

    // Task settings
    String parent = "providers/" + PROJECT_ID;
    Task task = Task.newBuilder()
      .setType(Task.Type.UNAVAILABLE)
      .setState(Task.State.OPEN)
      .setTaskDuration(
        Duration.newBuilder().setSeconds(60 * 60))  // 1hr break
      .build();

    // Task request
    CreateTaskRequest createTaskRequest =
      CreateTaskRequest.newBuilder()  // No need for the header
          .setParent(parent)          // Avoid using auto-incrementing IDs for the taskId
          .setTaskId("task-8241890")  // Task ID assigned by the Provider
          .setTask(task)              // Initial state
          .build();

    // Error handling
    // If Fleet Engine does not have task with that ID and the credentials of the
    // requestor pass, the service creates the task successfully.

    try {
      Task createdTask = deliveryService.createTask(createTaskRequest);
    } catch (StatusRuntimeException e) {
      Status s = e.getStatus();
      switch (s.getCode()) {
         case ALREADY_EXISTS:
           break;
         case PERMISSION_DENIED:
           break;
      }
      return;
    }

বিশ্রাম

একটি সার্ভার পরিবেশ থেকে একটি অনুপলব্ধ কাজ তৈরি করতে, CreateTask এ একটি HTTP REST কল করুন:

`POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>`

<id> টাস্কের জন্য একটি অনন্য শনাক্তকারী । আপনার সিস্টেমে টাস্ক আইডি না থাকলে, আপনি একটি সার্বজনীন অনন্য শনাক্তকারী (UUID) তৈরি করতে পারেন।

অনুরোধের শিরোনামে অবশ্যই Bearer <token> মান সহ একটি ক্ষেত্র অনুমোদন থাকতে হবে, যেখানে <token> একটি ফ্লিট ইঞ্জিন টোকেন ফ্যাক্টরি দ্বারা জারি করা একটি টোকেন

অনুরোধের অংশে অবশ্যই একটি Task সত্তা থাকতে হবে:

  • প্রয়োজনীয় ক্ষেত্র:

    মাঠ মান
    টাইপ প্রকার। অনুপলব্ধ
    অবস্থা রাজ্য.খুলুন
    কার্যকাল সেকেন্ডে বিরতির দৈর্ঘ্য।

  • ঐচ্ছিক ক্ষেত্র:

    মাঠ মান
    পরিকল্পিত অবস্থান বিরতির অবস্থান যদি এটি একটি নির্দিষ্ট স্থানে নিতে হবে।

সত্তার অন্যান্য সমস্ত ক্ষেত্র সৃষ্টির জন্য উপেক্ষা করা হয়। ফ্লিট ইঞ্জিন একটি ব্যতিক্রম ছুঁড়ে দেয় যদি অনুরোধে একটি নির্ধারিত ডেলিভারি ভেহিক্যালআইডি অন্তর্ভুক্ত থাকে। আপনি UpdateDeliveryVehicleRequest ব্যবহার করে কাজ বরাদ্দ করেন। আরও তথ্যের জন্য, একটি যানবাহনে কার্য বরাদ্দ করুন এবং UpdateDeliveryVehicleRequest দেখুন।

curl কমান্ডের উদাহরণ:

    # Set $JWT, $PROJECT_ID, and $TASK_ID in the local environment
    curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?taskId=${TASK_ID}" \
      -H "Content-type: application/json" \
      -H "Authorization: Bearer ${JWT}" \
      --data-binary @- << EOM
    {
      "type": "UNAVAILABLE",
      "state": "OPEN",
      "plannedLocation": {
         "point": {
            "latitude": -6.195139,
            "longitude": 106.820826
         }
      },
      "taskDuration": "300s"
    }
    EOM

নির্ধারিত স্টপ

আপনি হয় ড্রাইভার SDK থেকে বা gRPC বা REST ব্যবহার করে একটি সার্ভার পরিবেশ থেকে একটি নির্ধারিত স্টপ টাস্ক তৈরি করতে পারেন৷ একটি নির্ধারিত স্টপ টাস্ক একটি ট্র্যাকিং আইডি অন্তর্ভুক্ত নাও হতে পারে।

gRPC

নিম্নলিখিত উদাহরণটি একটি নির্ধারিত স্টপ টাস্ক তৈরি করতে জাভা gRPC লাইব্রেরি কীভাবে ব্যবহার করতে হয় তা দেখায়:

static final String PROJECT_ID = "my-delivery-co-gcp-project";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Task settings
String parent = "providers/" + PROJECT_ID;
Task task = Task.newBuilder()
  .setType(Task.Type.SCHEDULED_STOP)
  .setState(Task.State.OPEN)
  .setPlannedLocation(               // Grand Indonesia East Mall
    LocationInfo.newBuilder().setPoint(
      LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
  .setTaskDuration(
    Duration.newBuilder().setSeconds(2 * 60))
  .build();

// Task request
CreateTaskRequest createTaskRequest =
  CreateTaskRequest.newBuilder()  // No need for the header
      .setParent(parent)
      .setTaskId("task-8241890")  // Task ID assigned by the Provider
      .setTrip(task)              // Initial state
      .build();

// Error handling
// If Fleet Engine does not have task with that ID and the credentials of the
// requestor pass, the service creates the task successfully.

try {
  Task createdTask = deliveryService.createTask(createTaskRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
     case ALREADY_EXISTS:
       break;
     case PERMISSION_DENIED:
       break;
  }
  return;
}

বিশ্রাম

একটি সার্ভার পরিবেশ থেকে একটি নির্ধারিত স্টপ টাস্ক তৈরি করতে, CreateTask এ একটি HTTP REST কল করুন:

`POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>`

<id> টাস্কের জন্য একটি অনন্য শনাক্তকারী । আপনার সিস্টেমে টাস্ক আইডি না থাকলে, আপনি একটি সার্বজনীন অনন্য শনাক্তকারী (UUID) তৈরি করতে পারেন।

অনুরোধের শিরোনামে অবশ্যই Bearer <token> মান সহ একটি ক্ষেত্র অনুমোদন থাকতে হবে, যেখানে <token> একটি ফ্লিট ইঞ্জিন টোকেন ফ্যাক্টরি দ্বারা জারি করা একটি টোকেন

অনুরোধের অংশে অবশ্যই একটি Task সত্তা থাকতে হবে:

  • প্রয়োজনীয় ক্ষেত্র:

    মাঠ মান
    টাইপ টাইপ করুন।SCHEDULED_STOP
    অবস্থা রাজ্য.খুলুন
    পরিকল্পিত অবস্থান স্টপের অবস্থান।
    কার্যকাল সেকেন্ডে থামার প্রত্যাশিত দৈর্ঘ্য।

  • ঐচ্ছিক ক্ষেত্র:

    • কোনোটিই নয়

সত্তার অন্যান্য সমস্ত ক্ষেত্র সৃষ্টির জন্য উপেক্ষা করা হয়। ফ্লিট ইঞ্জিন একটি ব্যতিক্রম ছুঁড়ে দেয় যদি অনুরোধে একটি নির্ধারিত ডেলিভারি ভেহিক্যালআইডি অন্তর্ভুক্ত থাকে। আপনি UpdateDeliveryVehicleRequest ব্যবহার করে কাজ বরাদ্দ করেন। আরও তথ্যের জন্য, একটি যানবাহনে কার্য বরাদ্দ করুন এবং UpdateDeliveryVehicleRequest দেখুন।

curl কমান্ডের উদাহরণ:

    # Set $JWT, $PROJECT_ID, and $TASK_ID in the local environment
    curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?taskId=${TASK_ID}" \
      -H "Content-type: application/json" \
      -H "Authorization: Bearer ${JWT}" \
      --data-binary @- << EOM
    {
      "type": "SCHEDULED_STOP",
      "state": "OPEN",
      "plannedLocation": {
         "point": {
            "latitude": -6.195139,
            "longitude": 106.820826
         }
      },
      "taskDuration": "600s"
    }
    EOM

টার্গেট টাইম উইন্ডো সেট করুন

টার্গেট টাইম উইন্ডো হল টাইমউইন্ডো যার সময় টাস্কটি সম্পন্ন করা উচিত। উদাহরণস্বরূপ, আপনি যদি ডেলিভারি প্রাপকদের সাথে একটি ডেলিভারি টাইম উইন্ডো যোগাযোগ করেন, তাহলে আপনি এই টাইম উইন্ডোটি ক্যাপচার করতে টাস্ক টার্গেট টাইম উইন্ডো ব্যবহার করতে পারেন এবং ক্ষেত্রটি ব্যবহার করে সতর্কতা তৈরি করতে বা পোস্ট ট্রিপ পারফরম্যান্স বিশ্লেষণ করতে পারেন।

টার্গেট টাইম উইন্ডোতে শুরুর সময় এবং শেষের সময় থাকে এবং যেকোন টাস্ক টাইপের জন্য সেট করা যেতে পারে। টার্গেট টাইম উইন্ডো রাউটিং আচরণকে প্রভাবিত করে না।

gRPC

নিম্নলিখিত উদাহরণ দেখায় কিভাবে একটি টাস্ক টাইম উইন্ডো সেট করতে জাভা gRPC লাইব্রেরি ব্যবহার করতে হয়:

    static final String PROJECT_ID = "my-delivery-co-gcp-project";
    static final String TASK_ID = "task-8241890";

    DeliveryServiceBlockingStub deliveryService =
      DeliveryServiceGrpc.newBlockingStub(channel);

    // Task settings
    String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
    Task task = Task.newBuilder()
      .setName(taskName)
      .setTargetTimeWindow(
        TimeWindow.newBuilder()
          .setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
          .setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
      .build();

    // Task request
    UpdateTaskRequest updateTaskRequest =
      UpdateTaskRequest.newBuilder()  // No need for the header
          .setTask(task)
          .setUpdateMask(FieldMask.newBuilder().addPaths("targetTimeWindow"))
          .build();

    try {
      Task updatedTask = deliveryService.updateTask(updateTaskRequest);
    } catch (StatusRuntimeException e) {
      Status s = e.getStatus();
      switch (s.getCode()) {
         case NOT_FOUND:
           break;
         case PERMISSION_DENIED:
           break;
      }
      return;
    }

বিশ্রাম

HTTP ব্যবহার করে একটি টাস্ক টাইম উইন্ডো সেট করতে, UpdateTask কল করুন:

`PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=targetTimeWindow`

<id> টাস্কের জন্য একটি অনন্য শনাক্তকারী

অনুরোধের শিরোনামে অবশ্যই Bearer <token> মান সহ একটি ক্ষেত্র অনুমোদন থাকতে হবে, যেখানে <token> একটি ফ্লিট ইঞ্জিন টোকেন ফ্যাক্টরি দ্বারা জারি করা একটি টোকেন

অনুরোধের অংশে অবশ্যই একটি Task সত্তা থাকতে হবে:

  • প্রয়োজনীয় ক্ষেত্র:

    মাঠ মান
    টার্গেটটাইম উইন্ডো টাইম উইন্ডো যে সময়ে কাজটি সম্পন্ন করা উচিত। এই সেটিং রাউটিং আচরণ প্রভাবিত করে না

  • ঐচ্ছিক ক্ষেত্র:

    • কোনোটিই নয়

সত্তার অন্যান্য সমস্ত ক্ষেত্র আপডেটের জন্য উপেক্ষা করা হয়৷

curl কমান্ডের উদাহরণ:

# Set JWT, PROJECT_ID, and TASK_ID in the local environment
curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}?updateMask=targetTimeWindow" \
  -H "Content-type: application/json" \
  -H "Authorization: Bearer ${JWT}" \
  --data-binary @- << EOM
{
  "targetTimeWindow": {
    "startTime": "2023-03-29T21:00:00Z",
    "endTime": "2023-03-29T23:00:00Z"
  }
}
EOM

টাস্ক ট্র্যাকিং দৃশ্যমানতা কনফিগারেশন সেট করুন

শিপমেন্ট ট্র্যাকিং লাইব্রেরিতে ডেটার দৃশ্যমানতা এবং GetTaskTrackingInfo তে কল থেকে ফিরে আসা ডেটা টাস্কে একটি TaskTrackingViewConfig সেট করে প্রতি টাস্ক ভিত্তিতে নিয়ন্ত্রণ করা যেতে পারে। আরও তথ্যের জন্য সক্রিয় যানবাহন কার্যগুলি দেখুন। কাজটি তৈরি বা আপডেট করার সময় এটি করা যেতে পারে। নিম্নলিখিতটি এই কনফিগারেশনের সাথে টাস্ক আপডেট করার একটি উদাহরণ:

gRPC

নিম্নলিখিত উদাহরণ দেখায় কিভাবে টাস্ক ট্র্যাকিং ভিউ কনফিগারেশন সেট করতে Java gRPC লাইব্রেরি ব্যবহার করতে হয়:

static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TASK_ID = "task-8241890";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Task settings
String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
Task task = Task.newBuilder()
  .setName(taskName)
  .setTaskTrackingViewConfig(
    TaskTrackingViewConfig.newBuilder()
      .setRoutePolylinePointsVisibility(
        VisibilityOption.newBuilder().setRemainingStopCountThreshold(3))
      .setEstimatedArrivalTimeVisibility(
        VisibilityOption.newBuilder().remainingDrivingDistanceMetersThreshold(5000))
      .setRemainingStopCountVisibility(
        VisibilityOption.newBuilder().setNever(true)))
  .build();

// Task request
UpdateTaskRequest updateTaskRequest =
  UpdateTaskRequest.newBuilder()  // No need for the header
      .setTask(task)
      .setUpdateMask(FieldMask.newBuilder().addPaths("taskTrackingViewConfig"))
      .build();

try {
  Task updatedTask = deliveryService.updateTask(updateTaskRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
      case NOT_FOUND:
        break;
      case PERMISSION_DENIED:
        break;
  }
  return;
}

বিশ্রাম

HTTP ব্যবহার করে টাস্ক ট্র্যাকিং ভিউ কনফিগার উইন্ডো সেট করতে, UpdateTask কল করুন:

`PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=taskTrackingViewConfig`

<id> টাস্কের জন্য একটি অনন্য শনাক্তকারী

অনুরোধের শিরোনামে অবশ্যই Bearer <token> মান সহ একটি ক্ষেত্র অনুমোদন থাকতে হবে, যেখানে <token> একটি ফ্লিট ইঞ্জিন টোকেন ফ্যাক্টরি দ্বারা জারি করা একটি টোকেন

অনুরোধের অংশে অবশ্যই একটি Task সত্তা থাকতে হবে:

  • প্রয়োজনীয় ক্ষেত্র:

    মাঠ মান
    taskTrackingViewConfig টাস্ক ট্র্যাকিংয়ের কনফিগারেশন যা নির্দিষ্ট করে যে কোন পরিস্থিতিতে কোন ডেটা উপাদানগুলি শেষ ব্যবহারকারীদের কাছে দৃশ্যমান।

  • ঐচ্ছিক ক্ষেত্র:

    • কোনোটিই নয়

সত্তার অন্যান্য সমস্ত ক্ষেত্র আপডেটের জন্য উপেক্ষা করা হয়৷

curl কমান্ডের উদাহরণ:

# Set JWT, PROJECT_ID, and TASK_ID in the local environment
curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}?updateMask=taskTrackingViewConfig" \
  -H "Content-type: application/json" \
  -H "Authorization: Bearer ${JWT}" \
  --data-binary @- << EOM
{
  "taskTrackingViewConfig": {
    "routePolylinePointsVisibility": {
      "remainingStopCountThreshold": 3
    },
    "estimatedArrivalTimeVisibility": {
      "remainingDrivingDistanceMetersThreshold": 5000
    },
    "remainingStopCountVisibility": {
      "never": true
    }
  }
}
EOM

একটি গাড়ির জন্য কাজ বরাদ্দ করুন

আপনি গাড়ির জন্য টাস্ক অর্ডার আপডেট করার মাধ্যমে একটি ডেলিভারি গাড়িতে কাজগুলি বরাদ্দ করেন৷ একটি গাড়ির জন্য টাস্ক অর্ডার ডেলিভারি গাড়ির জন্য গাড়ির স্টপগুলির তালিকা দ্বারা নির্ধারিত হয় এবং আপনি প্রতিটি গাড়ির স্টপে এক বা একাধিক কাজ বরাদ্দ করতে পারেন। বিস্তারিত জানার জন্য, টাস্ক অর্ডার আপডেট করুন দেখুন।

একটি যানবাহন থেকে অন্য যানবাহন পরিবর্তন করতে, মূল কাজটি বন্ধ করুন এবং তারপরে এটি নতুন যানবাহন নির্ধারণের আগে পুনরায় তৈরি করুন। আপনি যদি ইতিমধ্যে অন্য কোনও গাড়ীতে নির্ধারিত কোনও কাজের জন্য টাস্ক অর্ডারিং আপডেট করেন তবে আপনি একটি ত্রুটি পাবেন।

টাস্ক অর্ডারিং আপডেট করুন

আপনি কোনও যানবাহনে নির্ধারিত অর্ডার কার্যগুলি আপডেট করতে পারেন ড্রাইভার এসডিকে বা সার্ভারের পরিবেশ থেকে সম্পাদিত হয়। জাতির শর্ত এড়াতে এবং সত্যের একক উত্স বজায় রাখতে উভয় পদ্ধতি ব্যবহার করবেন না।

আপনি যখন কোনও গাড়ির জন্য টাস্ক অর্ডার আপডেট করেন, এটি নিম্নলিখিতগুলিও করে:

  • গাড়িতে নতুন যে কাজগুলি বরাদ্দ করে।
  • আগে গাড়ীতে নির্ধারিত যে কোনও কাজ বন্ধ করে দেয় তবে আপডেট হওয়া ক্রমটিতে নেই।

একটি যানবাহন থেকে অন্য যানবাহন পরিবর্তন করতে, মূল কাজটি বন্ধ করুন এবং তারপরে এটি নতুন যানবাহন নির্ধারণের আগে পুনরায় তৈরি করুন। আপনি যদি ইতিমধ্যে অন্য কোনও গাড়ীতে নির্ধারিত কোনও কাজের জন্য টাস্ক অর্ডারিং আপডেট করেন তবে আপনি একটি ত্রুটি পাবেন।

আপনি যে কোনও সময় টাস্ক অর্ডারিং আপডেট করতে পারেন।

gRPC

নিম্নলিখিত উদাহরণটি দেখায় যে গাড়ির জন্য টাস্ক অর্ডার আপডেট করতে জাভা জিআরপিসি লাইব্রেরি কীভাবে ব্যবহার করবেন:

static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String VEHICLE_ID = "vehicle-8241890";
static final String TASK1_ID = "task-756390";
static final String TASK2_ID = "task-849263";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Vehicle settings
String vehicleName = "providers/" + PROJECT_ID + "/deliveryVehicles/" + VEHICLE_ID;
DeliveryVehicle deliveryVehicle = DeliveryVehicle.newBuilder()
    .addRemainingVehicleJourneySegments(VehicleJourneySegment.newBuilder()  // 1st stop
       .setStop(VehicleStop.newBuilder()
           .setPlannedLocation(LocationInfo.newBuilder()
               .setPoint(LatLng.newBuilder()
                   .setLatitude(37.7749)
                   .setLongitude(122.4194)))
           .addTasks(TaskInfo.newBuilder().setTaskId(TASK1_ID))
           .setState(VehicleStop.State.NEW)))
    .addRemainingVehicleJourneySegments(VehicleJourneySegment.newBuilder()  // 2nd stop
       .setStop(VehicleStop.newBuilder()
           .setPlannedLocation(LocationInfo.newBuilder()
               .setPoint(LatLng.newBuilder()
                   .setLatitude(37.3382)
                   .setLongitude(121.8863)))
           .addTasks(TaskInfo.newBuilder().setTaskId(TASK2_ID))
           .setState(VehicleStop.State.NEW)))
    .build();

// DeliveryVehicle request
UpdateDeliveryVehicleRequest updateDeliveryRequest =
  UpdateDeliveryVehicleRequest.newBuilder()  // No need for the header
      .setName(vehicleName)
      .setDeliveryVehicle(deliveryVehicle)
      .setUpdateMask(FieldMask.newBuilder().addPaths("remaining_vehicle_journey_segments"))
      .build();

try {
  DeliveryVehicle updatedDeliveryVehicle =
      deliveryService.updateDeliveryVehicle(updateDeliveryVehicleRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
     case NOT_FOUND:
       break;
     case PERMISSION_DENIED:
       break;
  }
  return;
}

বিশ্রাম

সার্ভার পরিবেশ থেকে কোনও গাড়ির জন্য টাস্ক অর্ডার আপডেট করতে, UpdateDeliveryVehicle একটি এইচটিটিপি রেস্ট কল করুন:

`PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/deliveryVehicles/<id>?updateMask=remainingVehicleJourneySegments`

<আইডি> আপনার বহরে একটি ডেলিভারি গাড়ির জন্য একটি অনন্য শনাক্তকারী যার জন্য আপনি টাস্ক অর্ডারটি আপডেট করতে চান। গাড়িটি তৈরি করার সময় এটি আপনি নির্দিষ্ট করেছেন।

অনুরোধ শিরোনামে অবশ্যই মান বহনকারী <টোকেন> এর সাথে একটি ক্ষেত্র অনুমোদন থাকতে হবে, যেখানে <টোকেন> একটি ফ্লিট ইঞ্জিন টোকেন কারখানা দ্বারা জারি করা একটি টোকেন

অনুরোধ বডিটিতে অবশ্যই একটি DeliveryVehicle সত্তা থাকতে হবে:

  • প্রয়োজনীয় ক্ষেত্র:

    মাঠ মান
    অবশিষ্টভিহিকেলজর্নিএসইগমেন্টস তাদের কার্য সম্পাদন করা উচিত সেই ক্রমে কাজের জন্য যাত্রা বিভাগগুলির একটি তালিকা। তালিকার প্রথম কাজটি প্রথমে কার্যকর করা হয়।
    অবশিষ্টটিভিকেলজর্নিজেসমেন্টস [i]। স্টপ তালিকায় আমি টাস্কের জন্য স্টপ।
    অবশিষ্টটিভিকেলজর্নিজিএসমেন্টস [i] .স্টপ.প্ল্যানডলোকেশন স্টপের জন্য পরিকল্পিত অবস্থান।
    অবশিষ্টটিভিকেলজর্নিজিএসমেন্টস [i] .stop.tasks এই যানবাহন স্টপে সম্পাদনা করা কার্যগুলির একটি তালিকা।
    অবশিষ্টাংশভিকেলজর্নিজিএসমেন্টস [i] .স্টপ.স্টেট স্টেট.নিউ

  • ঐচ্ছিক ক্ষেত্র:

    • কোনোটিই নয়

সত্তার অন্যান্য সমস্ত ক্ষেত্র আপডেটের জন্য উপেক্ষা করা হয়।

curl কমান্ডের উদাহরণ:

# Set JWT, PROJECT_ID, VEHICLE_ID, TASK1_ID, and TASK2_ID in the local
# environment
curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/deliveryVehicles/${VEHICLE_ID}?updateMask=remainingVehicleJourneySegments" \
  -H "Content-type: application/json" \
  -H "Authorization: Bearer ${JWT}" \
  --data-binary @- << EOM
{
  "remainingVehicleJourneySegments": [
    {
      "stop": {
        "state": "NEW",
        "plannedLocation": {
          "point": {
            "latitude": 37.7749,
            "longitude": -122.084061
          }
        },
        "tasks": [
          {
            "taskId": "${TASK1_ID}"
          }
        ]
      }
    },
    {
      "stop": {
        "state": "NEW",
        "plannedLocation": {
          "point": {
            "latitude": 37.3382,
            "longitude": 121.8863
          }
        },
        "tasks": [
          {
            "taskId": "${TASK2_ID}"
          }
        ]
      }
    }
  ]
}
EOM

যানবাহন পরবর্তী স্টপে enroute হয়

যখন কোনও যানবাহন স্টপ থেকে চলে যায় বা নেভিগেশন শুরু করে তখন ফ্লিট ইঞ্জিনকে অবশ্যই অবহিত করতে হবে। আপনি ড্রাইভার এসডিকে থেকে বা জিআরপিসি বা বিশ্রাম ব্যবহার করে কোনও সার্ভার পরিবেশ থেকে ফ্লিট ইঞ্জিনকে অবহিত করতে পারেন। জাতি পরিস্থিতি এড়াতে এবং সত্যের একক উত্স বজায় রাখতে উভয় পদ্ধতি ব্যবহার করবেন না।

gRPC

নিম্নলিখিত উদাহরণটি দেখায় যে কীভাবে জাভা জিআরপিসি লাইব্রেরি ব্যবহার করবেন তা ফ্লিট ইঞ্জিনকে অবহিত করতে যে কোনও যানবাহন তার পরবর্তী স্টপে উত্সাহিত করছে।

    static final String PROJECT_ID = "my-delivery-co-gcp-project";
    static final String VEHICLE_ID = "vehicle-8241890";

    DeliveryServiceBlockingStub deliveryService =
      DeliveryServiceGrpc.newBlockingStub(channel);

    // Vehicle settings
    DeliveryVehicle deliveryVehicle = DeliveryVehicle.newBuilder()
        // Next stop marked as ENROUTE
        .addRemainingVehicleJourneySegments(VehicleJourneySegment.newBuilder()  // 1st stop
           .setStop(VehicleStop.newBuilder()
               .setPlannedLocation(LocationInfo.newBuilder()
                   .setPoint(LatLng.newBuilder()
                       .setLatitude(37.7749)
                       .setLongitude(122.4194)))
               .addTasks(TaskInfo.newBuilder().setTaskId(TASK1_ID))
               .setState(VehicleStop.State.ENROUTE)))
        // All other stops marked as NEW
        .addRemainingVehicleJourneySegments(VehicleJourneySegment.newBuilder()  // 2nd stop
           .setStop(VehicleStop.newBuilder()
               .setPlannedLocation(LocationInfo.newBuilder()
                   .setPoint(LatLng.newBuilder()
                       .setLatitude(37.3382)
                       .setLongitude(121.8863)))
               .addTasks(TaskInfo.newBuilder().setTaskId(TASK2_ID))
               .setState(VehicleStop.State.NEW)))
        .build();

    // DeliveryVehicle request
    UpdateDeliveryVehicleRequest updateDeliveryVehicleRequest =
      UpdateDeliveryVehicleRequest.newBuilder()  // No need for the header
          .setName(vehicleName)
          .setDeliveryVehicle(deliveryVehicle)
          .setUpdateMask(FieldMask.newBuilder().addPaths("remaining_vehicle_journey_segments"))
          .build();

    try {
      DeliveryVehicle updatedDeliveryVehicle =
          deliveryService.updateDeliveryVehicle(updateDeliveryVehicleRequest);
    } catch (StatusRuntimeException e) {
      Status s = e.getStatus();
      switch (s.getCode()) {
         case NOT_FOUND:
           break;
         case PERMISSION_DENIED:
           break;
      }
      return;
    }

বিশ্রাম

ফ্লিট ইঞ্জিনকে অবহিত করার জন্য যে কোনও যানবাহন কোনও সার্ভার পরিবেশ থেকে তার পরবর্তী স্টপে পৌঁছেছে, UpdateDeliveryVehicle একটি এইচটিটিপি রেস্ট কল করুন:

`PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/deliveryVehicles/<id>?updateMask=remainingVehicleJourneySegments`

<আইডি> আপনার বহরে ডেলিভারি যানবাহনের জন্য একটি অনন্য শনাক্তকারী যার জন্য আপনি টাস্ক অর্ডারটি আপডেট করতে চান। গাড়িটি তৈরি করার সময় এটি আপনি নির্দিষ্ট করেছেন।

অনুরোধ শিরোনামে অবশ্যই মান বহনকারী <টোকেন> এর সাথে একটি ক্ষেত্র অনুমোদন থাকতে হবে, যেখানে <টোকেন> একটি ফ্লিট ইঞ্জিন টোকেন কারখানা দ্বারা জারি করা একটি টোকেন

অনুরোধ বডিটিতে অবশ্যই একটি DeliveryVehicle সত্তা থাকতে হবে:

  • প্রয়োজনীয় ক্ষেত্র:

    মাঠ মান
    অবশিষ্টভিহিকেলজর্নিএসইগমেন্টস তাদের রাজ্যগুলির সাথে অবশিষ্ট যানবাহনের তালিকা স্টেট.নিউ হিসাবে চিহ্নিত। তালিকার প্রথম স্টপটিতে অবশ্যই এর রাজ্যটিকে রাষ্ট্র হিসাবে চিহ্নিত করা উচিত en

  • ঐচ্ছিক ক্ষেত্র:

    • কোনোটিই নয়

সত্তার অন্যান্য সমস্ত ক্ষেত্র বিজ্ঞপ্তির জন্য উপেক্ষা করা হয়।

curl কমান্ডের উদাহরণ:

# Set JWT, PROJECT_ID, VEHICLE_ID, TASK1_ID, and TASK2_ID in the local
# environment
curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/deliveryVehicles/${VEHICLE_ID}?updateMask=remainingVehicleJourneySegments" \
  -H "Content-type: application/json" \
  -H "Authorization: Bearer ${JWT}" \
  --data-binary @- << EOM
{
  "remainingVehicleJourneySegments": [
    {
      "stop": {
        "state": "ENROUTE",
        "plannedLocation": {
          "point": {
            "latitude": 37.7749,
            "longitude": -122.084061
          }
        },
        "tasks": [
          {
            "taskId": "${TASK1_ID}"
          }
        ]
      }
    },
    {
      "stop": {
        "state": "NEW",
        "plannedLocation": {
          "point": {
            "latitude": 37.3382,
            "longitude": 121.8863
          }
        },
        "tasks": [
          {
            "taskId": "${TASK2_ID}"
          }
        ]
      }
    }
  ]
}
EOM

যানবাহন অবস্থান আপডেট করুন

গাড়ির অবস্থান আপডেট করার জন্য ড্রাইভার SDK ব্যবহার না করলে, আপনি গাড়ির অবস্থান সহ ফ্লিট ইঞ্জিনে সরাসরি কল করতে পারেন। যেকোনো সক্রিয় গাড়ির জন্য, ফ্লিট ইঞ্জিন প্রতি মিনিটে অন্তত একবার এবং প্রতি 5 সেকেন্ডে সর্বোচ্চ একবার একটি অবস্থান আপডেট আশা করে।

gRPC

নিম্নলিখিত উদাহরণটি দেখায় যে ফ্লিট ইঞ্জিনে কোনও গাড়ির অবস্থান আপডেট করতে জাভা জিআরপিসি লাইব্রেরি কীভাবে ব্যবহার করবেন:

static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String VEHICLE_ID = "vehicle-8241890";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Vehicle settings
String vehicleName = "providers/" + PROJECT_ID + "/deliveryVehicles/" + VEHICLE_ID;
DeliveryVehicle myDeliveryVehicle = DeliveryVehicle.newBuilder()
    .setLastLocation(DeliveryVehicleLocation.newBuilder()
        .setSupplementalLocation(LatLng.newBuilder()
            .setLatitude(37.3382)
            .setLongitude(121.8863))
        .setSupplementalLocationTime(now())
        .setSupplementalLocationSensor(DeliveryVehicleLocationSensor.CUSTOMER_SUPPLIED_LOCATION)
        .setSupplementalLocationAccuracy(DoubleValue.of(15.0)))  // Optional
    .build();

// DeliveryVehicle request
UpdateDeliveryVehicleRequest updateDeliveryVehicleRequest =
  UpdateDeliveryVehicleRequest.newBuilder()  // No need for the header
      .setName(vehicleName)
      .setDeliveryVehicle(myDeliveryVehicle)
      .setUpdateMask(FieldMask.newBuilder()
          .addPaths("last_location"))
      .build();

try {
  DeliveryVehicle updatedDeliveryVehicle =
      deliveryService.updateDeliveryVehicle(updateDeliveryVehicleRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
     case NOT_FOUND:
       break;
     case PERMISSION_DENIED:
       break;
  }
  return;
}

বিশ্রাম

HTTP বিশ্রাম ব্যবহার করে ফ্লিট ইঞ্জিনে কোনও গাড়ির অবস্থান আপডেট করতে, UpdateDeliveryVehicle একটি কল করুন:

`PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/deliveryVehicles/<id>?updateMask=last_location`

<আইডি> আপনার বহরে ডেলিভারি গাড়ির জন্য বা আপনি যে অবস্থানটি আপডেট করতে চান তার জন্য একটি অনন্য পরিচয়কারী । গাড়িটি তৈরি করার সময় এটি আপনি নির্দিষ্ট করেছেন।

অনুরোধ শিরোনামে অবশ্যই মান বহনকারী <টোকেন> এর সাথে একটি ক্ষেত্র অনুমোদন থাকতে হবে, যেখানে <টোকেন> একটি ফ্লিট ইঞ্জিন টোকেন কারখানা দ্বারা জারি করা একটি টোকেন

অনুরোধ বডিটিতে অবশ্যই একটি DeliveryVehicle সত্তা থাকতে হবে:

  • প্রয়োজনীয় ক্ষেত্র:

    মাঠ মান
    লাস্টলোকেশন.সপ্লেমেন্টালোকেশন গাড়ির অবস্থান।
    লাস্টলোকেশন.সুপ্লিমেন্টালোকেশনটাইম সর্বশেষ পরিচিত টাইমস্ট্যাম্প গাড়িটি এই স্থানে ছিল।
    লাস্টলোকেশন.সুপ্লিমেন্টালোকেশনসেন্সর গ্রাহক_সাপ্লাইড_লোকেশন দিয়ে পপুলেশন করা উচিত।

  • ঐচ্ছিক ক্ষেত্র:

    মাঠ মান
    লাস্টলোকেশন.সুপ্পেলমেন্টালোকেশনঅ্যাকচারি সরবরাহকৃত অবস্থানের নির্ভুলতা, মিটারে।

curl কমান্ডের উদাহরণ:

# Set JWT, PROJECT_ID, VEHICLE_ID, TASK1_ID, and TASK2_ID in the local
# environment
curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/deliveryVehicles/${VEHICLE_ID}?updateMask=remainingVehicleJourneySegments" \
  -H "Content-type: application/json" \
  -H "Authorization: Bearer ${JWT}" \
  --data-binary @- << EOM
{
  "lastLocation": {
    "supplementalLocation": {"latitude": 12.1, "longitude": 14.5},
    "supplementalLocationTime": "$(date -u --iso-8601=seconds)",
    "supplementalLocationSensor": "CUSTOMER_SUPPLIED_LOCATION",
    "supplementalLocationAccuracy": 15
  }
}
EOM

যানবাহন একটি স্টপ এ আসে

কোনও যানবাহন স্টপে উপস্থিত হলে ফ্লিট ইঞ্জিনকে অবশ্যই অবহিত করতে হবে। আপনি ড্রাইভার এসডিকে থেকে বা জিআরপিসি বা বিশ্রাম ব্যবহার করে কোনও সার্ভার পরিবেশ থেকে ফ্লিট ইঞ্জিনকে অবহিত করতে পারেন। জাতি পরিস্থিতি এড়াতে এবং সত্যের একক উত্স বজায় রাখতে উভয় পদ্ধতি ব্যবহার করবেন না।

gRPC

নিম্নলিখিত উদাহরণটি দেখায় যে কীভাবে জাভা জিআরপিসি লাইব্রেরি ব্যবহার করবেন ফ্লিট ইঞ্জিনকে অবহিত করতে যে কোনও যানবাহন স্টপে এসে পৌঁছেছে:

static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String VEHICLE_ID = "vehicle-8241890";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Vehicle settings
String vehicleName = "providers/" + PROJECT_ID + "/deliveryVehicles/" + VEHICLE_ID;
DeliveryVehicle deliveryVehicle = DeliveryVehicle.newBuilder()
    // Marking the arrival at stop.
    .addRemainingVehicleJourneySegments(VehicleJourneySegment.newBuilder()
       .setStop(VehicleStop.newBuilder()
           .setPlannedLocation(LocationInfo.newBuilder()
               .setPoint(LatLng.newBuilder()
                   .setLatitude(37.7749)
                   .setLongitude(122.4194)))
           .addTasks(TaskInfo.newBuilder().setTaskId(TASK1_ID))
           .setState(VehicleStop.State.ARRIVED)))
    // All other remaining stops marked as NEW.
    .addRemainingVehicleJourneySegments(VehicleJourneySegment.newBuilder()  // 2nd stop
       .setStop(VehicleStop.newBuilder()
           .setPlannedLocation(LocationInfo.newBuilder()
               .setPoint(LatLng.newBuilder()
                   .setLatitude(37.3382)
                   .setLongitude(121.8863)))
           .addTasks(TaskInfo.newBuilder().setTaskId(TASK2_ID))
           .setState(VehicleStop.State.NEW))) // Remaining stops must be NEW.
    .build();

// DeliveryVehicle request
UpdateDeliveryVehicleRequest updateDeliveryVehicleRequest =
  UpdateDeliveryVehicleRequest.newBuilder()  // No need for the header
      .setName(vehicleName)
      .setDeliveryVehicle(deliveryVehicle)
      .setUpdateMask(FieldMask.newBuilder()
          .addPaths("remaining_vehicle_journey_segments"))
      .build();

try {
  DeliveryVehicle updatedDeliveryVehicle =
      deliveryService.updateDeliveryVehicle(updateDeliveryVehicleRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
     case NOT_FOUND:
       break;
     case PERMISSION_DENIED:
       break;
  }
  return;
}

বিশ্রাম

সার্ভার পরিবেশ থেকে স্টপে কোনও যানবাহনের আগমন সম্পর্কে ফ্লিট ইঞ্জিনকে অবহিত করতে, UpdateDeliveryVehicle একটি এইচটিটিপি রেস্ট কল করুন:

`PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/deliveryVehicles/<id>?updateMask=remainingVehicleJourneySegments`

<আইডি> আপনার বহরে ডেলিভারি যানবাহনের জন্য একটি অনন্য শনাক্তকারী যার জন্য আপনি টাস্ক অর্ডারটি আপডেট করতে চান। গাড়িটি তৈরি করার সময় এটি আপনি নির্দিষ্ট করেছেন।

অনুরোধ শিরোনামে অবশ্যই মান বহনকারী <টোকেন> এর সাথে একটি ক্ষেত্র অনুমোদন থাকতে হবে, যেখানে <টোকেন> একটি ফ্লিট ইঞ্জিন টোকেন কারখানা দ্বারা জারি করা একটি টোকেন

অনুরোধ বডিটিতে অবশ্যই একটি DeliveryVehicle সত্তা থাকতে হবে:

  • প্রয়োজনীয় ক্ষেত্র:

    মাঠ মান
    অবশিষ্টভিহিকেলজর্নিএসইগমেন্টস আপনি যে স্টপটি তার রাজ্য হিসাবে রাজ্য হিসাবে সেট করে এসে পৌঁছেছেন, তার পরে অবশিষ্ট যানবাহনের একটি তালিকা তাদের রাজ্যগুলির সাথে স্টপস স্টপ রয়েছে যা তাদের রাজ্যগুলিকে রাজ্য.নিউ হিসাবে চিহ্নিত করে।

  • ঐচ্ছিক ক্ষেত্র:

    • কোনোটিই নয়

সত্তার অন্যান্য সমস্ত ক্ষেত্র আপডেটের জন্য উপেক্ষা করা হয়।

curl কমান্ডের উদাহরণ:

# Set JWT, PROJECT_ID, VEHICLE_ID, TASK1_ID, and TASK2_ID in the local
# environment
curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/deliveryVehicles/${VEHICLE_ID}?updateMask=remainingVehicleJourneySegments" \
  -H "Content-type: application/json" \
  -H "Authorization: Bearer ${JWT}" \
  --data-binary @- << EOM
{
  "remainingVehicleJourneySegments": [
    {
      "stop": {
        "state": "ARRIVED",
        "plannedLocation": {
          "point": {
            "latitude": 37.7749,
            "longitude": -122.084061
          }
        },
        "tasks": [
          {
            "taskId": "${TASK1_ID}"
          }
        ]
      }
    },
    {
      "stop": {
        "state": "NEW",
        "plannedLocation": {
          "point": {
            "latitude": 37.3382,
            "longitude": 121.8863
          }
        },
        "tasks": [
          {
            "taskId": "${TASK2_ID}"
          }
        ]
      }
    }
  ]
}
EOM

যানবাহন একটি স্টপ সম্পূর্ণ করে

কোনও যানবাহন স্টপ শেষ করার সময় ফ্লিট ইঞ্জিনকে অবশ্যই অবহিত করতে হবে। এর ফলে স্টপের সাথে সম্পর্কিত সমস্ত কাজ বন্ধ অবস্থায় সেট করা যায়। আপনি ড্রাইভার এসডিকে থেকে বা জিআরপিসি বা বিশ্রাম ব্যবহার করে কোনও সার্ভার পরিবেশ থেকে ফ্লিট ইঞ্জিনকে অবহিত করতে পারেন। জাতি পরিস্থিতি এড়াতে এবং সত্যের একক উত্স বজায় রাখতে উভয় পদ্ধতি ব্যবহার করবেন না।

gRPC

নিম্নলিখিত উদাহরণটি দেখায় যে কীভাবে জাভা জিআরপিসি লাইব্রেরি ব্যবহার করবেন তা ফ্লিট ইঞ্জিনকে অবহিত করতে যে কোনও যানবাহন স্টপ শেষ করেছে।

static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String VEHICLE_ID = "vehicle-8241890";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Vehicle settings
String vehicleName = "providers/" + PROJECT_ID + "/deliveryVehicles/" + VEHICLE_ID;
DeliveryVehicle deliveryVehicle = DeliveryVehicle.newBuilder()
    // This stop has been completed and is commented out to indicate it
    // should be removed from the list of vehicle journey segments.
    // .addRemainingVehicleJourneySegments(VehicleJourneySegment.newBuilder()
    //    .setStop(VehicleStop.newBuilder()
    //        .setPlannedLocation(LocationInfo.newBuilder()
    //            .setPoint(LatLng.newBuilder()
    //                .setLatitude(37.7749)
    //                .setLongitude(122.4194)))
    //        .addTasks(TaskInfo.newBuilder().setTaskId(TASK1_ID))
    //        .setState(VehicleStop.State.ARRIVED)))
    // All other remaining stops marked as NEW.
    // The next stop could be marked as ENROUTE if the vehicle has begun
    // its journey to the next stop.
    .addRemainingVehicleJourneySegments(VehicleJourneySegment.newBuilder()  // Next stop
       .setStop(VehicleStop.newBuilder()
           .setPlannedLocation(LocationInfo.newBuilder()
               .setPoint(LatLng.newBuilder()
                   .setLatitude(37.3382)
                   .setLongitude(121.8863)))
           .addTasks(TaskInfo.newBuilder().setTaskId(TASK2_ID))
           .setState(VehicleStop.State.NEW)))
    .build();

// DeliveryVehicle request
UpdateDeliveryVehicleRequest updateDeliveryVehicleRequest =
  UpdateDeliveryVehicleRequest.newBuilder()  // no need for the header
      .setName(vehicleName)
      .setDeliveryVehicle(deliveryVehicle)
      .setUpdateMask(FieldMask.newBuilder()
          .addPaths("remaining_vehicle_journey_segments"))
      .build();

try {
  DeliveryVehicle updatedDeliveryVehicle =
      deliveryService.updateDeliveryVehicle(updateDeliveryVehicleRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
     case NOT_FOUND:
       break;
     case PERMISSION_DENIED:
       break;
  }
  return;
}

বিশ্রাম

কোনও সার্ভার পরিবেশ থেকে স্টপ সমাপ্তির বিষয়ে ফ্লিট ইঞ্জিনকে অবহিত করতে, UpdateDeliveryVehicle একটি এইচটিটিপি রেস্ট কল করুন:

`PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/deliveryVehicles/<id>?updateMask=remaining_vehicle_journey_segments`

<আইডি> আপনার বহরে ডেলিভারি যানবাহনের জন্য একটি অনন্য শনাক্তকারী যার জন্য আপনি টাস্ক অর্ডারটি আপডেট করতে চান। গাড়িটি তৈরি করার সময় এটি আপনি নির্দিষ্ট করেছেন।

অনুরোধ শিরোনামে অবশ্যই মান বহনকারী <টোকেন> এর সাথে একটি ক্ষেত্র অনুমোদন থাকতে হবে, যেখানে <টোকেন> একটি ফ্লিট ইঞ্জিন টোকেন কারখানা দ্বারা জারি করা একটি টোকেন

অনুরোধ বডিটিতে অবশ্যই একটি DeliveryVehicle সত্তা থাকতে হবে:

  • প্রয়োজনীয় ক্ষেত্র:

    মাঠ মান
    remain_vehicle_journey_segments আপনি যে স্টপটি শেষ করেছেন তা আর বাকি যানবাহনের স্টপের তালিকায় থাকা উচিত নয়।

  • ঐচ্ছিক ক্ষেত্র:

    • কোনোটিই নয়

সত্তার অন্যান্য সমস্ত ক্ষেত্র আপডেটের জন্য উপেক্ষা করা হয়।

curl কমান্ডের উদাহরণ:

    # Set JWT, PROJECT_ID, VEHICLE_ID, TASK1_ID, and TASK2_ID in the local
    # environment
    curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/deliveryVehicles/${VEHICLE_ID}?updateMask=remainingVehicleJourneySegments" \
      -H "Content-type: application/json" \
      -H "Authorization: Bearer ${JWT}" \
      --data-binary @- << EOM
    {
      "remainingVehicleJourneySegments": [
        {
          "stop": {
            "state": "NEW",
            "plannedLocation": {
              "point": {
                "latitude": 37.3382,
                "longitude": 121.8863
              }
            },
            "tasks": [
              {
                "taskId": "${TASK2_ID}"
              }
            ]
          }
        }
      ]
    }
    EOM

একটি টাস্ক আপডেট করুন

বেশিরভাগ টাস্ক ক্ষেত্রগুলি অপরিবর্তনীয়। তবে আপনি টাস্ক সত্তা সরাসরি আপডেট করে রাষ্ট্র, কার্য ফলাফল, কার্য ফলাফলের সময়, টাস্ক ফলাফলের অবস্থান এবং বৈশিষ্ট্যগুলি সংশোধন করতে পারেন। উদাহরণস্বরূপ, কোনও যানবাহনে কোনও কাজ অর্পণ করা হয়নি এমন ক্ষেত্রে আপনি সরাসরি রাজ্য আপডেট করে টাস্কটি বন্ধ করতে পারেন।

gRPC

এটি জিআরপিসির মাধ্যমে কোনও কাজ আপডেট করার উদাহরণ।

বিশ্রাম

এটি বিশ্রামের মাধ্যমে কোনও কাজ আপডেট করার উদাহরণ।

একটি টাস্ক বন্ধ করুন

কোনও যানবাহনে নির্ধারিত একটি কাজ বন্ধ করার জন্য, হয় ফ্লিট ইঞ্জিনকে অবহিত করুন যে যানবাহনটি যেখানে টাস্কটি ঘটে সেখানে স্টপটি সম্পন্ন করেছে বা যানবাহন স্টপগুলির তালিকা থেকে এটি সরিয়ে ফেলেছে। এটি করার জন্য আপনি কোনও গাড়ির জন্য টাস্ক অর্ডার আপডেট করার সময় অবশিষ্ট যানবাহনের স্টপগুলির তালিকা সেট করতে পারেন।

যদি কোনও কাজ এখনও কোনও যানবাহন বরাদ্দ না করা হয় এবং এটি বন্ধ করা প্রয়োজন হয়, তবে টাস্কটি একটি বদ্ধ অবস্থায় আপডেট করুন। তবে আপনি কোনও বদ্ধ কাজ আবার খুলতে পারবেন না।

কোনও কাজ বন্ধ করা সাফল্য বা ব্যর্থতা নির্দেশ করে না। এটি ইঙ্গিত দেয় যে কাজটি আর অগ্রগতিতে বিবেচনা করা হয় না। ফ্লিট ট্র্যাকিংয়ের জন্য, কোনও কাজের প্রকৃত ফলাফলটি নির্দেশ করা গুরুত্বপূর্ণ যাতে কোনও বিতরণ ফলাফল দেখানো যায়।

gRPC

static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TASK_ID = "task-8241890";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Task settings
String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
Task task = Task.newBuilder()
  .setName(taskName)
  .setState(Task.State.CLOSED) // You can only directly CLOSE a
  .build();                    // task that is NOT assigned to a vehicle.

// Task request
UpdateTaskRequest updateTaskRequest =
  UpdateTaskRequest.newBuilder()  // No need for the header
      .setTask(task)
      .setUpdateMask(FieldMask.newBuilder().addPaths("state"))
      .build();

try {
  Task updatedTask = deliveryService.updateTask(updateTaskRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
     case NOT_FOUND:
       break;
     case PERMISSION_DENIED:
       break;
  }
  return;
}

বিশ্রাম

কোনও সার্ভার পরিবেশ থেকে বন্ধ হিসাবে কোনও কাজ চিহ্নিত করতে, UpdateTask একটি এইচটিটিপি রেস্ট কল করুন:

`PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=state`

<আইডি> টাস্কের জন্য একটি অনন্য শনাক্তকারী

আপনার অনুরোধ শিরোনামে অবশ্যই মান বহনকারী <টোকেন> এর সাথে একটি ক্ষেত্র অনুমোদন থাকতে হবে, যেখানে <টোকেন> একটি ফ্লিট ইঞ্জিন টোকেন কারখানা দ্বারা জারি করা একটি টোকেন

আপনাকে অবশ্যই অনুরোধের বডিটিতে একটি Task সত্তা অন্তর্ভুক্ত করতে হবে:

  • প্রয়োজনীয় ক্ষেত্র:

    মাঠ মান
    অবস্থা রাষ্ট্র.ক্লোজড

  • ঐচ্ছিক ক্ষেত্র:

    মাঠ মান
    টাস্কআউটকাম ফলাফল.সুসেড বা ফলাফল.ফেইলড
    টাস্কআউটকোমটাইম সময় যখন কাজ শেষ হয়েছিল।
    টাস্কআউটকোমলোকেশন যেখানে টাস্কটি সম্পন্ন হয়েছিল সেখানে অবস্থান। ফ্লিট ইঞ্জিন সরবরাহকারীর দ্বারা ম্যানুয়ালি ওভাররাইড না হলে এটি শেষ গাড়ির অবস্থানে ডিফল্ট করে।

সত্তার অন্যান্য সমস্ত ক্ষেত্র আপডেটের জন্য উপেক্ষা করা হয়।

curl কমান্ডের উদাহরণ:

    # Set JWT, PROJECT_ID, and TASK_ID in the local environment
    curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}?updateMask=state,taskOutcome,taskOutcomeTime" \
      -H "Content-type: application/json" \
      -H "Authorization: Bearer ${JWT}" \
      --data-binary @- << EOM
    {
      "state": "CLOSED",
      "taskOutcome": "SUCCEEDED",
      "taskOutcomeTime": "$(date -u --iso-8601=seconds)"
    }
    EOM

কার্য ফলাফল এবং ফলাফলের অবস্থান সেট করুন

কোনও কার্য বন্ধ করা সাফল্য বা ব্যর্থতা নির্দেশ করে না, এটি ইঙ্গিত দেয় যে কাজটি আর অগ্রগতিতে বিবেচনা করা হয় না। ফ্লিট ট্র্যাকিংয়ের জন্য, কোনও কাজের প্রকৃত ফলাফলটি নির্দেশ করা গুরুত্বপূর্ণ যাতে কোনও বিতরণ ফলাফল প্রদর্শিত হতে পারে এবং পরিষেবাগুলির জন্য যথাযথ বিলিং রয়েছে। একবার সেট হয়ে গেলে আপনি টাস্কের ফলাফলটি পরিবর্তন করতে পারবেন না। তবে আপনি টাস্কের ফলাফলের সময় এবং টাস্ক ফলাফলের অবস্থানটি সেট করার পরে সংশোধন করতে পারেন।

বদ্ধ অবস্থায় থাকা কাজগুলি তাদের ফলাফল সফল বা ব্যর্থ হওয়ার জন্য সেট করতে পারে। ফ্লিট ইঞ্জিন সফলতার একটি রাষ্ট্রের সাথে কেবল বিতরণ কার্য চার্জ করে।

কোনও টাস্কের ফলাফল চিহ্নিত করার সময়, ফ্লিট ইঞ্জিন স্বয়ংক্রিয়ভাবে সর্বশেষ পরিচিত গাড়ির অবস্থানের সাথে টাস্ক ফলাফলের অবস্থানটি পূরণ করে। আপনি এই আচরণটি ওভাররাইড করতে পারেন।

gRPC

আপনি যখন ফলাফলটি সেট করেন তখন আপনার কার্য ফলাফলের অবস্থানটি সেট করার বিকল্প রয়েছে। অবস্থান নির্ধারণ ফ্লিট ইঞ্জিনকে এটিকে শেষ গাড়ির অবস্থানের ডিফল্টে সেট করতে বাধা দেয়। আপনি পরবর্তী সময়ে টাস্ক ফলাফলের অবস্থানের ফ্লিট ইঞ্জিন সেট ওভাররাইট করতে পারেন। ফ্লিট ইঞ্জিন আপনি যে কোনও কার্য ফলাফলের অবস্থান সরবরাহ করেন তা কখনই ওভাররাইট করে না। আপনি কোনও টাস্কের জন্য কোনও টাস্ক ফলাফলের অবস্থান সেট করতে পারবেন না যার কোনও টাস্ক ফলাফল সেট নেই। আপনি একই অনুরোধের মধ্যে টাস্ক ফলাফল এবং টাস্ক ফলাফলের অবস্থান উভয়ই সেট করতে পারেন।

নিম্নলিখিত উদাহরণটি দেখায় যে কীভাবে জাভা জিআরপিসি লাইব্রেরি ব্যবহার করতে হয় সফল হওয়ার জন্য কোনও কার্য ফলাফল নির্ধারণ করতে এবং যেখানে টাস্কটি সম্পন্ন হয়েছিল সেখানে অবস্থানটি সেট করতে:

static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TASK_ID = "task-8241890";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Task settings
String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
Task task = Task.newBuilder()
  .setName(taskName)
  .setTaskOutcome(TaskOutcome.SUCCEEDED)
  .setTaskOutcomeTime(now())
  .setTaskOutcomeLocation(               // Grand Indonesia East Mall
    LocationInfo.newBuilder().setPoint(
      LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
  .build();

// Task request
UpdateTaskRequest updateTaskRequest =
  UpdateTaskRequest.newBuilder()  // No need for the header
      .setTask(task)
      .setUpdateMask(FieldMask.newBuilder().addPaths("task_outcome", "task_outcome_time", "task_outcome_location"))
      .build();

try {
  Task updatedTask = deliveryService.updateTask(updateTaskRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
     case NOT_FOUND:
       break;
     case PERMISSION_DENIED:
       break;
  }
  return;
}

বিশ্রাম

কোনও সার্ভার পরিবেশ থেকে সম্পূর্ণ হিসাবে কোনও কাজ চিহ্নিত করতে, UpdateTask একটি এইচটিটিপি রেস্ট কল করুন:

`PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=taskOutcome,taskOutcomeTime,taskOutcomeLocation`

<আইডি> টাস্কের জন্য একটি অনন্য শনাক্তকারী

অনুরোধ শিরোনামে অবশ্যই মান বহনকারী <টোকেন> এর সাথে একটি ক্ষেত্র অনুমোদন থাকতে হবে, যেখানে <টোকেন> একটি ফ্লিট ইঞ্জিন টোকেন কারখানা দ্বারা জারি করা একটি টোকেন

অনুরোধ বডিটিতে অবশ্যই একটি Task সত্তা থাকতে হবে:

  • প্রয়োজনীয় ক্ষেত্র:

    মাঠ মান
    টাস্কআউটকাম ফলাফল.সুসেড বা ফলাফল.ফেইলড

  • ঐচ্ছিক ক্ষেত্র:

    মাঠ মান
    টাস্কআউটকোমলোকেশন যেখানে টাস্কটি সম্পন্ন হয়েছিল সেখানে অবস্থান। যদি সেট না করা হয় তবে ফ্লিট ইঞ্জিন এটিকে শেষ গাড়ির স্থানে ডিফল্ট করে।
    টাস্কআউটকোমটাইম টাস্কটি শেষ হওয়ার সময় টাইমস্ট্যাম্প।

সত্তার অন্যান্য সমস্ত ক্ষেত্র আপডেটের জন্য উপেক্ষা করা হয়।

curl কমান্ডের উদাহরণ:

# Set JWT, PROJECT_ID, and TASK_ID in the local environment
curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}?updateMask=taskOutcome,taskOutcomeTime,taskOutcomeLocation" \
  -H "Content-type: application/json" \
  -H "Authorization: Bearer ${JWT}" \
  --data-binary @- << EOM
{
  "taskOutcome": "SUCCEEDED",
  "taskOutcomeTime": "$(date -u --iso-8601=seconds)",
  "taskOutcomeLocation": {
    "point": {
      "latitude": -6.195139,
      "longitude": 106.820826
    }
  }
}
EOM

একটি চালান পুনরায়

একবার চালানের কাজ তৈরি হয়ে গেলে, এর পরিকল্পিত অবস্থান পরিবর্তন করা যায় না। একটি চালান পুনর্নির্মাণের জন্য, কোনও ফলাফল নির্ধারণ না করে চালানের কাজটি বন্ধ করুন এবং তারপরে আপডেট হওয়া পরিকল্পিত অবস্থানটি সহ একটি নতুন টাস্ক তৈরি করুন। নতুন টাস্ক তৈরি করার পরে, একই গাড়িতে টাস্কটি নির্ধারণ করুন। আরও তথ্যের জন্য, চালানের কাজটি বন্ধ করুন এবং কাজটি নির্ধারণ করুন

ফিডার এবং বিতরণ যানবাহন ব্যবহার করুন

আপনি যদি সারা দিন ধরে ডেলিভারি যানবাহনে চালান পরিবহনের জন্য ফিডার যানবাহন ব্যবহার করেন তবে ডেলিভারি গাড়ির জন্য নির্ধারিত স্টপ টাস্ক হিসাবে চালানের স্থানান্তরকে মডেল করুন। সঠিক অবস্থানের ট্র্যাকিং নিশ্চিত করতে, কেবলমাত্র স্থানান্তরিত চালানের জন্য এটি সরবরাহের গাড়িতে লোড হওয়ার পরে একটি চালান বিতরণ টাস্ক বরাদ্দ করুন। আরও তথ্যের জন্য, নির্ধারিত স্টপ দেখুন।

চালানের স্থিতি এবং অন্যান্য মেটা তথ্য সংরক্ষণ করুন

যখন কোনও চালানের কাজ শেষ হয়, তখন টাস্ক স্টেট এবং ফলাফলটি টাস্কে রেকর্ড করা হয়। তবে আপনি চালানের জন্য নির্দিষ্ট অন্যান্য মেটা তথ্য আপডেট করতে চাইতে পারেন। আপনি ফ্লিট ইঞ্জিন পরিষেবার বাইরে উল্লেখ করতে পারেন এমন অন্যান্য মেটা তথ্য সংরক্ষণ করতে, কোনও বাহ্যিক টেবিলের কী হিসাবে টাস্কের সাথে সম্পর্কিত ট্র্যাকিং_আইডি ব্যবহার করুন।

আরও তথ্যের জন্য, একটি কাজের জীবন দেখুন।

একটি যানবাহন দেখুন

আপনি ড্রাইভার এসডিকে , বা জিআরপিসি বা বিশ্রাম ব্যবহার করে কোনও সার্ভার পরিবেশ থেকে কোনও যানবাহন সন্ধান করতে পারেন।

gRPC

নিম্নলিখিত উদাহরণটি দেখায় যে কীভাবে কোনও যানবাহন সন্ধান করতে জাভা জিআরপিসি লাইব্রেরি ব্যবহার করবেন:

static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String VEHICLE_ID = "vehicle-8241890";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Vehicle request
String name = "providers/" + PROJECT_ID + "/deliveryVehicles/" + VEHICLE_ID;
GetDeliveryVehicleRequest getVehicleRequest = GetDeliveryVehicleRequest.newBuilder()  // No need for the header
    .setName(name)
    .build();

try {
  DeliveryVehicle vehicle = deliveryService.getDeliveryVehicle(getVehicleRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
     case NOT_FOUND:
       break;
     case PERMISSION_DENIED:
       break;
  }
  return;
}

বিশ্রাম

কোনও সার্ভার পরিবেশ থেকে কোনও যানবাহন সন্ধান করতে, GetVehicle এ একটি HTTP বিশ্রাম কল করুন:

`GET https://fleetengine.googleapis.com/v1/providers/<project_id>/deliveryVehicles/<vehicleId>`

<আইডি> টাস্কের জন্য একটি অনন্য শনাক্তকারী

<যানবাহনআইডি> সন্ধান করার জন্য গাড়ির আইডি।

অনুরোধ শিরোনামে অবশ্যই মান বহনকারী <টোকেন> এর সাথে একটি ক্ষেত্র অনুমোদন থাকতে হবে, যেখানে <টোকেন> একটি ফ্লিট ইঞ্জিন টোকেন কারখানা দ্বারা জারি করা একটি টোকেন

অনুরোধের বডি খালি হতে হবে।

যদি অনুসন্ধানটি সফল হয় তবে প্রতিক্রিয়া বডিতে একটি যানবাহন সত্তা রয়েছে।

curl কমান্ডের উদাহরণ:

# Set JWT, PROJECT_ID, and VEHICLE_ID in the local environment
curl -H "Authorization: Bearer ${JWT}" \
  "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/deliveryVehicles/${VEHICLE_ID}"

একটি কাজ দেখুন

আপনি জিআরপিসি বা বিশ্রাম ব্যবহার করে কোনও সার্ভার পরিবেশ থেকে কোনও কাজ সন্ধান করতে পারেন। ড্রাইভার এসডিকে কোনও কাজ সন্ধানের পক্ষে সমর্থন করে না।

gRPC

নিম্নলিখিত উদাহরণটি দেখায় যে কীভাবে কোনও কাজ সন্ধান করতে জাভা জিআরপিসি লাইব্রেরি ব্যবহার করবেন:

static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TASK_ID = "task-8597549";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Task request
String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
GetTaskRequest getTaskRequest = GetTaskRequest.newBuilder()  // No need for the header
    .setName(taskName)
    .build();

try {
  Task task = deliveryService.getTask(getTaskRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
     case NOT_FOUND:
       break;

     case PERMISSION_DENIED:
       break;
  }
  return;
}

বিশ্রাম

কোনও সার্ভার পরিবেশ থেকে কোনও কাজ সন্ধান করতে, GetTask এ একটি HTTP বিশ্রাম কল করুন:

`GET https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<taskId>`

<আইডি> টাস্কের জন্য একটি অনন্য শনাক্তকারী

<টাস্কিড> হ'ল কাজের আইডি।

অনুরোধ শিরোনামে অবশ্যই মান বহনকারী <টোকেন> এর সাথে একটি ক্ষেত্র অনুমোদন থাকতে হবে, যেখানে <টোকেন> একটি ফ্লিট ইঞ্জিন টোকেন কারখানা দ্বারা জারি করা একটি টোকেন

অনুরোধের বডি খালি হতে হবে।

যদি চেহারাটি সফল হয় তবে প্রতিক্রিয়া বডিতে একটি টাস্ক সত্তা রয়েছে।

curl কমান্ডের উদাহরণ:

    # Set JWT, PROJECT_ID, and TASK_ID in the local environment
    curl -H "Authorization: Bearer ${JWT}" \
      "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}"

এর ট্র্যাকিং আইডি দ্বারা চালানের টাস্ক তথ্য সন্ধান করুন

আপনি নিম্নলিখিত উপায়ে ফ্লিট টাস্ক তথ্য সন্ধান করতে পারেন, যার প্রত্যেকটির পৃথক উদ্দেশ্য রয়েছে:

  • একটি টাস্ক আইডি দ্বারা : ফ্লিট অপারেটরদের মতো ব্যবহারকারীরা ব্যবহার করেছেন যাদের টাস্ক ডেটার সম্পূর্ণ দৃশ্যে অ্যাক্সেস রয়েছে।
  • একটি ট্র্যাকিং আইডি দ্বারা : আপনার ক্লায়েন্ট সফ্টওয়্যার দ্বারা শেষ ব্যবহারকারীকে সীমিত তথ্য সরবরাহ করতে ব্যবহৃত হয়, যেমন যখন তাদের বাড়িতে কোনও প্যাকেজ প্রত্যাশিত হয়।

এই বিভাগটি একটি ট্র্যাকিং আইডি দ্বারা টাস্ক তথ্য সন্ধান করার বিষয়ে আলোচনা করে। আপনি যদি টাস্ক আইডি দ্বারা কোনও টাস্ক সন্ধান করতে চান তবে কোনও টাস্ক সন্ধান করতে যান।

ট্র্যাকিং আইডি দ্বারা তথ্য সন্ধান করতে, আপনি নিম্নলিখিতগুলির মধ্যে যে কোনও একটি ব্যবহার করতে পারেন:

চেহারা প্রয়োজনীয়তা

  • ট্র্যাকিং আইডি দ্বারা সরবরাহিত চালানের তথ্যগুলি ট্র্যাক করা অবস্থানগুলির দৃশ্যমানতা নিয়ন্ত্রণে বর্ণিত দৃশ্যমানতার নিয়মকে মেনে চলে।

  • আইডি ট্র্যাক করে চালানের তথ্য সন্ধান করতে ফ্লিট ইঞ্জিন ব্যবহার করুন। ড্রাইভার এসডিকে আইডি ট্র্যাক করে তথ্য অনুসন্ধানের সমর্থন করে না। ফ্লিট ইঞ্জিনের সাথে এটি করতে আপনি কোনও সার্ভার বা ব্রাউজারের পরিবেশ ব্যবহার করেন।

  • সুরক্ষা ঝুঁকি সীমাবদ্ধ করতে সম্ভাব্য সংকীর্ণ টোকেন ব্যবহার করুন। উদাহরণস্বরূপ, আপনি যদি কোনও ডেলিভারি গ্রাহক টোকেন ব্যবহার করেন তবে যে কোনও ফ্লিট ইঞ্জিন বিতরণ এপিআই কলগুলি কেবলমাত্র সেই শেষ ব্যবহারকারীর সাথে সম্পর্কিত তথ্য যেমন শিপার বা চালানের রিসিভার হিসাবে প্রাসঙ্গিক তথ্য দেয়। প্রতিক্রিয়াগুলির অন্যান্য সমস্ত তথ্য redacted হয়। টোকেন সম্পর্কে আরও তথ্যের জন্য, অনুমোদনের জন্য একটি জেএসএন ওয়েব টোকেন (জেডাব্লুটি) তৈরি করা দেখুন।

জিআরপিসি ব্যবহার করে জাভা দিয়ে সন্ধান করুন

নিম্নলিখিত উদাহরণটি দেখায় যে কীভাবে জাভা জিআরপিসি লাইব্রেরি তার ট্র্যাকিং আইডি দ্বারা চালানের কাজ সম্পর্কে তথ্য সন্ধান করতে ব্যবহার করতে হয়।

static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TRACKING_ID = "TID-7449w087464x5";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Tasks request
String parent = "providers/" + PROJECT_ID;
GetTaskTrackingInfoRequest getTaskTrackingInfoRequest = GetTaskTrackingInfoRequest.newBuilder()  // No need for the header
    .setParent(parent)
    .setTrackingId(TRACKING_ID)
    .build();

try {
  TaskTrackingInfo taskTrackingInfo = deliveryService.getTaskTrackingInfo(getTaskTrackingInfoRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
     case NOT_FOUND:
       break;

     case PERMISSION_DENIED:
       break;
  }
  return;
}

HTTP ব্যবহার করে সন্ধান করুন

ব্রাউজার থেকে চালানের কাজটি সন্ধান করতে, GetTaskTrackingInfo এ একটি HTTP রেস্ট কল করুন:

`GET https://fleetengine.googleapis.com/v1/providers/<project_id>/taskTrackingInfo/<tracking_id>`

<ট্র্যাকিং_আইডি> হ'ল ট্র্যাকিং আইডি যা টাস্কের সাথে যুক্ত।

অনুরোধ শিরোনামে অবশ্যই মান বহনকারী <টোকেন> এর সাথে একটি ক্ষেত্র অনুমোদন থাকতে হবে, যেখানে <টোকেন> একটি ফ্লিট ইঞ্জিন টোকেন কারখানা দ্বারা জারি করা একটি টোকেন

যদি অনুসন্ধানটি সফল হয় তবে প্রতিক্রিয়া বডিতে একটি টাস্কট্র্যাকিংআইএনএফও সত্তা রয়েছে।

curl কমান্ডের উদাহরণ:

# Set JWT, PROJECT_ID, and TRACKING_ID in the local environment
curl -H "Authorization: Bearer ${JWT}" \
  "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/taskTrackingInfo/${TRACKING_ID}"

তালিকার কাজগুলি

আপনি কোনও সার্ভার বা ব্রাউজারের পরিবেশ থেকে কার্যগুলি তালিকাভুক্ত করতে পারেন। ড্রাইভার এসডিকে তালিকার কাজগুলি সমর্থন করে না।

তালিকার কার্যগুলি কার্যগুলিতে বিস্তৃত অ্যাক্সেসের জন্য অনুরোধ করে। তালিকার কাজগুলি কেবল বিশ্বস্ত ব্যবহারকারীদের জন্যই। তালিকা কার্য অনুরোধগুলি তৈরি করার সময় ডেলিভারি ফ্লিট রিডার বা ডেলিভারি সুপার ব্যবহারকারী প্রমাণীকরণ টোকেন ব্যবহার করুন।

তালিকাভুক্ত কার্যগুলিতে নিম্নলিখিত ক্ষেত্রগুলি redacted রয়েছে:

  • Vehiclestop.pland_location
  • Vehiclestop.state
  • Vehiclestop.taskinfo.taskid

তালিকাভুক্ত কার্যগুলি বেশিরভাগ টাস্ক বৈশিষ্ট্য দ্বারা ফিল্টার করা যেতে পারে। ফিল্টার ক্যোয়ারী সিনট্যাক্সের জন্য, এআইপি -160 দেখুন। নিম্নলিখিত তালিকাটিতে বৈধ টাস্ক বৈশিষ্ট্যগুলি দেখায় যা আপনি ফিল্টারিংয়ের জন্য ব্যবহার করতে পারেন:

  • গুণাবলী
  • ডেলিভারি_ভিহিকাল_আইডি
  • অবস্থা
  • পরিকল্পিত_লোকেশন
  • টাস্ক_ডারেশন
  • টাস্ক_আউটকাম
  • টাস্ক_আউটকাম_লোকেশন
  • টাস্ক_আউটকাম_লোকেশন_সোর্স
  • টাস্ক_আউটকাম_টাইম
  • ট্র্যাকিং আইডি
  • টাইপ

গুগল এপিআই উন্নয়নের প্রস্তাবগুলির উপর ভিত্তি করে নিম্নলিখিত ফিল্ড ফর্ম্যাটগুলি ব্যবহার করুন:

ক্ষেত্র প্রকার বিন্যাস উদাহরণ
টাইমস্ট্যাম্প আরএফসি -3339 task_outcome_time = 2022-03-01T11:30:00-08:00
সময়কাল সেকেন্ডের পরে একটি s অনুসরণ করে task_duration = 120s
এনাম স্ট্রিং state = CLOSED AND type = PICKUP
অবস্থান point.latitude এবং point.longitude planned_location.point.latitude > 36.1 AND planned_location.point.longitude < -122.0

ফিল্টার ক্যোয়ারী অপারেটরগুলির সম্পূর্ণ তালিকার জন্য এআইপি -160 দেখুন।

যদি কোনও ফিল্টার ক্যোয়ারী নির্দিষ্ট না করা হয় তবে সমস্ত কাজ তালিকাভুক্ত করা হয়।

টাস্ক তালিকাগুলি পেজিনেটেড হয়। একটি পৃষ্ঠার আকার তালিকা কার্য অনুরোধগুলিতে নির্দিষ্ট করা যেতে পারে। যদি কোনও পৃষ্ঠার আকার নির্দিষ্ট করা থাকে তবে ফিরে আসা কার্যগুলির সংখ্যা নির্দিষ্ট পৃষ্ঠার আকারের চেয়ে বড় নয়। যদি কোনও পৃষ্ঠার আকার উপস্থিত না থাকে তবে একটি যুক্তিসঙ্গত ডিফল্ট ব্যবহার করা হয়। যদি অনুরোধ করা পৃষ্ঠার আকারটি কোনও অভ্যন্তরীণ সর্বাধিক মান ছাড়িয়ে যায় তবে অভ্যন্তরীণ সর্বোচ্চ ব্যবহার করা হয়।

একটি টাস্ক তালিকায় ফলাফলের পরবর্তী পৃষ্ঠাগুলি পড়ার জন্য একটি টোকেন অন্তর্ভুক্ত থাকতে পারে। একটি অনুরোধের সাথে টোকেন পৃষ্ঠাটি ব্যবহার করুন যা অন্যথায় কার্যগুলির পরবর্তী পৃষ্ঠাটি পুনরুদ্ধার করতে পূর্ববর্তী অনুরোধের সাথে অভিন্ন। যখন ফিরে আসা পৃষ্ঠা টোকেন খালি থাকে, তখন পুনরুদ্ধারের জন্য আর কোনও কাজ পাওয়া যায় না।

gRPC

নিম্নলিখিত উদাহরণটি দেখায় যে কীভাবে জাভা জিআরপিসি লাইব্রেরি ব্যবহার করতে হয় একটি ডেলিভারিভিহিক্যালআইডি এবং একটি টাস্ক অ্যাট্রিবিউটের জন্য কার্যগুলি তালিকাভুক্ত করতে। একটি সফল প্রতিক্রিয়া এখনও খালি থাকতে পারে। একটি খালি প্রতিক্রিয়া ইঙ্গিত দেয় যে কোনও কাজ সরবরাহ করা ডেলিভারিভিকিক্লিডের সাথে সম্পর্কিত নয়।

static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TRACKING_ID = "TID-7449w087464x5";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Tasks request
String parent = "providers/" + PROJECT_ID;
ListTasksRequest listTasksRequest = ListTasksRequest.newBuilder()  // No need for the header
    .setParent(parent)
    .setFilter("delivery_vehicle_id = 123 AND attributes.foo = true")
    .build();

try {
  ListTasksResponse listTasksResponse = deliveryService.listTasks(listTasksRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
     case NOT_FOUND:
       break;

     case PERMISSION_DENIED:
       break;
  }
  return;
}

বিশ্রাম

কোনও ব্রাউজার থেকে কার্যগুলি তালিকাভুক্ত করতে, ListTasks একটি HTTP বিশ্রাম কল করুন:

`GET https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks`

তালিকাভুক্ত কার্যগুলিতে একটি ফিল্টার প্রয়োগ করতে, এর মান হিসাবে একটি ইউআরএল-এসেপড ফিল্টার ক্যোয়ারী সহ একটি "ফিল্টার" ইউআরএল প্যারামিটার অন্তর্ভুক্ত করুন।

অনুরোধ শিরোনামে অবশ্যই মান বহনকারী <টোকেন> এর সাথে একটি ক্ষেত্র অনুমোদন থাকতে হবে, যেখানে <টোকেন> একটি ফ্লিট ইঞ্জিন টোকেন কারখানা দ্বারা জারি করা একটি টোকেন

যদি চেহারাটি সফল হয় তবে প্রতিক্রিয়া বডিতে নিম্নলিখিত কাঠামোর সাথে ডেটা রয়েছে:

    // JSON representation
    {
      "tasks": [
        {
          object (Task)
        }
      ],
      "nextPageToken": string,
      "totalSize": integer
    }

একটি সফল প্রতিক্রিয়া এখনও খালি থাকতে পারে। একটি খালি প্রতিক্রিয়া ইঙ্গিত দেয় যে নির্দিষ্ট ফিল্টার মানদণ্ডগুলি পূরণ করে কোনও কাজ পাওয়া যায় নি।

curl কমান্ডের উদাহরণ:

    # Set JWT, PROJECT_ID, and VEHICLE_ID in the local environment
    curl -H "Authorization: Bearer ${JWT}" \
      "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?filter=state%20%3D%20OPEN%20AND%20delivery_vehicle_id%20%3D%20${VEHICLE_ID}"

বিতরণ যানবাহন তালিকা

আপনি কোনও সার্ভার বা ব্রাউজারের পরিবেশ থেকে বিতরণ যানগুলি তালিকাভুক্ত করতে পারেন। ড্রাইভার এসডিকে তালিকা সরবরাহের যানবাহনগুলিকে সমর্থন করে না।

ডেলিভারি যানবাহন তালিকাভুক্ত করা ডেলিভারি যানবাহনে বিস্তৃত অ্যাক্সেসের জন্য অনুরোধ করে এবং এটি কেবল বিশ্বস্ত ব্যবহারকারীদের জন্যই। তালিকা সরবরাহের যানবাহনের অনুরোধগুলি তৈরি করার সময় ডেলিভারি ফ্লিট রিডার বা ডেলিভারি সুপার ব্যবহারকারী প্রমাণীকরণ টোকেন ব্যবহার করুন।

তালিকাভুক্ত ডেলিভারি যানবাহনগুলির প্রতিক্রিয়া আকারে তাদের প্রভাবের কারণে নিম্নলিখিত ক্ষেত্রগুলি redacted রয়েছে:

  • কারেন্টআরটেসমেন্ট
  • অবশিষ্টভিহিকেলজর্নিএসইগমেন্টস

আপনি তাদের attributes দ্বারা বিতরণ যানবাহনগুলি ফিল্টার করতে পারেন। উদাহরণস্বরূপ, কী my_key এবং my_value মান সহ একটি বৈশিষ্ট্য জিজ্ঞাসা করতে, attributes.my_key = my_value একাধিক বৈশিষ্ট্যের জন্য জিজ্ঞাসা করতে, লজিক্যাল AND OR অপারেটরগুলি attributes.key1 = value1 AND attributes.key2 = value2 । ফিল্টার ক্যোয়ারী সিনট্যাক্সের সম্পূর্ণ বিবরণের জন্য এআইপি -160 দেখুন।

আপনি viewport অনুরোধ প্যারামিটার ব্যবহার করে অবস্থান দ্বারা তালিকাভুক্ত বিতরণ যানগুলি ফিল্টার করতে পারেন। viewport অনুরোধের প্যারামিটার দুটি সীমানা স্থানাঙ্ক ব্যবহার করে ভিউপোর্টগুলি সংজ্ঞায়িত করে: একটি high (উত্তর -পূর্ব) এবং low (দক্ষিণ -পশ্চিম) অক্ষাংশ এবং দ্রাঘিমাংশের স্থানাঙ্ক জুটি। অনুরোধগুলি প্রত্যাখ্যান করা হয় যদি এগুলিতে একটি উচ্চ অক্ষাংশ থাকে যা ভৌগলিকভাবে কম অক্ষাংশের চেয়ে কম থাকে।

ডেলিভারি গাড়ির তালিকাগুলি যুক্তিসঙ্গত পৃষ্ঠার আকার ব্যবহার করে ডিফল্টরূপে প্যাগিনেট করা হয়। আপনি যদি কোনও পৃষ্ঠার আকার নির্দিষ্ট করে থাকেন তবে অনুরোধটি সীমা দ্বারা নির্দিষ্ট করা যানবাহনের সংখ্যা বা তার চেয়ে কম সংখ্যক ফেরত দেয়। যদি অনুরোধ করা পৃষ্ঠার আকারটি কোনও অভ্যন্তরীণ সর্বাধিক মান ছাড়িয়ে যায় তবে অভ্যন্তরীণ সর্বোচ্চ ব্যবহার করা হয়। ডিফল্ট এবং সর্বোচ্চ পৃষ্ঠার আকার উভয়ই 100 যানবাহন।

একটি ডেলিভারি যানবাহনের তালিকায় ফলাফলের পরবর্তী পৃষ্ঠাগুলি পড়ার জন্য একটি টোকেন অন্তর্ভুক্ত থাকতে পারে। একটি পৃষ্ঠা টোকেন কেবল তখনই একটি প্রতিক্রিয়াতে উপস্থিত থাকে যখন আরও বেশি পৃষ্ঠাগুলি ডেলিভারি যানবাহনের পুনরুদ্ধারের জন্য উপলব্ধ থাকে। কার্যগুলির পরবর্তী পৃষ্ঠাটি পুনরুদ্ধার করতে, একটি অনুরোধের সাথে পৃষ্ঠা টোকেন ব্যবহার করুন যা অন্যথায় পূর্ববর্তী অনুরোধের সাথে অভিন্ন।

gRPC

নিম্নলিখিত উদাহরণটি দেখায় যে কীভাবে জাভা জিআরপিসি লাইব্রেরি কোনও নির্দিষ্ট অঞ্চলে বিতরণ যানবাহনগুলির তালিকা তৈরি করতে ব্যবহার করতে হয়। একটি সফল প্রতিক্রিয়া এখনও খালি থাকতে পারে। যখন এটি ঘটে, এর অর্থ হ'ল নির্দিষ্ট বৈশিষ্ট্যযুক্ত কোনও যানবাহন ইতিমধ্যে নির্দিষ্ট ভিউপোর্টে নেই।

static final String PROJECT_ID = "my-delivery-co-gcp-project";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Tasks request
String parent = "providers/" + PROJECT_ID;
ListDeliveryVehiclesRequest listDeliveryVehiclesRequest =
  ListDeliveryVehiclesRequest.newBuilder()  // No need for the header
      .setParent(parent)
      .setViewport(
            Viewport.newBuilder()
              .setHigh(LatLng.newBuilder()
                  .setLatitude(37.45)
                  .setLongitude(-122.06)
                  .build())
              .setLow(LatLng.newBuilder()
                  .setLatitude(37.41)
                  .setLongitude(-122.11)
                  .build())
      .setFilter("attributes.my_key = my_value")
      .build();

try {
  ListDeliveryVehiclesResponse listDeliveryVehiclesResponse =
      deliveryService.listDeliveryVehicles(listDeliveryVehiclesRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
      case NOT_FOUND:
          break;

      case PERMISSION_DENIED:
          break;
  }
  return;
}

বিশ্রাম

কোনও ব্রাউজার থেকে কার্যগুলি তালিকাভুক্ত করতে, ListDeliveryVehicles একটি এইচটিটিপি রেস্ট কল করুন:

`GET https://fleetengine.googleapis.com/v1/providers/<project_id>/deliveryVehicles`

তালিকাভুক্ত কার্যগুলিতে একটি ফিল্টার প্রয়োগ করতে, এর মান হিসাবে একটি ইউআরএল-এসেপড ফিল্টার ক্যোয়ারী সহ একটি "ফিল্টার" ইউআরএল প্যারামিটার অন্তর্ভুক্ত করুন।

অনুরোধ শিরোনামে অবশ্যই মান বহনকারী <টোকেন> এর সাথে একটি ক্ষেত্র অনুমোদন থাকতে হবে, যেখানে <টোকেন> একটি ফ্লিট ইঞ্জিন টোকেন কারখানা দ্বারা জারি করা একটি টোকেন

যদি চেহারাটি সফল হয় তবে প্রতিক্রিয়া বডিতে নিম্নলিখিত কাঠামোর সাথে ডেটা রয়েছে:

// JSON representation
{
  "deliveryVehicles": [
    {
      object (DeliveryVehicle)
    }
  ],
  "nextPageToken": string,
  "totalSize": integer
}

একটি সফল প্রতিক্রিয়া এখনও খালি থাকতে পারে। যখন এটি ঘটে, এর অর্থ হ'ল কোনও ডেলিভারি যানবাহন নির্দিষ্ট ফিল্টার ক্যোয়ারী এবং ভিউপোর্টের সাথে মিলিত হয় না।

curl কমান্ডের উদাহরণ:

# Set JWT, PROJECT_ID, and VEHICLE_ID in the local environment
curl -H "Authorization: Bearer ${JWT}" \
  "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/deliveryVehicles?filter=attributes.my_key%20%3D%20my_value%20&viewport.high.latitude=37.45&viewport.high.longitude=-122.06&viewport.low.latitude=37.41&viewport.low.longitude=-122.11"

ফ্লিট ট্র্যাকিং

বহর ট্র্যাকিং সক্ষম করতে ফ্লিট ইঞ্জিন বিতরণ এপিআই ব্যবহারের জন্য আপনার কাছে দুটি বিকল্প রয়েছে:

  • পছন্দসই: জাভাস্ক্রিপ্ট ফ্লিট ট্র্যাকিং লাইব্রেরি ব্যবহার করুন। লাইব্রেরিটি আপনাকে যানবাহনের অবস্থান এবং ফ্লিট ইঞ্জিনে ট্র্যাক করা আগ্রহের অবস্থানগুলি কল্পনা করতে দেয়। এটিতে একটি জাভাস্ক্রিপ্ট মানচিত্রের উপাদান রয়েছে যা একটি স্ট্যান্ডার্ড গুগল.ম্যাপস.ম্যাপ অবজেক্ট এবং ফ্লিট ইঞ্জিনের সাথে সংযোগ স্থাপনের জন্য ডেটা উপাদানগুলির জন্য একটি ড্রপ-ইন প্রতিস্থাপন। এই উপাদানটি আপনাকে আপনার ওয়েব বা মোবাইল অ্যাপ্লিকেশন থেকে একটি কাস্টমাইজযোগ্য, অ্যানিমেটেড ফ্লিট ট্র্যাকিংয়ের অভিজ্ঞতা সরবরাহ করতে দেয়।

  • ফ্লিট ইঞ্জিন বিতরণ এপিআইয়ের শীর্ষে আপনার নিজস্ব ফ্লিট ট্র্যাকিং প্রয়োগ করুন।

মূলটি হ'ল আইডি ট্র্যাক করে বহরের কাজগুলি সন্ধান করা

লগিং

আপনি ক্লাউড লগিংয়ে আরপিসি লগ পাঠাতে ফ্লিট ইঞ্জিন সেট করতে পারেন। আরও তথ্যের জন্য, লগিং দেখুন।

অনুমোদনের ভূমিকা এবং টোকেন

যানবাহন এবং টাস্ক লাইফাইসাইকেল পরিচালনা এবং পৃথক ব্যবহারের ক্ষেত্রে অনুমোদনের নোটগুলিতে বর্ণিত হিসাবে, ফ্লিট ইঞ্জিনে কল করার জন্য জেএসএন ওয়েব টোকেনগুলির সাথে প্রমাণীকরণের প্রয়োজন যা পরিষেবা অ্যাকাউন্টের শংসাপত্রগুলি ব্যবহার করে স্বাক্ষরিত হয়েছে। এই টোকেনগুলি ইস্যু করতে ব্যবহৃত পরিষেবা অ্যাকাউন্টগুলিতে এক বা একাধিক ভূমিকা থাকতে পারে, প্রতিটি ভূমিকা পৃথক পৃথক অনুমতি প্রদান করে।

আরও তথ্যের জন্য, প্রমাণীকরণ এবং অনুমোদন দেখুন।

সাধারণ সমস্যাগুলি সমাধান করুন

আপনি যদি কোনও সমস্যা অনুভব করেন তবে সহায়তার জন্য নিম্নলিখিত বিভাগগুলি পরীক্ষা করুন।

স্থিতিস্থাপকতা

ফ্লিট ইঞ্জিনকে সত্যের উত্স হিসাবে বিবেচনা করা হয় না। ফ্লিট ইঞ্জিনের উপর নির্ভর না করে প্রয়োজনে আপনার সিস্টেমের অবস্থা পুনরুদ্ধার করার জন্য আপনি দায়বদ্ধ।

ফ্লিট ইঞ্জিনে হারানো অবস্থা

ফ্লিট ইঞ্জিনের সাথে কাজ করার সময়, ক্লায়েন্টগুলি প্রয়োগ করুন যাতে কোনও ব্যর্থতা থাকলে সিস্টেমটি নিজেকে নিরাময় করে। উদাহরণস্বরূপ, যখন ফ্লিট ইঞ্জিন কোনও যানবাহন আপডেট করার চেষ্টা করে, তখন এটি একটি ত্রুটি দিয়ে প্রতিক্রিয়া জানাতে পারে যাতে ইঙ্গিত দেয় যে যানবাহনের অস্তিত্ব নেই। ক্লায়েন্টের তারপরে নতুন অবস্থায় গাড়িটি পুনরায় তৈরি করা উচিত। যদিও এই সমস্যাটি খুব কমই ঘটে, তা নিশ্চিত করুন যে আপনার সিস্টেমটি এটি পরিচালনা করতে যথেষ্ট স্থিতিস্থাপক।

ফ্লিট ইঞ্জিনের বিপর্যয়কর ব্যর্থতার অত্যন্ত অসম্ভব দৃশ্যে আপনাকে বেশিরভাগ বা সমস্ত যানবাহন এবং কাজগুলি পুনরায় তৈরি করতে হতে পারে। যদি সৃষ্টির হার খুব বেশি হয়ে যায় তবে কোটা ইস্যুগুলির কারণে কিছু অনুরোধ আবার ব্যর্থ হতে পারে যেহেতু কোটা চেকগুলি পরিষেবা (ডিওএস) আক্রমণকে অস্বীকার করতে এড়াতে স্থানে রয়েছে। এই ক্ষেত্রে, রেটটেম্পটসের জন্য ব্যাকঅফ কৌশল ব্যবহার করে বিনোদন হারকে ধীর করুন।

ড্রাইভার অ্যাপে হারিয়ে যাওয়া অবস্থা

যদি ড্রাইভার অ্যাপ ক্র্যাশ হয়ে যায় তবে অ্যাপটি অবশ্যই ড্রাইভার এসডিকে -র মধ্যে বর্তমান অবস্থাটি পুনরায় তৈরি করতে হবে। অ্যাপ্লিকেশনটির উপস্থিতি রয়েছে কিনা তা নিশ্চিত করার জন্য এবং তাদের বর্তমান রাজ্যগুলি পুনরুদ্ধার করার জন্য কাজগুলি পুনরায় তৈরি করার চেষ্টা করা উচিত। অ্যাপটি ড্রাইভার এসডিকে -র জন্য স্টপগুলির তালিকাটি পুনরায় তৈরি এবং স্পষ্টভাবে সেট করা উচিত।

FAQ

যদি কোনও ড্রাইভার অর্ডার ছাড়াই কোনও কাজের জন্য থামে?

এই ক্ষেত্রে, প্রথমে কার্যগুলির ক্রম আপডেট করুন এবং তারপরে স্টপ, টাস্ক সমাপ্তি এবং অন্যান্য বিবরণে আগমন চিহ্নিত করে স্বাভাবিক হিসাবে এগিয়ে যান। আপনি যদি তা না করেন তবে সিস্টেমটি বেমানান হয়ে উঠতে পারে, ইটিএগুলি ভুল হয়ে যেতে পারে এবং অপ্রত্যাশিত ত্রুটিগুলি রিপোর্ট করা যেতে পারে।