任务(Task)
简介
任务(Task) 是 Agent 的主动消息能力:由 Agent 主动向用户发起对话,而不是等待用户先开口。
与常规对话不同,常规对话是"用户提问 → Agent 回答",而任务是"平台按照你设定的条件,替用户向 Agent 发出一条消息 → Agent 生成回复 → 回复推送给用户"。你在任务中填写的"触发消息",本质上是代替用户发给 Agent 的一句话,Agent 会像收到真实用户消息一样生成回复,最终用户看到的是 Agent 的回复,而不是触发消息本身。
典型使用场景:
| 场景 | 触发方式 | 示例 |
|---|---|---|
| 定期播报 | 主动 - 定时触发 | 每天早上 9:00 向所有 Telegram 用户推送今日资讯 |
| 沉默用户唤醒 | 被动 - 用户触发 | 用户超过 3 天未对话时,主动发送关怀消息 |
| 业务系统联动 | 主动 - 事件触发 | 订单发货后,业务系统调用 Webhook,通知用户物流信息 |
| 单次通知 | 主动 - 定时触发(单次) | 在指定时间向近一个月活跃的用户发送活动通知 |
前置条件
- 任务只会发送给已经与 Agent 产生过对话的用户。平台会为每个用户找到其在目标通道上"最后一次活跃"的会话,并在该会话中注入消息。没有会话记录的用户不会收到任务消息(执行明细中记为
NO_CONVERSATION)。 - 若目标通道为第三方集成(如 WhatsApp、Telegram、LINE 等),请确保对应的集成已在「Integrations」中正确配置并处于启用状态;集成被关闭或凭证失效会导致发送失败(
CHANNEL_CONFIG_INVALID/CHANNEL_AUTH_FAILED)。 - 任务执行会调用 Agent 的 LLM 生成回复,会正常消耗积分(Credits)。
入口
进入 开发空间 → 智能体 → 选择某个 Agent → 左侧菜单「Tasks」。
任务列表支持:按任务名称搜索、按状态(Status)、触发类型(Trigger)、目标用户(Target)筛选。列表字段说明:
| 字段 | 说明 |
|---|---|
| Name | 任务名称 |
| Status | 任务状态,见任务状态 |
| Trigger | 触发类型:定时 / 事件 / 用户触发 |
| Target | 目标用户:全部用户 / 自定义用户 |
| Message | 触发消息(模板内容) |
| Created | 创建时间与创建人 |
| Action | 操作:View(查看)/ Stop(停止)/ Delete(删除) |
创建任务
点击右上角 New task,在右侧抽屉中完成配置。
1. 基础信息
| 配置项 | 说明 |
|---|---|
| Task name | 任务名称,必填,最长 100 个字符 |
| Target users | 目标用户,二选一:Custom users(自定义用户,默认)或 All users(全部用户) |
| Target channels | 目标通道,选择 Custom users 时必填,可多选。只会向在这些通道上有会话的用户发送 |
| Target conversation scope | 目标会话范围(开始时间 – 结束时间)。只有会话创建时间落在此区间内的用户会成为发送对象,用于把发送范围限制在"近期活跃"的用户 |
注意:选择 All users 时会弹出二次确认,因为这意味着向该 Agent 所有通道上的全部用户广播。请务必确认目标会话范围设置合理,避免误发。
支持的目标通道
| 类别 | 通道 |
|---|---|
| 自有渠道 | Web、Share、Embed(iframe)、Widget、App、API |
| 工作空间 | Workspace、Workspace Apps |
| IM 通道 | Telegram、WhatsApp(Meta)、WhatsApp(Engagelab)、LINE、Slack、Facebook Messenger、Instagram、WeChat 客服(微信客服)、Teams |
| 客服平台 | Intercom、LiveChat、Livedesk、OmniChat、Zoho SalesIQ |
提示:部分通道因平台协议限制暂不支持服务端主动推送(如 Discord、DingTalk、SoBot),在通道下拉中会置灰并提示原因。自有渠道(Web / Widget 等)的回复会直接写入会话,用户下次打开对话窗口即可看到;IM 通道与客服平台则会通过对应平台的 API 主动推送给用户。
2. 触发方式(Trigger)
触发方式决定"什么时候发",共三种:
主动 - 定时触发(Active - Scheduled)
由平台按设定的时间表主动发起,适合定期播报、单次通知。
| 周期模式 | 说明 |
|---|---|
| Daily | 每天在指定时刻(HH:mm)触发 |
| Weekly | 每周指定星期几的指定时刻触发 |
| Monthly | 每月指定日期的指定时刻触发;若当月没有该日期(如 31 日),则取当月最后一天 |
| Interval | 按固定间隔触发,单位支持分钟 / 小时 / 天,最小 1 分钟 |
| Once | 仅执行一次。执行时间必须晚于当前时间至少 1 分钟,且不超过 1 年 |
时间按任务所选时区计算。定时任务创建后状态为 WAITING,到达首次执行时间后进入 RUNNING;Once 任务执行完成后自动转为 COMPLETED。
主动 - 事件触发(Active - Event)
由你的业务系统通过 Webhook 调用平台来触发,适合与订单、支付、工单等业务事件联动。
创建任务时选择鉴权方式并填写凭证,平台会自动生成一个唯一的 Webhook URL(创建后可在任务详情中查看):
| 配置项 | 说明 |
|---|---|
| Auth method | 鉴权方式:Basic Auth 或 HMAC signature |
| Username / Password | Basic Auth 模式下必填,调用时以 Authorization: Basic base64(username:password) 携带 |
| Secret | HMAC 模式下的签名密钥,调用方需对请求 body 计算 HMAC-SHA256,并通过 X-Signature: sha256=<hex> 请求头携带 |
Webhook 调用示例
Webhook URL 形如 {平台域名}/bot/proactive-task/webhook/{webhookPath},请以任务详情中显示的完整地址为准。
POST {Webhook URL}
Content-Type: application/json
Authorization: Basic base64(username:password)
{
"idempotency_key": "order-20260903-0001",
"target": {
"channel": "TELEGRAM",
"user_id": "customer_123"
},
"variables": {
"order_no": "SO-20260903-0001",
"eta": "9月5日"
}
}
| 字段 | 必填 | 说明 |
|---|---|---|
idempotency_key |
否 | 幂等键,最长 128 字符。24 小时内相同键的重复请求会被拒绝,避免业务系统重试导致重复发送 |
target.channel |
是 | 目标通道,取值与通道枚举一致,如 WEB、TELEGRAM、WHATSAPP_META、LINE |
target.user_id |
二选一 | 业务用户 ID(已登录用户) |
target.aid |
二选一 | 匿名用户 ID(未登录访客) |
variables |
否 | 自定义变量,可在触发消息中通过 {{event.variables.字段名}} 引用 |
注意:Webhook 请求成功仅代表"已接收并进入发送队列",实际发送结果请在执行历史中查看。鉴权失败、任务已停止、目标通道不在任务的目标通道范围内等情况都会返回权限错误。单个 Webhook 地址限流 120 次 / 分钟。
被动 - 用户触发(Passive - User Triggered)
由平台每分钟扫描一次所有目标用户,符合规则的用户即触发发送,适合沉默用户唤醒、高价值用户关怀等场景。
规则配置
点击 Add rule 添加规则,多条规则之间可选择 AND(全部满足)或 OR(任一满足)。
| 规则字段 | 类型 | 可用算子 | 示例 |
|---|---|---|---|
| User's last chat time(用户最后对话时间) | 时间 | 已过去 N 分钟/小时/天、最近 N 分钟/小时/天以内 | 最后对话时间已过去 3 天 |
| Total chats(对话总次数) | 数字 | 等于 / 不等于 / 大于 / 大于等于 / 小于 / 小于等于 / 为空 / 非空 | 对话总次数 ≥ 10 |
| User attributes(用户属性) | 字符串 / 数字 / 布尔 / 列表 / 时间 | 按类型对应:等于 / 不等于 / 包含 / 为真 / 包含于…… | 会员等级 包含于 [VIP, 白金] |
| Custom attributes(自定义属性) | 字符串 / 数字 / 布尔 / 列表 / 时间 | 同上 | 活动开关 为真 |
说明:用户属性取自「变量管理 → 用户属性」,按用户逐个取值(用户未设置时取属性默认值),适合按用户画像筛选;自定义属性取自「变量管理 → 自定义变量」,是 Agent 级的统一值,对所有用户相同,适合作为"总开关"类条件。所有规则字段都基于该用户在目标通道上最后活跃的那条会话取值。
消息频控(Message Frequency)
被动触发任务必须设置频控:在设定的窗口内(N 小时 / N 天),同一个用户最多只会被该任务触发一次,避免持续符合规则的用户被反复打扰。
提示:用户最后对话时间(User's last chat time)是"过去"的时间,请使用"已过去 N 单位"类算子;"距今 N 单位之后"类算子只适用于未来时间字段(如订阅到期时间),用在最后对话时间上永远不会命中。
3. 触发消息(Message)
填写要"代替用户"发送给 Agent 的消息内容。Agent 会根据这条消息以及自身的提示词、知识库等生成回复,再推送给用户。
支持使用 {{变量}} 引用以下变量:
| 变量 | 说明 |
|---|---|
{{user.userId}} / {{user.aId}} |
用户 ID / 匿名用户 ID |
{{conversation.id}} / {{conversation.subject}} |
会话 ID / 会话主题 |
{{conversation.recentChatTime}} / {{conversation.messageCount}} |
会话最后对话时间 / 消息数 |
{{now}} |
当前时间戳(毫秒) |
{{event.variables.xxx}} |
事件触发时,Webhook 请求中 variables 里的字段 |
{{sys_agent_id}}、{{sys_conversation_id}}、{{sys_user_id}} 等 |
与对话中一致的系统变量 |
示例
- 定时播报:
请用简短友好的语气,为我总结今天的行业要闻。 - 沉默唤醒:
我已经几天没有来了,请主动问候我,并告诉我最近有什么新功能。 - 事件通知:
我的订单 {{event.variables.order_no}} 已发货,预计 {{event.variables.eta}} 送达,请告诉我物流信息并提醒我注意查收。
提示:触发消息是写给 Agent 看的"用户视角"提问,而不是直接展示给用户的文案。如果希望 Agent 尽量原样转述,可以在消息中明确要求,例如"请原样告诉用户:……"。
确认无误后点击 Create。
注意:每个 Agent 同时处于
WAITING/RUNNING状态的任务最多 10 个,超出后需先停止或等待已有任务完成。
任务状态
| 状态 | 说明 |
|---|---|
| WAITING | 等待中。定时任务创建后、尚未到首次执行时间 |
| RUNNING | 运行中。定时任务已开始按计划执行;事件 / 用户触发任务创建后即为此状态,等待 Webhook 或规则命中 |
| COMPLETED | 已完成。仅"单次(Once)"定时任务执行完毕后进入 |
| TERMINATED | 已停止。手动点击 Stop 后进入,不可恢复 |
| ERROR | 异常。任务连续 10 次执行全部失败(例如第三方集成失效)时自动熔断停止,可在任务详情中查看原因 |
查看任务与执行历史
点击列表中的 View 进入任务详情,包含两个 Tab:
- Configuration:任务配置的只读视图。事件触发任务可在此查看 Webhook URL 与鉴权信息。
- Execution History:每次执行的记录,含执行时间、目标数、成功 / 失败数与成功率。
点击某次执行可查看执行明细:各通道的成功 / 失败统计,以及逐条发送记录。失败原因说明:
| 失败原因 | 说明 | 处理建议 |
|---|---|---|
| NO_CONVERSATION | 用户在目标通道上没有会话,或会话创建时间不在目标会话范围内 | 检查目标会话范围与通道设置 |
| CHANNEL_CONFIG_INVALID | 通道集成被关闭、删除或配置失效 | 到 Integrations 检查对应集成 |
| CHANNEL_AUTH_FAILED | 通道鉴权失败(如 Telegram Token 失效) | 更新集成凭证 |
| RATE_LIMITED | 触达发送速率上限,重试后仍未获得配额 | 缩小目标范围或分批发送 |
| AGENT_FAILED | Agent 生成回复失败 | 检查 Agent 配置、模型与积分余额 |
| TIMEOUT | 通道下发超时(单条 60 秒) | 稍后重试,检查第三方平台状态 |
| NOT_IMPLEMENTED | 该通道暂不支持主动推送 | 更换目标通道 |
停止与删除
- Stop:处于
WAITING/RUNNING/ERROR状态的任务可随时停止,停止后转为TERMINATED,不可恢复。 - Delete:仅
COMPLETED/TERMINATED状态的任务可删除,删除时会同步清理执行历史与明细。
常见问题
Q:为什么任务执行成功,但用户看到的内容不是我填写的触发消息?
触发消息是"代替用户发给 Agent 的提问",用户看到的是 Agent 针对这句话生成的回复。如需精确控制文案,请在触发消息中明确要求 Agent 原样输出。
Q:新用户会收到任务消息吗?
不会。任务只会向已有会话记录的用户发送,且会话创建时间需落在"目标会话范围"内。
Q:定时任务为什么没有在整点准时发送?
调度器每分钟扫描一次,且大批量发送会按项目级速率限制分批推送,因此实际到达时间可能略有延后。
Q:Webhook 返回权限错误(Permission deny)?
请依次检查:Webhook URL 是否正确、鉴权凭证是否匹配、任务是否已被停止、请求中的 target.channel 是否属于任务配置的目标通道。
