Guias
SIP
Quando o agente de voz e o simples reencaminhamento não chegam e pretende ligar um número ao seu próprio softphone ou sistema telefónico (PBX), precisa de um fornecedor de trunk SIP - a volai é um deles. Esta página é um guia passo a passo.
1Chamadas recebidas para o seu servidor SIP
Defina o encaminhamento do número para mode: "sip" e indique o seu sipUri - a partir daí a chamada vai diretamente para si, e não para o nosso agente nem para o reencaminhamento:
curl -X PATCH "https://volai.eu/v1/numbers/+420601234567" \
-H "Authorization: Bearer vk_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"routing": {"mode": "sip", "sipUri": "sip:rececao@o-seu-servidor.com"}}'Só o minuto recebido é cobrado - 0,50 kr/min (≈ 0,02 EUR), sem agente adicional - a estrutura completa do pedido e os outros modos de encaminhamento estão na referência da API REST.
Autenticação na sua central
Primeiro enviamos a chamada para o seu servidor SIP como um INVITE sem autenticação para sipUri. Uma central que lhe responde com um pedido de autenticação (401/407) e recusa a chamada sem mais nunca a recebe nesta forma - não há ninguém que responda ao pedido. Por isso acrescente ao encaminhamento também sipUsername e sipPassword - preenchendo ambos, a nossa rede responde ao pedido (SIP digest) e marca o número chamado. Verificado com uma chamada real para o número SIP nativo da Vapi, que aceita credenciais independentemente do conteúdo. Se a sua própria central também estabelece a chamada, depende dela - tem de responder efetivamente ao INVITE com um pedido de autenticação e aceitar o nome de utilizador e a palavra-passe que indicar; não o garantimos para todas as centrais (nos testes falhou, por exemplo, com o domínio SIP da Twilio). Sem sipUsername e sipPassword, o encaminhamento mantém a forma atual, sem autenticação. As credenciais acrescentam-se assim:
curl -X PATCH "https://volai.eu/v1/numbers/+420601234567" \
-H "Authorization: Bearer vk_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"routing": {"mode": "sip", "sipUri": "sip:rececao@o-seu-servidor.com", "sipUsername": "rececao", "sipPassword": "supersecret123"}}'Enviamos sempre o número chamado exatamente como aparece em sipUri antes do sinal @ - nunca acrescentamos nem retiramos um prefixo ou um zero inicial, pelo que a central de destino tem de tratar exatamente o que ali indicar.
Nem sipUsername nem sipPassword podem conter dois pontos, sinal @, espaços, aspas ou barra invertida, e cada um pode ter no máximo 64 caracteres.
Preencher apenas um dos dois é rejeitado - a API devolve "Please fill in both username and password, or leave both empty."
Dois pontos na parte do utilizador de sipUri (antes do sinal @) e uma porta no anfitrião (depois dos dois pontos a seguir ao servidor, por exemplo :5060) ainda não são suportados em conjunto com sipUsername e sipPassword - ambos devolvem o mesmo erro rígido. Sem credenciais, ambos continuam a funcionar sem alteração.
Exceção: um trunk SIP BYO da Vapi (endereço <credentialId>.sip.vapi.ai, ou <credentialId>.sip.eu.vapi.ai para uma organização na região da UE) não aceita credenciais. A Vapi reconhece as nossas chamadas pelo IP nos gateways do trunk e, com sipUsername e sipPassword preenchidos, a chamada nunca se estabelece, pelo que a API rejeita esse encaminhamento com o código de validação. O número SIP nativo da Vapi (sip:<name>@sip.vapi.ai) não é afetado.
Quem mais vê o nome de utilizador e a palavra-passe
O nome de utilizador e a palavra-passe viajam com a chamada para a nossa rede e ficam nos registos de encaminhamento - não é o único que os pode ver. Crie na sua central uma conta dedicada a nós, e não use a palavra-passe principal de administrador.
Atualizações parciais: um campo omitido mantém o valor guardado
Se o seu PATCH enviar apenas sipUri e omitir sipUsername e sipPassword , ambos os campos ficam inalterados - não precisa de os reenviar em cada alteração de sipUri. Um campo totalmente omitido do corpo mantém sempre o valor guardado; a autenticação só é apagada por uma cadeia vazia explícita em AMBOS os campos. A única exceção é a alteração do servidor: se alterar também a parte depois do sinal @, tem de enviar novamente a palavra-passe - nunca enviamos uma palavra-passe guardada para um servidor diferente daquele para o qual a indicou. Verifique o estado atual com o campo hasSipPassword da resposta.
A chamada não se estabeleceu? Autorize-nos por IP
A autenticação Sipa só funciona com um destino que desafie o INVITE e aceite as credenciais (verificado com o número SIP nativo da Vapi) - caso contrário a chamada não passa, quer preencha credenciais quer não. A nossa sinalização vem do intervalo 81.31.45.0/24, mais frequentemente de 81.31.45.51 e 81.31.45.56. Autorize todo esse intervalo na sua central e não precisará de credenciais - ela reconhece a chamada pelo endereço de origem, e não pelo nome de utilizador e palavra-passe.
2Credenciais SIP de um número
Obtenha as credenciais da linha com uma única chamada:
curl "https://volai.eu/v1/numbers/+420601234567/sip" \
-H "Authorization: Bearer vk_YOUR_KEY"{
"server": "sip.volai.cz",
"username": "123456",
"password": "a1b2c3d4e5f6",
"outboundTrunkAddress": "sip.volai.cz",
"port": 5060,
"transport": "tcp",
"inboundSignallingCidrs": ["81.31.45.0/24"]
}Configuração num softphone (Zoiper, Linphone)
Ambas as aplicações pedem basicamente o mesmo, apenas com nomes diferentes - procure "Add account" / "SIP account":
| Campo | Valor |
|---|---|
| Servidor / Domínio | sip.volai.cz |
| Nome de utilizador | da resposta acima (username) |
| Palavra-passe | da resposta acima (password) |
| Transporte | TCP |
| Porta | 5060 (porta SIP predefinida - deixe em branco se o campo oferecer uma opção vazia) |
O cliente pede que preencha um realm?
Deixe o campo vazio - a maioria dos clientes obtém o realm a partir do pedido de autenticação do servidor. O registo do seu cliente pode mostrar um domínio técnico pertencente à nossa rede, o que é esperado. Se o seu cliente exigir um realm como obrigatório, contacte o apoio.
Depois de guardar, o softphone deve registar-se (um ícone de estado "online"/"registado") e as chamadas para o número começarão a tocar diretamente nele.
3Chamadas efetuadas a partir de um cliente SIP
Depois de o softphone estar registado, pode marcar por si próprio através desta linha - não precisa de chamar nenhuma das nossas APIs, marca diretamente a partir do cliente como numa linha telefónica normal.
Os minutos saem do seu saldo volai
As chamadas efetuadas através de um cliente SIP são cobradas à mesma tarifa de uma chamada efetuada através da API - 0,92 kr/min (≈ 0,04 EUR) e debitadas do seu saldo - e não de uma conta SIP separada. As tarifas não incluem IVA, tal como toda a tabela de preços.
A ligação decorre diretamente entre o seu cliente e o servidor sip.volai.cz, e não através da nossa API, pelo que os minutos não podem ser bloqueados no momento exato da marcação. Uma chamada marcada diretamente a partir de um cliente SIP é cobrada retroativamente a partir dos registos de chamadas da rede - no mínimo 10 minutos depois de terminar, normalmente em meia hora. A chamada não aparece no seu saldo no momento da marcação. Os limites diários de chamadas e as verificações de saldo no momento da marcação não se aplicam a estas chamadas - só monitorizam as chamadas da API. Assim, o seu saldo pode descer abaixo de zero. Quando o saldo chega a zero, as novas ações faturáveis da API/MCP passam a ser rejeitadas (uma chamada exige um saldo de pelo menos 5 CZK). Quando o saldo ficar abaixo de zero, o acesso SIP da linha é desligado em poucos minutos, o reencaminhamento é desligado e recebe um e-mail; depois de carregar o saldo para pelo menos 5 CZK, tudo é retomado automaticamente e a palavra-passe mantém-se. Se a dívida não for regularizada no prazo de uma semana, o número é libertado de volta para o stock (o que termina permanentemente o acesso SIP). Por isso, vigie o seu saldo com antecedência, e não quando já está a zero.
Tem um agente de voz com IA, e não um softphone?
Este passo pressupõe um cliente que possa registar-se na linha (SIP REGISTER) - um softphone, uma central. Uma plataforma que apenas envia uma chamada autenticada uma vez, sem registo persistente (tipicamente agentes de voz com IA como o ElevenLabs), precisa de outra abordagem - veja Traga o seu próprio agente.
Utilize o endereço do trunk de saída da plataforma a partir do campo outboundTrunkAddress, e não o server acima - todos os detalhes nessa página.
4Limites
- Um registo por linha - um conjunto de credenciais suporta um dispositivo registado de cada vez. Se iniciar sessão com um segundo cliente, o primeiro perderá provavelmente o registo - não conte com vários dispositivos em simultâneo na mesma linha.
- Chamadas efetuadas a partir do seu próprio agente sim, peering completo de trunk não - as credenciais da linha permitem que o SEU cliente se registe connosco como telefone. As chamadas efetuadas a partir do seu próprio agente de voz (ElevenLabs ou outra plataforma) FUNCIONAM, no entanto, hoje - através do relay, veja Traga o seu próprio agente. Continua, porém, a não ser possível ligar a sua central como operador par com encaminhamento próprio para chamadas RECEBIDAS do exterior - para isso use o encaminhamento
forwardpara o número da sua central. - Apenas voz - sem vídeo nem outras extensões SIP.
Relacionado
API REST
Referência completa de todos os endpoints: números, chamadas, SMS, números de telemóvel para SMS, agentes e os seus rascunhos, ferramentas, gravações, webhooks, lista de não contactar, relay, conta, tarefas, saldo, documentos, calendários e integrações.
Agente de voz
Prompt de sistema, ferramentas, passagem a uma pessoa, gravações e dados estruturados da chamada.
Traga o seu próprio agente
Ligue uma plataforma de terceiros (ElevenLabs, Asterisk...) sem custo adicional por agente.