Como funciona
- Defina ferramentas com um esquema (quais argumentos a ferramenta aceita)
- Forneça uma configuração de
endpoint(onde o ThunderPhone chama sua API) — ou omita-a para receber chamadas de ferramenta no webhook da sua organização - Durante uma chamada, a IA decide quando usar uma ferramenta com base na conversa
- O ThunderPhone chama seu endpoint com os argumentos da ferramenta
- A resposta da sua API é enviada de volta à IA para continuar a conversa
As ferramentas de função são a opção para usar sua própria API. O ThunderPhone também
oferece ferramentas gerenciadas pela plataforma que não exigem endpoint:
conexões de aplicativos (HubSpot, Salesforce, Slack,
Google Calendar, Google Sheets, Cal.com),
conexões de API e
servidores MCP.
Esquema da ferramenta
Cada ferramenta segue esta estrutura:Definição da função
Configuração do endpoint
A configuração de
endpoint não é enviada ao modelo de IA — ela é usada apenas pelo ThunderPhone para executar a chamada da ferramenta.Dois caminhos de invocação
A solicitação que seu servidor recebe depende de a ferramenta ter umendpoint:
Os dois caminhos são bloqueantes — a IA aguarda o resultado no
meio da frase — com um tempo limite de 20 s. Mantenha os handlers rápidos. Uma combinação é válida:
em uma chamada cuja organização tenha uma URL de webhook, as ferramentas com um
endpoint são
chamadas diretamente, e as demais usam o webhook como alternativa.
Chamadas diretas de endpoint
Quando a IA invoca uma ferramenta que tem umendpoint, o ThunderPhone envia
uma solicitação para sua URL:
Cabeçalhos da solicitação
endpoint.headers são sempre incluídos
literalmente, além de dois cabeçalhos no namespace do ThunderPhone:
X-ThunderPhone-Signature— HMAC-SHA256 dos bytes exatos do corpo da solicitação, com chave definida pelo seu segredo de webhook da organizaçãoX-ThunderPhone-Call-ID— O ID da chamada atual
Content-Type: application/json é definido, a menos que endpoint.headers
o substitua — um Content-Type personalizado prevalece.
Corpo da solicitação
ParaPOST / PUT / PATCH, o corpo contém apenas os argumentos da
ferramenta (sem invólucro), serializados canonicamente (chaves ordenadas, separadores
compactos):
GET / DELETE, os argumentos são enviados como parâmetros de consulta
e o corpo fica vazio — a assinatura é então calculada sobre a string de
bytes vazia. Consulte
Verificar assinaturas de webhook.
Resposta
Retorne uma resposta JSON com o resultado da ferramenta:{"data": "<text>"};
tempos limite e falhas de conexão são informados à IA como erros, para que
o agente possa pedir desculpas e seguir adiante em vez de travar.
Despacho no modo webhook
Ferramentas sem umendpoint são despachadas para a URL de webhook legado
da sua organização como uma solicitação assinada telephony.tool (chamadas telefônicas) ou web.tool
(chamadas web). Diferentemente das notificações de auditoria
entregues aos endpoints de webhook após a execução, esta solicitação é
a execução — sua resposta HTTP é o resultado da ferramenta.
web.tool inclui origin_domain em vez de from_number /
to_number. Responda com o resultado da ferramenta como JSON — o mesmo contrato de
resposta das chamadas diretas de endpoint. A solicitação é assinada com o segredo de
webhook da organização sobre o corpo bruto, como todos os outros webhooks.
Os endpoints de webhook assinados também
recebem uma notificação
telephony.tool / web.tool sem bloqueio
após a execução de cada ferramenta (independentemente do caminho que a executou), incluindo a
resposta da ferramenta — útil para trilhas de auditoria. Consulte o
catálogo de eventos.Verificação de assinatura
As chamadas diretas de ferramentas são assinadas da mesma forma que os webhooks:- HMAC-SHA256 sobre os bytes exatos do corpo da solicitação (o JSON canônico — chaves ordenadas, sem espaços em branco extras)
- Com chave baseada no segredo de webhook da sua organização
- Ferramentas
GET/DELETEassinam a string de bytes vazia
Exemplo: fluxo completo de agendamento
Veja um conjunto de ferramentas para um sistema completo de agendamento de consultas:Boas práticas
Escreva descrições claras
Escreva descrições claras
O campo
description ajuda a IA a entender quando usar a ferramenta. Seja específico sobre o que ela faz e quando é apropriada.Lide com erros de forma adequada
Lide com erros de forma adequada
Retorne mensagens de erro que a IA possa entender:
{"error": "No slots available for that date"} em vez de erros 500 genéricos.Mantenha as respostas concisas
Mantenha as respostas concisas
Retorne apenas o que a IA precisa para continuar a conversa. Cargas úteis grandes reduzem a velocidade de resposta.
Use campos obrigatórios com critério
Use campos obrigatórios com critério
Marque campos como
required apenas quando for realmente necessário. A IA pedirá ao usuário as informações obrigatórias antes de chamar a ferramenta.Relacionados
Conexões de aplicativos
Ferramentas gerenciadas pela plataforma para HubSpot, Salesforce, Slack, Google
Calendar, Google Sheets e Cal.com — nenhum endpoint necessário.
Servidores MCP
Conecte um servidor MCP e permita que o agente chame suas ferramentas.
Conexões de API
Integrações REST reutilizáveis que você pode conectar a agentes.
Verifique assinaturas de webhook
Um auxiliar de verificação para webhooks e chamadas de ferramentas.