Webhooks
Configura Slack, Discord, Microsoft Teams, Google Chat e canais por webhook genéricos.
Como funciona um canal por webhook
Todo o canal por webhook, seja qual for a plataforma, está acessível numa única rota:
https://YOUR_HOST/webhooks/<project>/<provider>/<slug>
<project>é o projeto a que a ligação pertence. Usadefaultpara o projeto default, ou o slug de outro projeto para manter a ligação isolada nesse projeto.<provider>é o nome da plataforma:whatsapp,slack,discord,msteamsougooglechat.<slug>é o nome único que deste à ligação.
Um GET a esse URL responde ao handshake de verificação do fornecedor (o
Pepe devolve o desafio que a plataforma envia quando regista o URL pela primeira
vez). Um POST é um evento de entrada. Num POST, o Pepe resolve a ligação,
verifica a assinatura do pedido contra o segredo que configuraste, extrai a
mensagem, executa o agente associado e entrega a resposta pela própria API do
fornecedor. O trabalho do agente decorre em segundo plano para que a plataforma
receba a confirmação de imediato (fornecedores como a Meta repetem um webhook
lento).
Há uma única rota genérica. Adicionar um novo fornecedor nunca acrescenta um novo ponto de acesso.
PEPE_PUBLIC_URL para que
os URLs de retorno que a linha de comandos imprime fiquem completos. Para um túnel
rápido durante os testes, executa pepe serve --tunnel.Slack, Discord, Microsoft Teams, Google Chat
Estes fornecedores são configurados pela configuração guiada (ou pelo painel), que pede exatamente os campos de que cada um precisa e imprime o URL de retorno a registar:
pepe setup
Escolhe a opção de canal, escolhe o fornecedor e o agente, e introduz as
credenciais (uma referência ${ENV_VAR} é aceite para qualquer segredo). Cada
um tem a sua própria página com os campos e passos de configuração
específicos: Slack, Discord,
Microsoft Teams, Google Chat; esta página
cobre o que é partilhado por todos eles (e pelo WhatsApp).
@Menções em grupos
Slack, Microsoft Teams e Google Chat suportam conversas em grupo/canal, onde
por padrão a ligação só responde quando é @mencionada (uma mensagem direta
chega sempre ao agente, independentemente da configuração). Define
require_mention: false na ligação para que responda a todas as mensagens
em todos os canais em que está. Ou então, sem mexer nessa configuração de toda a
ligação, dispensa isso para um único canal a partir desse canal:
/mention off # só neste canal, até ao /new - não é preciso @mencionar para responder
/mention on # volta a exigir uma @menção
/mention # mostra a configuração atual
Como um comando de canal ainda tem de estar dirigido ao bot para correr, o
primeiro /mention off precisa de uma @menção real (@bot /mention off);
depois disso, o canal deixa de precisar até ao /new. A dispensa vive na
conversa desse canal, não na ligação, por isso nunca se propaga para nenhum
outro canal. WhatsApp e Discord não filtram por menção hoje (respondem
sempre), por isso /mention não tem efeito nenhum aí.
Mudar de modelo
Os comandos /model e /models permitem ver ou mudar o modelo de IA que
responde. Só funcionam numa ligação em modo admin com commands ativado
(vê a comparação de modos em Channels); no support, são
tratados como texto normal. /models lista os modelos disponíveis para o
projeto da ligação; /model mostra o atual, ou muda-o:
/model openrouter # pergunta se muda só este chat ou todos
/model openrouter session # muda só para esta conversa
/model openrouter global # muda para todos com quem esta ligação fala
Mudá-lo globalmente, para todos com quem a ligação fala, está reservado
aos formadores (a mesma lista de confiança que rege a memória); qualquer
outra pessoa numa conversa permitida só pode mudar a sua própria conversa.
Define model_switch_locked: true na ligação para desativar isto por
completo para quem não é formador. É o mesmo mecanismo que o WhatsApp usa; a
versão do Telegram acrescenta um seletor com botões em vez de comandos
escritos.