Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
As organizações do Field Service precisam de agendar trabalho, muitas vezes, através de um agente de suporte diretamente pelo cliente. Normalmente, as reservas são criadas com base nos recursos disponíveis para a empresa e nos requisitos do trabalho.
Quando usar pelo menos Dynamics 365 Field Service v8.8.43.51 e o Universal Resource Scheduling v3.12.46.21 para agendar trabalho, use a API msdyn_SearchResourceAvailability para recuperar todos os recursos elegíveis para o trabalho, para que possa agendar o trabalho de forma eficiente. No momento em que escrevo, a v3 é a versão mais recente e msdyn_SearchResourceAvailability suporta chamadas à API web.
Nota
Use a versão mais recente da API, pois versões mais antigas podem usar métodos de autenticação obsoletos.
Parâmetros de entrada
| Nome | Tipo | Descrição | Obrigatório | Predefinido |
|---|---|---|---|---|
| Versão | Cadeia | O número de versão da API identifica a versão da API que deve ser invocada. Segue o formato de major.minor.patch. O pedido não tem de conter o número completo da versão.
|
Sim | -N/A- |
| IsWebApi | booleano | Define para True para usar o assistente de agendamento através da API web. | Sim | -N/A- |
| Necessidade | Entidade | Este atributo especifica o requisito de recursos para o qual a disponibilidade de recursos está a ser obtida. Espera-se que esta seja uma entidade de tipo msdyn_resourcerequirement. O requisito pode ser um registo pré-existente da base de dados ou um criado no momento com as restrições necessárias. A entidade deve conter todas as especificidades que são relevantes para a sua pesquisa. O @odata.type para esta entidade deve ser Microsoft.Dynamics.CRM.msdyn_requirement. Seguem-se alguns atributos importantes a preencher:
|
Sim | -N/A- |
| Definições | Entidade | O atributo de definições ajuda a filtrar ainda mais os recursos obtidos. Especifique definições como atributos num entity bag. O tipo de entidade não importa. Pode especificar o nome lógico de qualquer entidade. | Sim | -N/A- |
| ResourceSpecification | Entidade | Defina o resourceSpecification atributo como atributos num entity bag. O @odata.type para esta entidade deve ser Microsoft.Dynamics.CRM.expando. |
Não | Nenhum |
Entidade de definições
A entidade de definições não é uma entidade que exista no Dataverse; no entanto, é uma coleção de todos os seguintes atributos que ajudam a API do assistente da agenda a filtrar os resultados. Assim, o @odata.type para esta entidade deve ser Microsoft.Dynamics.CRM.expando.
| Nome | Tipo | Descrição | Obrigatório | Predefinido |
|---|---|---|---|---|
| ConsiderSlotsWithLessThanRequiredCapacity | booleano | Defina isto como True se um intervalo de tempo com menos do que a capacidade (esforço) requerida deve ser considerado ao calcular os possíveis intervalos de tempo disponíveis no calendário do recurso. | Não | Falso |
| ConsiderSlotsWithLessThanRequiredDuration | booleano | Defina isto como True se um intervalo de tempo com menos do que a duração requerida deve ser considerado ao calcular os possíveis intervalos de tempo disponíveis no calendário do recurso. | Não | Falso |
| ConsiderSlotsWithOverlappingBooking | booleano | Defina isto como True se um intervalo de tempo com reservas sobrepostas deve ser considerado ao calcular os possíveis intervalos de tempo disponíveis no calendário do recurso. | Não | Falso |
| ConsiderSlotsWithProposedBookings | booleano | Defina isto como True se um intervalo de tempo com reservas propostas deve ser considerado ao calcular os possíveis intervalos de tempo disponíveis no calendário do recurso. | Não | Falso |
| ConsiderAppointments | booleano | Defina isto como True para que a API de disponibilidade de recursos de pesquisa respeite compromissos existentes do Dataverse como reservas no recurso, desde que as definições de organização e de recursos tenham sido definidas. As consultas com os estados Ocupado ou Concluído são consideradas indisponíveis para operações de agendamento. | Não | Falso |
| ConsiderTravelTime | booleano | Defina isto como True se um tempo de viagem deve ser considerado ao calcular os possíveis intervalos de tempo no calendário do recurso. | Não | Verdadeiro |
| ExcludeResourceCharacteristics | booleano | Defina isto como Verdadeiro para excluir as características dos recursos nos intervalos de tempo em resposta. | Não | Falso |
| MovePastStartDateToCurrentDate | booleano | Defina isto como True para mover uma data de início no passado para a data atual. | Não | Falso |
| UseRealTimeResourceLocation | booleano | Defina isto como True se a localização em tempo real dos recursos deve ser usada ao calcular possíveis intervalos de tempo no calendário do recurso. | Não | Falso |
| SortOrder | EntityCollection | Especifique a ordem de classificação usando uma coleção de entidades. Cada entidade na coleção representa um critério de classificação e só pode classificar Resources a partir da resposta, mas não TimeSlots. O @odata.type para esta entidade deve ser Microsoft.Dynamics.CRM.expando. Seguem-se os atributos que precisa de preencher:
|
Não | Nenhum |
| MaxResourceTravelRadius | Entidade | Este atributo especifica o máximo que pode ser definido numa entidade. O @odata.type para esta entidade deve ser Microsoft.Dynamics.CRM.expando. Seguem-se os atributos que precisa de preencher:
|
Não | 0 quilômetros. Se for esse o caso, não são obtidos recursos para os requisitos no local. |
| MaxNumberOfResourcesToEvaluate | Número inteiro | Este atributo define um limite para o número de recursos que são considerados para o pedido. | Não | Se este atributo não estiver incluído na chamada API, o sistema utiliza o Limite de Recuperação de Disponibilidade de Recursos a partir da definição de entidade agendada, conforme definido nas definições de Editar para entidades ativadas. Se incluído na chamada, ele substitui o Limite de Recuperação de Disponibilidade de Recursos definido. |
| ConsiderOutlookSchedules | booleano | Defina isto para True se os horários de Outlook deverem ser considerados. Disponível apenas nas versões 3.1.0 e posteriores. | Não | Falso |
Entidade de especificação do recurso
| Nome | Tipo | Descrição | Obrigatório | Predefinido |
|---|---|---|---|---|
| ResourceTypes | EntityCollection | Este atributo especifica o tipo de recursos requerido pelo requisito. Use uma coleção de entidades para especificar este atributo. Cada entidade na coleção representa um tipo de recurso reservável. O @odata.type para esta entidade deve ser Microsoft.Dynamics.CRM.msdyn_resourceType. Este atributo é obrigatório:
|
Não | Todos os tipos de recursos, exceto equipas |
| PreferredResources | EntityCollection | Este atributo especifica os recursos preferidos para o requisito. Adicione recursos a esta coleção de entidades para garantir que estão no topo da lista de recursos disponíveis. Mesmo os recursos que não fazem parte da coleção de entidades estão na lista, mas só depois dos recursos preferidos. | Não | Nenhum |
| RestrictedResources | EntityCollection | Este atributo especifica os recursos que não devem ser considerados para o requisito. Todos os intervalos de tempo deste recurso são filtrados da lista de resultados desta API. | Não | Nenhum |
| MustChooseFromResources | EntityCollection | Este atributo especifica os únicos recursos que podem estar na lista de recursos disponíveis. Filtra todos os outros resultados da lista de saída. | ||
| Restrições | Entidade | Este atributo especifica as restrições adicionais que devem ser aplicados à obtenção dos recursos disponíveis. | Não | Nenhum |
| RetrieveResourcesQueryId | GUID | O ID da consulta de Recursos de Obtenção. | Não | O ID da Consulta de Recursos de Obtenção predefinida. |
| BookedResourceId | GUID | Este atributo especifica o recurso atualmente reservado para o requisito. | Não | Nenhum |
Nota
Use uma coleção de entidades de recursos reservables para especificar os atributos de recursos Preferenciais, Restritos e MustChooseFrom . Cada entidade na coleção representa um recurso Preferencial, Restrito ou MustChooseFrom . Este atributo é obrigatório para eles:
-
Valor (Guid): O ID do recurso que pode ser reservado do recurso Preferencial, Restrito ou MustChooseFrom . O
@odata.typepara esta entidade deve serMicrosoft.Dynamics.CRM.msdyn_bookableresource.
Restrições
Especifique restrições adicionais através de atributos nesta entidade. O tipo de entidade não importa. Pode especificar o nome lógico de qualquer entidade.
Consulte a Consulta de Recursos de Obtenção nas definições do quadro da agenda para identificar quais as restrições que podem ser aplicadas. Por predefinição, inclui o seguinte:
| Nome | Tipo | Descrição |
|---|---|---|
| Características | EntityCollection | Um conjunto de características que um recurso qualificado deve possuir. Cada entrada contém um characteristic com o ID característico. Opcionalmente, inclua um ratingvalue com o valor de avaliação ID para filtrar recursos por um nível de proficiência específico. |
| Funções | EntityCollection | Uma coleção de IDs de funções que um recurso qualificado tem de ter. |
| Territórios | EntityCollection | Uma coleção de IDs de territórios. Um recurso qualificado tem de ser atribuído a um dos territórios. |
| UnspecifiedTerritory | booleano | Em combinação com a restrição de territórios, especifica que um recurso qualificado tem de ser atribuído a um dos territórios ou a nenhum território. |
| OrganizationalUnits | EntityCollection | Uma coleção de IDs de unidades organizacionais. Um recurso qualificado tem de ser membro de uma das unidades organizacionais especificadas. |
| Teams | EntityCollection | Uma coleção de IDs de equipas. Um recurso qualificado tem de pertencer a uma das equipas (implica que o tipo de recurso é um utilizador do sistema). |
| BusinessUnits | EntityCollection | Uma coleção de IDs de unidades de negócio. Um recurso qualificado tem de pertencer a uma das unidades de negócio (implica que o recurso é um utilizador do sistema). |
Parâmetros de saída
Ao mais alto nível, a saída tem os seguintes quatro parâmetros. Os resultados estão representados em coleções de entidades e em entidades. As respostas não podem incluir todos os atributos descritos aqui como valores nulos ou valores NA são omitidos da resposta. Verifique sempre a presença de um atributo antes de tentar aceder-lhe.
| Nome | Tipo | Descrição |
|---|---|---|
| TimeSlots | EntityCollection | Uma coleção de resultados de intervalos de tempo. Para obter mais informações, consulte a seção de entidade de intervalo de tempo . |
| Recursos | EntityCollection | Uma coleção de resultados de recursos. Os recursos são representados como uma coleção de entidades com os seguintes atributos:
|
| Relacionada | Entidade | Os recursos relacionados representam recursos e intervalos de tempo de recursos que não estão diretamente qualificados para o requisito pedido, mas estão relacionados. Por exemplo, se um membro da equipa se qualificar para um requisito, os outros membros dessa equipa seriam resultados relacionados.
|
| Exceções | Entidade | Este atributo contém informações sobre qualquer exceção que ocorreu e informações sobre se e onde a pesquisa de recursos foi truncada.
|
Entidade de intervalos de tempo
| Nome | Tipo | Descrição |
|---|---|---|
| ID | GUID | Identificador exclusivo do intervalo de tempo |
| Tipo | Número inteiro | O tipo de horário. Pode ser um dos seguintes valores:
|
| StartTime | DateTime | A hora de início do intervalo de tempo. Se houver viagem para o requisito, esta hora é a de início da viagem. Se não, esta é a hora de início do requisito. |
| ArrivalTime | DateTime | A hora de chegada do intervalo de tempo. Se houver viagens para o requisito, este tempo é o início do requisito, depois de a viagem estar concluída. Caso contrário, é o mesmo que a hora de início do intervalo de tempo. |
| EndTime | DateTime | A hora de fim do intervalo de tempo. |
| Esforço | Número inteiro | O esforço ou capacidade do recurso para executar os requisitos. |
| ResourceRequirement | EntityReference | O requisito de recurso para o qual os intervalos de tempo estão a ser obtidos. |
| Potencial | booleano | Um valor booleano que indica se o intervalo de tempo tem potencial para cumprir o requisito pedido. |
| IsDuplicate | booleano | Um valor booleano que indica se o intervalo de tempo é um duplicado. |
| AllowOverlapping | booleano | Um valor booleano que indica se a sobreposição é permitida. |
| recurso | Entidade | O recurso ao qual o intervalo de tempo pertence. Para obter mais informações, consulte recurso do intervalo de tempo. |
| Localização | Entidade | A localização tem três atributos:
|
| Viagens | Entidade | Esta entidade contém detalhes de informações sobre o tempo de viagem e distância para um intervalo de tempo. Os seguintes são os atributos:
|
| Seguinte | Entidade | Esta entidade contém detalhes sobre o tempo de viagem e distância para a próxima reserva de intervalo de tempo.
|
| Disponibilidade | Entidade | As informações de disponibilidade detalhadas para um intervalo de tempo. Esta entidade é usada com grupos de tempo.
|
| TimeGroup | Entidade | Os detalhes sobre um grupo de tempo.
|
Sugestão
Ao criar reservas usando a API, utilize o campo Potencial descrito na tabela. A não utilização desse campo poderá levar a reservas sobrepostas ou inadequadas.
Recurso do intervalo de tempo
| Nome | Tipo | Descrição |
|---|---|---|
| recurso | EntityReference | Uma referência de entidade ao recurso agendável. |
| ResourceGroup | EntityReference | Uma referência de entidade ao grupo de recurso agendável. |
| BusinessUnit | EntityReference | Uma referência de entidades para a unidade de negócio. |
| OrganizationalUnit | EntityReference | Uma referência de entidade para a unidade organizacional. |
| ResourceType | Número inteiro | O tipo do recurso. Consulte o atributo ResourceType na entidade BookableResource para obter valores possíveis. |
| PoolId | GUID | O ID do conjunto do qual o recurso é membro pela duração do intervalo de tempo. |
| CrewId | GUID | O ID da equipa do qual o recurso é membro pela duração do intervalo de tempo. |
| Características | EntityCollection | As caraterísticas do recurso reservável. Cada entidade na coleção contém entidades com caraterísticas e informações de classificação.
|
| HasStartLocation | booleano | Um valor booleano que indica se o recurso tem uma localização inicial. |
| HasEndLocation | booleano | Um valor booleano que indica se o recurso tem uma localização final. |
| Cadeia | O endereço de e-mail do recurso. | |
| Telefone | Cadeia | O número de telefone do recurso. |
| ImagePath | Cadeia | O caminho para a imagem do recurso. |
| CalendarId | GUID | O ID do calendário do recurso. |
Exemplos
Neste exemplo, utiliza-se a versão 3 da API do assistente de agendamento, que suporta chamadas web API, para um requisito com duração de 60 minutos. Ao usar o settings atributo, filtras os resultados. Considera dois tipos de recursos para os resultados finais: 1 e 2 (ou seja, genérico e de 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"
}
]
}
}
}
O exemplo que se segue demonstra a utilização adequada de coleções de entidades. Neste 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"
}
]
}
}
}