cri2net / sms-client
PHP短信客户端库
1.4.6
2021-09-12 12:41 UTC
Requires
- php: ^5.4|^7.0|^8.0
- cri2net/php-pdo-db: ^1.2
Suggests
- placebook/framework-selfupdate: For semi-automatic work with SQL migrations
README
这个库旨在作为其他库的基础,这些库通过第三方短信网关发送短信。
目前支持以下短信网关
- 通过 cri2net/sms-fly 包使用 sms-fly.com
- 通过 cri2net/sms-letsads 包使用 letsads.com
安装
安装库
在基本情况下,在安装特定网关的库时,库会自动安装。但也可以通过以下命令进行安装:
composer require cri2net/sms-client
数据库中的表
为了更好的集成,建议在数据库中创建一个表。但这不是必需的。
更新版本时,别忘了查看 install.sql 文件。
此外,还支持基于 placebook/framework-selfupdate 包的自动 SQL 迁移。
当前内容
-- version 1.0.0 CREATE TABLE IF NOT EXISTS `sms` ( `id` int(11) NOT NULL AUTO_INCREMENT, `status` enum('new','sending','complete','cancel','fail') NOT NULL DEFAULT 'new', `to` varchar(100) NOT NULL, `created_at` double NOT NULL, `updated_at` double NOT NULL, `send_at` double DEFAULT NULL, `min_sending_time` double NOT NULL, `replace_data` text, `raw_text` text, `processing` varchar(50) DEFAULT NULL, `processing_data` mediumtext, `processing_status` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`), KEY `status` (`status`,`min_sending_time`), KEY `processing` (`processing`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- version 1.0.1 ALTER TABLE `sms` ADD COLUMN `additional` MEDIUMTEXT NULL AFTER `processing_status`; -- version 1.1.1 ALTER TABLE `sms` ADD COLUMN alfaname VARCHAR(50) NULL AFTER additional;
字段说明
- id: 记录标识符
- status: 发送状态
- to: 国际格式下的接收者号码
- created_at: 记录创建的unix时间
- updated_at: 记录最后修改的unix时间
- send_at: 实际发送短信的unix时间
- min_sending_time: 可以发送短信的最小时间点的unix时间 - 用于延迟发送
- replace_data: 包含替换规则的JSON字符串
- raw_text: 消息文本,支持"宏"功能
- processing: 发送短信的网关的键(名称)
- processing_data: 包含网关数据的JSON
- processing_status: 从网关获得的发送状态
- additional: 用于JSON中的额外信息。库不使用此字段,其工作逻辑完全取决于库的用户
使用
方法说明
库只有一个接口和抽象类,因此不能直接创建提供的类实例并使用它。
这里只列出了基本方法,包括抽象方法,它们将在特定短信网关的类中可用。如果方法在子类中被重写,将在子类的说明中说明
- getBalance() - 获取网关账户中的当前余额
- checkStatus($campaignID, $recipient) - 通过发送ID(网关)和接收者国际格式电话号码检查发送消息的当前状态
- sendSMS($recipient, $text) - 发送sms,参数:国际格式电话号码和文本
- processPhone($international_phone) - 由于某些短信网关可能无法处理国际格式电话号码,此方法将国际格式电话号码调整为网关可以使用的格式
- checkStatusByCron() - 该方法旨在按计划(通过crontab)检查发送消息的状态
- sendSmsByCron() - 发送已保存到数据库的已准备短信
从所有可用网关中选择最佳网关
<?php use cri2net\sms_client\Sender; use cri2net\sms_fly\SMS_fly; $sender = new Sender(); // один доступный аккаунт $sms1 = new SMS_fly('380000000001', 'pass1'); $sms1->alfaname = 'Alfaname'; $sender->addInstance($sms1); // ещё один аккаунт $sms2 = new SMS_fly('380000000002', 'pass2'); $sms1->alfaname = 'Alfaname'; $sender->addInstance($sms2); $to = '380940000001'; $best = $sender->getBestInstance($to); $data = $best->sendSMS($to, 'Hello!');