Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las organizaciones de Field Service necesitan programar el trabajo, a menudo a través de un agente de servicio directamente por el cliente. La creación de reservas generalmente se basa en los recursos disponibles para la empresa y los requisitos del trabajo.
Cuando uses al menos Dynamics 365 Field Service v8.8.43.51 y Universal Resource Scheduling v3.12.46.21 para programar trabajo, usa la API msdyn_SearchResourceAvailability para recuperar todos los recursos elegibles para el trabajo, de modo que puedas programar el trabajo de forma eficiente. En el momento de escribir esto, la v3 es la última versión y msdyn_SearchResourceAvailability soporta llamadas a la API web.
Nota
Utiliza la última versión de la API, ya que las versiones anteriores pueden usar métodos de autenticación obsoletos.
Parámetros de entrada
| Nombre. | Type | Description | Obligatorio | Default |
|---|---|---|---|---|
| Versión | String | El número de versión de la API identifica la versión de la API que debe invocarse. Sigue el formato de major.minor.patch. No es necesario que la solicitud contenga el número de versión completo.
|
Sí | -N/D- |
| IsWebApi | Booleana | Configura en Verdadero para usar el asistente de programación a través de la API web. | Sí | -N/D- |
| Requisito | Entity | Este atributo especifica el requisito de recursos para el que se recupera la disponibilidad de recursos. Se espera que sea una entidad de tipo msdyn_resourcerequirement. El requisito puede ser un registro preexistente de la base de datos o uno creado sobre la marcha con las restricciones necesarias. La entidad debe contener todos los detalles que sean relevantes para su búsqueda. El @odata.type para esta entidad debe ser Microsoft.Dynamics.CRM.msdyn_requirement. Los siguientes son atributos importantes para rellenar:
|
Sí | -N/D- |
| Configuración | Entity | El atributo de configuración ayuda a filtrar más los recursos recuperados. Especifica la configuración como atributos en una bolsa de entidades. El tipo de entidad no importa. Puede especificar cualquier nombre lógico de entidad. | Sí | -N/D- |
| ResourceSpecification | Entity | Define el resourceSpecification atributo como atributos dentro de una bolsa de entidades. El @odata.type para esta entidad debe ser Microsoft.Dynamics.CRM.expando. |
No | None |
Entidad de configuración
La entidad de configuración no es una entidad que exista en Dataverse; sin embargo, es una colección de todos los atributos siguientes que ayuda a la API del asistente de programación a filtrar los resultados. Por tanto, el @odata.type para esta entidad debe ser Microsoft.Dynamics.CRM.expando.
| Nombre. | Type | Description | Obligatorio | Default |
|---|---|---|---|---|
| ConsiderSlotsWithLessThanRequiredCapacity | Booleana | Establezca esto en True si se debe tener en cuenta un intervalo de tiempo con menos de la capacidad (esfuerzo) requerida al calcular los posibles intervalos de tiempo disponibles en el calendario del recurso. | No | False |
| ConsiderSlotsWithLessThanRequiredDuration | Booleana | Establezca esto en True si se debe tener en cuenta un intervalo de tiempo con menos de la duración al calcular los posibles intervalos de tiempo disponibles en el calendario del recurso. | No | False |
| ConsiderSlotsWithOverlappingBooking | Booleana | Establezca esto en True si se debe tener en cuenta un intervalo de tiempo con reservas superpuestas al calcular los posibles intervalos de tiempo disponibles en el calendario del recurso. | No | False |
| ConsiderSlotsWithProposedBookings | Booleana | Establezca esto en True si se debe tener en cuenta un intervalo de tiempo con reservas propuestas al calcular los posibles intervalos de tiempo disponibles en el calendario del recurso. | No | False |
| ConsiderAppointments | Booleana | Establezca esto en True para que la API de disponibilidad de recursos de búsqueda respete las citas existentes de Dataverse como reservas en el recurso, siempre que se hayan establecido configuraciones de organización y nivel de recursos. Las citas con los estados Ocupado o Completado se consideran no disponibles para las operaciones de programación. | No | False |
| ConsiderTravelTime | Booleana | Establezca esto en True si se debe tener en cuenta el tiempo de viaje al calcular los posibles intervalos de tiempo posibles en el calendario del recurso. | No | True |
| ExcludeResourceCharacteristics | Booleana | Ponlo en Verdadero para excluir las características de recursos de los intervalos de tiempo en respuesta. | No | False |
| MovePastStartDateToCurrentDate | Booleana | Establezca esto en True para mover una fecha de inicio en el pasado a la fecha actual. | No | False |
| UseRealTimeResourceLocation | Booleana | Establezca esto en True si se debería usar la ubicación en tiempo real de los recursos al calcular los posibles intervalos de tiempo posibles en el calendario del recurso. | No | False |
| SortOrder | EntityCollection | Especifique el criterio de ordenación mediante una colección de entidades. Cada entidad de la colección representa un criterio de ordenación y solo puede ordenar Resources a partir de la respuesta, pero no TimeSlots. El @odata.type para esta entidad debe ser Microsoft.Dynamics.CRM.expando. Los siguientes son los atributos que debe rellenar:
|
No | None |
| MaxResourceTravelRadius | Entity | Este atributo especifica el máximo que se puede definir en una entidad. El @odata.type para esta entidad debe ser Microsoft.Dynamics.CRM.expando. Los siguientes son los atributos que debe rellenar:
|
No | 0 km. Si ese es el caso, no se devuelven recursos para los requisitos in situ. |
| MaxNumberOfResourcesToEvaluate | Número entero | Este atributo define un límite en la cantidad de recursos que se tienen en cuenta para la solicitud. | No | Si este atributo no está incluido en la llamada a la API, el sistema utiliza el Límite de Recuperación de Disponibilidad de Recursos de la definición de entidad planificable tal como se define en Editar para entidades habilitadas. Si se incluye en la llamada, sobrescribe el límite de recuperación de disponibilidad de recursos definido. |
| ConsiderOutlookSchedules | Booleana | Ponlo en True si hay que considerar los programas de Outlook. Solo disponible en las versiones 3.1.0 y posteriores. | No | False |
Entidad de especificación de recursos
| Nombre. | Type | Description | Obligatorio | Default |
|---|---|---|---|---|
| ResourceTypes | EntityCollection | Este atributo especifica el tipo de recurso requerido para el requisito. Utiliza una colección de entidades para especificar este atributo. Cada entidad de la colección representará un tipo de recurso que se puede reservar. El @odata.type para esta entidad debe ser Microsoft.Dynamics.CRM.msdyn_resourceType. Este atributo es obligatorio:
|
No | Todos los tipos de recursos excepto equipos |
| PreferredResources | EntityCollection | Este atributo especifica los recursos preferidos para el requisito. Añade recursos a esta colección de entidades para asegurarte de que están en la cima de la lista de recursos disponibles. Incluso los recursos que no forman parte de la colección de entidades están en la lista, pero solo después de los recursos preferidos. | No | None |
| RestrictedResources | EntityCollection | Este atributo especifica los recursos que no deberían tenerse en cuenta para el requisito. Todos los intervalos de tiempo de este recurso se filtran de la lista de resultados de esta API. | No | None |
| MustChooseFromResources | EntityCollection | Este atributo especifica los únicos recursos que pueden estar en la lista de recursos disponibles. Filtrará todos los demás resultados de la lista de salida. | ||
| Limitaciones | Entity | Este atributo especifica las restricciones adicionales que deben aplicarse a la recuperación de los recursos disponibles. | No | None |
| RetrieveResourcesQueryId | GUID | El Id. de la consulta Recuperar recursos. | No | El Id. predeterminado de la consulta Recuperar recursos. |
| BookedResourceId | GUID | Este atributo especifica el recurso reservado actualmente para el requisito. | No | None |
Nota
Utiliza una colección de entidades de recursos reservables para especificar los atributos de recursos Preferidos, Restringidos y MustChooseFrom . Cada entidad en la colección representa un recurso Preferido, Restringido o MustChooseFrom . Este atributo es necesario para ellos:
-
Valor (Guid): El ID de recurso reservable del recurso Preferido, Restringido o MustChooseFrom . El
@odata.typepara esta entidad debe serMicrosoft.Dynamics.CRM.msdyn_bookableresource.
Limitaciones
Especifica restricciones adicionales mediante atributos en esta entidad. El tipo de entidad no importa. Puede especificar cualquier nombre lógico de entidad.
Revise la Consulta de recuperación de recursos en la configuración del tablero de programación para identificar qué restricciones pueden aplicarse. Por defecto, incluye las siguientes:
| Nombre. | Type | Description |
|---|---|---|
| Características | EntityCollection | Un conjunto de características que debe poseer un recurso cualificado. Cada entrada contiene un characteristic con el ID característico. Opcionalmente, incluye un ratingvalue con el ID de valor de valoración para filtrar recursos por un nivel de competencia específico. |
| Roles | EntityCollection | Una colección de Id. de roles que debe tener un recurso cualificado. |
| Zonas de ventas | EntityCollection | Una colección de Id. de territorio. Se debe asignar un recurso cualificado a uno de los territorios. |
| UnspecifiedTerritory | Booleana | En combinación con la restricción de territorios, especifica que un recurso cualificado debe asignarse a uno de los territorios o ningún territorio en absoluto. |
| OrganizationalUnits | EntityCollection | Una colección de id. de unidades organizativas. Un recurso cualificado debe ser miembro de una de las unidades organizativas especificadas. |
| Teams | EntityCollection | Una colección de Id. de equipo. Un recurso cualificado debe pertenecer a uno de los equipos (implica que el tipo de recurso es un usuario del sistema). |
| BusinessUnits | EntityCollection | Una colección de IDs de unidades de negocio. Un recurso cualificado debe pertenecer a una de las unidades de negocio (implica que el recurso es un usuario del sistema). |
Parámetros de salida
En el nivel más alto, la salida tiene los siguientes cuatro parámetros. Los resultados se presentan en entidades y colecciones de entidades. Las respuestas pueden no incluir todos los atributos descritos aquí como valor nulo o no se omiten los valores NA de la respuesta. Compruebe siempre la presencia de un atributo antes de intentar acceder a él.
| Nombre. | Type | Description |
|---|---|---|
| TimeSlots | EntityCollection | Una colección de resultados de intervalos de tiempo. Para obtener más información, consulte la sección de entidad de intervalo de tiempo . |
| Resources | EntityCollection | Una colección de resultados de recursos. Los recursos se representan como una colección de entidades con los siguientes atributos:
|
| Relacionadas | Entity | Los recursos relacionados representan recursos e intervalos de tiempo de recursos que no están directamente cualificados para el requisito solicitado, pero que están relacionados. Por ejemplo, si un miembro del equipo es cualificado para un requisito, los otros miembros de ese equipo serían resultados relacionados.
|
| Excepciones | Entity | Este atributo contiene información sobre cualquier excepción que haya ocurrido e información sobre si se truncó la búsqueda de recursos y dónde.
|
Entidad de intervalos de tiempo
| Nombre. | Type | Description |
|---|---|---|
| Identificador | GUID | Identificador único para el intervalo de tiempo |
| Type | Número entero | El tipo de franja horaria. Puede ser uno de los siguientes valores:
|
| StartTime | Fecha y hora | Hora de inicio del intervalo de tiempo. Si hay viaje para el requisito, esta hora es la hora de inicio del viaje. Si no, esta vez es cuando empieza el requisito. |
| ArrivalTime | Fecha y hora | La hora de llegada del intervalo de tiempo. Si hay viaje para el requisito, este es el momento de inicio del requisito, después de completar el viaje. De lo contrario, es la misma que la hora de inicio del intervalo de tiempo. |
| EndTime | Fecha y hora | Hora final del intervalo de tiempo. |
| Esfuerzo | Número entero | El esfuerzo o la capacidad del recurso para cumplir con los requisitos. |
| ResourceRequirement | EntityReference | El requisito de recursos para el que se recuperan los intervalos de tiempo. |
| Potential | Booleana | Un valor booleano que indica si el intervalo de tiempo tiene potencial para cumplir con el requisito solicitado. |
| IsDuplicate | Booleana | Un valor booleano que indica si el intervalo de tiempo es un duplicado. |
| AllowOverlapping | Booleana | Valor booleano que indica se se permite la superposición. |
| Recurso | Entity | El recurso al que pertenece el intervalo de tiempo. Para más información, consulte recurso de intervalo de tiempo. |
| Ubicación | Entity | La ubicación tiene tres atributos:
|
| Viajes | Entity | Esta entidad contiene detalles del tiempo de viaje y la información de distancia para un intervalo de tiempo. Los atributos son los siguientes:
|
| Siguiente | Entity | Esta entidad contiene detalles sobre el tiempo de viaje y la distancia hasta la próxima reserva de intervalo de tiempo.
|
| Disponibilidad | Entity | La información de disponibilidad detallada para un intervalo de tiempo. Esta entidad se utiliza con grupos de tiempo.
|
| TimeGroup | Entity | Los detalles sobre un grupo de tiempo.
|
Propina
Cuando crees reservas usando la API, utiliza el campo Potencial descrito en la tabla. No utilizar ese campo podría dar lugar a reservas superpuestas o inadecuadas.
Recurso de intervalo de tiempo
| Nombre. | Type | Description |
|---|---|---|
| Recurso | EntityReference | Una referencia de entidad al recurso reservable. |
| ResourceGroup | EntityReference | Una referencia de entidad al grupo de recursos que se pueden reservar. |
| BusinessUnit | EntityReference | Una referencia de entidad a la unidad de negocio. |
| OrganizationalUnit | EntityReference | Una referencia de entidad a la unidad organizativa. |
| ResourceType | Número entero | El tipo de recurso. Consulte el atributo ResourceType en la entidad BookableResource para ver los posibles valores. |
| PoolId | GUID | El Id. del grupo del que es miembro el recurso durante la duración del intervalo de tiempo. |
| CrewId | GUID | El Id. del equipo del que es miembro el recurso durante la duración del intervalo de tiempo. |
| Características | EntityCollection | Las características de recursos que se pueden reservar. Cada entidad de la colección contiene entidades con características e información de calificación.
|
| HasStartLocation | Booleana | Un valor booleano que indica si el recurso tiene una ubicación de inicio. |
| HasEndLocation | Booleana | Un valor booleano que indica si el recurso tiene una ubicación final. |
| String | La dirección de correo electrónico del recurso. | |
| Teléfono | String | El número de teléfono del recurso. |
| ImagePath | String | Ruta de acceso a la imagen del recurso. |
| CalendarId | GUID | El Id. del calendario del recurso. |
Ejemplos
En este ejemplo, se utiliza la versión 3 de la API del asistente de horarios, que soporta llamadas a la API web, para un requisito con una duración de 60 minutos. Al usar el settings atributo, filtras los resultados. Consideras dos tipos de recursos para los resultados finales: 1 y 2 (es decir, genérico y contacto).
{
"Version": "4",
"IsWebApi": true,
"Requirement": {
"msdyn_fromdate": "2021-07-14T00:00:00Z",
"msdyn_todate": "2021-07-15T23:59:00Z",
"msdyn_remainingduration": 60,
"msdyn_duration": 60,
"msdyn_TimeGroup@odata.bind": "/msdyn_timegroups(c3dc79ea-d12f-ee11-9cc9-000d3a745a58)",
"@odata.type": "Microsoft.Dynamics.CRM.msdyn_resourcerequirement"
},
"Settings": {
"ConsiderSlotsWithProposedBookings": false,
"MovePastStartDateToCurrentDate": true,
"@odata.type": "Microsoft.Dynamics.CRM.expando"
},
"ResourceSpecification": {
"@odata.type": "Microsoft.Dynamics.CRM.expando",
"ResourceTypes@odata.type": "Collection(Microsoft.Dynamics.CRM.expando)",
"ResourceTypes": [
{
"@odata.type": "Microsoft.Dynamics.CRM.expando",
"value": "1"
},
{
"@odata.type": "Microsoft.Dynamics.CRM.expando",
"value": "2"
}
],
"Constraints": {
"@odata.type": "Microsoft.Dynamics.CRM.expando",
"Characteristics@odata.type": "Collection(Microsoft.Dynamics.CRM.expando)",
"Characteristics": [
{
"@odata.type": "Microsoft.Dynamics.CRM.expando",
"characteristic": {
"@odata.type": "Microsoft.Dynamics.CRM.expando",
"value": "67387f9f-12e2-ec11-bb43-000d3aed25f7"
},
"ratingvalue": {
"@odata.type": "Microsoft.Dynamics.CRM.expando",
"value": "a1b2c3d4-5678-90ab-cdef-1234567890ab"
}
}
],
"Territories@odata.type": "Collection(Microsoft.Dynamics.CRM.expando)",
"Territories": [
{
"@odata.type": "Microsoft.Dynamics.CRM.expando",
"value": "cc19f004-4483-ee11-8178-000d3a5c32c3"
}
],
"Roles@odata.type": "Collection(Microsoft.Dynamics.CRM.expando)",
"Roles": [
{
"@odata.type": "Microsoft.Dynamics.CRM.expando",
"value": "76998e42-744c-f011-877d-6045bdfb899e"
}
]
}
}
}
El siguiente ejemplo demuestra el uso adecuado de las colecciones de entidades. En este caso, especifica MustChooseFromResources.
{
"Version": "4",
"IsWebApi": true,
"Requirement": {
"msdyn_fromdate": "2021-07-14T00:00:00Z",
"msdyn_todate": "2021-07-15T23:59:00Z",
"msdyn_remainingduration": 60,
"msdyn_duration": 60,
"msdyn_latitude": 47.64807,
"msdyn_longitude": -122.41249,
"msdyn_worklocation": 690970000,
"msdyn_TimeGroup@odata.bind": "/msdyn_timegroups(c3dc79ea-d12f-ee11-9cc9-000d3a745a58)",
"@odata.type": "Microsoft.Dynamics.CRM.msdyn_resourcerequirement"
},
"Settings": {
"ConsiderSlotsWithProposedBookings": false,
"MovePastStartDateToCurrentDate": true,
"MaxNumberOfResourcesToEvaluate":500,
"ConsiderTravelTime": true,
"MaxResourceTravelRadius": {
"Value": 20,
"Unit" : 192350000,
"@odata.type": "Microsoft.Dynamics.CRM.expando"
},
"@odata.type": "Microsoft.Dynamics.CRM.expando"
},
"ResourceSpecification": {
"@odata.type": "Microsoft.Dynamics.CRM.expando",
"ResourceTypes@odata.type": "Collection(Microsoft.Dynamics.CRM.expando)",
"ResourceTypes": [
{
"@odata.type": "Microsoft.Dynamics.CRM.expando",
"value": "1"
},
{
"@odata.type": "Microsoft.Dynamics.CRM.expando",
"value": "2"
}
],
"MustChooseFromResources@odata.type": "Collection(Microsoft.Dynamics.CRM.expando)",
"MustChooseFromResources": [
{
"@odata.type": "Microsoft.Dynamics.CRM.expando",
"value": "2145a982-f718-ed11-b83e-0022482d79c8"
}
],
"Constraints": {
"@odata.type": "Microsoft.Dynamics.CRM.expando",
"Characteristics@odata.type": "Collection(Microsoft.Dynamics.CRM.expando)",
"Characteristics": [
{
"@odata.type": "Microsoft.Dynamics.CRM.expando",
"characteristic": {
"@odata.type": "Microsoft.Dynamics.CRM.expando",
"value": "67387f9f-12e2-ec11-bb43-000d3aed25f7"
},
"ratingvalue": {
"@odata.type": "Microsoft.Dynamics.CRM.expando",
"value": "a1b2c3d4-5678-90ab-cdef-1234567890ab"
}
}
],
"Territories@odata.type": "Collection(Microsoft.Dynamics.CRM.expando)",
"Territories": [
{
"@odata.type": "Microsoft.Dynamics.CRM.expando",
"value": "cc19f004-4483-ee11-8178-000d3a5c32c3"
}
]
}
}
}