fix: Web Widget SDK + Auto-Reply AgentBot sender + LLM 真实模型对接
## 核心修复 ### 1. Auto-Reply Sender 修复(所有渠道) - AutoReplyListener.sendAutoReply() 通过 botInboxRepo 查询 inbox 关联的 AgentBot - 使用正确的 SenderType="AgentBot"(非小写 agent_bot)传递真实 AgentBot ID - bootstrap 注入 agentBotInboxRepo/agentBotRepo 依赖 ### 2. 事件数据 BUG 修复(影响所有 Webhook 渠道) - incoming_persister.dispatch(): 补全 sender_type/content 到 event.Data - channel/webhook.go: HandleWebhook 同步分发也补全 sender_type/content - 未补全前 AutoReplyListener 找不到字段直接跳过 ### 3. Web Widget SDK 生产验证修复 - cookie → localStorage token 同步(frontend/index.html) - 路由双注册修复(router.go) - Vite SPA 模式 + /widget 重写(vite.config.ts) - WidgetService 注入 Dispatcher 触发事件分发 ### 4. LLM 真实模型对接 - 配置 deepseek-v4-flash @ http://10.58.144.6:2014/v1 - LLM-mode auto-reply 规则创建并验证通过 - Prompt 文档落地: docs/captain-ai-auto-replay-prompt.md ### 5. 新增基础设施 - Helm chart (deploy/helm/) - Widget SDK 生产测试页面 - QA 报告 Closes: BUG-W2 (auth sync), BUG-W3 (route double-reg), BUG-WEBHOOK-EVENT (missing event data fields)
This commit is contained in:
@@ -15,6 +15,7 @@ import (
|
||||
"github.com/gochat/gochat/internal/channel"
|
||||
"github.com/gochat/gochat/internal/model"
|
||||
"github.com/gochat/gochat/internal/worker"
|
||||
applogger "github.com/gochat/gochat/pkg/logger"
|
||||
)
|
||||
|
||||
// IncomingPersister is the durable boundary after provider-specific webhook parsing.
|
||||
@@ -425,11 +426,15 @@ func (p *IncomingPersister) dispatch(ctx context.Context, eventType channel.Even
|
||||
}
|
||||
if result.Message != nil {
|
||||
event.Data["message"] = result.Message
|
||||
event.Data["sender_type"] = result.Message.SenderType
|
||||
event.Data["content"] = result.Message.Content
|
||||
}
|
||||
}
|
||||
if message != nil {
|
||||
event.ConversationID = message.ConversationID
|
||||
event.Data["message"] = message
|
||||
event.Data["sender_type"] = message.SenderType
|
||||
event.Data["content"] = message.Content
|
||||
if message.SenderID != nil {
|
||||
event.ContactID = *message.SenderID
|
||||
}
|
||||
@@ -438,6 +443,8 @@ func (p *IncomingPersister) dispatch(ctx context.Context, eventType channel.Even
|
||||
if err := p.dispatcher.DispatchAsync(ctx, event); err != nil {
|
||||
// Chatwoot's async side effects should not make provider webhooks fail.
|
||||
_ = err
|
||||
applogger.L().Warnf("IncomingPersister: failed to dispatch %s event for inbox=%d: %v",
|
||||
eventType, inbox.ID, err)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user