{"_id":"@1table/sms-client","name":"@1table/sms-client","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@1table/sms-client","version":"1.0.0","description":"HTTP 客户端 SDK，用于调用短信微服务（发送模板短信、批量发送、按网关发送）","main":"index.js","types":"index.d.ts","keywords":["sms","1table","microservice","client","sdk"],"author":"","license":"MIT","dependencies":{"axios":"^1.6.0"},"engines":{"node":">=14"},"scripts":{"example":"node example.js"},"_id":"@1table/sms-client@1.0.0","gitHead":"e80aed1c3ae844bb9f5ab0d15fbec0513ec51c06","_nodeVersion":"22.13.0","_npmVersion":"11.4.2","dist":{"integrity":"sha512-RAcGdAl937UfRol0q6A5Beg31WClfaAgXmIwdHc/0lPxWc+yO/aHhibSgKwxMLCxxavhl0whrQFl/jg1PWw6bQ==","shasum":"473b7c04e14a083bbf1cdef5ae40359762f624b6","tarball":"https://registry.npmjs.org/@1table/sms-client/-/sms-client-1.0.0.tgz","fileCount":5,"unpackedSize":11816,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHkg8wprLsc1y+kaCJ+RB1rWtMM/hpbLp3TMP2Q1Ils8AiBypdvBqqIT7zM7XK/2hSQkjiCCGApmuJ3wTqWfBB4uLg=="}]},"_npmUser":{"name":"pengaq","email":"50463888@qq.com"},"directories":{},"maintainers":[{"name":"pengaq","email":"50463888@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sms-client_1.0.0_1769866341716_0.9925715151327028"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-31T13:32:21.587Z","1.0.0":"2026-01-31T13:32:21.847Z","modified":"2026-01-31T13:32:22.111Z"},"maintainers":[{"name":"pengaq","email":"50463888@qq.com"}],"description":"HTTP 客户端 SDK，用于调用短信微服务（发送模板短信、批量发送、按网关发送）","keywords":["sms","1table","microservice","client","sdk"],"license":"MIT","readme":"# @1table/sms-client\n\n短信微服务的 HTTP 客户端 SDK，供其他项目集成调用已部署的短信服务，无需手写 HTTP 请求。\n\n## 快速示例（在 sdk 目录内运行）\n\n```bash\ncd sms-microservice/sdk\n# 确保微服务已启动（如 cd .. && npm start）\nnode example.js\n# 只测健康检查、不真实发短信：\nSMS_SKIP_SEND=1 node example.js\n# 指定微服务地址与租户：\nSMS_SERVICE_URL=http://localhost:8091 SMS_TENANT_ID=YQD node example.js\n```\n\n详见 [example.js](./example.js)。\n\n---\n\n## 安装\n\n在需要调用短信服务的项目中：\n\n```bash\nnpm install @1table/sms-client\n# 或从本地/私有源安装\nnpm install file:../sms-microservice/sdk\n```\n\n## 配置\n\n| 选项 | 必填 | 说明 |\n|------|------|------|\n| `baseUrl` | 是 | 短信微服务根地址，如 `http://localhost:8091` |\n| `tenantId` | 是 | 租户 ID，对应请求头 `X-Tenant-ID` |\n| `apiKey` | 否 | 可选，当前服务不参与鉴权，保留用于兼容 |\n| `timeout` | 否 | 请求超时毫秒数，默认 10000 |\n\n## 使用示例\n\n### 发送模板短信（单条）\n\n```javascript\nconst { SmsClient } = require('@1table/sms-client');\n\nconst client = new SmsClient({\n  baseUrl: process.env.SMS_SERVICE_URL || 'http://localhost:8091',\n  tenantId: process.env.SMS_TENANT_ID || 'YQD',\n});\n\n// 使用模板 key（在微服务租户里配置的 key，如 REGISTER）\nconst res = await client.sendTemplate('13800138000', 'REGISTER', { code: '123456' });\nconsole.log(res.data?.requestId);\n\n// 或直接使用阿里云模板 code\nawait client.sendTemplate('13800138000', 'SMS_123456789', { code: '123456' });\n```\n\n### 批量发送\n\n```javascript\nconst res = await client.sendBatch(\n  ['13800138000', '13900139000'],\n  'REGISTER',\n  { code: '123456' }\n);\nconsole.log(res.data?.success, res.data?.failed, res.data?.details);\n```\n\n### 按网关发送（不依赖租户模板）\n\n适用于 Btom 等无模板网关，或临时指定网关配置：\n\n```javascript\nawait client.sendByGateway('13800138000', {\n  content: '您的验证码是 123456，5 分钟内有效。',\n  gatewayType: 'btom',\n});\n```\n\n### 健康检查\n\n```javascript\nconst ok = await client.health();\nconsole.log(ok.status);\n```\n\n## 错误处理\n\nSDK 使用 axios，请求失败（4xx/5xx 或网络错误）会抛出异常，建议业务侧 try/catch 并处理 `error.response?.status` 与 `error.response?.data`。\n\n```javascript\ntry {\n  await client.sendTemplate(mobile, 'LOGIN', { code });\n} catch (err) {\n  if (err.response?.status === 401) {\n    // 缺少或无效的 X-Tenant-ID\n  }\n  if (err.response?.data?.error) {\n    console.error(err.response.data.error);\n  }\n  throw err;\n}\n```\n\n## 发布为 npm 包（可选）\n\n- 若使用私有 npm 或公司 registry：在 `sdk/` 下执行 `npm publish --access restricted`（或 `public`）。\n- 若仅内网使用：可在业务项目中通过 `package.json` 的 `dependency` 引用本地路径，例如：`\"@1table/sms-client\": \"file:../sms-microservice/sdk\"`。\n\n## 相关文档\n\n- 微服务 [API 说明](../docs/SMS_API_REFERENCE.md)\n- [集成指南](../INTEGRATION_GUIDE.md)（迁移到微服务 + 使用方式）\n","readmeFilename":"README.md","_rev":"1-80a9c6bf2341b89afb6d15af9ab09cfe"}