如何通过Twilio向WhatsApp号码发送多张图片?
使用twilio-go发送多张图片的正确实现
Twilio的Messages API支持通过MediaUrl字段传入URL数组来发送多张图片,twilio-go SDK完全适配这个功能,以下是完整的实现步骤和代码示例:
核心实现代码
package main import ( "fmt" "github.com/twilio/twilio-go" openapi "github.com/twilio/twilio-go/rest/api/v2010" ) func main() { // 初始化Twilio客户端(替换为你的账户SID和Auth Token) client := twilio.NewRestClientWithParams(twilio.ClientParams{ Username: "你的Twilio账户SID", Password: "你的Twilio Auth Token", }) // 构造消息参数 params := &openapi.CreateMessageParams{} params.SetTo("目标用户号码(格式:+国际区号+号码,如+8613xxxxxxxxx)") params.SetFrom("你的Twilio号码(格式同上)") // 传入4张图片的公开URL数组(最多支持10个) mediaUrls := []string{ "https://example.com/image1.jpg", "https://example.com/image2.png", "https://example.com/image3.gif", "https://example.com/image4.jpeg", } params.SetMediaUrl(mediaUrls) // 可选:添加消息文本内容 params.SetBody("这是为你发送的4张图片") // 发送请求 resp, err := client.Api.CreateMessage(params) if err != nil { fmt.Printf("发送失败: %v\n", err) return } if resp.Sid != nil { fmt.Printf("消息发送成功,SID: %s\n", *resp.Sid) } }
关键注意事项
- 图片URL要求:必须是公开可访问的HTTP/HTTPS地址,Twilio需要能直接抓取图片资源(本地文件、内网地址、带防盗链的URL都无法正常发送)
- 号码格式:所有号码必须带国际区号(如国内号码用+86开头),否则会发送失败
- MMS支持:确保你的Twilio号码支持MMS功能(部分低价号码可能仅支持SMS)
- 数量限制:单条消息最多支持10个MediaUrl,发送4张完全符合规则
排查失败问题的方法
如果仍然发送失败,可通过以下方式定位问题:
- 检查Twilio控制台的错误日志,里面会给出具体错误码(如11200代表URL不可访问,21614代表目标号码不支持MMS)
- 直接在浏览器中打开你设置的MediaUrl,确认能正常加载图片
- 验证你的Twilio账户状态:没有欠费,目标号码所在地区未被限制
内容的提问来源于stack exchange,提问作者Tatsuya Shiba
相关产品推荐
相关产品推荐

