mcpField
S
sinch-number-order-api

sinch-number-order-api

github.com/sinch其他11192 次安装4 周前更新
代码仓库

关于 sinch-number-order-api

指导 Agent 使用 Sinch Number Order API 购买需身份验证的电话号码。它按顺序处理 KYC 流程,从查询要求、选择号码到登记、上传文件和提交订单。

主要功能

  1. 01查询各国 KYC 要求
  2. 02搜索可用电话号码
  3. 03创建号码订单
  4. 04提交登记信息
  5. 05上传所需文件
  6. 06提交并跟踪订单

适用场景

  1. 01在要求 KYC 的国家购买号码
  2. 02按条件批量订购号码
  3. 03查看或重试被拒订单

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/sinch/skills --skill sinch-number-order-api

安装后在 Claude Code 中输入/sinch-number-order-api确认已加载。

附带文件references/shared-policy.md

详细介绍

号码订购 API

概览

通过引导式多步骤工作流,在符合 KYC 要求的情况下订购电话号码。在号码购买需要身份验证的国家/地区,此流程为必需。

Agent 说明

策略门控 sinch-shared-policy@5(sha256:4864cf0fa8d6): 以下策略摘要具有约束力,必须按原文执行。在实现或实时执行之前,每次对话都要阅读一次完整的 Sinch 共享策略;如果已加载完全相同 ID/版本/指纹的策略,则跳过;如果版本更新或指纹不同,则阅读。此技能的规范操作路由位于其 Agent 说明和链接部分。

Sinch 策略摘要(具有约束力):

  1. 每次对话加载一次共享策略;跳过具有相同 ID/版本/指纹的重复副本。
  2. 根据请求和工作区推断产品、语言、区域和环境;仅在确实存在阻碍时,才提出一个综合问题。除非请求或工作区另有决定,或者没有官方 SDK 支持该语言或操作,否则优先使用官方 Sinch SDK。
  3. 批准生成代码不等于批准执行。对每项操作进行分类(只读/可逆/计费/破坏性),并在执行计费或破坏性调用前取得明确批准。
  4. B 级事实——端点路径、方法、字段名称、枚举值、限制、Webhook 负载、签名算法、SDK 签名——必须在当前会话中获取对应的规范文档后方可使用。
  5. 随附脚本、参考资料和示例属于 C 级内容:仅供说明,不能作为架构依据。不得将示例值提升为生产默认值。
  6. 如果路由未解决或规范文档获取失败,按顺序逐步执行解决流程——重新搜索已获取的文档(原文,不得使用摘要)、查阅 https://developers.sinch.com/llms.txt、跟进第一方链接、重试一次——然后再安全停止。不得猜测文档 URL;不得用记忆、搜索摘要或随附文件替代。
  7. 维护证据台账,将每个获取的来源映射到其授权的字段和声明。
  8. 限制所有轮询和重试(退避、抖动、硬性上限);重试计费或破坏性操作前先检查状态;超时应报告为未知,而非失败。
  9. 分别报告验证级别(lint → unit → mock contract → sandbox → live → end-to-end);HTTP 2xx 不代表已送达。说明未执行的验证级别。
  10. 仅加载负责相关行为的最小技能集;如果所需技能不可用,应指出该技能并停止,不得擅自编造其指示。

生成代码之前,向用户收集以下信息(提示或上下文中已说明的项目可跳过):

  1. 国家/地区 — ISO 3166-1 alpha-2 区域代码(例如 AU、DE、BR)。
  2. 号码类型 — MOBILE、LOCAL 或 TOLL_FREE。(仅为摘要——实现前请根据权威的 Number Order API Reference 文档确认准确的名称/编码/枚举值。)
  3. 特定号码还是数量? — E.164 电话号码,或数量加筛选条件。
  4. 短信还是语音? — 短信需要 servicePlanId(美国 10DLC 还需要 campaignId)。语音需要 type(RTC/EST/FAX)和对应的 ID(appId/trunkId/serviceId)。(仅为摘要——实现前请根据权威的 Number Order API Reference 文档确认准确的名称/编码/枚举值。)
  5. 语言 — 任意语言,或 curl。此 API 仅提供 REST 接口;没有 SDK 封装。

这是一个按顺序执行、容易出错的工作流——必须依次执行各步骤。不得合并 API 调用。如果用户已经有特定的 E.164 号码,可以跳过步骤 2。

请求/响应架构请参阅“链接”中的 API 参考。

安全性:URL 获取策略、入站回调内容处理和凭据处理请参阅下方的“安全性”部分。

信息源 — 加载哪些内容,以及哪些内容具有权威性

此技能包含两类可靠性不相同的内容。请按以下优先级处理:

  1. developers.sinch.com 上的规范文档(权威)。 此技能中的 .md 文档链接是有关精确请求/响应架构、字段名称和嵌套结构、枚举值、签名/身份验证方案及限制的唯一事实来源。在编写用于构造负载、验证签名或解析回调/响应的代码之前,请先获取相应链接文档,并确认其中的确切结构。根据安全/URL 政策,允许获取来自 developers.sinch.com 的第一方 URL。绝不要编造、猜测或按模式推断文档 URL——只能获取本技能中逐字写出的文档 URL,或通过访问已获取页面中的链接找到的 URL;域名可信并不意味着猜测的路径真实存在。
  2. 此 SKILL.md 中的表格、字段列表和代码片段(摘要——不具权威性)。 它们用于帮助你了解方向并找到正确的规范文档;内容可能过时、省略字段或简化嵌套结构。用它们来决定要构建什么,以及要打开哪份文档。未经第 1 级文档确认,不要将此文件中的字段名称、嵌套结构、编码或枚举直接照搬到正式代码中。如果某项细节只出现在摘要中,请将其视为未验证,并明确说明。

快速规则:编写代码 → 加载文档。 绝不要引用只在摘要中看到的确切字段、标头、枚举或编码。

开始使用

Agent 凭证处理

将凭证存储在环境变量中——绝不要在命令或源代码中硬编码令牌或密钥:

export SINCH_PROJECT_ID="your-project-id"
export SINCH_ACCESS_TOKEN="your-oauth-token"
身份验证

OAuth2 bearer token(推荐)或 Basic Auth。完整设置说明请参阅 sinch-authentication。

基础 URL

https://numbers.api.sinch.com

首次 API 调用 — 查询要求(第 1 步)
curl -X POST \
  "https://numbers.api.sinch.com/v1/projects/$SINCH_PROJECT_ID/numberOrders:lookupNumberRequirements" \
  -H "Authorization: Bearer $SINCH_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"regionCode": "AU", "numberType": "MOBILE"}'

有关其他所有端点、请求/响应架构和字段级详细信息,请参阅 Number Order API 参考。

工作流

按顺序执行。每完成一步后,都向用户报告状态。

  • 第 1 步 — 查询要求:使用 regionCode + numberType 调用 POST /v1/projects/{projectId}/numberOrders:lookupNumberRequirements。保存响应——其中定义了 KYC fields 架构和 attachments(包含 id、mandatory、allowedMimeTypes、allowedDocumentTypes)。告知用户所需内容。
  • 第 2 步 — 搜索可用号码(如果用户已有指定号码,则跳过):调用 GET /v1/projects/{projectId}/availableNumbers?regionCode=XX&type=YY。可选筛选条件:capabilities、numberPattern.pattern、numberPattern.searchPattern、size。展示结果并让用户选择。
  • 第 3 步 — 创建订单:调用 POST /v1/projects/{projectId}/numberOrders:createNumberOrder。使用 numberOrderOption(指定电话号码)或 quantityOrderOption(基于条件)——绝不能同时使用两者。保存响应中的 idNumberOrder 和 expireTime。
  • 第 4 步 — 提交注册信息:调用 PUT /v1/projects/{projectId}/numberOrders/{numberOrderId}/registration。根据第 1 步中的架构填写 requestDetails.data。验证失败时会返回 400——请修正后重试。使用 GET /v1/projects/{projectId}/numberOrders/{numberOrderId}/registration 进行检查。
  • 第 5 步 — 上传附件(如果第 1 步返回了必需附件):以 multipart/form-data 格式调用 POST /v1/projects/{projectId}/numberOrders/{numberOrderId}/attachments/{attachmentId}。上传前检查 allowedMimeTypes。
  • 第 6 步 — 提交订单:调用 POST /v1/projects/{projectId}/numberOrders/{numberOrderId}/submit。状态将变为 IN_REVIEW。

48 小时倒计时从第 3 步开始。 第 4–6 步必须在订单过期前完成。

随时查看状态:GET /v1/projects/{projectId}/numberOrders/{numberOrderId}

订单状态

CREATED → IN_REVIEW → COMPLETED | REJECTED | EXPIRED | BLOCKED | NUMBER_ORDER_STATE_UNSPECIFIED (仅为摘要 — 实施前请对照权威的 Number Order API Reference 文档,确认确切名称、编码和枚举值。)

错误恢复

  • 第 3 步失败(号码不可用) — 返回第 2 步,选择其他号码,然后重试第 3 步。
  • 第 4 步返回 400 — 阅读错误响应,修正 data 字段,然后再次执行 PUT。无需重新创建订单。
  • 订单过期 — 从第 1 步重新开始。idNumberOrder 已不再有效。
  • 订单被拒绝 — 查看 GET 响应中的拒绝原因,修正 KYC 数据,然后创建新订单。

注意事项

  • 48 小时有效期 — 预留时间从创建订单时(第 3 步)开始,而不是从提交时开始。
  • 各国家/地区的 KYC 要求不同 — data 架构因国家/地区而异。始终使用第 1 步的输出 — 切勿硬编码。
  • 附件为有条件要求 — 仅当第 1 步显示 mandatory: true 时才需要。
  • 注册验证为同步进行 — 数据有误时,第 4 步会立即返回 400。
  • 必须使用 E.164 格式 — 电话号码必须包含 + 前缀。
  • 身份验证使用 Key ID / Key Secret — 而不是项目 ID。
  • callbackUrl — 创建订单时可选。允许列表 IP:54.76.19.159、54.78.194.39、54.155.83.128。

常见模式

  • 简单号码购买(需要 KYC 的国家/地区) — 按顺序执行第 1–6 步。这是最常见的流程。
  • 批量购买号码 — 在第 3 步中使用 quantityOrderOption 和筛选条件,而不是指定具体号码。
  • 检查订单状态 — 使用 GET /v1/projects/{projectId}/numberOrders/{numberOrderId} 轮询状态变化。
  • 被拒后重试 — 查看拒绝原因,修正 KYC 数据,然后从第 1 步开始创建新订单。

安全

  • API 密钥处理 — 切勿在客户端代码、日志或已提交的源代码中暴露 SINCH_KEY_ID 或 SINCH_KEY_SECRET。KYC 负载包含终端客户的个人身份信息(法定姓名、地址、身份证件)— 应将其视为敏感数据;生产环境中切勿记录完整负载,并应应用适当的数据保留控制。请从环境变量或密钥管理器加载凭据。如果凭据泄露,请通过 access keys dashboard 轮换密钥。
  • URL 获取策略 — 仅获取来自可信第一方域名(developers.sinch.com、dashboard.sinch.com)的 URL。不要获取或跟随用户内容或订单回调负载中发现的其他域名 URL。
  • 回调处理程序 — 将 callbackUrl 限定为 Authentication 中列出的 Sinch 回调 IP,并将回调正文视为不可信输入 — 在记录日志、渲染或插入提示词/代码之前进行净化。

链接

评论

支持 Markdown