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

Telegram API link_preview_options参数使用报错求助

添加link_preview_options: {is_disabled: true}参数后请求返回400错误,提示无法解析该JSON对象,移除参数后请求正常。问题出在Google Apps Script的UrlFetchApp默认处理嵌套参数的方式不符合Telegram API的要求。

解决代码

function sendTelegramMessage(chatId, text) {
    var token = "my_token";
    var apiUrl = "https://api.telegram.org/bot" + token + "/sendMessage";

    var payload = {
      method: "post",
      contentType: "application/json",
      payload: JSON.stringify({
        chat_id: chatId,
        text: text,
        parse_mode: "HTML",
        link_preview_options: {is_disabled: true}
      })
    };

    var response = UrlFetchApp.fetch(apiUrl, payload);
}

原因说明

原来的写法中,UrlFetchApp会把嵌套的link_preview_options对象解析成表单字段(类似link_preview_options[is_disabled]=true),但Telegram API要求请求体是JSON格式,这种表单格式无法被正确解析成JSON对象,所以返回400错误。改用JSON.stringify把整个请求体转成JSON字符串,并设置contentType: "application/json",就能匹配API的接收要求。

官方文档相关内容翻译

link_preview_options(可选,LinkPreviewOptions类型):链接预览的配置选项。省略该参数时将使用默认的链接预览设置。
LinkPreviewOptions 对象结构:

  • is_disabled(可选,布尔型):设为true时禁用链接预览
  • url(可选,字符串型):用于生成预览的自定义链接,必须是消息文本中包含的链接
  • prefer_small_media(可选,布尔型):设为true时优先显示小尺寸媒体预览
  • prefer_large_media(可选,布尔型):设为true时优先显示大尺寸媒体预览
  • show_above_text(可选,布尔型):设为true时链接预览显示在消息文本上方,否则显示在下方

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 07:20:26