chenhg5/cc-connect · error

%s: build image message: %w

Error message

%s: build image message: %w

What it means

SendImage uploaded the image and obtained an imageKey, but serializing the larkim.MessageImage content to JSON failed. Wraps the serialization error before the message send; indicates an SDK-side marshaling problem, not a network issue.

Source

Thrown at platform/feishu/feishu.go:3275

	if p.shouldUseThreadOrReplyAPI(rc) {
		return p.replyMessage(ctx, rc, larkim.MsgTypeInteractive, cardJSON)
	}
	return p.sendNewMessageToChat(ctx, rc, larkim.MsgTypeInteractive, cardJSON)
}

func (p *Platform) SendImage(ctx context.Context, rctx any, img core.ImageAttachment) error {
	rc, ok := rctx.(replyContext)
	if !ok {
		return fmt.Errorf("%s: SendImage: invalid reply context type %T", p.tag(), rctx)
	}

	imageKey, err := p.uploadImageKey(ctx, img.Data)
	if err != nil {
		return err
	}
	imageContent, err := (&larkim.MessageImage{ImageKey: imageKey}).String()
	if err != nil {
		return fmt.Errorf("%s: build image message: %w", p.tag(), err)
	}

	return p.sendMediaMessage(ctx, rc, larkim.MsgTypeImage, imageContent)
}

func (p *Platform) uploadImageKey(ctx context.Context, data []byte) (string, error) {
	var uploadResp *larkim.CreateImageResp
	if err := p.withTransientRetry(ctx, "upload image", func() error {
		return p.withFreshTenantAccessTokenRetry(ctx, "upload image", func(client *lark.Client, options ...larkcore.RequestOptionFunc) error {
			req := larkim.NewCreateImageReqBuilder().
				Body(larkim.NewCreateImageReqBodyBuilder().
					ImageType("message").
					Image(bytes.NewReader(data)).
					Build()).
				Build()
			var err error
			uploadResp, err = client.Im.Image.Create(ctx, req, options...)
			if err != nil {

View on GitHub (pinned to 4000b2338a)

Solutions

  1. Retry; verify the returned image_key is well-formed
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at platform/feishu/feishu.go:3275 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/a8e009d20d2bf426. Report an issue: GitHub.