回电核验:就一笔暂停的付款给投资人发短信、打电话,并拿回一份带签名的答复

你的付款系统暂停了一笔可疑付款。Omni Octo 给投资人发短信,打电话问对方是否提出过这笔申请,再把一份格式固定、带签名的结果发回你的系统。只要不是明确的肯定回答,接下来怎么处理仍由人来决定。只需对 Octo 说一条消息就能建成。

更新于

一家虚构的共同基金公司暂停了一笔 $20,000 的赎回。Octo 在一次对话里建好 AI 智能体、对话洞察和工作流,智能体给投资人发短信并打电话,一份格式固定、带签名的结果随后发回。

Saltmarsh Funds 是一家虚构的共同基金公司。一笔 $20,000 的赎回刚刚进来,收款的银行账户是六天前才更改的。Saltmarsh 的规定是:这样的付款要先暂停,直到有人按档案里的电话号码给投资人打过电话。

今天,这通电话只是排队等着的一张工单。本指南替换的是等待,而不是团队:Omni Octo 先给投资人发一条提醒短信,再打电话,只问一个问题,然后把答案以格式固定的内容发回付款系统,付款系统可以直接据此处理。决定权仍在付款系统手里,只要不是明确的肯定回答,就交给人。

你只需要对 Octo 描述就能建成:这一部分不用拖拽,也不需要技术能力。这样的搭建通常要花好几天,Octo 大约十分钟。把你自己的付款系统接上去、做测试通话,还要再花大约一个小时,而这一部分需要有权修改你系统的人。

最终得到什么

一个工作流,四个步骤:

步骤发生什么
Webhook 接收你的付款系统发来案件:投资人、金额、基金、电话号码
短信投资人从你的号码收到一条提醒,带有金额和一个参考编号
打电话并等待你的 AI 智能体给对方打电话。工作流会等到通话结束并完成分析
发出带签名的结果一条带签名的消息发回你的系统,里面是格式固定的内容

Omni Octo 从不转移资金。它没有连接你的支付渠道。它发回的只是一个答复。

开始之前:你需要准备什么

  • 一个既能发短信又能打电话的号码。 通常选免费电话(toll-free)号码。参见如何获得企业短信号码。短信发出之前,这个号码必须在 /phone-numbers 下显示已获准发送。
  • 一个接收结果的地方。 即你的付款系统或运营系统上的一个地址,能接收 POST 并校验签名。
  • 一个双方共用的签名密钥。 Octo 不能保管密钥,所以由你在下一步自己保存。

第 1 步:保存签名密钥

进入集成 → 添加集成,选择 Webhook 签名密钥。起一个你认得出的名字,例如 Saltmarsh payments system。粘贴密钥,在发送方如何使用它下选择给每个 Webhook 签名(HMAC),然后点击保存。

在这个工作流里,同一个集成承担两项工作:校验进来的案件,并给发出去的结果签名。

你不需要手动添加系统的地址。下一步里,Octo 会在一张由你批准的卡片上提出这个地址。

第 2 步:请 Octo 来建

和 Octo 开一个新对话,描述这项工作。下面第一段就是请求本身。其余的详细说明是为了让 Octo 不必猜你的数据项名称:

为 Saltmarsh Funds(一家共同基金公司)建一条回电核验专线。当我们的付款系统把案件发给你时,先给投资人发一条提醒短信,然后打电话。先按姓名确认对方是投资人本人,把申请内容读一遍,问对方是否提出过这笔申请。如果是,今天付款;如果不是、不确定,或想找人工,就暂停付款,并告知反欺诈专员会在一小时内回电。然后把结果发回我们的付款系统。

详细说明

  1. 一个工作流。 触发器:一个 webhook,用集成“Saltmarsh payments system”校验 X-Signature-256。案件的格式如下: {"case_id":"SF-20931","investor_name":"Jordan Lee","fund":"Saltmarsh Growth Fund","amount":"$20,000","bank_last4":"7731","bank_changed_on":"October 27","phone":"+1…"}
  2. 先发短信,再打电话,用我们的免费电话号码。短信:“Saltmarsh Funds:我们现在用这个号码给你打电话,关于一笔 {amount} 的赎回申请,编号 {case_id}。我们绝不会向你索要密码。”等通话结束(上限 10 分钟),并在通话中带上案件编号。即使案件编号相同,每个案件也必须打一通新电话。两个步骤都开启免打扰时段。
  3. 智能体: 开场问候保持中性,不带任何姓名。第一个问题:“请问是 {investor_name} 吗?”如果不是,道歉,不透露任何信息,结束通话。如果是,读出金额、基金、银行账户尾号,以及银行信息被更改的日期,然后问“请问这笔申请是您本人提出的吗?”告知参考编号,道别,并由你自己结束通话。绝不索要密码、账号或社会安全号码。不提供理财建议。
  4. 对话洞察加在智能体上,只包含这几项:case_id(文本)、outcome(released 或 held)、request_recognized(yes、no 或 unsure)、hold_reason(none、not_recognized、wants_specialist 或 no_answer)、summary。
  5. 通话之后,在同一个工作流里: 向 https://payments.saltmarsh.example/hooks/octo 发一个带签名的 POST,包含这些内容和通话状态。如果电话没有接通或被跳过,就发送 outcome: "held" 和 hold_reason: "no_answer"。
  6. 在集成上批准这个地址,验证,让工作流保持未启用,并把它的 webhook 地址给我。

Octo 会根据这一条消息建好智能体、对话洞察和工作流。它可能会问你时区,或者问通话时段以外的电话该怎么处理。

Octo 在创建、批准或开启任何东西之前,都会先停下来问你。 请逐张读完卡片并确认,包括批准地址卡片。这张卡片是工作流被允许向你的系统发送内容的唯一途径。

Saltmarsh 核验专线的智能体页面,系统提示词展开着,露出写明绝不索要密码的几行。
Octo 建好的智能体,以及它遵循的话术。每一行你都能阅读和编辑。

第 3 步:让你的系统指向它

Octo 会把 webhook 地址给你。你也可以在工作流的概览标签页里,在 Webhook 端点卡片上找到它,旁边有复制按钮和一个状态:

  • 就绪:已上线,签名密钥已保存
  • 未启用:还没有开启,所以你的系统发来的消息会被拒绝
  • 设置未完成:还缺少某些东西

把你的付款系统配置好,让它把每个暂停的案件用 POST 发到这个地址,并用第 1 步的密钥签名。然后对 Octo 说“启用它”。

第 4 步:用你自己的手机测试

发一个带上你自己号码的测试案件,接听电话,并把投资人可能给出的每一种回答都试一遍:

你说智能体应该说你的系统应该收到
“是的,是我本人提出的”今天会付款,并告知参考编号released、yes、none
“不,我没有提出这笔申请”已暂停,反欺诈专员会在一小时内回电held、no、not_recognized
“我能和真人说话吗?”同样的暂停说明held、wants_specialist
让电话转入语音信箱不提案件的任何内容held、no_answer

结果会在通话结束、分析完成后几秒钟到达。

要在通话时段以外测试?不要关闭免打扰时段。请 Octo 对你自己的号码把工作流运行一次。那一次运行只能给你打电话,设置也保持原样。那次运行里短信仍然会被跳过,所以请在通话时段内测试短信。

如果哪里看起来不对,请 Octo 给你看最近一次运行并解释。各个步骤及其结果,也在工作流的运行记录里。

Callback verification 工作流的概览标签页:webhook 地址,然后是四个方框:webhook 接收、发送短信、拨打电话、发送带签名的 webhook。
一个工作流。打电话这一步会等到通话结束并完成分析,所以带签名的 webhook 带着答复。

本指南和视频里的控制台

我们做了一个小型运营控制台,用来展示从付款团队的座位上看是什么样子。它代替的是你自己的系统:Saltmarsh Funds 是虚构的,案件和人物也都是虚构的。你自己的界面可以是任何能发送 POST 并校验签名的东西。

虚构的 Saltmarsh Funds 付款界面:一个付款异常队列,案件 SF-20931 已暂停,要求回电的规定,以及一个“电话核验”按钮。
通话之前的案件。操作员点击“电话核验”,也可以由你的系统在标记出一笔付款的那一刻自动启动工作流。

点击这个按钮,只是把案件发到工作流的 webhook 地址。你的付款系统可以在标记出付款后自己发送同样的案件,不需要任何人点击。

案件会带着下面三种结果之一回来。这三种情况下,控制台都是先校验签名,再读取任何内容。

投资人没有提出这笔申请。 付款继续暂停,案件交给反欺诈团队。

案件 SF-20931 标记为“暂停 · 反欺诈审核”,各项内容为 outcome held、request_recognized no、hold_reason not_recognized,以及“签名已验证”。
否:暂停,附带原因,以及给反欺诈专员看的一行摘要。

投资人确认了。 你的系统可以放行这笔付款。

案件 SF-20931 标记为“已放行”,各项内容为 outcome released、request_recognized yes、hold_reason none,以及“签名已验证”。
是:已放行,说实话的人不会被耽误。

没有人接听。 转入语音信箱算作无人接听,所以钱留在原处。

案件 SF-20931 标记为“暂停 · 无人接听”,各项内容为 outcome held、hold_reason no_answer,以及“签名已验证”。
无人接听:暂停,原因是 no_answer。留言里没有透露案件的任何内容。

发回来的是什么

结果不是通话记录。它是你命名的那几项内容,加上签名:

{
  "case_id": "SF-20931",
  "outcome": "held",
  "request_recognized": "no",
  "hold_reason": "not_recognized",
  "summary": "投资人没有提出这笔申请,也没有更改银行账户。已告知反欺诈专员会在一小时内回电。",
  "status": "completed"
}

先校验签名,再读取其他任何内容。然后,除了 outcome: "released",其他一律按暂停处理,包括缺少内容的情况,以及结果根本没有到达的情况。运行失败的工作流应当让钱留在原处。

编辑器中的 Callback result 对话洞察,显示 case_id 和 outcome 两项,以及 outcome 允许的取值 released 和 held。
Octo 设置好的对话洞察。你可以在这里编辑这几项,也可以请 Octo 来改。

这几项内容就是对话洞察,所以在通话本身上也能看到。在会话里打开这通电话,就能在完整的通话记录旁边找到对话洞察。你的反欺诈专员回电之前,读的就是它。

会话中的这通电话:完整的通话记录,旁边是带有五项内容的对话洞察卡片。
完整的对话,加上同样的五项内容,供回电的专员阅读。

让人始终参与其中

有三个环节会有人参与:

  • 上线之前。 没有经过某个人确认的卡片,Octo 不会建任何东西,也不会开启任何东西。
  • 每一通不是明确肯定回答的电话之后。 你的系统把暂停的案件转给反欺诈团队。投资人已被告知专员会回电,所以必须有人来打这通电话。
  • 放行之前(如果你希望)。 请 Octo 在通话之后加一个审批步骤。工作流会在这里等待,指定的审批人在工作流的运行页面上回答批准或拒绝。金额较大时,多花这一分钟是值得的。

你也可以通过描述变更来修改工作流。例如:“赎回被暂停时,同时给反欺诈小组发一封邮件,写明案件编号、原因和摘要。”

它做不到什么

  • 它不是身份验证。 智能体只会问对方是不是案件上写的那个人,并相信对方的回答。让它成为回电的,是你打的是档案里的号码,所以不要拨打随申请一起送来的号码。
  • 答复在通话之后到达,而不是通话期间。 通话结束并完成分析之前,你的系统什么都收不到。
  • 通话时段仍然适用。 默认情况下,两个步骤都遵守通话时段:投资人所在国家每个时区的上午 9 点到晚上 8 点,对美国和加拿大来说,冬季相当于太平洋时间上午 9 点到下午 4 点。在这个时段以外,该步骤会被跳过而不是延后,所以案件会以 no_answer 回来。
  • 转入语音信箱算作无人接听, 并以 no_answer 回来。智能体不应该在留言里留下案件详情。
  • 这些内容是 AI 对一次对话的解读。 通常是对的,也可能出错。这就是为什么不是明确肯定回答的一律暂停,也是审批步骤存在的原因。
  • 智能体的话术只是一条指令。 “绝不索要密码”是你告诉智能体、并在自己的通话中测试的内容,而不是技术上的限制。
  • 对短信的回复,会交给接听该号码的那个智能体。 上线之前请确认这一点。请 Octo 把回复转给核验智能体或某个人,否则投资人的一句“真的是你们吗?”可能会落到你的通用客服智能体手里。