fix(captain/hermes): callback aceita ?slug= além de ?inbox_id=
Hermes daemon faz POST /webhooks/captain/hermes_callback?slug=<profile> mas controller só conhecia ?inbox_id. 404 → resposta do LLM nunca chegava ao Captain. Cliente via só auto-react. Fix: fetch_inbox resolve via Captain::Assistant.find_by(hermes_profile_name) quando slug está presente. Inbox é a primeira CaptainInbox associada a esse assistant. Suporta o pattern admin de re-apontar uma inbox de teste (ex: Angelina) entre vários agentes Hermes. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
88a5adb65e
commit
ed21722dc4
@ -44,7 +44,15 @@ class Webhooks::Captain::HermesCallbackController < ApplicationController
|
||||
|
||||
def fetch_inbox
|
||||
inbox_id = params[:inbox_id].presence || params.dig(:metadata, :inbox_id).presence
|
||||
if inbox_id.present?
|
||||
@inbox = Inbox.find_by(id: inbox_id)
|
||||
elsif (slug = params[:slug].presence)
|
||||
# Resolve via slug (hermes_profile_name) — admin pode re-apontar a
|
||||
# inbox pra qualquer agente Hermes sem mexer em URL de callback.
|
||||
asst = Captain::Assistant.find_by(hermes_profile_name: slug, engine: 'hermes')
|
||||
ci = asst&.captain_inboxes&.first
|
||||
@inbox = ci&.inbox
|
||||
end
|
||||
head :not_found if @inbox.blank?
|
||||
end
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user