इस दस्तावेज़ में यह मान लिया गया है कि आपने Fleet Engine के बारे में जानकारी सेक्शन में, शेड्यूल किए गए टास्क के बारे में बुनियादी जानकारी देने वाली गाइड पढ़ी है. साथ ही, आपने इस सेक्शन में शेड्यूल किया गया टास्क क्या होता है? के बारे में भी पढ़ा है.
शेड्यूल किए गए टास्क के लिए Fleet Engine, टास्क की अलग-अलग कैटगरी उपलब्ध कराता है:
- शिपमेंट से जुड़े टास्क: इनका इस्तेमाल ड्राइविंग से जुड़े टास्क के लिए करें. जैसे, शिपमेंट को पिकअप और डिलीवर करना.
- ड्राइवर के उपलब्ध न होने के समय के लिए टास्क: इसका इस्तेमाल तब करें, जब ड्राइवर उपलब्ध न हों. जैसे, ज़रूरी ब्रेक के दौरान.
- ड्राइविंग के दौरान किए जाने वाले टास्क: इनका इस्तेमाल ड्रॉप बॉक्स या खरीदार की जगहों पर ड्राइविंग के अलावा अन्य टास्क के लिए किया जाता है. जैसे, किसी बिल्डिंग में प्रवेश करने या डिलीवरी पॉइंट का पता लगाने में लगने वाला समय.
इस दस्तावेज़ में, आपके सर्वर पर शिपमेंट टास्क बनाने का तरीका बताया गया है. अन्य तरह के टास्क बनाने के लिए, अन्य तरह के टास्क बनाना लेख पढ़ें.
शिपमेंट टास्क के फ़ील्ड
इस सेक्शन में, पिकअप और डिलीवरी, दोनों तरह के टास्क के लिए ज़रूरी टास्क फ़ील्ड के बारे में बताया गया है.
टास्क के लिए ज़रूरी फ़ील्ड
Fleet Engine में बनाए गए हर टास्क के लिए, आपको ज़रूरी फ़ील्ड की जानकारी देनी होगी. साथ ही, आपके पास किसी भी वैकल्पिक फ़ील्ड की जानकारी देने का विकल्प भी होता है. Fleet Engine, अन्य सभी फ़ील्ड को अनदेखा करता है. साथ ही, अगर टास्क बनाने के अनुरोध में असाइन किया गया deliveryVehicleId
शामिल है, तो एक अपवाद दिखाता है. किसी वाहन को टास्क असाइन करने के लिए, UpdateDeliveryVehicleRequest
का इस्तेमाल करें. ज़्यादा जानकारी के लिए, टास्क अपडेट करना लेख पढ़ें.
फ़ील्ड | मान |
---|---|
type |
इसे उस टाइप पर सेट करें जो टास्क टाइप से मेल खाता हो. यह इनमें से कोई एक हो सकता है:
|
state |
State.OPEN |
task_id |
टास्क का यूनीक आईडी. यह शिपमेंट का ट्रैकिंग नंबर नहीं होना चाहिए. अगर आपके सिस्टम में टास्क आईडी नहीं हैं, तो यूनीवर्सली यूनीक आइडेंटिफ़ायर (यूयूआईडी) जनरेट किया जा सकता है. ज़्यादा जानकारी के लिए, टास्क आईडी देखें. |
tracking_id |
सिर्फ़ PICKUP या DELIVERY टास्क के लिए:
शिपमेंट को ट्रैक करने के लिए इस्तेमाल किया जा रहा नंबर या आइडेंटिफ़ायर. शिपमेंट से जुड़े टास्क के अलावा, किसी और टास्क के लिए यह फ़ील्ड न दें. |
planned_location |
PICKUP , DELIVERY या
SCHEDULED_STOP टास्क के लिए ही: वह जगह जहां टास्क पूरा करना है. UNAVAILABLE टास्क के लिए ज़रूरी नहीं है. |
task_duration |
टास्क को पूरा करने में लगने वाला अनुमानित समय. उदाहरण के लिए, पार्किंग ढूंढने या पिकअप की जगह तक पैदल जाने के लिए. |
शिपमेंट के टास्क के लिए ज़रूरी नहीं हैं
फ़ील्ड | मान |
---|---|
target_time_window |
वह समयावधि जिसके दौरान टास्क पूरा किया जाना चाहिए. इस फ़ील्ड से, राउटिंग के तरीके पर कोई असर नहीं पड़ता. |
task_tracking_view_config |
सिर्फ़ PICKUP या DELIVERY टास्क:
टास्क ट्रैकिंग के लिए कॉन्फ़िगरेशन. इससे यह तय होता है कि किन परिस्थितियों में, कौनसे डेटा एलिमेंट असली उपयोगकर्ताओं को दिखेंगे. |
attributes |
कस्टम टास्क एट्रिब्यूट की सूची. हर एट्रिब्यूट की एक यूनीक कुंजी होनी चाहिए. |
शिपमेंट पिकअप करने का टास्क बनाना
अगर आपको शिपमेंट पिक अप करने वाले ड्राइवर की गतिविधि को ट्रैक करने के लिए Fleet Engine का इस्तेमाल करना है, तो शिपमेंट पिकअप करने का टास्क बनाएं. इसके लिए, टास्क टाइप एट्रिब्यूट को PICKUP
पर सेट करना होगा. इस उदाहरण में, Grand Indonesia East Mall से शिपमेंट पिकअप करने की जानकारी दी गई है.
यहां दिए गए उदाहरणों में, Java gRPC लाइब्रेरी का इस्तेमाल करके शिपमेंट पिकअप करने का टास्क बनाने का तरीका बताया गया है. इसके अलावा, CreateTask
को एचटीटीपी 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;
}
REST
सर्वर एनवायरमेंट से शिपमेंट पिकअप करने का टास्क बनाने के लिए, CreateTask
पर एचटीटीपी REST कॉल करें:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>
<id>, टास्क के लिए यूनीक आइडेंटिफ़ायर होता है.
अनुरोध हेडर में, Authorization फ़ील्ड होना चाहिए. इसकी वैल्यू Bearer <token> होनी चाहिए. यहां <token>, आपके सर्वर की ओर से जारी किया गया टोकन है. यह सेवा खाते की भूमिकाओं और JSON वेब टोकन में बताए गए दिशा-निर्देशों के मुताबिक होना चाहिए.
अनुरोध के मुख्य हिस्से में, Task
इकाई के साथ-साथ शिपमेंट टास्क के फ़ील्ड में बताए गए सही फ़ील्ड होने चाहिए.
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
शिपमेंट डिलीवर करने का टास्क बनाना
अगर आपको शिपमेंट डिलीवर करने वाले ड्राइवर की गतिविधि को ट्रैक करने के लिए Fleet Engine का इस्तेमाल करना है, तो शिपमेंट डिलीवर करने का टास्क बनाएं. इसके लिए, टास्क टाइप एट्रिब्यूट को DELIVERY
पर सेट करना होगा. इस उदाहरण में, Grand Indonesia East Mall में शिपमेंट की डिलीवरी दिखाई गई है.
यहां दिए गए उदाहरणों में, Java gRPC लाइब्रेरी का इस्तेमाल करके शिपमेंट पिकअप करने का टास्क बनाने का तरीका बताया गया है. इसके अलावा, CreateTask
को एचटीटीपी 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.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;
}
REST
सर्वर एनवायरमेंट से शिपमेंट पिकअप करने का टास्क बनाने के लिए, CreateTask
पर एचटीटीपी REST कॉल करें:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>
<id>, टास्क के लिए यूनीक आइडेंटिफ़ायर होता है.
अनुरोध हेडर में, Authorization फ़ील्ड होना चाहिए. इसकी वैल्यू Bearer <token> होनी चाहिए. यहां <token>, आपके सर्वर की ओर से जारी किया गया टोकन है. यह सेवा खाते की भूमिकाओं और JSON वेब टोकन में बताए गए दिशा-निर्देशों के मुताबिक होना चाहिए.
अनुरोध के मुख्य हिस्से में Task
इकाई शामिल होनी चाहिए:
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
```