Telegram Bot API:sendVoice方法中multipart/form-data格式下reply_parameters传参
解决Telegram Bot API sendVoice方法multipart/form-data格式下传递reply_parameters的问题
当使用multipart/form-data格式调用sendVoice时,处理reply_parameters这类非原始类型的对象参数,核心方法是把对象序列化为合法的JSON字符串,然后作为普通键值对参数传递即可。
具体操作方式:
- 先构造
reply_parameters对象(比如必填的message_id,可选的chat_id、allow_sending_without_reply等字段) - 将这个对象序列化为标准JSON字符串
- 在
multipart/form-data表单中,添加一个键为reply_parameters的文本字段,值就是序列化后的JSON字符串
举个实际的curl请求示例:
curl -X POST "https://api.telegram.org/bot<你的BotToken>/sendVoice" \ -F "voice=@/本地语音文件路径.ogg" \ -F "chat_id=目标聊天ID" \ -F "reply_parameters={\"message_id\": 要回复的消息ID}"
需要注意的细节:
- 确保JSON字符串格式正确,命令行环境下要对引号做转义;如果用编程语言实现,直接用内置的JSON序列化函数(比如Python的
json.dumps()、Java的ObjectMapper.writeValueAsString())自动处理,避免手动转义出错 - 不要尝试把对象拆分成嵌套参数(比如
reply_parameters[message_id]=xxx),Telegram API不支持这种格式,必须传递完整的JSON字符串 - 如果要设置
allow_sending_without_reply这类布尔值,直接在JSON里写true或false即可,比如{"message_id": 12345, "allow_sending_without_reply": true}
内容的提问来源于stack exchange,提问作者Aleksand Kondaurov
相关产品推荐
相关产品推荐

