Funções Personalizadas
As funções personalizadas permitem que o seu bot de IA se ligue a outros sistemas durante conversas em direto. Em vez de dizer “Vou verificar e já lhe respondo”, o bot pode consultar o estado de uma encomenda, verificar o inventário ou criar um registo no seu CRM (sistema de gestão de relacionamento com o cliente - o software que utiliza para acompanhar potenciais clientes e clientes, como o HubSpot ou o Salesforce) - tudo em tempo real, enquanto o cliente aguarda.
Funções Personalizadas vs Webhooks
Este é o ponto de confusão mais comum, por isso vale a pena esclarecê-lo antes de construir qualquer coisa.
| Webhooks | Funções Personalizadas | |
|---|---|---|
| Direção | Unidirecional (enviar e esquecer) | Bidirecional (chamar e aguardar) |
| O que o bot faz | Envia uma notificação quando algo acontece e continua o seu curso. | Faz uma chamada, pausa, aguarda a resposta e utiliza o que é devolvido para continuar a conversa. |
| Visibilidade na conversa | O resultado a jusante é invisível para o bot — ele nunca vê o que aconteceu. | A resposta é enviada diretamente de volta para a IA, para que o bot a possa citar, raciocinar sobre ela e responder ao cliente com essa informação. |
| Ideal para | Registar eventos, sincronizar dados com um CRM, acionar automatizações externas (Zapier, Make, n8n). | Qualquer situação em que o bot precise de uma resposta antes de poder responder — consultas em direto, preços em tempo real, geração de conteúdo imediata. |
Quando escolher qual: Se apenas precisa de informar outro sistema de que algo aconteceu, utilize um webhook - uma mensagem automatizada unidirecional enviada para outro sistema (consulte Definições → Integrações → Webhooks). Se o bot precisar de aprender algo de outro sistema antes de continuar a conversa, utilize uma função personalizada.
Exemplos do que as Funções Personalizadas permitem
Como a resposta é integrada na conversa, as funções personalizadas permitem realizar tarefas que os webhooks simplesmente não conseguem fazer:
- Consulta de inventário em direto no Shopify ou WooCommerce — Antes de dar um orçamento a um cliente, o bot verifica o stock em tempo real e responde “Sim, temos 12 unidades no tamanho M” em vez de “deixe-me verificar e entro em contacto consigo”.
- Preços dinâmicos a partir de uma folha Google — A sua equipa de vendas atualiza os preços numa folha; o bot lê a linha mais recente a meio da conversa e indica o preço atual sem que ninguém tenha de tocar na configuração da IA.
- Agente de retorno de chamada por voz (Voice-AI) — Quando o bot qualifica um potencial cliente, aciona um agente de voz (por exemplo, um sistema baseado em ElevenLabs) para ligar de volta ao cliente no espaço de minutos, e confirma ao cliente “ótimo, espere uma chamada nos próximos 5 minutos”.
- PDF de orçamento personalizado, gerado e enviado por e-mail a meio do chat — O bot recolhe os requisitos, chama o seu gerador de orçamentos, obtém um URL de PDF e diz ao cliente “acabei de enviar o seu orçamento por e-mail — verifique a sua caixa de entrada”.
O que podem fazer as Funções Personalizadas?
Pense nas funções personalizadas como algo que confere ao seu bot superpoderes para além de apenas conversar. Eis exemplos do mundo real:
- Rastreio de encomendas - Um cliente pergunta “Onde está a minha encomenda?” e o bot verifica o seu sistema de e-commerce e responde com o estado do envio e o link de rastreio
- Verificação de inventário - “Têm isto no tamanho 10?” O bot verifica o seu sistema de stock e dá uma resposta em tempo real
- Atualizações de CRM - Quando o bot qualifica um potencial cliente, cria ou atualiza automaticamente um registo no HubSpot, Salesforce ou qualquer outro CRM
- Geração de orçamentos - O bot recolhe os requisitos do cliente e gera um orçamento personalizado a partir do seu sistema de preços
- Marcações - O bot cria um agendamento no seu sistema de marcações externo
- Verificação de descontos - “Este código de cupão é válido?” O bot verifica e confirma
- Consulta de conta - Um cliente recorrente é automaticamente reconhecido e os detalhes da sua conta são consultados
O cliente nunca vê o que acontece nos bastidores. Apenas experiencia um bot capaz de responder às suas perguntas com informações reais e atualizadas.
Como funcionam as Funções Personalizadas (Versão simples)
Eis o que acontece quando uma função personalizada é acionada durante uma conversa:
- O cliente pergunta algo que necessita de dados em tempo real (por exemplo, “Onde está a minha encomenda?”)
- O bot reconhece que precisa de usar uma função personalizada para responder
- O bot recolhe qualquer informação em falta do cliente (por exemplo, “Qual é o número da sua encomenda?”)
- A plataforma envia um pedido para o seu sistema (o seu site, CRM ou qualquer outra ferramenta) com os detalhes relevantes
- O seu sistema responde com os dados (por exemplo, estado da encomenda, número de seguimento, data de entrega)
- O bot lê a resposta e elabora uma resposta natural: “A sua encomenda ORD-4582 foi enviada e deverá chegar até sexta-feira!”
Quanto custa uma chamada de função personalizada
Cada chamada de função personalizada é faturada de acordo com o nível de Qualidade de IA do seu Agente:
| Nível de Qualidade de IA | Créditos por chamada de função personalizada | Com a sua própria chave Anthropic (BYOK) ligada |
|---|---|---|
| Pro | 1 crédito | 0 créditos — executado na sua chave |
| Economy (descontinuado) | 0,5 créditos | 0 créditos — executado na sua chave |
| Max | 0,25 créditos | ainda 0,25 créditos, faturado mesmo com a sua própria chave ligada, porque o Max é executado no nosso próprio modelo |
| Mini | 0,15 créditos | ainda 0,15 créditos, faturado mesmo com a sua própria chave ligada, porque o Mini é executado no nosso próprio modelo |
Configurar uma Função Personalizada (Passo a Passo)
- Na barra lateral principal, em AI Studio, clique em Custom Functions.
- Clique no botão verde + Add Function (ou New function) no canto superior direito.
A lista de funções personalizadas apresenta uma tabela com as seguintes colunas:
| Coluna | O que mostra |
|---|---|
| Nome | O nome da função (por exemplo, check_order_status) |
| Descrição | Um breve resumo do que a função faz (truncado para 50 caracteres na tabela) |
| Método | O método HTTP utilizado, apresentado como um emblema colorido: GET (azul), POST (verde), PUT (laranja), DELETE (vermelho) |
| Criado | A data em que a função foi criada |
Isto torna fácil analisar as suas funções rapidamente e encontrar a que precisa.
Passo 1: Dê-lhe um Nome e uma Descrição
| Campo | O que introduzir | Exemplo |
|---|---|---|
| Nome | Um nome curto usando letras, números e sublinhados | check_order_status |
| Descrição | Explique o que esta função faz (a IA lê isto para decidir quando a usar) | “Procura o estado atual da encomenda de um cliente usando o número da encomenda” |
| Objetivo (Ação da IA) | Diga à IA exatamente quando e como usar esta função | “Use isto quando um cliente perguntar sobre o estado da encomenda, envio ou entrega. Peça primeiro o número da encomenda.” |
Dica: Seja muito específico na descrição e no objetivo. Quanto mais claro for sobre quando a função deve ser usada, mais fiável será a utilização da mesma pelo bot no momento certo.
Passo 2: Configurar a Ligação
Precisa de dizer à aplicação para onde enviar o pedido:
| Campo | O que introduzir | Exemplo |
|---|---|---|
| URL | O endereço web do endpoint do seu sistema (o endereço específico no seu sistema que recebe o pedido e envia dados de volta) | https://api.yourstore.com/v1/orders/status |
| Method | O tipo de pedido a enviar | Ver opções abaixo |
Qual o método a escolher:
| Método | Quando usar |
|---|---|
| GET | Consultar informações (estado da encomenda, inventário, detalhes da conta) |
| POST | Criar novos registos (pedidos de suporte, leads, reservas) ou consultas complexas |
| PUT | Atualizar um registo existente na totalidade |
| PATCH | Atualizar parte de um registo existente |
| DELETE | Remover um registo |
Se não tiver a certeza de qual utilizar, verifique com o seu programador ou com a documentação do sistema ao qual se está a ligar. GET (para pesquisas) e POST (para criar registos) são os mais comuns.
Passo 3: Adicionar Cabeçalhos de Autenticação
A maioria dos sistemas requer autenticação para aceitar pedidos. Adicione quaisquer cabeçalhos necessários:
| Cabeçalho | Valor de Exemplo |
|---|---|
Authorization |
Bearer your-api-key-here |
Content-Type |
application/json |
Dica de segurança: Utilize uma chave de API dedicada com permissões limitadas. Não utilize credenciais de nível de administrador.
Onde encontrar chaves de API: Verifique as definições ou a secção de programador do sistema ao qual se está a ligar (por exemplo, o seu CRM, plataforma de comércio eletrónico ou ferramenta de reservas).
Passo 4: Definir a Entrada (O que o Bot Envia)
Os parâmetros de entrada são as informações que o bot recolhe da conversa e envia para o seu sistema.
Para cada parâmetro, especifica:
| Propriedade | O que significa |
|---|---|
| Nome | O nome do parâmetro (deve corresponder ao que o seu sistema espera) |
| Tipo | Que tipo de dados é (texto, número, verdadeiro/falso, etc.) |
| Descrição | Diga à IA o que é esta informação e onde a encontrar na conversa |
| Obrigatório | Se definido como Sim, o bot pedirá esta informação ao cliente antes de prosseguir |
Tipos de parâmetros disponíveis:
| Tipo | O que significa |
|---|---|
| string | Texto (nomes, números de encomenda, moradas) |
| number | Um valor numérico (quantidade, preço) |
| boolean | Verdadeiro ou falso (valores sim/não) |
| array | Uma lista de itens. Enviada como uma lista JSON real — em Executar Teste pode escrevê-la como [8624], ["a", "b"] ou simplesmente separada por vírgulas (8624, 8625) e é convertida automaticamente para si. Se a sua API for rigorosa quanto ao conteúdo da lista — por exemplo, apenas números — defina o Tipo de item opcional junto ao tipo e cada valor na lista será convertido para esse formato. |
| query_param | Texto que é enviado como um parâmetro de URL em vez de no corpo do pedido. Utilize isto quando a sua API espera dados no URL (por exemplo, ?order_id=123). |
Cada parâmetro tem também um campo opcional de Caminho do corpo do pedido. Normalmente, um parâmetro é enviado como um campo de nível superior no corpo do pedido (ou como um valor de string de consulta, para o tipo query_param). Se o seu endpoint esperar que este esteja aninhado — por exemplo, {"order": {"id": "ORD-123"}} — defina o caminho como order.id e a plataforma aninha o valor aí por si.
Exemplo: Para uma consulta de estado de encomenda, pode definir:
- order_number (string, obrigatório): “O número de encomenda do cliente. Normalmente começa com ORD- seguido de dígitos. Peça isto ao cliente se ele ainda não o tiver mencionado.”
- email (string, opcional): “O endereço de e-mail do cliente para verificação adicional. Apenas necessário se o número de encomenda, por si só, não encontrar uma correspondência.”
O que o seu sistema recebe automaticamente
Para além dos parâmetros de entrada que define, a plataforma inclui automaticamente dados de sistema em cada pedido. O seu endpoint recebe isto num campo system:
| Campo do Sistema | O que contém |
|---|---|
system.contactId |
O ID da plataforma do contacto na conversa |
system.campaignId |
O ID da campanha a que a conversa pertence |
system.userId |
O seu ID de utilizador |
system.channel |
O canal de mensagens (por exemplo, "whatsapp", "instagram") |
system.contact |
O registo completo do contacto (nome, telefone, e-mail, etiquetas, etc.) |
system.campaign |
A configuração da campanha |
system.test |
true se for um teste de experimentação, false para conversas em direto |
Isto é útil se o seu sistema precisar de identificar o contacto, verificar que campanha acionou a função ou comportar-se de forma diferente durante os testes.
Não precisa dos dados de sistema? Ative o botão Ignorar Dados de Sistema no construtor de funções. O bot enviará apenas os parâmetros de entrada que definiu — sem dados de contacto ou de campanha. Utilize isto se o seu endpoint rejeitar campos inesperados ou se pretender apenas um payload mais leve.
Passo 5: Teste-o e, em seguida, deixe o bot ler a resposta
Normalmente, não precisa de mapear os campos de resposta de todo. Assim que o seu endpoint responde, o bot lê toda a resposta JSON e utiliza a Descrição e o Objetivo (Ação de IA) da sua função — além da descrição de cada parâmetro — para determinar o que é importante e apresentá-lo de forma natural. Uma Descrição clara na própria função (“Recupera o estado atual de uma encomenda de cliente, incluindo informações de envio e rastreio”) faz mais trabalho aqui do que o mapeamento campo a campo faria.
Se o seu endpoint devolver uma resposta grande e pretender que o bot veja apenas alguns valores específicos, abra a secção Mapeamento de resposta (recolhida por predefinição, logo acima de Testar). Cada linha seleciona um campo de nível superior da resposta: Campo de resposta é o nome do campo na resposta JSON da sua API, e Campo de saída é o nome sob o qual o bot o recebe. Com pelo menos uma linha preenchida, o bot recebe apenas os seus valores mapeados em vez de todo o corpo da resposta. Deixe a secção vazia para manter o comportamento predefinido de resposta completa.
Antes de guardar, utilize a secção Testar na parte inferior do construtor para disparar o pedido exatamente como configurado e ver a resposta real, sem sair da aplicação:
A resposta que vê aqui é a resposta em bruto do endpoint. Se configurou o Mapeamento de resposta acima, o bot numa conversa real apenas recebe esses campos mapeados — o teste mostra sempre a resposta completa em bruto para que possa ver o que está disponível para mapear. Se algo parecer incorreto (nomes de campos inesperados, aninhamento extra), corrija-o no seu endpoint ou ajuste o seu mapeamento.
Atribuir Funções a um Agente
Após criar uma função personalizada, precisa de indicar a cada Agente quais as funções que pode utilizar:
- Abra o Agente em AI Studio → AI Agents.
- Vá ao separador AI Abilities (Capacidades de IA). (Para uma campanha que ainda mantém as suas próprias definições de IA diretamente, em vez de através de um Agente separado, a mesma lista aparece no passo AI Abilities da própria campanha.)
- Verá uma lista de todas as funções personalizadas que criou. Ative cada função que pretende que o bot deste Agente possa chamar.
- Clique em Guardar alterações na parte inferior. As seleções só são aplicadas depois de guardadas.
Apenas as funções atribuídas estão disponíveis para o bot desse Agente. Isto evita que o bot utilize acidentalmente funções que não são relevantes.
Testar as Suas Funções Personalizadas
Antes de entrar em funcionamento, teste exaustivamente:
- Execute o Teste integrado - Utilize a secção Testar dentro do construtor de funções (ver acima) para uma verificação rápida sem sair da aplicação — preencha valores realistas e clique em Executar teste.
- Teste o endpoint do seu sistema diretamente - Para a lista de verificação completa abaixo, uma ferramenta dedicada como o Postman (ou o seu programador) aprofunda mais do que um simples Executar teste.
- Teste em Experimentar - Simule uma conversa onde o cliente pergunta algo que deveria acionar a função.
- Verifique a resposta - Certifique-se de que o bot lê e apresenta os dados corretamente.
- Teste cenários de erro - O que acontece se o cliente fornecer um número de encomenda inválido? E se o seu sistema estiver temporariamente em baixo?
Quando o teste devolve 401 ou 403
Um erro 401 ou 403 significa que o seu endpoint recebeu o pedido e recusou-o. O sinal revelador é que nada aparece nos seus próprios registos — a maioria das ferramentas rejeita uma chamada não autorizada antes mesmo de iniciar o fluxo de trabalho, pelo que não há nada para ver do seu lado e parece que o pedido nunca chegou.
Quase sempre, trata-se de uma incompatibilidade de autenticação: o seu endpoint requer um tipo de credencial e a função está a enviar outra. Verifique se o cabeçalho que adicionou no Passo 3 é exatamente o que o seu sistema espera.
A versão mais comum disto é um webhook protegido com Autenticação Básica (o n8n, o Make e a maioria das ferramentas autoalojadas oferecem isto como uma opção no próprio webhook), enquanto a função envia um cabeçalho secreto personalizado como X-My-Secret. A Autenticação Básica só aceita um cabeçalho Authorization, pelo que um cabeçalho personalizado é ignorado e a chamada é rejeitada. Tem duas opções:
- Desative a Autenticação Básica no webhook e verifique o seu cabeçalho personalizado dentro do fluxo de trabalho.
- Mantenha a Autenticação Básica ativa e adicione um cabeçalho
Authorizationà função cujo valor seja a palavraBasicseguida da suausername:passwordcodificada em base64.
Qualquer uma das opções funciona — certifique-se apenas de que ambos os lados estão de acordo.
Quando o teste devolve 404
O URL do endpoint está incorreto ou o fluxo de trabalho não está publicado. No n8n especificamente, cada webhook tem um URL de Teste e um URL de Produção separados, e o de Teste só funciona enquanto tiver o editor aberto. Copie o URL de Produção e certifique-se de que o fluxo de trabalho está ativo.
Ver falhas no Try Out e nos Chats
Quando a IA chama uma função personalizada durante uma conversa e a chamada falha — credenciais incorretas, endpoint em baixo, timeout — a conversa mostra agora isso: um marcador vermelho “(nome da função) falhou” aparece na linha de conversação, tanto no separador Try Out do agente como nas conversas reais em Chats. Clique no marcador para expandir os detalhes: o código de estado que o seu endpoint devolveu e o corpo da resposta, o que é geralmente suficiente para lhe dizer exatamente o que corrigir (um 401 com uma mensagem “unauthorized” significa que o cabeçalho de autenticação está incorreto, um timeout significa que o seu endpoint demorou mais de 30 segundos).
As chamadas bem-sucedidas também mostram um marcador — clique nele para ver o que o seu endpoint enviou realmente de volta. Esta é a forma mais rápida de depurar uma integração de ponta a ponta: faça a conversa de teste no Try Out e, em seguida, clique no marcador da função para ver o resultado real do pedido sem sair da página.
Exemplo Completo: Consulta do Estado da Encomenda
Aqui tem um exemplo totalmente configurado que pode utilizar como modelo:
Informações Básicas:
- Nome:
check_order_status - Descrição: “Obtém o estado atual de uma encomenda de cliente, incluindo informações de envio e rastreio”
- Ação de IA: “Chame isto quando um cliente perguntar sobre o estado da sua encomenda, onde está a sua encomenda ou quando chegará. Peça sempre o número da encomenda primeiro.”
Ligação:
- URL:
https://api.mystore.com/orders/lookup - Método: POST
Cabeçalhos:
Authorization:Bearer sk_live_abc123Content-Type:application/json
Parâmetros de Entrada:
order_number(texto, obrigatório): “O número da encomenda fornecido pelo cliente”customer_email(texto, opcional): “E-mail do cliente para verificação adicional”
Não é necessário mapeamento de resposta — com uma Descrição e Ação de IA claras já definidas acima, o bot lê qualquer JSON que o seu endpoint devolva (estado, número de rastreio, data de entrega, artigos) e descobre como falar sobre isso.
Como é a conversa:
Cliente: Olá, onde está a minha encomenda?
Bot: Olá! Terei todo o gosto em verificar a sua encomenda. Pode partilhar o número da encomenda comigo?
Cliente: É a ORD-78234
Bot: Deixe-me verificar isso para si…
A sua encomenda ORD-78234 foi enviada e está a caminho! A data prevista de entrega é 10 de março. Pode rastrear a sua encomenda aqui: https://tracking.example.com/1Z999AA1
Posso ajudar com mais alguma coisa?
Exemplo Completo: Estado da Encomenda Shopify
Se a loja utiliza Shopify, não precisa de um programador para criar um endpoint de consulta — o próprio sistema da Shopify pode responder diretamente a questões sobre encomendas. (Para questões sobre produtos e stock numa loja Shopify, não precisa de uma função personalizada: ligue o servidor integrado da loja — veja Ligar uma loja Shopify.)
Primeiro, crie um token de acesso no Shopify. O Shopify alterou isto durante 2026: as aplicações já não podem ser criadas dentro do painel de administração do Shopify, e o novo ecrã de aplicações fornece-lhe um ID de Cliente e um Segredo de cliente em vez de um token pronto a usar. Os passos abaixo transformam esses dados num token permanente. Reserve cerca de dez minutos, uma vez por loja. (Se a loja já tiver uma aplicação antiga criada da forma anterior, o seu token existente continuará a funcionar — avance diretamente para a função personalizada abaixo.)
- Aceda ao Painel de Programador da Shopify em dev.shopify.com, abra a sua organização e clique em Apps → Create app. Dê-lhe um nome como
Order lookup. - Dê à aplicação a permissão read_orders, publique uma versão e instale a aplicação na loja.
- Abra as Definições da aplicação e adicione o endereço Web da própria loja (por exemplo,
https://www.yourstore.com/) aos URLs de redirecionamento permitidos. Guarde. - Ainda nas Definições, copie o ID do cliente e o Segredo do cliente.
- Num navegador onde tenha sessão iniciada no administrador da Shopify dessa loja, abra o endereço abaixo, substituindo o nome da loja, o ID do cliente e o endereço de redirecionamento pelos seus:
https://YOUR-STORE.myshopify.com/admin/oauth/authorize?client_id=YOUR-CLIENT-ID&scope=read_orders&redirect_uri=https://www.yourstore.com/&state=12345Aprove o ecrã que aparece. O navegador irá para o seu endereço de redirecionamento e a barra de endereços conterá agoracode=seguido de um valor longo — copie esse valor. Só é válido durante alguns minutos, por isso avance diretamente para o passo seguinte. - Troque esse código pelo token, o que pode fazer dentro de Your AI Connector. No construtor de funções personalizadas, defina o Método como POST e o URL como
https://YOUR-STORE.myshopify.com/admin/oauth/access_token, adicione três parâmetros de entrada de texto chamadosclient_id,client_secretecode, depois clique em Testar, preencha os três valores e execute-o. A resposta contémaccess_token— esse é o seu token permanente. Copie-o para um local seguro, depois limpe o construtor e configure a função real abaixo.
De seguida, configure a função personalizada:
Informações Básicas:
- Nome:
check_shopify_order - Descrição: “Consulta uma encomenda no sistema Shopify da loja e devolve o seu estado, seguimento e artigos”
- Ação de IA: “Chame isto quando um cliente perguntar sobre o estado da sua encomenda ou entrega. Peça sempre o número da encomenda primeiro.”
Ligação:
- URL:
https://YOUR-STORE.myshopify.com/admin/api/2026-01/orders.json?status=any— substituaYOUR-STOREpelo nome.myshopify.comda loja (este endereço utiliza o domínio técnico da Shopify, não o domínio personalizado da loja) - Método: GET
Cabeçalhos:
X-Shopify-Access-Token:shpat_...(o token obtido acima)
Parâmetros de Entrada:
name(query_param, obrigatório): “O número da encomenda do cliente exatamente como aparece na confirmação da encomenda, incluindo o sinal # — por exemplo #1001. Peça-o ao cliente caso este ainda não o tenha mencionado.”
Não é necessário mapeamento de resposta — o bot lê a encomenda devolvida (estado do pagamento, estado do cumprimento, seguimento, artigos) e responde de forma natural.
Bom saber: um token criado desta forma pode ver encomendas dos últimos 60 dias — suficiente para questões de apoio diárias, mas não para um histórico completo de encomendas.
Exemplo Completo: Marcar uma Consulta
Informações Básicas:
- Nome:
create_booking - Descrição: “Cria uma nova marcação no nosso sistema de reservas”
- Ação de IA: “Utilize isto após confirmar a data, hora e detalhes de contacto com o cliente. Não chame até que o cliente confirme explicitamente que pretende marcar.”
Ligação:
- URL:
https://booking.mycompany.com/api/appointments - Método: POST
Parâmetros de Entrada:
date(texto, obrigatório): “Data da marcação no formato AAAA-MM-DD”time(texto, obrigatório): “Hora da marcação no formato HH:MM”name(texto, obrigatório): “Nome completo do cliente”phone(texto, obrigatório): “Número de telefone do cliente”service_type(texto, obrigatório): “O tipo de serviço a ser marcado”
Exemplo Completo: Adicionar um Subscritor de Newsletter ao seu CRM
Um padrão muito comum: o bot termina de responder, oferece a sua newsletter, o contacto responde com o seu endereço de e-mail e esse endereço deve ser enviado diretamente para a sua ferramenta de e-mail. A maioria dos CRMs (FluentCRM, ActiveCampaign, MailerLite, Brevo e outros) aceita um simples POST para este efeito, pelo que não é necessária uma plataforma de automação intermédia.
Este exemplo utiliza o FluentCRM no WordPress. A estrutura é a mesma para qualquer outra ferramenta que lhe forneça um “webhook de entrada” ou um endpoint de “criar subscritor”.
Primeiro, obtenha o URL do seu CRM. No WordPress, abra FluentCRM → Definições → Webhooks de Entrada e crie um webhook. Escolha a lista, as etiquetas e o estado de subscrição que os novos contactos devem receber e, em seguida, copie o URL do webhook gerado. Tudo o que definir aqui é aplicado automaticamente, pelo que o bot apenas tem de enviar o endereço de e-mail.
De seguida, configure a função personalizada:
Informações Básicas:
- Nome:
add_newsletter_subscriber - Descrição: “Adiciona alguém à nossa lista de newsletter utilizando o endereço de e-mail fornecido no chat”
- Ação de IA: “Utilize isto no momento em que o contacto concorda em subscrever a newsletter e fornece o seu endereço de e-mail. Não a invoque antes de terem fornecido um endereço e não a invoque duas vezes para a mesma pessoa.”
Ligação:
- URL: o URL do webhook que copiou do seu CRM
- Método: POST
Parâmetros de Entrada:
email(string, obrigatório): “O endereço de e-mail que o contacto forneceu na conversa”first_name(string, opcional): “O primeiro nome do contacto, caso o tenha mencionado”
Ignorar Dados do Sistema: ative esta opção (on). O seu CRM apenas necessita dos campos acima, e um payload mais leve evita erros de ferramentas que rejeitam campos inesperados.
Mapeamento de resposta: não é necessário aqui. Não é preciso que nada seja devolvido para que o bot continue.
Não se esqueça de ativar a função para o Agente que executa a conversação (consulte Atribuir Funções a um Agente). Esta é a razão mais comum para uma função corretamente criada nunca ser disparada.
Dica: o bot também possui uma ferramenta integrada de Atualizar E-mail do Contacto, que guarda o endereço no registo do contacto dentro da plataforma. Isto é separado desta função e útil em conjunto com a mesma — a ferramenta integrada mantém o seu próprio registo de contacto completo, a função personalizada envia o endereço para o seu CRM.
Dicas para Funções Personalizadas Fiáveis
-
Certifique-se de que pedidos repetidos são seguros. Se o mesmo pedido for enviado acidentalmente duas vezes, não deverá criar registos duplicados. Falhas na rede podem causar isto ocasionalmente.
-
Devolva mensagens de erro claras. Se algo correr mal do lado do seu sistema, devolva um erro legível por humanos. O bot irá transmiti-lo ao cliente de forma elegante.
-
Mantenha os tempos de resposta abaixo dos 10 segundos. Se o seu sistema demorar mais, considere devolver primeiro um reconhecimento rápido.
-
Trate credenciais expiradas ou inválidas. Se a sua chave de API expirar, certifique-se de que a mensagem de erro é clara para que o bot saiba que deve alertar um humano em vez de tentar novamente.
-
Escreva descrições detalhadas. A IA utiliza as suas descrições para determinar quando deve chamar a função e como extrair a informação correta da conversa. Descrições vagas levam a erros.
-
Teste com conversas reais. O Try Out é excelente para testes iniciais, mas monitorize as suas primeiras conversas em direto para garantir que tudo funciona com pedidos reais dos clientes.
-
Mantenha registos (logs) do seu lado. Peça ao seu programador para registar os pedidos provenientes da aplicação para que possa depurar rapidamente quaisquer problemas.
-
Utilize um URL final público. O URL da sua função deve ser um endereço web público (HTTP/HTTPS). Endereços internos, localhost e de redes privadas são rejeitados por motivos de segurança, e a plataforma não segue redirecionamentos — aponte a função diretamente para o URL final, não para um que redirecione para ele.
Limites de execução
Cada função personalizada tem uma secção opcional de Limites de execução na parte inferior do editor. Esta controla a frequência com que a IA pode executar a função e se um resultado anterior pode ser reutilizado. Tudo aqui é opcional — deixe tudo vazio e a função comportar-se-á exatamente como antes.
Função só de leitura. Ative esta opção se a sua função apenas lê dados — uma consulta de stock, uma verificação de preço, uma pesquisa de estado de encomenda — e nunca cria ou altera nada. Quando uma falha temporária na rede interrompe a IA a meio de uma resposta, a plataforma pode repetir o turno da conversa em segurança, em vez de deixar o cliente sem resposta. Apenas ative esta opção se a função nunca escrever nada: uma função que cria registos deve permanecer desativada, para que uma repetição nunca a execute acidentalmente duas vezes.
Servir resultado em cache em chamadas repetidas. Quando a IA chama a função novamente com as mesmas entradas (por exemplo, o cliente faz a mesma pergunta duas vezes), o resultado anterior é reutilizado em vez de chamar o seu endpoint novamente. Os resultados em cache são mantidos por até 24 horas, e uma chamada com entradas diferentes vai sempre ao seu endpoint para obter dados atualizados.
Máximo de execuções por conversa. Um limite rígido sobre quantas vezes a função pode ser executada dentro de uma conversa. Defina como 1 para funções que só devem ser acionadas uma vez por chat — gerar um orçamento, solicitar um contacto, iniciar uma automatização. Quando o limite é atingido, a IA é informada de que a função já foi executada e recebe o resultado mais recente, para que possa continuar a responder ao cliente em vez de ficar em silêncio.
Máximo de execuções por janela de tempo. Um limite de taxa ao longo do tempo: por exemplo, no máximo 5 execuções dentro de 60 minutos. Útil para funções que chamam serviços de terceiros pagos ou acionam automatizações mais pesadas. Ambas as caixas devem ser preenchidas em conjunto (um número de execuções e uma janela em minutos, até 7 dias).
Algumas coisas a saber:
- Os limites contam apenas as execuções bem-sucedidas. Uma chamada que falhou no lado do seu endpoint não consome o orçamento.
- Quando uma execução é bloqueada por um limite, o cliente nunca fica sem resposta — a IA é informada do motivo e trabalha com a informação que já possui.
- Os limites aplicam-se a todos os locais onde a função é executada: chats regulares em todos os canais e funções geridas por uma automatização. As conversas de teste em “Experimentar” não são contabilizadas nem limitadas.
Ferramentas de Bot Integradas
Para além das funções personalizadas que cria, a plataforma inclui uma biblioteca de ferramentas pré-criadas que o bot de IA pode utilizar durante uma conversa. Estas cobrem as tarefas mais comuns que um bot precisa de realizar — alertar um colega de equipa, marcar uma reunião, etiquetar um contacto, pesquisar no seu site, agendar um seguimento, e muito mais — para que não tenha de as configurar do zero.
O bot decide quando utilizar cada ferramenta com base no que está a acontecer na conversa e na forma como o seu Agente (e a campanha associada) está configurado. A maioria destas ferramentas é ativada automaticamente quando a funcionalidade relacionada é ativada (por exemplo, as ferramentas de marcação só ficam disponíveis quando liga um calendário e ativa as marcações).
Custo em créditos: Cada chamada de ferramenta é faturada de acordo com o nível de Qualidade de IA do seu Agente, e as funções personalizadas que cria são faturadas da mesma forma:
| Nível de Qualidade de IA | Créditos por chamada de ferramenta | Com a sua própria chave Anthropic (BYOK) ligada |
|---|---|---|
| Pro | 1 crédito | 0 créditos — executado na sua chave |
| Economy (descontinuado) | 0,5 créditos | 0 créditos — executado na sua chave |
| Max | 0,25 créditos | ainda 0,25 créditos, faturado mesmo com a sua própria chave ligada, porque o Max é executado no nosso próprio modelo |
| Mini | 0,15 créditos | ainda 0,15 créditos, faturado mesmo com a sua própria chave ligada, porque o Mini é executado no nosso próprio modelo |
Ferramentas de Equipa e Tarefas
| Ferramenta | O que faz | Quando o bot a utiliza |
|---|---|---|
| Alert a Team Member | Pausa o bot para este contacto e envia um e-mail à sua equipa a informar que é necessária uma intervenção humana. O chat é sinalizado para que um colega possa assumi-lo. | Quando o cliente pede um humano, está frustrado ou pergunta algo que o bot não tem permissão ou capacidade para responder. |
| Create a Task | Cria uma nova tarefa no seu quadro de tarefas, opcionalmente ligada ao contacto e à conversa. O bot continua a responder normalmente - a tarefa é apenas uma nota para a sua equipa fazer o seguimento. | Para itens não urgentes, como um pedido de funcionalidade, uma oportunidade de venda adicional ou um pedido de contacto que a equipa deve tratar mais tarde. |
| Suggest an FAQ Update | Quando o bot encontra uma pergunta que não consegue responder bem, cria uma tarefa pedindo à sua equipa para adicionar uma resposta à base de conhecimento. | Quando um contacto pergunta algo que não está coberto pelas suas FAQs existentes - para que a lacuna seja corrigida da próxima vez. |
| Add Context to an FAQ Suggestion | Se outro contacto perguntar mais tarde algo semelhante com uma perspetiva diferente, o bot anexa esse contexto à sugestão de FAQ existente em vez de criar uma tarefa duplicada. | Automático - mantém a sua lista de tarefas organizada quando várias pessoas levantam a mesma lacuna de conhecimento. |
Ferramentas de Contacto
| Ferramenta | O que faz | Quando o bot a utiliza |
|---|---|---|
| Etiquetagem | Executa-se automaticamente após cada resposta do bot — não é uma ferramenta que o bot virado para o cliente decide chamar. O sistema analisa a conversa recente e aplica etiquetas relevantes, reutilizando as suas etiquetas existentes sempre que possível (e criando uma nova apenas quando necessário). | Automático — sempre que a conversa revela algo que vale a pena segmentar, como interesse, intenção, qualidade do lead ou idioma. |
| Atualizar Nome do Contacto | Guarda o primeiro e/ou último nome do contacto quando este o partilha. | Quando o cliente se apresenta ou corrige um nome. |
| Atualizar E-mail do Contacto | Guarda o endereço de e-mail do contacto quando este o partilha. | Quando o cliente fornece um e-mail — para newsletters, recibos, pesquisas de conta, etc. |
Ferramentas de Marcação e Agendamento
Estas ferramentas só estão disponíveis quando as marcações estão ativadas na campanha ligada ao seu Agente e um tipo de evento de calendário está configurado.
| Ferramenta | O que faz | Quando o bot a utiliza |
|---|---|---|
| Verificar Horários Disponíveis | Procura que horários estão livres no seu calendário ligado para uma data ou intervalo de datas específico. | Quando o cliente quer marcar e o bot precisa de oferecer disponibilidade real. |
| Marcar uma Marcação | Cria a marcação no seu calendário e confirma o agendamento ao cliente. | Após o cliente confirmar uma data e hora específicas. |
| Mover uma Marcação | Reagenda uma marcação existente para uma nova data e hora. | Quando o cliente pede para reagendar. |
| Cancelar uma Marcação | Cancela uma marcação existente. | Quando o cliente pede para cancelar. |
| Procurar Marcações | Obtém as marcações existentes de um contacto para que o bot saiba o que já está agendado. | Quando o cliente pergunta “quando é a minha marcação?” ou antes de oferecer o reagendamento. |
Ferramentas de Conhecimento e Web
| Ferramenta | O que faz | Quando o bot a utiliza |
|---|---|---|
| Pesquisar no seu site | Analisa os URLs que adicionou à lista de URLs dinâmicos da campanha para encontrar páginas de produtos, artigos ou outros conteúdos que respondam à pergunta do cliente. Disponível apenas quando a Pesquisa Web por IA está ativada e adicionou pelo menos um URL Dinâmico. Se a Pesquisa Web por IA estiver desativada, o bot não consegue ler páginas ou links — mesmo aqueles que o cliente cola no chat. | Quando o cliente pergunta sobre algo que provavelmente está no seu site — produtos, preços, localizações, políticas. |
| Verificar um link | Lê o conteúdo de um URL específico para que o bot possa responder a perguntas sobre essa página. Disponível apenas quando a Pesquisa Web por IA está ativada e adicionou pelo menos um URL Dinâmico. Se a Pesquisa Web por IA estiver desativada, o bot não consegue ler páginas ou links — mesmo aqueles que o cliente cola no chat. | Quando o cliente partilha um link ou pergunta sobre uma página específica do seu site. |
| Pesquisar na Web | Executa uma pesquisa pública no Google e devolve os melhores resultados, para que o bot possa responder a perguntas fora do seu próprio conteúdo. | Quando o cliente pergunta sobre algo geral (por exemplo, direções, informações públicas) que não está na sua base de conhecimento. Apenas utilizado se a pesquisa web estiver ativada. |
Ferramentas de Acompanhamento
Estas ferramentas requerem que os seguimentos (follow-ups) estejam ativados na campanha associada ao seu Agente.
| Ferramenta | O que faz | Quando o bot a utiliza |
|---|---|---|
| Agendar um Seguimento Inteligente | Agenda uma mensagem de seguimento inteligente utilizando a sua sequência de seguimentos — escolhe o modelo e o momento certos com base na conversa. | Quando o cliente deixa de responder ou pede ao bot para “verificar mais tarde”. |
| Agendar um Seguimento | Agenda um seguimento básico num momento específico. | Quando o bot precisa de impulsionar a conversa num momento definido. |
Executor de Funções Personalizadas
| Ferramenta | O que faz | Quando o bot a utiliza |
|---|---|---|
| Executar uma Função Personalizada | Executa uma das funções personalizadas que criou e atribuiu ao Agente (veja o resto desta página). | Quando o pedido do cliente corresponde ao objetivo de uma das suas funções personalizadas. |
Ferramentas de Reserva de Restaurantes (Zenchef e Formitable)
Estas ferramentas só estão disponíveis quando uma integração Zenchef ou Formitable está ligada. Permitem que o bot faça a gestão de reservas de restaurantes de ponta a ponta.
| Ferramenta | O que faz | Quando o bot a utiliza |
|---|---|---|
| Verificar Disponibilidade do Restaurante | Procura horários de reserva livres para uma data, número de pessoas e (opcionalmente) zona de mesa. | Quando um cliente pede para reservar uma mesa. |
| Criar uma Reserva de Restaurante | Cria uma nova reserva. | Após o cliente confirmar um horário específico. |
| Atualizar uma Reserva de Restaurante | Altera a data, hora, número de pessoas ou notas de uma reserva existente. | Quando o cliente pede para modificar a sua reserva. |
| Cancelar ou Alterar Estado da Reserva | Cancela uma reserva ou atualiza o seu estado (por exemplo, confirmada, não comparência). | Quando o cliente cancela, ou quando o bot precisa de marcar uma alteração de estado. |
| Procurar Reservas | Encontra reservas existentes que correspondam a critérios como nome, e-mail ou data. | Quando um cliente recorrente pergunta sobre uma reserva existente. |
| Atualizar Perfil do Cliente | Atualiza o perfil do cliente no sistema do restaurante (preferências, notas, informações de contacto). | Quando o cliente partilha preferências alimentares, um novo número de telefone ou outras informações ao nível do perfil. |
| Listar Produtos do Restaurante | Obtém a lista de menus, menus de grupo ou extras disponíveis para reserva. | Quando o cliente pergunta “que menus de grupo têm?” ou o bot precisa de anexar um menu a uma reserva. |
Ligar e Desligar Ferramentas
A maioria das ferramentas é controlada no separador Capacidades de IA do Agente (ou no passo Capacidades de IA da campanha, se estiver a trabalhar a partir de uma campanha ainda clássica):
- Ferramentas de marcação ativam-se quando ativa as marcações e liga um calendário — isto permanece uma definição por campanha por agora, com uma ligação direta para o passo dessa campanha a partir do próprio separador Capacidades de IA do Agente
- Ferramentas de seguimento ativam-se quando ativa os seguimentos
- Ferramentas de restaurante ativam-se quando liga uma conta Zenchef ou Formitable
- Pesquisa web tem o seu próprio interruptor no separador FAQs e Conhecimento
- Ferramentas de tarefas podem ser desativadas por Agente com o interruptor Permitir que a IA crie tarefas (estão ativadas por predefinição; o interruptor de Tarefas de toda a conta em Definições → Perfil → Funcionalidades desativa todo o sistema de tarefas em todo o lado)
- Ferramentas de atualização de contactos são controladas no mesmo separador Capacidades de IA — se a IA pode ou não mudar o nome de contactos ou guardar informações extra recolhidas sobre eles
- Ferramentas de alerta estão sempre disponíveis; a etiquetagem é executada automaticamente após cada resposta do bot (não é uma ferramenta que o bot escolha chamar)
Se quiser que o bot pare de utilizar uma ferramenta integrada específica, a forma mais limpa é desativar a funcionalidade subjacente (por exemplo, desative as marcações para desativar todas as ferramentas de marcação).
Funções geridas por uma automatização
Algumas entradas na sua página de Funções Personalizadas podem apresentar um emblema de Gerida por automatização. Estas não foram criadas aqui — provêm de uma automatização com um gatilho de Função de Agente de IA, que confere ao seu agente uma capacidade cujos passos constrói visualmente na tela de automatização, em vez de apontar para um endereço Web externo.
Uma função gerida é tratada por si: o seu nome, descrição e campos seguem sempre o que está definido no acionador da automatização, pelo que não pode ser editada ou eliminada a partir desta página — utilize a ligação Abrir automatização e altere a própria automatização. Pode, no entanto, continuar a escolher quais os agentes que a possuem da forma habitual: no separador Capacidades de IA de um agente, esta aparece ao lado das outras capacidades do agente com um interruptor de ligar/desligar normal (se a sua automatização estiver em pausa, a linha indica-o — a capacidade fica ativa quando a automatização é ligada). Tudo o resto funciona como qualquer outra função personalizada: a IA decide quando a chamar, recolhe os detalhes que definiu e pode utilizar a resposta da automatização na mesma conversa.
Se estiver a escolher entre as duas opções: aponte uma função personalizada normal para um sistema que já tenha um endereço para chamar; crie uma automatização com um gatilho de Função de Agente de IA quando o trabalho for algo que prefere montar a partir de passos — pesquisar algo numa folha de cálculo ou base de dados, ramificar com base numa condição, criar registos — sem ter de executar o seu próprio servidor. Consulte Automatizações.
Requisitos do Plano
As funções personalizadas estão disponíveis nos planos que incluem a funcionalidade de funções personalizadas. Verifique a sua subscrição para confirmar a disponibilidade.
Próximos Passos
- Ligar Servidores MCP ao seu Bot — um conjunto de ferramentas pronto a usar em vez de uma função de cada vez.
- Agentes de IA — a página principal do grupo AI Studio onde residem as Funções Personalizadas e onde as funções personalizadas são atribuídas a um bot.