Tratamento de Erros

Cada método possui parâmetros que quando não atendidos de acordo com as exigências da API poderão resultar em erro da requisição, e neste caso o quando o result retorna com error indica que algo invalidou a requisição. Neste caso é necessário imprimir a variável message para visualizar o erro e entender o que houve de errado, veja exemplo abaixo onde forçamos a requisição de um erro:

Requisição:

require 'Src/ZapMEApi.php';

$zapme            = new ZapMEApi;
$zapme->api       = 'api-7815696ecbf1c96e6894b';
$zapme->secret    = '0876943851';
$zapme->method    = 'sendmessage';

//$zapme->phone   = '5599999999999'; comentamos a linha do telefone para não enviá-lo, forçando o erro.

$zapme->message   = 'Olá, teste!';
$return           = $zapme->Run();

if ($return['result'] === 'success' && $result['status_result'] === 'message_queued')
{
        // se tudo deu certo ... debugamos o retorno da variável $return
        var_dump($return);
}
else
{
        // se não ... iremos imprimir somente o index 'message' que demonstrará qual é o erro
        echo $return['message'];
}

Erro do Exemplo:

"O campo phone é requerido"

Exemplo completo do erro:

{
        "result": "error",
        "date": "2020-09-15 12:32:39",
        "status": 400,
        "status_result": "validation_failure",
        "message": "O campo phone é requerido"
}

Observações:

  1. O tipo de retorno é jSON

  2. Em toda resposta existem 3 (três) índices padrões: result, date, status

  3. A date é a data atual retornada em formato inglês

  4. O índice message em 90% dos casos é retornado sem traços, acentos e pontos

  5. Se status for 400 o status do HTTP será definido como “400 Bad Request”

  6. Se status for 200 o status do HTTP será definido como “200 OK”

Lista dos Status de Erro

Para auxiliar no tratamento dos erros criamos a sintaxe status_result que consiste em uma abreviatura do erro. Veja abaixo uma lista com todos os status_result disponíveis para entender o significado de cada um deles.

  • nothing_to_do

Ërro de parâmetros fundamentais

  • inexistent_method

Método informado inexistente/inválido

  • validation_failure

Falha de validação de parâmetros ou de recursos para uso da API

  • invalid_token

Falha de verificação de token de segurança (interno)

  • qr_code_unauthenticated

QR Code não autenticado

  • phone_in_use

Telefone informado já encontra-se em uso na agenda método: addcontact

  • maximum_contacts

Quantidade máxima de contatos na agenda foi atingida método: addcontact

  • group_non_exist

Grupo informado não existe na agenda método: addcontact

  • contact_created

Contato criado com sucesso método: addcontact

  • limit_reached

Envio abortado por excesso de limite definido método: sendmessage

  • ignore_out_of_expedient

Envio abortado por configuração de abortar envio no horário de expediente método: sendmessage

  • document_error

Envio abortado por erro no arquivo anexado método: sendmessage

  • message_queued

Envio efetuado com sucesso. Mensagem em fila método: sendmessage

  • message_not_found

Id de mensagem não encontrada método: consultmessage

  • consulted_successfully

Consulta de mensagem retornada com sucesso método: consultmessage

  • listed_successfully

Consulta de lista de mensagens retornada com sucesso método: listmessages