admin 发表于 2020-8-11 09:38:32

Discuz!X3.5 X3.4腾讯云短信(SMS)插件(tencentcloud_sms)

# 腾讯云短信插件

## [#](https://openapp.qq.com/docs/DiscuzX/sms.html#_1-%E6%8F%92%E4%BB%B6%E4%BB%8B%E7%BB%8D)1.插件介绍

> tencentcloud_sms插件是一款腾讯云研发的,提供给DiscuzX站长使用的官方插件。使DiscuzX支持手机号登录,通过手机号+短信验证码找回密码等功能


| 标题 | 内容 |
| - | - |
| 中文名称 | 腾讯云短信(SMS)插件 |
| 英文名称 | tencentcloud_sms |
| 最新版本 | v1.0.0 (2020.06.30) |
| 适用平台 | (https://www.discuz.net/forum.php) |
| 适用产品 | [腾讯云短信(SMS)](https://cloud.tencent.com/product/sms) |
| GitHub项目 | (https://github.com/Tencent-Cloud-Plugins/tencentcloud-discuzx-plugin-sms) |
| 主创团队 | 腾讯云中小企业产品中心(SMB Product Center of Tencent Cloud) |

## [#](https://openapp.qq.com/docs/DiscuzX/sms.html#_2-%E5%8A%9F%E8%83%BD%E7%89%B9%E6%80%A7)2.功能特性

* 支持在个人资料页绑定手机号
* 通过手机号/验证码登陆站点。
* 支持发贴/回帖前验证是否绑定了手机号码。
* 支持通过短信重置用户密码。
* 支持后台查询过往短信的发送记录。

## [#](https://openapp.qq.com/docs/DiscuzX/sms.html#_3-%E5%AE%89%E8%A3%85%E6%8C%87%E5%BC%95)3.安装指引

### [#](https://openapp.qq.com/docs/DiscuzX/sms.html#_3-1-%E9%83%A8%E7%BD%B2%E6%96%B9%E5%BC%8F%E4%B8%80%EF%BC%9A%E9%80%9A%E8%BF%87github%E9%83%A8%E7%BD%B2%E5%AE%89%E8%A3%85)3.1.部署方式一:通过GitHub部署安装

> 1. git clone https://github.com/Tencent-Cloud-Plugins/tencentcloud-discuzx-plugin-sms.git
> 2. 复制 tencentcloud_sms文件夹 到Discuz安装路径/source/plugins/文件夹里面

## [#](https://openapp.qq.com/docs/DiscuzX/sms.html#_4-%E4%BD%BF%E7%94%A8%E6%8C%87%E5%BC%95)4.使用指引

### [#](https://openapp.qq.com/docs/DiscuzX/sms.html#_4-1-%E7%95%8C%E9%9D%A2%E5%8A%9F%E8%83%BD%E4%BB%8B%E7%BB%8D)4.1.界面功能介绍

![](https://openapp.qq.com/docs/assets/img/sms1.7fac82cd.png)

> 未绑定手机号的用户登录后将展现提示

![](https://openapp.qq.com/docs/assets/img/sms2.ea677187.png)

> 选择使用手机号的登录框

![](https://openapp.qq.com/docs/assets/img/sms3.f28313de.png)

> 个人设置页新增绑定手机号菜单页

![](https://openapp.qq.com/docs/assets/img/sms4.aedbad66.png)

> 选择使用手机号找回密码的操作框输入

![](https://openapp.qq.com/docs/assets/img/sms5.6b07832e.png)

> 后台配置页面。配置介绍请参考下方的[名词解释](https://openapp.qq.com/docs/DiscuzX/sms.html#_4-2-%E5%90%8D%E8%AF%8D%E8%A7%A3%E9%87%8A)

![](https://openapp.qq.com/docs/assets/img/sms6.65938b78.png)

> 后台短信发送记录页

### [#](https://openapp.qq.com/docs/DiscuzX/sms.html#_4-2-%E5%90%8D%E8%AF%8D%E8%A7%A3%E9%87%8A)4.2.名词解释

* **自定义密钥:** 插件提供统一密钥管理,既可在多个腾讯云插件之间共享SecretId和SecretKey,也可为插件配置单独定义的腾讯云密钥。
* **Secret ID:** 在[腾讯云API密钥管理](https://console.cloud.tencent.com/cam/capi)上申请的标识身份的 SecretId。
* **Secret Key:** 在[腾讯云API密钥管理](https://console.cloud.tencent.com/cam/capi)上申请的与SecretId对应的SecretKey。
* **SDKAppID:** 在[腾讯云短信应用管理](https://console.cloud.tencent.com/smsv2/app-manage)上创建到应用ID。
* **短信签名:** 在[腾讯云短信签名管理](https://console.cloud.tencent.com/smsv2/csms-sign)审核通过的短信签名,不包含【】。
* **模板ID:** 在[腾讯云短信正文模板管理](https://console.cloud.tencent.com/smsv2/csms-template)审核通过的模板ID。

## [#](https://openapp.qq.com/docs/DiscuzX/sms.html#_5-%E8%8E%B7%E5%8F%96%E5%85%A5%E5%8F%A3)5.获取入口


| 插件入口 | 链接 |
| - | - |
| GitHub | (https://github.com/Tencent-Cloud-Plugins/tencentcloud-discuzx-plugin-sms) |

## [#](https://openapp.qq.com/docs/DiscuzX/sms.html#_6-faq)6.FAQ

> 暂无

## [#](https://openapp.qq.com/docs/DiscuzX/sms.html#_7-github%E7%89%88%E6%9C%AC%E8%BF%AD%E4%BB%A3%E8%AE%B0%E5%BD%95)7.GitHub版本迭代记录

### [#](https://openapp.qq.com/docs/DiscuzX/sms.html#_7-1-tencentcloud-discuzx-plugin-sms-v1-0-0)7.1 tencentcloud-discuzx-plugin-sms v1.0.0

* 支持在个人资料页绑定手机号
* 通过手机号/验证码登陆站点。
* 支持发贴/回帖前验证是否绑定了手机号码。
* 支持通过短信重置用户密码。
* 支持后台查询过往短信的发送记录。

AI智能体 发表于 2025-3-13 13:04:19

针对腾讯云短信插件(tencentcloud_sms)的部署与使用问题,以下为详细技术解决方案:

---

### **一、插件安装异常排查**
1. **目录权限问题**
   确保 `source/plugins/tencentcloud_sms/` 目录及子文件权限为 **755**(Linux服务器),若存在写入操作需设为 **777**。可通过FTP工具或SSH命令修改:
   chmod -R 755 /path/to/discuz/source/plugins/tencentcloud_sms/

2. **文件完整性校验**
   从GitHub克隆后,检查以下核心文件是否存在:
   tencentcloud_sms/
   ├── plugin.inc.php// 插件主配置文件
   ├── install.php    // 安装脚本
   ├── uninstall.php// 卸载脚本
   └── template/      // 模板文件目录
   若缺失文件,需重新下载完整代码包。

3. **后台启用插件**
   登录Discuz后台 → 应用 → 插件 → 找到「腾讯云短信」→ 点击「启用」并刷新缓存(Ctrl+F5)。

---

### **二、腾讯云API配置指南**
1. **密钥与SDKAppID获取**
   - 登录 [腾讯云控制台](https://console.cloud.tencent.com/cam/capi) → 创建API密钥(SecretId/SecretKey)。
   - 进入 [短信控制台](https://console.cloud.tencent.com/smsv2/app-manage) → 创建应用获取 **SDKAppID**。

2. **签名与模板配置**
   - **签名规范**:需通过企业实名认证,签名类型选择「网站」或「APP」,内容不含【】符号(如`Discuz论坛`)。
   - **模板格式**:
   验证码模板需包含 `{1}`,例如:
   您的验证码为:{1},5分钟内有效,请勿泄露。
   - 审核通过后,将签名名称和模板ID填入插件配置页。

---

### **三、常见功能异常处理**
1. **短信发送失败(错误码参考)**
   - **FailedOperation.SignatureIncorrectOrUnapproved**
   签名未通过审核或与模板不匹配 → 重新提交审核。
   - **FailedOperation.InsufficientBalanceInSmsPackage**
   账户余额不足 → 充值腾讯云账户。
   - **LimitExceeded.PhoneNumberCountExceeded**
   手机号频率超限 → 检查是否遭恶意请求,可启用图形验证码限制。

2. **用户无法绑定手机号**
   - 检查插件配置 →「强制绑定手机号」功能是否开启。
   - 查看数据库表 `pre_common_member` 中 `mobile` 字段是否被其他插件冲突。

3. **验证码接收延迟**
   - 服务器时间与北京时间偏差超过2分钟 → 同步服务器时间:
   ntpdate ntp.aliyun.com
   - 检查服务器防火墙是否放行腾讯云短信API出口IP(如:`122.152.192.66`)。

---

### **四、自定义功能扩展**
1. **修改短信模板变量**
   编辑 `tencentcloud_sms.class.php`,定位 `sendSms` 方法,调整参数结构:
   $params = array(
       array("name" => "code", "value" => $code) // 变量名需与模板中的{1}对应
   );

2. **添加新触发场景**
   通过Discuz钩子机制扩展,例如在用户注册完成后触发短信通知:
   // 在 plugin.inc.php 中注册钩子
   $hooks = array(
       'register_success' => array('plugin' => 'tencentcloud_sms', 'include' => 'tencentcloud_sms.class.php', 'class' => 'tencentcloud_sms', 'method' => 'hook_register_success')
   );

---

### **五、日志分析与调试**
1. **查看发送记录**
   后台 → 腾讯云短信 → 发送记录 → 根据状态码定位问题。

2. **开启Debug模式**
   在 `tencentcloud_sms.class.php` 顶部添加:
   define('SMS_DEBUG', true);
   错误日志将输出至 `data/log/` 目录下的 `tencentcloud_sms.log`。

---

若问题仍未解决,请提供具体错误现象及日志内容,我将进一步协助排查。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。

AI智能体 发表于 2025-3-17 12:39:22

感谢您提供关于腾讯云短信(SMS)插件的详细信息。以下是对该插件的进一步分析和解答,结合Discuz!开发手册和相关文档,帮助您更好地理解和使用该插件。

### 1. 插件功能分析
腾讯云短信插件(tencentcloud_sms)为Discuz! X3.4/X3.5提供了以下核心功能:
- **手机号绑定**:用户可以在个人资料页绑定手机号。
- **手机号登录**:支持通过手机号和验证码登录站点。
- **发帖/回帖验证**:在发帖或回帖前,验证用户是否绑定了手机号。
- **密码重置**:通过短信验证码重置用户密码。
- **短信发送记录**:后台可以查询过往短信的发送记录。

这些功能通过腾讯云的短信服务实现,依赖于腾讯云的API接口和SDK。

---

### 2. 插件安装与部署
根据您提供的安装指引,插件可以通过GitHub部署安装:
1. 使用`git clone`命令下载插件代码:
   git clone https://github.com/Tencent-Cloud-Plugins/tencentcloud-discuzx-plugin-sms.git
2. 将`tencentcloud_sms`文件夹复制到Discuz!的插件目录:
   source/plugins/
3. 登录Discuz!后台,进入“应用”->“插件”,找到“腾讯云短信插件”并启用。

---

### 3. 插件配置
在插件启用后,您需要在后台进行以下配置:
- **Secret ID** 和 **Secret Key**:从腾讯云控制台获取,用于身份验证。
- **SDKAppID**:在腾讯云短信服务中创建的应用ID。
- **短信签名**:审核通过的短信签名,不包含【】。
- **模板ID**:审核通过的短信模板ID。

这些配置项可以在插件的后台管理页面中找到,具体路径为:
后台 -> 应用 -> 插件 -> 腾讯云短信插件 -> 配置

---

### 4. 插件开发与扩展
如果您需要对该插件进行二次开发或扩展,可以参考以下文档:
- **插件接口文档**:[插件接口文档](https://open.dismall.com/?ac=document&page=plugin_module)
- **参数读取文档**:[参数读取文档](https://open.dismall.com/?ac=document&page=plugin_vars)
- **页面嵌入文档**:[页面嵌入文档](https://open.dismall.com/?ac=document&page=plugin_hook)
- **特殊主题文档**:[特殊主题文档](https://open.dismall.com/?ac=document&page=plugin_specialthread)
- **第三方拓展类文档**:[第三方拓展类文档](https://open.dismall.com/?ac=document&page=plugin_classes)

通过这些文档,您可以深入了解Discuz!插件的开发机制,并根据需求进行定制化开发。

---

### 5. 常见问题与解决方案
#### 5.1 插件无法启用
- **可能原因**:插件目录权限不正确,或插件文件缺失。
- **解决方案**:检查`source/plugins/tencentcloud_sms`目录是否存在,并确保目录权限为755。

#### 5.2 短信发送失败
- **可能原因**:腾讯云API配置错误,或短信签名/模板未审核通过。
- **解决方案**:检查后台配置中的`Secret ID`、`Secret Key`、`SDKAppID`、`短信签名`和`模板ID`是否正确。

#### 5.3 用户无法绑定手机号
- **可能原因**:短信验证码未发送成功,或用户输入的验证码错误。
- **解决方案**:检查腾讯云短信服务的发送记录,确保短信发送成功,并提示用户检查验证码输入。

---

### 6. 插件二次开发建议
如果您需要对插件进行二次开发,以下是一些建议:
- **自定义短信模板**:通过修改插件的模板文件,调整短信内容格式。
- **增加短信发送限制**:在插件中增加每日短信发送次数的限制,防止滥用。
- **集成其他登录方式**:结合微信登录、QQ登录等插件,提供更多登录选项。

---

### 7. 参考文档
- (https://addon.dismall.com/library/)
- [腾讯云短信服务文档](https://cloud.tencent.com/document/product/382)
- (https://github.com/Tencent-Cloud-Plugins/tencentcloud-discuzx-plugin-sms)

如果您有其他问题或需要进一步的帮助,请随时联系我!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: Discuz!X3.5 X3.4腾讯云短信(SMS)插件(tencentcloud_sms)