Une soumission valide
Lorsqu'une répartition mobile est créée, un nouveau rapport est également créé. Il faut donc fournir suffisamment d'information dans la section « report » pour simuler comme si vous aviez posté un nouveau rapport dans /reports, avec des champs de rapport inclus. Voici un exemple de message valide envoyé à /dispatch-tasks :
{
"customId": "200019810",
"priority": "URGENT",
"client":50,
"report": {
"reportTemplate": 28,
"account": 50,
"reportFields": [
{"field": 29, "value": "12:30"},
{"field": 31, "value": "Something undesirable has occurred"},
{"field": 30, "value": "Interior Patrol"}
]
},
"startedOn": "20220331122600",
"taskType": 9,
"locationType": "ACCOUNT_ADDRESS"
}
À noter :
- L'identifiant du site client (account) doit être inclus dans la liste racine des éléments.
- reportTemplate n'est pas inclus dans la liste racine des éléments, mais uniquement dans l'objet report.
- L'objet report contient à la fois les métadonnées d'un nouveau rapport et la liste des champs qui contiennent les données du rapport.
- Chaque ligne d'un reportField est composée du numéro d'index de l'ID du report-template-fields correspondant qui définit le reportTemplate (dans cet exemple, il s'agit de l'ID 28), et d'une valeur de données.
- La valeur de chaque champ de rapport doit correspondre au type de champ défini dans le modèle de rapport parent. Vous devrez consulter les champs /report-template-fields d'un /report-templates pour savoir à quoi vous attendre.
Pour aider à exposer les autres dépendances comme les modèles de rapport et les champs de modèle de rapport, voici à quoi elles ressemblent (ceci provient d'un environnement d'essai interne) :
Modèle de rapport et champs (obligatoire)
Voici un exemple de modèle de rapport (id 28) :
"data": {
"name": "Mobile Patrol Report",
"details": "Used to record the details of a completed Mobile Patrol task",
"tag": "",
"adminOnly": false,
"id": 28,
"defaultLanguage": "EN_US",
"translatable": true
}
Champs du modèle de rapport 28 :
"data": [
{
"reportTemplate": 28,
"label": "Arrival Time:",
"name": "f_29",
"type": "TIME",
"required": false,
"adminOnly": false,
"displayOrder": 100,
"extra": "",
"list": null,
"listItems": null,
"isDispatcherField": false,
"fieldTag": "",
"confidential": false,
"id": 29
},
{
"reportTemplate": 28,
"label": "Activity Performed:",
"name": "f_30",
"type": "LIST_MULTIPLE",
"required": false,
"adminOnly": false,
"displayOrder": 98,
"extra": "Interior Patrol\nExterior Patrol\nStationary Post\nLocation Inspection",
"list": [
"Interior Patrol",
"Exterior Patrol",
"Stationary Post",
"Location Inspection"
],
"listItems": [
"Interior Patrol",
"Exterior Patrol",
"Stationary Post",
"Location Inspection"
],
"isDispatcherField": false,
"fieldTag": "",
"confidential": false,
"id": 30
},
{
"reportTemplate": 28,
"label": "Narrative:",
"name": "f_31",
"type": "TEXTAREA",
"required": false,
"adminOnly": false,
"displayOrder": 96,
"extra": "",
"list": null,
"listItems": null,
"isDispatcherField": false,
"fieldTag": "",
"confidential": false,
"id": 31
},
...
etc.
Résultat d'un POST réussi
Voici la tâche de répartition créée à partir de l'exemple que j'ai partagé (remarquez que l'élément de rapport montre maintenant l'ID 4469 (de /reports) du rapport qui a été généré automatiquement après avoir été posté dans /dispatch-tasks) :
"data": {
"customId": "200019810",
"taskType": 9,
"priority": "URGENT",
"taskInstructions": "",
"startedOn": "2022-03-31T19:26:00+00:00",
"startDateTime": "2022-03-31T19:26:00+00:00",
"endedOn": null,
"endDateTime": null,
"plannedDurationInMinutes": null,
"reminderInMinutes": null,
"alarmOrganization": null,
"client": 50,
"account": 50,
"priceTier": null,
"status": "OPEN",
"active": "ACTIVE",
"assignedUser": null,
"assignedGroup": null,
"assignedVendor": null,
"reportTemplate": 28,
"report": 4469,
"workflowInstance": null,
"location": null,
"locationType": "ACCOUNT_ADDRESS",
"closedOn": null,
"id": 513
}
Exemple de ce que report-fields reçoit lorsque le rapport 4469 a été créé :
"data": [
{
"fieldTag": "",
"report": 4469,
"templateField": 29,
"value": {
"type": "text",
"value": "12:30"
},
"archived": false,
"id": 22247
},
{
"fieldTag": "",
"report": 4469,
"templateField": 30,
"value": {
"type": "array",
"value": [
"Interior Patrol"
]
},
"archived": false,
"id": 22248
},
{
"fieldTag": "",
"report": 4469,
"templateField": 31,
"value": {
"type": "text",
"value": "Something undesirable has occurred"
},
"archived": false,
"id": 22249
}
]
Les métadonnées du rapport parent créé pour les champs ci-dessus :
"data": {
"reportTemplate": 28,
"timeZone": "America/Los_Angeles",
"account": 50,
"reportDateTime": "2022-04-04T08:42:24-07:00",
"submitTime": 1649086944,
"submittedOn": "2022-04-04T15:42:24+00:00",
"position": null,
"approvedOn": null,
"approvalDateTime": null,
"status": "PENDING",
"approvedBy": null,
"checkpoint": null,
"reportFlag": null,
"siteLocation": null,
"id": 4469
}
Comment dresser la liste des transitions disponibles
GET /dispatch-tasks/1034?extension=availableTransitions
{
"customId": "",
"taskType": 13,
"priority": "LOW",
"priorityRating": 0,
"taskInstructions": "test",
"scheduled": "LATER",
"startedOn": "2025-05-20T16:38:52+00:00",
"startDateTime": "2025-05-20T16:38:52+00:00",
"endedOn": null,
"endDateTime": null,
"plannedDurationInMinutes": null,
"reminderInMinutes": null,
"reminderAt": null,
"alarmOrganization": null,
"client": 688,
"account": 688,
"priceTier": null,
"status": "OPEN",
"active": "ACTIVE",
"assignedUser": null,
"assignedGroup": null,
"assignedGroupResource": null,
"assignedVendor": null,
"reportTemplate": 390,
"report": 1242,
"workflowInstance": 964,
"location": 880,
"locationType": "ACCOUNT_ADDRESS",
"closedOn": null,
"parentDispatchTask": null,
"alarm": null,
"id": 1034,
== "availableTransitions": {
"transitions": [
{
"event": "CANCEL",
"eventLabel": "CANCEL",
"fromStatus": 45,
"toStatus": 52,
"id": 57,
"form": null
},
{
"event": "R_EN_ROUTE",
"eventLabel": "ON ROUTE",
"fromStatus": 45,
"toStatus": 47,
"id": 53,
"form": null
},
{
"event": "R_ACCEPT",
"eventLabel": "ACCEPT",
"fromStatus": 45,
"toStatus": 46,
"id": 52,
"form": null
}
]
}
}