Migração
Migrar da Twilio para a volai numa tarde.
Uma API mais pequena, os mesmos conceitos. Termos da Twilio mapeados para a volai, código comparado lado a lado, um prompt pronto para o seu agente de IA e uma lista de tudo o que é preciso mudar.
Faz sentido para si?
Sim, se precisa de
- Números de telefone checos (+420) e tarifas locais de chamadas.
- Um agente de voz que funciona de origem, e não um construído a partir de streams de áudio e de um modelo próprio.
- Saldo comprado na moeda do seu país, sem surpresas cambiais no extrato do cartão.
- Chamadas e SMS no mesmo número checo - um número checo da Twilio faz chamadas ou SMS, enquanto a volai oferece o número para chamadas e SMS (um número fixo de Praga).
Fique com a Twilio se precisa de
- Mais números para receber SMS do que os limites da conta permitem, ou receber SMS noutros países - os números de voz da volai não recebem SMS, ao passo que o complemento número de telemóvel (um número móvel checo só para SMS) e o número para chamadas e SMS (um número fixo de Praga) recebem, no máximo dois de cada tipo por conta; os códigos de verificação de serviços não são garantidos.
- Números de telefone fora da oferta da volai: checos, eslovacos apenas com o indicativo de Bratislava, e números nos países da oferta atual, que servem só para chamadas, sem SMS e só ligam para o país do número e para a Chéquia.
- WhatsApp, vídeo ou outros canais de comunicação.
O que corresponde a quê
O SDK da Twilio não passa a apontar para a volai só por mudar um endereço - é uma API mais pequena e diferente. Os conceitos, porém, correspondem um a um.
| Twilio | volai |
|---|---|
| Account SID + Auth Token | chave de API vk_... |
| Recurso Messages | POST /v1/messages |
| From (número do remetente) | fromNumber (complemento número de telemóvel ou número para chamadas e SMS) |
| Recurso Calls | POST /v1/calls |
| IncomingPhoneNumbers | GET e POST /v1/numbers (números de telemóvel: GET e POST /v1/sms-numbers; número para chamadas e SMS: GET e POST /v1/voice-sms-numbers) |
| Webhook de mensagem recebida (SmsUrl) | evento message.received |
| StatusCallback | eventos de webhook |
| TwiML | agente de voz (systemPrompt) |
| X-Twilio-Signature | Volai-Signature |
Código lado a lado
Enviar um SMS - a mesma ideia, uma API diferente.
Twilio (SDK Node.js)
const twilio = require("twilio");
const client = twilio(accountSid, authToken);
await client.messages.create({
body: "Hi from Twilio!",
from: "+15017122661",
to: "+420777123456",
});volai (fetch)
await fetch("https://volai.cz/v1/messages", {
method: "POST",
headers: {
Authorization: "Bearer vk_YOUR_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
to: "+420777123456",
body: "Hi from volai!",
}),
});A Twilio define o remetente com o campo from. A volai ignora from e escolhe o remetente com fromNumber (um número de GET /v1/sms-numbers, o complemento número de telemóvel, ou de GET /v1/voice-sms-numbers, o número para chamadas e SMS). Sem fromNumber, os SMS saem com o nome de remetente partilhado SMSinfo, ao qual os destinatários não podem responder.
Entregue-o ao seu agente de IA
Copie o prompt para o Claude Code, o Cursor ou outro editor de IA e deixe que seja ele a fazer a migração - o SKILL.md dá-lhe a referência completa.
Lê o SKILL.md do site da volai (o URL base da API consta aí). Encontra no meu projeto as chamadas ao SDK da Twilio para SMS e chamadas (client.messages.create, client.calls.create) e reescreve-as para a API REST da volai: POST /v1/messages para SMS, POST /v1/calls para chamadas, cabeçalho Authorization: Bearer vk_YOUR_KEY. Atualiza também a receção de webhooks para o formato do SKILL.md, incluindo a verificação do cabeçalho Volai-Signature.Lista de verificação da mudança
Número
Compre um número checo (POST /v1/numbers ou no portal) e defina o seu encaminhamento - agente, reencaminhamento ou SIP. Para receber SMS e enviar a partir do seu próprio número, compre também um número de telemóvel (POST /v1/sms-numbers ou no portal, em Números): um número móvel checo só para SMS, sem chamadas. Se quer chamadas e SMS no mesmo número, encomende um número para chamadas e SMS em vez dos dois números (POST /v1/voice-sms-numbers ou no portal): um número fixo de Praga que é registado junto do operador depois de o encomendar, normalmente em 1 dia útil. As chamadas nele são atendidas apenas por um agente no motor de voz próprio da volai (não pode ser encaminhado para SIP nem reencaminhado), pelo que não serve para um agente que funcione noutro local.
Chave
Gere uma chave de API no portal, em Assistente de IA.
Webhook
Defina o webhook (PUT /v1/webhook) para o mesmo endereço que o seu StatusCallback da Twilio usa hoje e atualize o handler para o novo formato de evento. Se o endereço contiver nome de utilizador e palavra-passe, mova o login para um cabeçalho personalizado (headers, por exemplo Authorization: Basic ...); a volai rejeita um endereço com credenciais.
Teste
Antes de passar o tráfego real, envie um SMS a si próprio e faça uma chamada de teste para o seu telemóvel.
DNS e contactos antigos
Normalmente não precisa de mexer no DNS - a volai não usa o seu domínio. Verifique, isso sim, sites, assinaturas de e-mail e documentação onde o número antigo esteja escrito à mão.
Quando ficar com a Twilio
Migrar não é para todos - além da visão geral acima, pondere também o seguinte:
- As chamadas efetuadas a partir da volai só chegam a números checos e eslovacos (+420, +421) - não pode ligar para o estrangeiro, nem sequer a partir de um número checo que lhe pertença.
- Precisa de mais de 60 pedidos por minuto - é o limite de taxa partilhado tanto pela API REST como pelo servidor MCP.
Comece a migrar
O registo demora um minuto e os seus primeiros 50 kr de saldo são por nossa conta - experimente a nova API antes de passar o tráfego real.