通过外部前端向用户收集信息的N8n工作流
Flow structure:
1. Webhook接收用户消息
2.如果是第一条消息 → 在Google表格中创建一个会话行
3.提出问题
4.等待下一次webhook调用(用户回复)
5.将回复保存到正确的列
6.将问题索引递增
7.询问下一个问题
The problem:
当用户回复时,工作流把上一条消息保存到了问题列里,而不是保存当前的回复。
Setup details:
• n8n版本: [最新版本]
• 使用Webhook触发器
• 使用Google表格节点
• 会话通过session_id列进行跟踪
• 每次用户回复都会触发一个新的执行
How should state be handled in n8n for a sequential Q&A flow across multiple webhook executions?
在n8n中,跨多次webhook执行的顺序问答流程,状态应如何处理?
What is the correct pattern to ensure the current webhook payload is saved and not previous execution data?
确保保存的是当前webhook负载,而不是前一次执行的数据,正确的模式是什么?
解决方案
不确定你是不是已经在几周前就修复了这个问题,但这看起来像是在n8n的多个webhook执行之间的状态问题。
每次用户回复都是一次新的执行,除非你显式地把数据存储在某处,否则没有什么真正被“记住”。从你描述的情况来看,工作流似乎是在从上一步取值,而不是使用刚刚到来的当前消息。
在这里通常更有效的做法是将每次webhook调用视为完全独立的,并在每次都重新构建上下文。因此,当新的消息到来时,直接从webhook获取消息,然后使用你的session_id查找会话,检查你处于哪个问题的索引,把当前消息保存到正确的位置,然后进入下一个问题。
如果保存了错误的消息,请再仔细检查在更新步骤中映射到的字段——很多时候它会指向先前节点的某个值,或表格读取的内容,而不是实际的webhook负载。
另外,我也更倾向于把会话逻辑分离一些(比如一个小型的辅助/本地工作流,只处理读取/更新状态),这样主流程就不会变得混乱、跨步骤混淆数据。
如果你仍然卡住,随时把你的工作流或字段映射方式发给我,我很乐意看看。