You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Chat卡片API用Base64图片报错,求内网图片发送方案

Google Chat卡片API插入内网图片问题解决方案

错误原因

Google Chat卡片API的imageUrl字段不支持Data URI(即data:image/png;base64,...格式),这是你收到400「无效参数」错误的直接原因——官方仅允许该字段填入可被Google Chat服务器正常拉取的HTTP/HTTPS URL。

无需上传公网的可行方案

1. 利用Google Workspace内部共享(适合使用Workspace的企业)

将内网图片上传至公司内部共享的Google Drive文件夹,设置权限为「Google Workspace域内任何人可查看」(避免公开访问),然后将Drive的预览链接转换为直接访问URL:

  • 原预览链接格式:https://drive.google.com/file/d/[FILE_ID]/view
  • 转换后直接访问URL:https://drive.google.com/uc?id=[FILE_ID]
    把转换后的URL填入卡片的imageUrl字段即可。

2. 开放内网图片给Google Chat服务器

Google Chat的后端服务器需要能拉取图片资源,可通过以下方式实现:

  • 查询Google官方文档获取Chat服务的出站IP段,将这些IP添加到公司内网图片服务器的白名单,允许其访问图片资源。
  • 配置公司反向代理,将内网图片路径映射到对外可访问的域名,但仅允许Google的IP段访问,既保证图片不公开,又能让Chat服务正常拉取。

3. 发送图片作为消息附件(无需嵌入卡片)

如果不需要将图片嵌入卡片,可直接通过Chat API发送带附件的消息,无需公网URL,直接上传图片二进制数据即可。示例Python代码:

from googleapiclient.discovery import build
from google.oauth2.service_account import Credentials
import os

# 加载服务账号凭证
creds = Credentials.from_service_account_file('your-service-account-key.json')
chat_service = build('chat', 'v1', credentials=creds)

# 读取本地图片二进制数据
with open('internal-image.png', 'rb') as f:
    image_content = f.read()

# 构造消息体
message_body = {
    "text": "问题解答相关图片",
    "attachments": [
        {
            "contentType": "image/png",
            "content": image_content
        }
    ]
}

# 发送消息
response = chat_service.spaces().messages().create(
    parent='spaces/XXXXXXXXXXX',
    body=message_body
).execute()

内容的提问来源于stack exchange,提问作者Michael Pulis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 13:01:17