--- summary: "相册、语音笔记、视频笔记、地点、地点和贴纸" read_when: - "将多张照片作为一张 Telegram 相册发送" - "发送语音注释、视频注释、位置或地点" - "启用贴纸发送和贴纸搜索" title: "Telegram 媒体和附件" sidebarTitle: "媒体和附件" --- 除了文本之外,OpenClaw 还可以向 Telegram 发送什么内容,以及入站媒体如何到达代理。 ## 媒体和附件 ### 相册 在一次 `message` 工具调用中发送多个图像附件。 OpenClaw 将连续照片按原始顺序分组到最多包含 10 张图像的 Telegram 相册中。多张照片的自动回复使用相同的分组。单独发送一张照片,包括最后一张照片的剩余部分。 ```json5 { action: "send", channel: "telegram", to: "123456789", message: "Trip photos", attachments: [ { type: "image", media: "https://example.com/photo-1.jpg" }, { type: "image", media: "https://example.com/photo-2.jpg" }, ], } ``` 标题出现在第一张照片上。超出标题限制的文本会作为单独的消息出现在相册后面。作为文档发送的照片、其他媒体类型以及带有内嵌按钮的消息会保持单独的发送,以便保留其现有的控件和传递行为。 媒体标题使用 Telegram HTML 而不是丰富的消息块。丰富列表变成单独的标记行(包括嵌套列表和复选框),旁白变成块引用。 HTML 复选框输入类型不区分大小写。字幕编辑使用相同的渲染;纯文本重试保留可见文本,而不根据标题限制计算格式标记。代码示例保留其文字标签。 ### 音频消息 Telegram 区分语音消息和音频文件。默认:音频文件行为;在代理回复中添加标签 `[[audio_as_voice]]` 可强制按语音消息发送。传入的语音消息转写在代理上下文中会被视为机器生成的、不可信的文本,但实体检测仍会使用原始转写,因此基于 mention 的语音消息仍然可以正常工作。 安装 `ffprobe` 时,OpenClaw 包含 OGG/Opus、MP3 和 M4A 上传的持续时间,以便 Telegram 可以正确显示。如果持续时间探测失败,上传仍会继续进行,而无需持续时间元数据。 ```json5 { action: "send", channel: "telegram", to: "123456789", media: "https://example.com/voice.ogg", asVoice: true, } ``` ### 视频消息 Telegram 区分视频文件和视频消息(video note)。视频消息不支持 caption;提供的消息文本会单独发送。 ```json5 { action: "send", channel: "telegram", to: "123456789", media: "https://example.com/video.mp4", asVideoNote: true, } ``` ### 位置和场所 使用现有的 `send` 动作,并提供一个独立的 `location` 对象。坐标会发送原生位置标记;同时添加 `name` 和 `address` 会发送原生场所卡片。位置发送不能与消息文本或媒体组合使用。 ```json5 { action: "send", channel: "telegram", to: "123456789", location: { latitude: 48.858844, longitude: 2.294351, accuracy: 12, name: "Eiffel Tower", address: "Champ de Mars, Paris", }, } ``` ### 贴纸 入站:下载并处理静态 WEBP(占位符 ``)。当贴纸媒体不可用时,包括动画 TGS 和视频 WEBM,OpenClaw 使用贴纸的表情符号作为消息文本。如果没有可用的表情符号,则使用 ``。缓存的描述优先于此后备。 贴纸上下文字段:`Sticker.emoji`、`Sticker.setName`、`Sticker.fileId`、`Sticker.fileUniqueId`、`Sticker.cachedDescription`。描述会缓存在 OpenClaw SQLite 插件状态中,以减少重复的视觉调用。 贴纸描述在共享自动图像模型选择之前使用配置的 `agents.defaults.imageModel`,包括提供商的 MiniMax 图像路由。标签描述使用一种选定的模型,如果该模型失败,则不会尝试配置的后备列表。失败的描述不会被缓存;一般媒体分析仍然可以通过其正常的后备处理单独运行。 启用贴纸动作: ```json5 { channels: { telegram: { actions: { sticker: true, }, }, }, } ``` 发送: ```json5 { action: "sticker", channel: "telegram", to: "123456789", fileId: "CAACAgIAAxkBAAI...", } ``` 搜索缓存贴纸: ```json5 { action: "sticker-search", channel: "telegram", query: "cat waving", limit: 5, } ```