mirror of
https://github.com/sipeed/picoclaw.git
synced 2026-06-12 18:08:54 +00:00
4c7a5df307
Add outbound media sending capability so the agent can publish media attachments (images, files, audio, video) through channels via the bus. - Add MediaPart and OutboundMediaMessage types to bus - Add PublishOutboundMedia/SubscribeOutboundMedia bus methods - Add MediaSender interface discovered via type assertion by Manager - Add media dispatch/worker in Manager with shared retry logic - Extend ToolResult with Media field and MediaResult constructor - Publish outbound media from agent loop on tool results - Implement SendMedia for Telegram, Discord, Slack, LINE, OneBot, WeCom
43 lines
1.7 KiB
Go
43 lines
1.7 KiB
Go
package bus
|
|
|
|
// Peer identifies the routing peer for a message (direct, group, channel, etc.)
|
|
type Peer struct {
|
|
Kind string `json:"kind"` // "direct" | "group" | "channel" | ""
|
|
ID string `json:"id"`
|
|
}
|
|
|
|
type InboundMessage struct {
|
|
Channel string `json:"channel"`
|
|
SenderID string `json:"sender_id"`
|
|
ChatID string `json:"chat_id"`
|
|
Content string `json:"content"`
|
|
Media []string `json:"media,omitempty"`
|
|
Peer Peer `json:"peer"` // routing peer
|
|
MessageID string `json:"message_id,omitempty"` // platform message ID
|
|
MediaScope string `json:"media_scope,omitempty"` // media lifecycle scope
|
|
SessionKey string `json:"session_key"`
|
|
Metadata map[string]string `json:"metadata,omitempty"`
|
|
}
|
|
|
|
type OutboundMessage struct {
|
|
Channel string `json:"channel"`
|
|
ChatID string `json:"chat_id"`
|
|
Content string `json:"content"`
|
|
}
|
|
|
|
// MediaPart describes a single media attachment to send.
|
|
type MediaPart struct {
|
|
Type string `json:"type"` // "image" | "audio" | "video" | "file"
|
|
Ref string `json:"ref"` // media store ref, e.g. "media://abc123"
|
|
Caption string `json:"caption,omitempty"` // optional caption text
|
|
Filename string `json:"filename,omitempty"` // original filename hint
|
|
ContentType string `json:"content_type,omitempty"` // MIME type hint
|
|
}
|
|
|
|
// OutboundMediaMessage carries media attachments from Agent to channels via the bus.
|
|
type OutboundMediaMessage struct {
|
|
Channel string `json:"channel"`
|
|
ChatID string `json:"chat_id"`
|
|
Parts []MediaPart `json:"parts"`
|
|
}
|