如何通过Twilio Conversation API向WhatsApp发送媒体文件?
解决Twilio Conversation API发送媒体消息的步骤
1. 上传媒体文件到Twilio获取Media SID
你需要先通过Twilio Media API上传媒体文件,获取对应的mediaSid。支持两种上传方式:
方式一:通过外部URL上传(推荐用于已托管的文件)
const twilio = require('twilio'); const client = twilio('你的Twilio账户SID', '你的Twilio认证令牌'); client.media.v1.media .create({ mediaUrl: 'https://你的域名/媒体文件路径.jpg', // 替换为你的媒体文件公网URL contentType: 'image/jpeg' // 根据文件类型设置MIME类型,比如png是image/png,视频是video/mp4 }) .then(media => { console.log('获取到的Media SID:', media.sid); // 这就是后续要用到的mediaSid }) .catch(error => console.error('上传失败:', error));
方式二:直接上传本地文件
如果媒体文件在本地服务器,可以直接读取文件二进制内容上传:
const fs = require('fs'); const twilio = require('twilio'); const client = twilio('你的Twilio账户SID', '你的Twilio认证令牌'); client.media.v1.media .create({ media: fs.readFileSync('./本地媒体文件路径.jpg'), // 读取本地文件 contentType: 'image/jpeg' }) .then(media => console.log('Media SID:', media.sid)) .catch(err => console.error('上传失败:', err));
2. 通过Conversation API发送带媒体的消息
拿到mediaSid后,修改你现有的Conversation消息创建代码,添加mediaSid参数(支持传入多个SID数组):
client.conversations.v1 .conversations(conversationId) .messages.create({ author: 'whatsapp:你的发送号码', // 必须是对话中已添加的参与者号码(带whatsapp前缀) body: '这是附带媒体的消息', // 可选的文本说明 mediaSid: ['刚才获取的Media SID'] // 传入获取到的mediaSid,多个的话继续添加到数组中 }) .then(message => console.log('消息发送成功,SID:', message.sid)) .catch(error => console.error('发送失败:', error));
注意事项
- 确保媒体文件符合Twilio和WhatsApp的要求:图片最大5MB,视频最大16MB,支持的格式包括JPG、PNG、MP4等
- 上传时的
contentType必须与文件实际类型匹配,否则媒体无法正常显示 author字段必须是当前对话中已存在的参与者,且格式为whatsapp:+1234567890
内容的提问来源于stack exchange,提问作者Ponder13
相关产品推荐
相关产品推荐

