# yiwise-sms-control-panel **Repository Path**: yiwise/yiwise-sms-control-panel ## Basic Information - **Project Name**: yiwise-sms-control-panel - **Description**: 一知短信网关管理面板 - **Primary Language**: PHP - **License**: Unlicense - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 2 - **Created**: 2022-06-08 - **Last Updated**: 2025-07-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: 短信网关 ## README # yiwise-sms-control-panel ## 介绍 一知短信网关管理面板,需要和一知短信网关项目配合使用:[yiwise-sms-gateway](https://gitee.com/yiwise/yiwise-sms-gateway) 技术上使用PHP实现。 ## 安装教程 ### 1.nginx安装 CentOS 7 配置 Nginx 的步骤如下: 首先更新 yum,没有安装 yum 的自行安装: ```yum update``` 安装 Nginx: ```yum install nginx``` 启动 Nginx 并设置开机启动: ```systemctl start nginx``` ```systemctl enable nginx``` ### 2.php安装 安装最新版本的 PHP、PHP-FPM,注意 PHP 与 PHP-FPM 版本必须保持一致: ```yum install php php-fpm php-mysql php-devel php-gd php-pecl-memcache php-pspell php-snmp php-xmlrpc php-xml php-pdo php-pgsql php-pecl-redis php-soap``` 安装成功后,运行如下命令查看 php 版本: ```php -v``` ### 3.PHP环境配置 下载工程,假设工程放到如下目录中:```/var/www/html/yiwise-sms-control-panel``` 执行如下命令调整权限: ```chmod -R 777 /var/www/html ``` 新增nginx配置文件: ```vim /etc/nginx/conf.d/sms.conf``` 内容如下: ``` server { listen 8080; root /var/www/html/yiwise-sms-control-panel/web; location / { index index.php; } location ~ \.php?.*$ { fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } ``` 修改 php-fpm 配置文件: ```vim /etc/php-fpm.d/www.conf``` 找到以下三行代码并修改如下: ``` user = nginx group = nginx listen = /var/run/php-fpm/php-fpm.sock listen.owner = nginx listen.group = nginx listen.mode = 0660 ``` 修改 php.ini: ```vim /etc/php.ini``` 找到 cgi.fix_pathinfo 并修改为 0: ```cgi.fix_pathinfo=0``` 以上配置完成后,重启 nginx、php-fpm: ```systemctl restart php-fpm nginx``` 访问如下地址,<服务器IP地址>替换为真实的IP地址: ```http://<服务器IP地址>:8080/test.php``` 可以看到php信息页面: ![输入图片说明](web/images/phpinfo.png) 在页面中搜索"session.save_path",找到对应的值,比如值为:```/var/lib/php/session``` 执行如下命令调整权限: ```chmod -R 777 /var/lib/php/session ``` 注意,如果对应的目录不存在,需要先手工创建一个目录,再执行上面的命令调整权限: ```mkdir -p /var/lib/php/session ``` ### 4.工程配置 首先确保短信网关的mysql数据库已经存在。 找到 config/db.inc.php 文件,按提示调整DB的配置。 调整好后执行如下命令重启: ```systemctl restart nginx``` 访问:http://<服务器IP地址>:8080/ 输入默认账号密码:admin/yiwise 即可登录,登录后可以在右上角的“用户”设置中修改账号密码。 ### 5.docker部署 由于以上步骤比较繁琐,工程也支持docker部署: 首先确保短信网关的mysql数据库已经存在。 找到 config/db.inc.php 文件,按提示调整DB的配置。 然后docker镜像构建,在工程根目录下执行: ```bash docker build -t yiwise-sms-control-panel:1.0.0 ./ ``` docker容器运行: ```bash docker run -d -it --name yiwise-sms-control-panel -p 8080:8080/tcp yiwise-sms-control-panel:1.0.0 ``` ## 使用说明 控制面板可以支持如下信息的设置: ### 短信通道配置 配置通道需要:通道号、通道名称、运营商类型、协议类型、通道类型、通道IP、端口号、登录用户名、登录密码、接入码、企业代码、单连接速度、最大连接数 等信息。这些在短信网关的管理面板上的“通道配置”中可以配置。 注意:如果自行部署多个环境,比如测试uat环境,生产环境等,每个环境配置的短信通道账户信息不能一样,否则通道会推送同样账户的状态数据到多个环境中。比如会把生产的短信状态报告推送到测试环境上,会有数据问题,这个是运营商短信通道的逻辑,需要在部署和配置上避免。 ### 短信通道组配置 如果通道有多个,可以配置通道组和补发规则。提高短信发送成功率。通道组和补发规则需要一起配置,比如有两个通道,通道号分别是101和 102,需要按权重(权重可以自己定义)配置通道组如下: ```java [{"channelNo":"201", "weight":50},{"channelNo":"202", "weight":50}] ``` ### 短信补发策略 补发规则包括:通道号,补发生效时间(分钟),补发通道列表(多个用英文逗号分割),配置后1分钟生效,当一个通道发送失败时,会按补发通道列表定义的通道补发,每个补发通道只发一次,直到成功或全部失败为止。 比如A通道的补发通道是B,C,补发生效时间是10分钟: 使用A通道发送,A通道返回接收失败, 10分钟之内,会按B,C的重试顺序立即补发; A通道返回接收失败时,超过10分钟则不补发; 如果A通道没有返回接收失败,也不补发; 10分钟的有效期,以A通道的发送时间为起始时间计算。 ### 短信账户设置 由于短信网关需要提供HTTP API供调用,约定API规则如下: 1-短信网关实现API接口,并分配api调用的appkey,appsecret。 2-API鉴权规则如下:一知在调用接口时,需要在请求头传入 appkey、 时间戳 timestamp(毫秒) 和验签字段 signature 用于权限校验,效验规则:将三个字段的按如下的方式拼接: ```java "appkey=" + appkey + "&" +"appsecret=" + appsecret + "&" + "timestamp=" + timestamp ``` 然后生成生成32位大写的摘要字符串,作为签名信息放在请求头的signature字段中。 在[yiwise-sms-gateway](https://gitee.com/yiwise/yiwise-sms-gateway)工程中,在OpenApiInterceptor这个类里提供了鉴权的实现,SendMsgTest这个测试类实现了请求的构造。 因此,短信账户设置,需要有app_key、app_secret、callback_url(用于回执回调)、recv_callback_url(用于短信回复的回调) ### 短信记录查看 可以按照手机号等信息查询短信记录,默认保留90天; ## 感谢 项目是在 [opensips control panel](https://controlpanel.opensips.org/) 基础上开发的,感谢开源!