messaging.voip.
Para falar e ouvir em uma chamada a partir do código do servidor, use
CallsClient de @polymorfa/sdk/calls. Para chamadas no navegador, veja o
guia de chamadas.
Faça uma chamada
session é o Número que faz a chamada. participant indica quem atua na
chamada pelo seu servidor, como server:agent-7. O padrão é default. Defina
video: true para uma chamada de vídeo.
Passe uma chave de idempotência para que o SDK possa tentar novamente a
solicitação sem fazer uma segunda chamada.
Verifique antes de ligar
check executa as mesmas verificações que place sem fazer a chamada.
refusal é calls_disabled, call_recipient_opted_out,
call_destination_blocked, call_permission_required ou call_limit_reached.
place executa as verificações de novo, então uma chamada ainda pode falhar se
algo mudou nesse intervalo.
Atenda, recuse e encerre chamadas
As chamadas recebidas chegam como webhookscall.received. Uma chamada toca
até alguém atender ou recusar. Nada atende automaticamente.
acceptatende uma chamada que está tocando. Aceites posteriores de outros participantes entram na chamada, a menos que o primeiro participante tenha definidoexclusive: true. Nesse caso, eles falham com409 call_claimed.rejectrecusa uma chamada que está tocando. Caso contrário, falha com409 call_not_ringing.endencerra a chamada para todos.leave(callId, { connectionId })fecha uma das suas conexões e mantém a chamada em andamento.addParticipant(callId, { to })convida outro usuário do WhatsApp.
Peça permissão para ligar
O WhatsApp exige a permissão de uma pessoa antes que um Número da API oficial ligue para ela. Leia o estado atual e depois peça a permissão com uma mensagem:call_permission_request_limited. As
mudanças chegam como webhooks call.permission_changed. Números com
dispositivos vinculados não usam permissão para ligar.
Altere as configurações de chamadas de um Número
callsEnabled: falsedesativa as chamadas do Número. Novas chamadas falham comcalls_disablede as chamadas recebidas são recusadas. As chamadas em andamento continuam.conferenceMode(padrãotrue) permite que todos os participantes que você conectar ouçam uns aos outros. Comfalse, cada um ouve apenas quem ligou pelo WhatsApp.inboundRoute: "sip_trunk"comsipTrunkIdenvia as chamadas recebidas para um tronco SIP.clients(o padrão) faz tocar seus apps e navegadores.
expectedRevision desatualizado falha com 409 state_conflict.
Fale em uma chamada a partir do código do servidor
CallsClient acompanha as chamadas de um Número e entrega o áudio de cada
chamada, por exemplo para executar um agente de voz:
call.audio transporta PCM mono de 16 bits com sinal em
call.audio.sampleRate. Escreva o seu próprio áudio com call.audio.write().
O cliente se reconecta depois de uma queda de conexão. Chame disconnect()
para parar de acompanhar o Número.
Conecte um tronco SIP
Um tronco SIP conecta o seu PBX às chamadas de um projeto. Leia o endereço que você vai configurar no PBX:update(trunkId, { enabled: false, expectedRevision }).
rotateCredentials(trunkId) emite uma nova senha de entrada. Um cliente de
equipe passa o ID do projeto como primeiro argumento de list e create. Veja
Troncos SIP.
Bloqueie países e mantenha uma lista de não ligar
A política de chamadas da equipe bloqueia chamadas para códigos de discagem de países. Ela precisa de uma chave da equipe:update substitui a lista inteira. Os códigos têm de 1 a 4 dígitos, sem +;
1876 bloqueia a Jamaica sem bloquear o restante de +1. Enquanto houver
algum código bloqueado, chamadas para pessoas cujo número de telefone é
desconhecido também são recusadas.
A lista de não ligar bloqueia chamadas para pessoas específicas:
call_recipient_opted_out. A
correspondência usa o identificador que você armazenou: uma entrada com número
de telefone não bloqueia uma chamada endereçada por ID de usuário.
import({ entries }) adiciona até 5.000 entradas de uma vez.
Para histórico e estatísticas de chamadas, veja
Registros de chamadas.