Evolution API com o Mensageiro
O bot OpenAI da Evolution API responde cada conversa da instância. Com duas mudanças, ele responde com qualquer modelo do Mensageiro.
1. Aponte o servidor para o Mensageiro
A credencial OpenAI da Evolution API guarda só um nome e uma chave. Não existe campo de URL base. O serviço cria o cliente com new OpenAI({ apiKey }), e esse cliente lê a URL base da variável de ambiente OPENAI_BASE_URL. Defina a variável no servidor da Evolution API e reinicie o container:
# .env da Evolution API (ou environment: do docker-compose)OPENAI_BASE_URL=https://api.uplinkswitch.com/v1A variável vale para todas as instâncias desse servidor. Cada instância continua com a própria credencial.
2. Cadastre a credencial
Use a chave Mensageiro no campo apiKey. O bot e as configurações padrão apontam para essa credencial pelo id, em openaiCredsId.
POST {{baseUrl}}/openai/creds/{{instance}} { "name": "mensageiro", "apiKey": "SUA_CHAVE_MENSAGEIRO"}3. Crie o bot
Use botType igual a chatCompletion e escreva em model um id da página de preços. O tipo assistant usa a Assistants API da OpenAI, que o Mensageiro não atende.
POST {{baseUrl}}/openai/create/{{instance}} { "enabled": true, "openaiCredsId": "ID_DA_CREDENCIAL", "botType": "chatCompletion", "model": "claude-sonnet-5-5", "systemMessages": [ "Você atende clientes da Loja Exemplo pelo WhatsApp. Responda em português, em até três frases." ], "assistantMessages": [], "userMessages": [], "maxTokens": 300, "triggerType": "all", "triggerOperator": "none", "triggerValue": "", "expire": 20, "keywordFinish": "#SAIR", "delayMessage": 1000, "unknownMessage": "Não entendi. Pode repetir?", "listeningFromMe": false, "stopBotFromMe": true, "keepOpen": false, "debounceTime": 10, "ignoreJids": []}triggerType:allresponde toda mensagem;keywordresponde quandotriggerValuebate com otriggerOperator(contains,equals,startsWith,endsWith,regex).stopBotFromMe: comtrue, o bot para quando um atendente humano escreve pelo mesmo número.debounceTime: segundos para juntar mensagens seguidas do cliente numa só pergunta.keywordFinish: a palavra que encerra a sessão do bot.
4. Configurações padrão
Deixe speechToText em false com uma chave Mensageiro. A transcrição de áudio da Evolution API chama o endereço da OpenAI direto, com o modelo whisper-1, e não passa pela URL base.
POST {{baseUrl}}/openai/settings/{{instance}} { "openaiCredsId": "ID_DA_CREDENCIAL", "expire": 20, "keywordFinish": "#SAIR", "delayMessage": 1000, "unknownMessage": "Não entendi. Pode repetir?", "listeningFromMe": false, "stopBotFromMe": true, "keepOpen": false, "debounceTime": 10, "ignoreJids": [], "speechToText": false}5. Controle o gasto
Crie uma chave por instância ou por cliente e defina o limite mensal no console. No limite, a API responde 402 com monthly_limit_reached e só aquele bot para. Para pausar um contato, use POST {{baseUrl}}/openai/changeStatus/{{instance}} com status igual a paused.