Skip to main content
函数工具允许您的 AI 智能体在通话期间调用外部 API。您可以使用它们查询客户数据、检查可用性、预约,或执行您的后端支持的任何操作。

工作原理

  1. 使用架构定义工具(工具接受哪些参数)
  2. 提供 endpoint 配置(ThunderPhone 在哪里调用您的 API)——或者省略该配置,以便通过您的组织 webhook 接收工具调用
  3. 通话期间,AI 会根据对话决定何时使用工具
  4. ThunderPhone 使用工具参数调用您的端点
  5. 您的 API 响应会反馈给 AI,以继续对话
函数工具支持自带 API。ThunderPhone 还提供无需端点的 平台托管工具: 应用连接(HubSpot、Salesforce、Slack、 Google Calendar、Google Sheets、Cal.com)、 API 连接MCP 服务器

工具架构

每个工具都遵循以下结构:

函数定义

端点配置

endpoint 配置不会发送给 AI 模型——它仅供 ThunderPhone 用于执行工具调用。

两种调用路径

您的服务器收到哪种请求取决于工具是否具有 endpoint 两种路径都是阻塞式的——AI 会在句子说到一半时等待 结果——超时时间为 20 秒。请确保处理程序快速响应。可以混合使用: 对于组织具有 webhook URL 的通话,具有 endpoint 的工具会 被直接调用,其余工具则回退到 webhook。

直接端点调用

当 AI 调用具有 endpoint 的工具时,ThunderPhone 会向您的 URL 发送请求:

请求头

会始终原样包含来自您的 endpoint.headers 的自定义请求头,以及两个带有 ThunderPhone 命名空间的请求头:
  • X-ThunderPhone-Signature —— 使用您的组织 webhook 密钥作为密钥,对精确的请求正文 字节进行 HMAC-SHA256 计算所得的签名
  • X-ThunderPhone-Call-ID —— 当前通话 ID
除非您的 endpoint.headers 覆盖它,否则会设置 Content-Type: application/json ——自定义 Content-Type 优先。
该签名使用来自 GET /v1/webhook 的组织级 webhook 密钥作为密钥。 如果您的组织从未配置过旧版 webhook,则不存在密钥,工具调用将携带 X-ThunderPhone-Call-ID ——对缺少签名直接失败的处理程序会拒绝这些调用。 您可以配置旧版 webhook 以获取密钥,或者将您自己的共享密钥放入 endpoint.headers

请求正文

对于 POST / PUT / PATCH,正文仅包含工具参数(无包装对象),并以规范方式序列化(键排序、紧凑分隔符):
对于 GET / DELETE,参数会作为查询参数发送, 正文为空——此时会基于空字节字符串计算签名。请参阅 验证 webhook 签名

响应

返回包含工具结果的 JSON 响应:
响应会被格式化并提供给 AI 以继续对话。非 JSON 响应会包装为 {"data": "<text>"}; 超时和连接失败会作为错误报告给 AI,因此智能体可以致歉并继续,而不会停滞。

Webhook 模式分发

不带 endpoint 的工具会作为已签名的 telephony.tool(电话通话)或 web.tool (网页通话)请求,分发到您组织的旧版 webhook URL。与执行后发送到 webhook 端点的 审计通知不同,此请求就是执行本身——您的 HTTP 响应即为工具结果。
web.tool 使用 origin_domain 替代 from_number / to_number。请以 JSON 形式返回工具结果——响应约定与直接端点调用相同。与其他所有 webhook 一样,请求会使用组织 webhook 密钥对原始正文进行签名。
已订阅的 webhook 端点还会在每个工具执行额外收到一条非阻塞的 telephony.tool / web.tool 通知(无论通过哪种路径执行),其中包含工具的响应——适用于审计跟踪。请参阅 事件目录

签名验证

直接工具调用的签名方式与 webhook 相同:
  • 对精确的请求正文字节计算 HMAC-SHA256(规范化 JSON —— 键已排序,无额外空白字符)
  • 使用您组织的 webhook 密钥作为密钥
  • GET / DELETE 工具对空字节字符串签名
完整示例——包括空正文情况和未设置密钥时的注意事项——请参阅验证 webhook 签名

示例:完整预约流程

以下是一组用于完整预约系统的工具:

最佳实践

description 字段可帮助 AI 理解何时使用该工具。请具体说明其功能及适用场景。
返回 AI 能够理解的错误消息:{"error": "No slots available for that date"},而非通用的 500 错误。
仅返回 AI 继续对话所需的信息。大型负载会降低响应速度。
仅在确有必要时才将字段标记为 required。AI 会在调用工具前向用户询问必填信息。

相关内容

应用连接

由平台管理的 HubSpot、Salesforce、Slack、Google Calendar、Google Sheets 和 Cal.com 工具,无需端点。

MCP 服务器

连接 MCP 服务器,让智能体调用其工具。

API 连接

可附加到智能体的可复用 REST 集成。

验证 Webhook 签名

用于 Webhook 和工具调用的验证辅助工具。