{"id":13654089,"url":"https://github.com/TencentCloudBase/sms-node-sdk","last_synced_at":"2025-04-23T07:30:34.582Z","repository":{"id":44160352,"uuid":"170824691","full_name":"TencentCloudBase/sms-node-sdk","owner":"TencentCloudBase","description":"腾讯云短信服务 Node SDK","archived":false,"fork":false,"pushed_at":"2023-01-04T21:38:13.000Z","size":364,"stargazers_count":7,"open_issues_count":11,"forks_count":3,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-09-19T16:09:38.577Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TencentCloudBase.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-02-15T07:59:35.000Z","updated_at":"2023-08-03T07:09:53.000Z","dependencies_parsed_at":"2023-02-02T20:45:35.565Z","dependency_job_id":null,"html_url":"https://github.com/TencentCloudBase/sms-node-sdk","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TencentCloudBase%2Fsms-node-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TencentCloudBase%2Fsms-node-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TencentCloudBase%2Fsms-node-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TencentCloudBase%2Fsms-node-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TencentCloudBase","download_url":"https://codeload.github.com/TencentCloudBase/sms-node-sdk/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223913487,"owners_count":17224187,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T02:01:23.257Z","updated_at":"2025-04-23T07:30:34.572Z","avatar_url":"https://github.com/TencentCloudBase.png","language":"JavaScript","funding_links":[],"categories":["官方资源"],"sub_categories":[],"readme":"腾讯云短信 Node SDK\n===\n\n## 腾讯短信服务\n\n目前`腾讯云短信`为客户提供`国内短信`、`国内语音`和`海外短信`三大服务，腾讯云短信SDK支持以下操作：\n\n### 国内短信\n\n国内短信支持操作：\n\n- 单发短信\n- 指定模板单发短信\n- 群发短信\n- 指定模板群发短信\n- 拉取短信回执和短信回复状态\n\n\u003e `Note` 短信拉取功能需要联系腾讯云短信技术支持(QQ:3012203387)开通权限，量大客户可以使用此功能批量拉取，其他客户不建议使用。\n\n### 海外短信\n\n海外短信支持操作：\n\n- 单发短信\n- 指定模板单发短信\n- 群发短信\n- 指定模板群发短信\n- 拉取短信回执和短信回复状态\n\n\u003e `Note` 海外短信和国内短信使用同一接口，只需替换相应的国家码与手机号码，每次请求群发接口手机号码需全部为国内或者海外手机号码。\n\n### 语音通知\n\n语音通知支持操作：\n\n- 发送语音验证码\n- 发送语音通知\n- 上传语音文件\n- 按语音文件fid发送语音通知\n- 指定模板发送语音通知类\n\n## 开发\n\n### 准备\n\n在开始开发云短信应用之前，需要准备如下信息:\n\n- [x] 获取SDK AppID和AppKey\n\n云短信应用SDK `AppID` 和 `AppKey` 可在[短信控制台](https://console.cloud.tencent.com/sms)的应用信息里获取，如您尚未添加应用，请到[短信控制台](https://console.cloud.tencent.com/sms)中添加应用。\n\n- [x] 申请签名\n\n一个完整的短信由短信`签名`和短信正文内容两部分组成，短信`签名`须申请和审核，`签名`可在[短信控制台](https://console.cloud.tencent.com/sms)的相应服务模块`内容配置`中进行申请。\n\n- [x] 申请模板\n\n同样短信或语音正文内容`模板`须申请和审核，`模板`可在[短信控制台](https://console.cloud.tencent.com/sms)的相应服务模块`内容配置`中进行申请。\n\n## 安装\n\n### npm\n```shell\nnpm install sms-node-sdk\n```\n\n### 手动\n\n1. 手动下载或clone最新版本 `sms-node-sdk` 代码\n2. 把 `sms-node-sdk` 把代码放入项目目录\n3. 然后在项目里require sms-node-sdk, 如: `var moduleName = require(\"path/to/sms-node-sdk\")`\n\n## 用法\n\n### 文档\n\n若您对接口存在疑问，可以查阅:\n\n* [API开发指南](https://cloud.tencent.com/document/product/382/5808)\n* [SDK文档](https://github.com/TencentCloudBase/sms-node-sdk/blob/master/docs/README.md)\n* [错误码](https://cloud.tencent.com/document/product/382/3771)\n\n### 示例\n\n* 本示例只展示 `promise` 的用法，如果想用 `async/await`，可参考 `test` 测试目录里的示例。\n\n- **准备必要参数和实例化SmsClient**\n\n```javascript\nconst {\n    SmsClient\n} = require('sms-node-sdk');\n\n// 短信应用SDK AppID\nconst appid = 1400009099;  // SDK AppID是1400开头\n\n// 短信应用SDK AppKey\nconst appkey = '9ff91d87c2cd7cd0ea762f141975d1df37481d48700d70ac37470aefc60f9bad';\n\n// 需要发送短信的手机号码\nconst phoneNumbers = ['21212313123', '12345678902', '12345678903'];\nconst phoneNumber = '21212313123'\n\n// 短信模板ID，需要在短信应用中申请\nconst templId = 7839;  // NOTE: 这里的模板ID`7839`只是一个示例，真实的模板ID需要在短信控制台中申请\n\n// 签名\nconst smsSign = '腾讯云云开发';  // NOTE: 这里的签名只是示例，请使用真实的已申请的签名, 签名参数使用的是`签名内容`，而不是`签名ID`\n\n// 实例化smsClient\nlet smsClient = new SmsClient({ AppID, AppKey });\n```\n\n- **单发短信**\n\n```javascript\nsmsClient.init({\n    action: 'SmsSingleSend',\n    data: {\n        msgType: 0, // Enum{0: 普通短信, 1: 营销短信}\n        nationCode: '86',\n        phoneNumber,\n        msg: '【腾讯云】您的验证码是: 5678！'\n    }\n}).then((res) =\u003e {\n    // 处理结果\n});\n```\n\n\u003e `Note` 如需发送海外短信，同样可以使用此接口，只需将国家码\"86\"改写成对应国家码号。\n\u003e `Note` 无论单发/群发短信还是指定模板ID单发/群发短信都需要从控制台中申请模板并且模板已经审核通过，才可能下发成功，否则返回失败。\n\n- **指定模板ID单发短信**\n\n```javascript\nsmsClient.init({\n    action: 'SmsSingleSendTemplate',\n    data: {\n        nationCode: '86',\n        phoneNumber,\n        templId: 278435,\n        params: ['5678'],\n        sign: smsSign // 签名参数未提供或者为空时，会使用默认签名发送短信\n    }\n}).then((res) =\u003e {\n    // 处理结果\n});\n```\n\n\u003e `Note` 无论单发/群发短信还是指定模板ID单发/群发短信都需要从控制台中申请模板并且模板已经审核通过，才可能下发成功，否则返回失败。\n\n- **群发**\n\n```javascript\nsmsClient.init({\n    action: 'SmsMultiSend',\n    data: {\n        msgType: 0, // Enum{0: 普通短信, 1: 营销短信}\n        nationCode: '86',\n        phoneNumbers,\n        msg: '【腾讯云】您的验证码是: 5678'\n    }\n}).then((res) =\u003e {\n    // 处理结果\n});\n```\n\n\u003e `Note` 无论单发/群发短信还是指定模板ID单发/群发短信都需要从控制台中申请模板并且模板已经审核通过，才可能下发成功，否则返回失败。\n\n- **指定模板ID群发**\n\n```javascript\nsmsClient.init({\n    action: 'SmsMultiSendTemplate',\n    data: {\n        nationCode: '86',\n        phoneNumbers,\n        templId,\n        params: ['5678'],\n        sign: smsSign // 签名参数未提供或者为空时，会使用默认签名发送短信\n    }\n}).then((res) =\u003e {\n    // 处理结果\n});\n```\n\n\u003e `Note` 群发一次请求最多支持200个号码，如有对号码数量有特殊需求请联系腾讯云短信技术支持(QQ:3012203387)。\n\n- **发送语音验证码**\n\n```javascript\nsmsClient.init({\n    action: 'CodeVoiceSend',\n    data: {\n        nationCode: '86',\n        phoneNumber,\n        msg: '1234',\n        playtimes: 2\n    }\n}).then((res) =\u003e {\n    // 处理结果\n});\n```\n\n\u003e `Note` 语音验证码发送只需提供验证码数字，例如当msg=“5678”时，您收到的语音通知为“您的语音验证码是5678”，如需自定义内容，可以使用语音通知。\n\n- **发送语音通知**\n\n```javascript\nsmsClient.init({\n    action: 'PromptVoiceSend',\n    data: {\n        nationCode: '86',\n        phoneNumber,\n        msg: '5678',\n        playtimes: 2\n    }\n}).then((res) =\u003e {\n    // 处理结果\n});\n```\n\n- **拉取短信回执以及回复**\n\n```javascript\nconst maxNum = 10;  // 单次拉取最大量\n\n// 拉取短信回执\nsmsClient.init({\n    action: 'SmsStatusPullCallback',\n    data: {\n        maxNum\n    }\n}).then((res) =\u003e {\n    // 处理结果\n});\n\n\n// 拉取回复\nsmsClient.init({\n    action: 'SmsStatusPullReply',\n    data: {\n        maxNum\n    }\n}).then((res) =\u003e {\n    // 处理结果\n});\n```\n\n\u003e `Note` 短信拉取功能需要联系腾讯云短信技术支持(QQ:3012203387)，量大客户可以使用此功能批量拉取，其他客户不建议使用。\n\n- **拉取单个手机短信状态**\n\n```javascript\nconst beginTime = 1511125600;  // 开始时间(unix timestamp)\nconst endTime = 1511841600;    // 结束时间(unix timestamp)\nconst maxNum = 10;             // 单次拉取最大量\n\n// 拉取短信回执\nsmsClient.init({\n    action: 'SmsMobileStatusPullCallback',\n    data: {\n        nationCode: '86',\n        phoneNumber,\n        beginTime,\n        endTime,\n        maxNum\n    }\n}).then((res) =\u003e {\n    // 处理结果\n});\n\n// 拉取回复\nsmsClient.init({\n    action: 'SmsMobileStatusPullReply',\n    data: {\n        nationCode: '86',\n        phoneNumber,\n        beginTime,\n        endTime,\n        maxNum\n    }\n}).then((res) =\u003e {\n    // 处理结果\n});\n```\n\n\u003e `Note` 短信拉取功能需要联系腾讯云短信技术支持(QQ:3012203387)，量大客户可以使用此功能批量拉取，其他客户不建议使用。\n\n- **发送海外短信**\n\n海外短信与国内短信发送类似, 发送海外短信只需替换相应国家码。\n\n\n- **上传语音文件**\n\n```javascript\nvar fs = require(\"fs\");\n\n// Note: 语音文件大小上传限制400K字节\nconst filePath = \"/home/pf/data/download/scripts/voice/4162.mp3\";\nconst fileContent = fs.readFileSync(filePath);\n\nsmsClient.init({\n    action: 'VoiceFileUpload',\n    data: {\n        fileContent\n    }\n}).then((res) =\u003e {\n    // 上传成功后，res里会返回语音文件的fid\n});\n```\n\n\u003e `Note` '语音文件上传'功能需要联系腾讯云短信技术支持(QQ:3012203387)才能开通\n\n- **按语音文件fid发送语音通知**\n\n```javascript\n// Note：这里fid来自`上传语音文件`接口返回的响应，要按语音\n// 文件fid发送语音通知，需要先上传语音文件获取fid\nconst fid = \"c799d10a43ec109f02f2288ca3c85b79e7700c98.mp3\";\nsmsClient.init({\n    action: 'FileVoiceSend',\n    data: {\n        nationCode: '86',\n        phoneNumber,\n        fid,\n    }\n}).then((res) =\u003e {\n    // 处理结果\n});\n```\n\n\u003e `Note` 按'语音文件fid发送语音通知'功能需要联系腾讯云短信技术支持(QQ:3012203387)才能开通\n\n- **指定模板发送语音通知**\n\n```javascript\nsmsClient.init({\n    action: 'TtsVoiceSend',\n    data: {\n        nationCode: '86',\n        phoneNumber,\n        templId,\n        params: ['5678']\n    }\n}).then((res) =\u003e {\n    // 处理结果\n});\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTencentCloudBase%2Fsms-node-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FTencentCloudBase%2Fsms-node-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTencentCloudBase%2Fsms-node-sdk/lists"}