WhatsApp 视频消息
视频消息包含一个公共 URL,WhatsApp 在发送时获取该 URL,下方可附带可选标题。
发送视频
设置 video.url:
const msg = await bird.whatsapp.send({
to: "+16505551234",
from: "+13124495648",
video: { url: "https://cdn.example.com/unboxing.mp4" },
});
console.log(msg.id, msg.status);msg = client.whatsapp.send(
to="+16505551234",
from_="+13124495648",
video={"url": "https://cdn.example.com/unboxing.mp4"},
)
print(msg.id, msg.status)package main
import (
"context"
"fmt"
"log"
"os"
bird "github.com/messagebird/bird-sdk-go"
"github.com/messagebird/bird-sdk-go/option"
)
func main() {
client, err := bird.NewClient(option.WithAPIKey(os.Getenv("BIRD_API_KEY")))
if err != nil {
log.Fatal(err)
}
msg, err := client.Whatsapp.Send(context.Background(), bird.WhatsappSendParams{
To: "+16505551234",
From: "+13124495648",
Video: &bird.WhatsAppVideoSend{Url: "https://cdn.example.com/unboxing.mp4"},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(msg.Id, *msg.Status)
}$video = (new WhatsAppMessageSendRequestVideo())
->setUrl('https://cdn.example.com/unboxing.mp4');
$message = $bird->whatsapp->send(
to: '+16505551234',
from: '+13124495648',
video: $video,
);
echo $message->getId(), ' ', $message->getStatus();bird whatsapp send \
--from +13124495648 \
--to +16505551234 \
--video https://cdn.example.com/unboxing.mp4{
"name": "whatsapp_send",
"arguments": {
"from": "+13124495648",
"to": "+16505551234",
"video": {
"url": "https://cdn.example.com/unboxing.mp4"
}
}
}curl -X POST "https://us1.platform.bird.com/v1/whatsapp/messages" \
-H "Authorization: Bearer $BIRD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "+16505551234",
"from": "+13124495648",
"video": {
"url": "https://cdn.example.com/unboxing.mp4"
}
}'完整结构添加了一个可选的 caption:
代码示例
{
"to": "+16505551234",
"from": "+13124495648",
"video": {
"url": "https://cdn.example.com/unboxing.mp4",
"caption": "How to set it up"
}
}video 没有 filename 字段。from 在每条服务消息中都是必填的:必须是你的工作区拥有的号码,而不是 Bird 托管的号码。
限制
| 字段 | 限制 | 执行方 |
|---|---|---|
| 文件大小 | 16 MB | 仅 WhatsApp,在获取时(异步) |
| 格式 | MP4 容器、H.264 视频、AAC 音频 | 仅 WhatsApp,在获取时(异步) |
| caption | 最多 1024 个字符 | Bird,在接受时(422) |
| url | 绝对路径、https、包含主机、无原始空格 | Bird,在接受时(422) |
Bird 会在任何内容入队之前检查 URL 的格式和标题的长度。它不会检查文件的实际大小、容器或编解码器;只有 WhatsApp 在发送时的获取操作才能检查。请参阅中心的通过 URL 发送媒体和媒体失败时。
读取入站视频
入站视频携带相同的 video 对象,另外还有一个 id 和 mime_type,这些是 Bird 通过获取文件得到的。在出站回读中这两者都不存在,因为 Bird 从未获取过它发送的文件。请参阅接收 WhatsApp 视频了解完整的入站读取、whatsapp.received 载荷以及需要注意的事项。
限制与失败模式
- 客户服务窗口必须处于打开状态。 视频是一条服务消息,只能在打开的窗口内投递;请参阅中心的客户服务窗口。
- Bird 拒绝 http;WhatsApp 本身会获取它。 请参阅中心的通过 URL 发送媒体了解完整的格式检查。
- 被拒绝的获取仍会被计费。 请参阅中心的媒体失败时了解 media_rejected 和失败仍计费的事实。视频被 WhatsApp 拒绝时的具体文本尚未像图片那样被独立验证过,因此请将该映射视为基于对称性推断的,而非逐项确认的。
- WhatsApp 会缓存已获取的 URL 约 10 分钟。 在该窗口内重新发送相同的 URL 会复用首次获取的结果;更改 URL 以强制重新获取。
- 动画 GIF 不是一种独立类型。 WhatsApp 没有 gif 消息类型;你发送的动画 GIF 会以普通 video(MP4 MIME 类型)的形式送达收件人,入站返回给你时也是如此。
后续步骤
- WhatsApp 服务消息:客户服务窗口以及所有服务消息共享的模型
- 图片:用于照片或图形的相同结构
- 音频:用于语音备忘录或音频片段
- 发送 WhatsApp 消息:请求信封、202 模型和安全重试