在构建聊天机器人和其他聊天界面的 AI 工作流时,使用 Chat Trigger 节点。您可以配置用户如何访问聊天,使用 n8n 提供的界面之一或您自己的界面。您可以添加身份验证。

必须连接一个 agent 或 chain 根节点

工作流执行用量

发送到 Chat Trigger 的每条消息都会执行您的工作流。这意味着用户发送 10 条消息的一次对话会使用您执行额度中的 10 次执行。请查看您的付费计划了解额度详情。

手动聊天触发器

从 1.24.0 版本开始,该节点取代了 Manual Chat Trigger 节点。

节点参数#

公开聊天访问权限#

设置聊天是否应公开可用(开启)或仅通过手动聊天界面可用(关闭)。

在构建工作流时请保持关闭。当您准备激活工作流并允许用户访问聊天时再开启。

模式#

选择用户访问聊天的方式。可选:

  • 托管聊天:使用 n8n 托管的聊天界面。推荐大多数用户使用,因为您可以通过节点选项配置界面,无需进行其他设置。
  • 嵌入式聊天:此选项需要您创建自己的聊天界面。您可以使用 n8n 的聊天小部件或自行构建。您的聊天界面必须调用节点中聊天 URL 显示的 webhook 地址。

认证方式#

选择是否以及如何限制对聊天的访问权限。可选方案包括:

  • :聊天不使用认证。任何人都可以使用聊天功能。
  • 基础认证:聊天使用基础认证。
    • 选择或创建一个包含用户名和密码的基础认证凭证。所有用户必须使用相同的用户名和密码。
  • n8n用户认证:只有登录了n8n账户的用户才能使用聊天功能。

初始消息#

此参数仅在您使用托管聊天时可用。用于配置用户访问页面时n8n聊天界面显示的初始消息。

节点选项#

可用选项取决于聊天模式。

托管聊天选项#

允许的来源(CORS)#

设置可以访问聊天URL的来源。输入允许进行跨域非预检请求的URL列表(以逗号分隔)。

使用*(默认值)允许所有来源。

输入框占位符、标题和副标题#

为聊天界面中的这些元素输入文本内容。

查看截图

可自定义的文本元素

加载历史会话#

选择是否加载之前聊天会话中的消息。

如果选择关闭以外的任何选项,必须将Chat触发器和使用的Agent连接到记忆子节点。当您将加载历史会话设置为从记忆加载时,Chat触发器上会出现记忆连接器。n8n建议将Chat触发器和Agent都连接到同一个记忆子节点,这样可以确保两个节点使用单一真实数据源。

查看截图

连接节点到记忆模块

响应模式#

当构建包含聊天处理代理或链之后步骤的工作流时,使用此选项。可选模式:

  • 当最后节点完成时:Chat Trigger 节点返回工作流中最后执行节点的响应代码和数据输出。
  • 使用 'Respond to Webhook' 节点:Chat Trigger 节点按照 Respond to Webhook 节点中的定义进行响应。
需要点击按钮开始聊天#

设置是否在聊天界面显示新对话按钮(开启)或不显示(关闭)。

查看截图

新对话按钮

嵌入式聊天选项#

允许的来源 (CORS)#

设置可以访问聊天 URL 的来源。输入允许进行跨域非预检请求的 URL 列表(以逗号分隔)。

使用 *(默认值)允许所有来源。

加载历史会话#

选择是否加载之前聊天会话的消息。

如果选择关闭以外的任何选项,必须将 Chat Trigger 和使用的 Agent 连接到内存子节点。当设置加载历史会话从内存加载时,Chat Trigger 上会出现内存连接器。n8n 建议将 Chat Trigger 和 Agent 都连接到同一个内存子节点,这能确保两个节点使用单一数据源。

查看截图

连接节点到内存

响应模式#

当构建包含聊天处理代理或链之后步骤的工作流时,使用此选项。可选模式:

  • 当最后一个节点完成时:Chat Trigger 节点返回响应代码和工作流中最后执行节点的数据输出。
  • 使用 'Respond to Webhook' 节点:Chat Trigger 节点按照 Respond to Webhook 节点中的定义进行响应。

模板与示例#

Browse 聊天触发器 integration templates, or search all templates

相关资源#

查看 n8n 的高级 AI 文档。

手动设置聊天响应#

当您不希望直接将 Agent 或 Chain 节点的输出发送给用户时,需要手动设置聊天响应。您可能需要获取 Agent 或 Chain 节点的输出,在发送回用户之前对其进行修改或进行其他处理。

在基础工作流中,Agent 和 Chain 节点会输出名为 output 或 text 的参数,Chat Trigger 会将该参数的值作为聊天响应发送给用户。

如果需要手动创建发送给用户的响应,您必须创建一个名为 text 或 output 的参数。如果使用其他参数名,Chat Trigger 会将整个对象作为响应发送,而不仅仅是参数值。

常见问题#

关于常见问题或错误及其解决方案,请参阅 常见问题

以下是使用 Chat Trigger 节点时可能遇到的常见错误和问题,以及解决方法或排查步骤。

从网站向嵌入式 Chat Trigger 节点传递数据#

当在网站中嵌入 Chat Trigger 节点时,您可能需要向 Chat Trigger 传递额外信息。例如,传递存储在网站 cookie 中的用户 ID。

要实现这一点,请在嵌入式聊天窗口中使用传递给 createChat 函数的 JSON 对象中的 metadata 字段:

createChat({
	webhookUrl: 'YOUR_PRODUCTION_WEBHOOK_URL',
	metadata: {
		'YOUR_KEY': 'YOUR_DATA'
	};
});

metadata 字段可以包含任意数据,这些数据将与其他输出数据一起出现在 Chat Trigger 的输出中。之后,您可以使用 n8n 的数据处理功能像往常一样从下游节点查询和处理这些数据。

Chat Trigger 节点无法获取历史消息#

配置 Chat Trigger 节点时,如果不注意会话加载的配置方式,可能会遇到无法获取历史消息的问题。这种情况通常会表现为 workflow could not be started! 错误。

在 Chat Trigger 中,加载历史会话选项会使用 sessionID 获取会话的历史聊天消息。当您将加载历史会话选项设置为从内存加载时,最佳实践通常是将相同的内存节点连接到工作流中的 Chat Trigger 和 Agent:

  1. 在您的Chat Trigger节点中,将加载历史会话选项设置为从内存加载。此选项仅在聊天设置为公开可见时才会显示。
  2. 将一个Simple Memory节点连接到Memory连接器。
  3. 将同一个Simple Memory节点连接到您的AgentMemory连接器。
  4. Simple Memory节点中,将会话ID设置为连接的Chat Trigger节点

有一种情况您可能需要为 Chat Trigger 和 Agent 分别连接不同的内存节点:如果您希望在内存节点中将会话ID设置为下方定义

如果通过表达式获取会话ID,则该表达式必须适用于所有连接到它的节点。如果表达式与需要内存的每个节点不兼容,您可能需要使用单独的内存节点,以便针对每个节点自定义会话ID的表达式。

《AI提示工程必知必会》为读者提供了丰富的AI提示工程知识与实战技能。《AI提示工程必知必会》主要内容包括各类提示词的应用,如问答式、指令式、状态类、建议式、安全类和感谢类提示词,以及如何通过实战演练掌握提示词的使用技巧;使用提示词进行文本摘要、改写重述、语法纠错、机器翻译等语言处理任务,以及在数据挖掘、程序开发等领域的应用;AI在绘画创作上的应用,百度文心一言和阿里通义大模型这两大智能平台的特性与功能,以及市场调研中提示词的实战应用。通过阅读《AI提示工程必知必会》,读者可掌握如何有效利用AI提示工程提升工作效率,创新工作流程,并在职场中脱颖而出。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐