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

WhatsApp Flow payload模板变量未替换问题求助

问题:Flask应用中Datakinder表单变量未被实际值替换

我正在开发一个Flask应用,用于存储Datakinder家长客户的数据。目前已成功接收请求并解密消息,但触发on-click-action时,始终收到${form.parentname}而非用户输入的实际内容。点击“Siguiente(下一步)”按钮后,端点收到的数据为{'parentname': '${form.parentname}'},预期应为{'parentname': 'Alejandro'}。发送固定数据时能正常接收,但表单数据无法正确替换。

Footer代码如下:

{
    "type": "Footer",
    "label": "Siguiente",
    "on-click-action": {
        "name": "data_exchange",
        "payload" : {
            "parentname":"${form.parentname}"
        }
    },
    "enabled":true
}

解决方案

  • 改用Flask Jinja2模板语法:如果这段JSON定义在Flask模板文件中,Flask默认使用Jinja2引擎,变量占位符应为{{ }}而非${}。将"parentname":"${form.parentname}"改为"parentname":"{{ form.parentname }}",确保模板渲染时自动替换为实际表单值。
  • 前端动态获取表单值:如果这段JSON是前端JavaScript生成的,${form.parentname}会被当作普通字符串处理。需要通过DOM API获取输入框的实际值,示例代码:
    // 假设输入框的id为parentname
    const parentName = document.getElementById('parentname').value;
    const footerConfig = {
        "type": "Footer",
        "label": "Siguiente",
        "on-click-action": {
            "name": "data_exchange",
            "payload" : {
                "parentname": parentName
            }
        },
        "enabled":true
    };
    
  • 确认表单字段名匹配:检查前端表单输入框的name属性是否为parentname,只有字段名一致,模板或前端才能正确获取对应的值。
  • 后端手动替换变量(若需):如果是后端直接拼接JSON字符串,需在返回给前端前手动替换占位符,示例Python代码:
    # 假设form是请求中的表单对象
    footer_json_str = '''{
        "type": "Footer",
        "label": "Siguiente",
        "on-click-action": {
            "name": "data_exchange",
            "payload" : {
                "parentname":"${form.parentname}"
            }
        },
        "enabled":true
    }'''
    footer_json_str = footer_json_str.replace("${form.parentname}", form.parentname.data)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 08:13:13