Pular para o conteúdo principal

Capture um erro

Toda solicitação que falha lança uma subclasse de PolymorfaError:
Cada erro tem estes campos: Os códigos de erro nunca mudam de significado. A API pode adicionar novos códigos, então trate códigos desconhecidos. isKnownPolymorfaErrorCode(code) informa se o SDK instalado conhece um código.

Classes de erro

402: a equipe não pode pagar

Ações pagas, como iniciar um Número pago, reservam crédito primeiro. Um 402 significa que a equipe não pode pagar pela solicitação ou não tem o direito de uso necessário. Tentar novamente não resolve. Verifique o saldo e o plano no Console e depois tente de novo. O SDK nunca tenta novamente um 402.

409: o recurso mudou

Configurações com revisão, como as configurações de chamadas e a configuração do Número, falham com state_conflict quando outra pessoa as alterou depois que você as leu. Leia o valor atual, aplique sua alteração de novo e envie a nova revisão. Um 409 com um código idempotency_* diz respeito à sua chave de idempotência. Veja Tente novamente uma escrita com segurança.

429: limite de taxa atingido

rateLimitReason informa qual limite foi aplicado, como request_rate ou whatsapp. Aguarde o tempo do cabeçalho retry-after antes de enviar de novo. O SDK já faz isso nas solicitações que ele tenta novamente. Veja Limites de taxa.

Novas tentativas automáticas

O SDK tenta novamente uma solicitação quando as duas condições são verdadeiras:
  • A solicitação é um GET, HEAD ou OPTIONS, ou tem uma idempotencyKey.
  • Ela falhou com um erro de rede, um timeout ou o status 408, 409, 429 ou 5xx.
Ele aguarda o Retry-After quando a API o envia, até 60 segundos. Caso contrário, aumenta a espera exponencialmente, até 5 segundos entre tentativas. Por padrão, ele tenta novamente duas vezes. Defina maxNetworkRetries no cliente ou na solicitação para mudar isso, ou use 0 para desativar as novas tentativas. Uma escrita sem chave de idempotência é enviada uma única vez. O SDK não tenta novamente essa escrita, porque não consegue saber se a primeira tentativa foi executada.

Tente novamente uma escrita com segurança

Uma chave de idempotência torna uma escrita segura para repetir. A API a executa uma vez e retorna o resultado armazenado em cada repetição com a mesma chave:
Use um ID do seu próprio sistema, como o ID de um evento de pedido, para que um processo reiniciado envie a mesma chave. A API guarda cada chave por 24 horas por credencial. Estes métodos criam uma chave aleatória quando você não passa uma, então as novas tentativas automáticas deles são sempre seguras: messages.send, messages.react, chats.editMessage, chats.deleteMessage, channels.reactToMessage, campaigns.create, campaigns.launch, campaigns.pause, campaigns.resume, campaigns.stop, webhooks.test e operations.cancel.

Leia todas as páginas

Listas de eventos, webhooks, entregas de webhook, operações, registros de chamadas e opt-outs de chamadas retornam uma CursorPage. Percorra-a com for await e o SDK busca as próximas páginas para você:
Para buscar uma página por vez, use items, hasMore e nextPage():
nextPage() retorna null depois da última página. page.response.metadata contém os metadados da resposta. Alguns métodos retornam o envelope de página da API diretamente, como { data, page }. Passe page.nextCursor como cursor enquanto page.hasMore for true:
Veja Paginação para os limites de página.