Funcionamento das Chamadas - devbasetecnologia/devmobility GitHub Wiki

Funcionamento das Chamadas

O sistema possui um serviço (WebJob) que roda em background que verifica as solicitações, os endereços e os prestadores disponíveis no raio, e que atendem aos requisitos das solicitações feitas pelos clientes. Este serviço é o responsável pela escolha dos prestadores que receberão as solicitações e pelo envio das mesmas. O aplicativo dos prestadores é responsável por receber essas solicitações, informar ao prestador através de um alarme sonoro e visual e também informar ao servidor do recebimento desta solicitação. A cada passo de comunicação ou falta de comunicação, o servidor (WebJob) em conjunto com as informações fornecidas pelo app do prestador e cliente podem alterar o status da solicitação e o status da chamada (uma solicitação pode gerar vários registros de chamada, pois pode ser enviada para um ou vários prestadores).

Para clarificar quais ações e quais status podem ser assumidos pelo sistema em conjunto com as decisões do prestador e cliente, abaixo segue uma lista de status possíveis e seus significados:

Status de Solicitações:

  • Pedido criado (Solicitação que acabou de ser criada e está aguardando que o sistema o envie para o prestador disponível, aprovado para o serviço solicitado, dentro do raio de atendimento configurado no serviço por região, mais próximo do endereço de origem da solicitação);

  • Aguardando Motorista (Solicitação já foi enviada para um ou vários prestadores, e o último a receber aceitou a solicitação e deve estar se locomovendo até o endereço de origem da solicitação);

  • Em Viagem (Prestador chegou ao local de origem da solicitação, o cliente entrou no veículo e o prestador iniciou a viagem);

  • Viagem Finalizada (Os 3 passos acima já foram executados e o prestador finaliza a solicitação);

  • Cancelado pelo Motorista (Ocorre caso o motorista cancele a solicitação depois de tê-la aceitado);

  • Cancelado pelo Cliente (Ocorre caso o cliente cancele a solicitação depois de um prestador tê-la aceitado);

  • Excedeu Tentativas

  • Excedeu Raio de atendimento
  • Cancelado pelo Administrador (Quando um usuário com acesso ao painel admin cancela a solicitação);

  • Cancelado pelo Sistema (Trata-se de uma segurança no sistema. Ocorre quando uma solicitação é criada em "duplicidade" (mais comum em iOS). O sistema (webJob) verifica que houve a duplicidade e cancela a segunda. A cobrança também é cancelada.)

Status de Chamadas:

(Estes status são verificáveis através da tela de detalhe da solicitação, no quadro Histórico da Solicitação e no relatório de análise canceladas)

  • Solicitação enviada para o prestador (Ocorre quando a solicitação está no status "Pedido Criado" e o sistema já a enviou para um prestador);

  • Prestador recebeu solicitação (Ocorre quando o aplicativo do prestador recebe a solicitação. Ele envia a informação da data e hora em que foi recebida para o servidor automaticamente, para que o servidor aguarde o tempo de timeout e envie para outro prestador, caso este não aceite);

  • Prestador aceitou solicitação (Ocorre quando a solicitação foi enviada para o prestador, o aplicativo recebeu, informou o servidor sobre isso, alertou o prestador com o alarme sonoro e exibiu a tela com as informações necessárias para o prestador tomar a decisão de aceitar ou rejeitar, e o prestador pressionou o botão aceitar);

  • Prestador rejeitou solicitação (Ocorre quando a solicitação foi enviada para o prestador, o aplicativo recebeu, informou o servidor sobre isso, alertou o prestador com o alarme sonoro e exibiu a tela com as informações necessárias para o prestador tomar a decisão de aceitar ou rejeitar, e o prestador pressionou o botão recusar);

  • Timeout (Ocorre quando a solicitação foi enviada para o prestador, o aplicativo recebeu (ou não, ex.: falha internet após envio), informou o servidor sobre isso (ou não), e nenhuma ação foi tomada, ou seja, o prestador não aceitou nem recusou);

  • Prestador saiu da tela (Ocorre quando a solicitação foi enviada para o prestador, o aplicativo recebeu, informou o servidor sobre isso, e o prestador não aceitou nem recusou, mas saiu da tela de chamada sem executar qualquer ação);

  • Aceitou após cancelamento (Ocorre quando a solicitação foi enviada para o prestador, mas o aplicativo recebeu atrasado, por motivos de conexão ou lentidão. Nesse caso o cliente cancelou a solicitação, e só depois disso o prestador recebeu e tentou aceitar. Como a solicitação já foi cancelada pelo cliente, o prestador receberá a mensagem de que a solicitação já foi cancelada ao pressionar o aceitar);

  • Aceitou após timeout (Ocorre quando a solicitação foi enviada para o prestador, mas o aplicativo recebeu atrasado, por motivos de conexão ou lentidão. Nesse caso o servidor já enviou para outro motorista ou alterou o status da solicitação para Excedeu Raio de Atendimento ou Excedeu Tentativas, e só depois disso o prestador recebeu e tentou aceitar. Como a solicitação já não está mais disponível para este prestador, o prestador receberá a mensagem de que a solicitação já foi cancelada ao pressionar o aceitar);

Mensagens apresentadas no app:

  • Solicitação já foi aceita por outro Motorista

Ocorre quando a solicitação foi enviada para o prestador, o aplicativo recebeu, informou o servidor sobre isso, alertou o prestador com o alarme sonoro e exibiu a tela com as informações necessárias para o prestador tomar a decisão de aceitar ou rejeitar, e após isso ocorrer uma lentidão ou oscilação na internet, "atrasando" o envio das informações para o sistema. Isso faz com que a contagem de aceite ainda conste no app, mas no sistema essa contagem já acabou, e por isso o sistema enviou a solicitação para outro motorista, e ele já aceitou.
Essa situação é mais comum quando o motorista demora muito para aceitar a solicitação, por exemplo, tenta aceitar nos ultimos segundos.

Ocorre também quando a plataforma estiver utilizando a "Chamada Múltipla", em que o sistema envia as solicitações para "mais de um prestador", caso o prestador tente atender uma solicitação que já foi aceita por outro.

.