Google AppSheet Webhook推送Telegram通知失败问题排查
AppSheet Webhook 推送Telegram通知格式问题修复
项目背景
基于Google AppSheet输入自动推送Telegram通知,已配置Webhook并编写JSON请求体,使用MarkdownV2解析模式,预期用户输入指定字段数据时自动推送通知。
原请求体代码:
{"chat_id":<TELEGRAM TOKEN ID>, "text":"<<CONCATENATE(\"Notification \",text(today()))>>\n <<CONCATENATE(\"ID: \",[ID])>>\n <<CONCATENATE(\"Registration Status: \", [Registration Status])>>\n <<CONCATENATE(\"No. of Customer: \", [CustomerNumberID])>>\n", "parse_mode":"MarkdownV2"}
问题1:"No. of Customer"导致推送失败
原因
Telegram的MarkdownV2解析规则中,.(点号)属于需要转义的特殊字符,No.中的点号未转义时会被识别为Markdown语法的一部分,触发请求解析失败。
解决办法
将文本中的.转义为\.,修改为No\. of Customer。
问题2:含数字和连字符的[Registration Status]内容(如"3-Days Offline")推送失败
原因
MarkdownV2中,以数字加-开头的内容会被识别为有序列表语法,同时-本身也是需要转义的特殊字符,未转义时会触发语法错误。
解决办法
对[Registration Status]字段内容中的特殊字符(包括-、.等)进行转义处理,在AppSheet的CONCATENATE函数中添加转义逻辑。
修正后的完整请求体代码
{"chat_id":<TELEGRAM TOKEN ID>, "text":"<<CONCATENATE(\"Notification \",text(today()))>>\n <<CONCATENATE(\"ID: \",[ID])>>\n <<CONCATENATE(\"Registration Status: \", SUBSTITUTE(SUBSTITUTE([Registration Status], \"-\", "\\-"), ".", "\\."))>>\n <<CONCATENATE(\"No\\. of Customer: \", [CustomerNumberID])>>\n", "parse_mode":"MarkdownV2"}
补充说明
- 固定文本中的特殊字符(如
No.的.)直接添加转义符\即可 - 动态字段(如[Registration Status])可通过
SUBSTITUTE函数批量转义特殊字符,若需兼容更多Markdown特殊字符(如_、*),可继续嵌套SUBSTITUTE函数扩展转义规则
内容的提问来源于stack exchange,提问作者Kevin Risto
相关产品推荐
相关产品推荐

