SuperAPI AI 工具集

quo-webhooks

通用与其它

查看项目

更新于 10-15 22:14

技能介绍

用途:接收并验证 Quo(quo.com,原 OpenPhone)业务电话/VoIP 平台发送的 Webhook,事件涵盖通话、消息、联系人和任务。API 主机为 https://api.quo.com。注意与 Quoter(CPQ 报价公司)、Quora、Twilio 无关。

主要能力:区分并实现两代签名方案。方案 A(当前,Quo-Api-Version: 2026-03-30)使用 webhook-id、webhook-timestamp、webhook-signature 头,签名内容为 {webhook-id}.{webhook-timestamp}.{raw-body},时间戳为 UNIX 秒,密钥为 whsec_<base64>。方案 B(旧版 /v1/webhooks/...)使用单个 openphone-signature 头,格式 hmac;1;<毫秒时间戳>;<base64签名>,签名内容为 {timestamp}.{raw-body},密钥为裸 base64。两者均为 HMAC-SHA256、标准 base64 摘要,且都对原始未解析请求体签名。

使用方式:先验证再解析、异步处理,10 秒内返回 2xx。示例提供 Express、Next.js、FastAPI 处理器。可用 npx hookdeck-cli listen 3000 quo --path /webhooks/quo 做本地调试。创建订阅示例:curl -X POST https://api.quo.com/webhooks,带 Authorization、Quo-Api-Version 头与 url、events、resourceIds 字段;201 响应中 data.key 为签名密钥,需立即保存,可用 POST /webhooks/{webhookId}/rotate 轮换。

适用场景:处理 message.received、call.completed、call.summary.completed 等事件,按 apiVersion 或 data.resource/data.object 分支兼容两代信封。

限制:Quo 无官方 SDK,方案 B 无法用 Svix 验证;无握手/挑战请求,也无来源 IP 白名单;不保证顺序,重试 8 次约 27 小时 35 分;需按 webhook-id 去重并保存 28 小时以上;unavailable 表示未知而非空。部分事件(如 integration.*)无公开载荷说明。