You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Line Bot中Flex Message轮播模板开发异常问题求助

问题分析与解决方案

你的Case 2之所以没有任何回复(尽管请求返回200),核心原因是Flex Carousel消息的JSON格式完全不符合Line Messaging API的规范,Line服务器无法解析无效的消息结构,因此不会向用户推送内容。

错误点拆解

  1. 你直接将"type": "carousel"放在了JSON根层级,但Line的回复接口要求所有消息必须包裹在messages数组中,每个数组元素对应一条完整的消息。
  2. Carousel是Flex消息的布局类型,并非独立的消息类型。它必须作为type: "flex"消息的contents字段的值,而不能单独作为消息的type

修正后的Case 2代码

if event.message.text == 'test2':
    reply_header = {'Content-Type': 'application/json; charset=UTF-8', 'Authorization': 'Bearer ' + 'xxx'}
    reply_json = {
        "replyToken": event.reply_token,
        "messages": [  # 必须包裹在messages数组里
            {
                "type": "flex",  # 消息类型是flex
                "altText": "Carousel Flex Message",  # 供不支持Flex的设备显示的替代文本
                "contents": {
                    "type": "carousel",  # 这里才是carousel布局类型
                    "contents": [
                        {
                            "type": "bubble",
                            "body": {
                                "type": "box",
                                "layout": "vertical",
                                "contents": [
                                    {
                                        "type": "text",
                                        "text": "First bubble"
                                    }
                                ]
                            }
                        },
                        {
                            "type": "bubble",
                            "body": {
                                "type": "box",
                                "layout": "vertical",
                                "contents": [
                                    {
                                        "type": "text",
                                        "text": "Second bubble"
                                    }
                                ]
                            }
                        }
                    ]
                }
            }
        ]
    }
    r = requests.post("https://api.line.me/v2/bot/message/reply", headers=reply_header, json=reply_json)

关键修改说明

  • 新增messages数组,将整个Flex消息包裹在内,符合Line回复接口的必填结构。
  • 明确消息类型为"type": "flex",并将Carousel布局作为该消息的contents字段值。
  • 添加altText字段,这是Flex消息的必填项,用于在不支持Flex格式的客户端上显示替代文本。

这样修改后,请求就能被Line服务器正确解析,用户就能收到你想要的Carousel样式Flex消息啦!

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

火山引擎 最新活动