chenhg5/cc-connect · error
%s: send preview (reply): %w
Error message
%s: send preview (reply): %w
What it means
Sending a preview card via the Reply Message API failed inside the transient-retry/token-refresh wrapper in SendPreviewStart. Wraps the final Lark SDK error after retries; the preview card was not delivered as a reply.
Source
Thrown at platform/feishu/feishu.go:5105
}
} else {
cardJSON = buildPreviewCardJSON(content)
sendContent = cardJSON
}
var msgID string
if p.shouldUseThreadOrReplyAPI(rc) {
req := larkim.NewReplyMessageReqBuilder().
MessageId(rc.messageID).
Body(p.buildReplyMessageReqBody(rc, larkim.MsgTypeInteractive, sendContent)).
Build()
var resp *larkim.ReplyMessageResp
if err := p.withTransientRetry(ctx, "send preview", func() error {
return p.withFreshTenantAccessTokenRetry(ctx, "send preview", func(client *lark.Client, options ...larkcore.RequestOptionFunc) error {
var err error
resp, err = client.Im.Message.Reply(ctx, req, options...)
if err != nil {
return fmt.Errorf("%s: send preview (reply): %w", p.tag(), err)
}
if !resp.Success() {
return fmt.Errorf("%s: send preview (reply) code=%d msg=%s", p.tag(), resp.Code, resp.Msg)
}
return nil
})
}); err != nil {
return nil, err
}
if resp.Data != nil && resp.Data.MessageId != nil {
msgID = *resp.Data.MessageId
}
} else {
req := larkim.NewCreateMessageReqBuilder().
ReceiveIdType(larkim.ReceiveIdTypeChatId).
Body(larkim.NewCreateMessageReqBodyBuilder().
ReceiveId(chatID).
MsgType(larkim.MsgTypeInteractive).View on GitHub (pinned to 4000b2338a)
Solutions
- Rely on built-in retries; verify rc.messageID is still valid (not recalled)
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at platform/feishu/feishu.go:5105 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of chenhg5/cc-connect@4000b2338a (2026-09-06).
Data as JSON: /api/errors/c615a790218e4745.
Report an issue: GitHub.