sinxtsov/smsclient

PHP 类,用于与 SMS 通知 API 服务交互

1.1 2017-12-19 16:41 UTC

This package is not auto-updated.

Last update: 2024-09-28 17:43:52 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License

PHP 类,用于与 SMS 通知 API 服务交互

当前支持 DevinoTelecom http://www.devinotele.com/

通过 Composer 安装依赖

项目运行需要获取必要的依赖

为此,请运行

php composer.phar install

将依赖安装到您的项目中

php composer.phar require sintsov/smsclient "dev-master"

要求

  • PHP >= 5.4.0

类和方法

类 SmsClient\DevinoSMS\Api

实现 Devino REST API 的基本方法

send

描述: 发送 SMS 消息

参数

$sourceAddress: string, 发送者。最多 11 个拉丁字母或 15 个数字。
$destinationAddress: string|array, 目标地址或地址数组。 (国家代码+网络代码+电话号码,例如:79031234567)
$data: string, 消息文本
$sendDate: mixed. 消息发送日期。格式为 (YYYY-MM-DDTHH:MM:SS) 的字符串或时间戳 (可选参数)
$validity: integer, 消息有效时间,单位为分钟 (可选参数)

返回值

array 消息 ID 数组

示例
$devinoSMS->send('test', '7905000000', 'Тестовое сообщение!'); // отправка SMS
$devinoSMS->send('test', '7905000000', 'Тестовое сообщение!', '2015-07-09T11:55:00'); // отправка SMS в указанное время
$devinoSMS->send('test', '7905000000', 'Тестовое сообщение!', '2015-07-09T11:55:00', '10'); // отправка SMS в указанное время и указанием времени жизни сообщения (10 минут)

sendByTimeZone

描述: 考虑接收者时区发送 SMS 消息

参数

$sourceAddress: string, 发送者。最多 11 个拉丁字母或 15 个数字。
$destinationAddress: string, 目标地址。 (国家代码+网络代码+电话号码,例如:79031234567)
$data: string, 消息文本
$sendDate: mixed. 消息发送日期。格式为 (YYYY-MM-DDTHH:MM:SS) 的字符串或时间戳
$validity: integer, 消息有效时间,单位为分钟 (可选参数)

返回值

array 消息 ID 数组

示例
$devinoSMS->sendByTimeZone('test', '7905000000', 'Тестовое сообщение!', '1436608063'); // отправка SMS в указанное время с учетом часового пояса получателя указанного в виде timestamp
$devinoSMS->sendByTimeZone('test', '7905000000', 'Тестовое сообщение!', '2015-07-09T11:55:00'); // отправка SMS в указанное время с учетом часового пояса получателя
$devinoSMS->sendByTimeZone('test', '7905000000', 'Тестовое сообщение!', '2015-07-09T11:55:00', '10'); // отправка SMS в указанное время с учетом часового пояса получателя и указанием времени жизни сообщения (10 минут)

getSMSStatus

描述: 查询 SMS 消息状态

参数

$messageID: string, 消息 ID (由 send 和 sendByTimeZone 方法返回)

返回值

object 类型为的对象

  • State: 消息状态
  • TimeStampUtc: 获取响应的日期和时间
  • StateDescription: 状态描述
  • CreationDateUtc: 创建日期
  • SubmittedDateUtc: 发送日期
  • ReportedDateUtc: 交付日期
  • Price: 消息价格
示例
$devinoSMS->getSMSStatus($id); // Запрос статуса SMS-сообщения

getInbox

描述: 查询指定时间段内的入站 SMS 消息

参数

$minDateUTC: mixed, 选择范围的开始。格式为 (YYYY-MM-DDTHH:MM:SS) 的字符串或时间戳
$maxDateUTC: mixed, 选择范围的结束。格式为 (YYYY-MM-DDTHH:MM:SS) 的字符串或时间戳

返回值

array 包含字段的对象数组

  • Data: 消息文本
  • SourceAddress: 发送者地址
  • DestinationAddress: 接收入站消息的地址
  • ID: 消息标识符
示例
$devinoSMS->getInbox('2015-07-09T09:00:00', '2015-07-09T19:00:00'); // Запрос входящих SMS-сообщений за указанный период
$devinoSMS->getInbox('1436608063', '1436861906'); // Запрос входящих SMS-сообщений за указанный период используя timestamp

getStatistics

描述: 查询指定时间段内的 SMS 发送统计信息

参数

$startDate: mixed, 选择范围的开始。格式为 (YYYY-MM-DDTHH:MM:SS) 的字符串或时间戳
$endDate: mixed, 选择范围的结束。格式为 (YYYY-MM-DDTHH:MM:SS) 的字符串或时间戳

返回值

array 包含统计信息的数组

示例
$devinoSMS->getStatistics('2015-07-09T09:00:00', '2015-07-09T19:00:00'); //  Запрос статистики по SMS-рассылкам за указанный период
$devinoSMS->getStatistics('1436608063', '1436861906'); //  Запрос статистики по SMS-рассылкам за указанный период используя timestamp

getSessionID

描述: 获取会话 ID(在 API 中,该方法在构造函数中调用,因此不需要单独调用它)

返回值

string 会话 ID

示例
$devinoSMS->getSessionID(); // получить ID сесси

getBalance

描述: 查询余额

返回值

double 余额

示例
$devinoSMS->getBalance(); // получить баланс

getClient

描述: 获取客户端

返回值

object SmsClient\Client\ClientInterface 对象

示例
$client = $devinoSMS->getClient(); // получить клиента
$client->setTimeout(2); // установить таймаут соединения

API 使用示例

DevinoTelecom

require_once 'vendor/autoload.php';

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(-1);

use SmsClient\DevinoSMS\Api;

$devinoSMS = new Api('login', 'password');
// пример установки таймаута в секундах, по дефолту используется 1 секунда
$devinoSMS->getClinet()->setTimeout(2);

try {
    $sessionID = $devinoSMS->getSessionID();
    echo "<h2>SessionID: {$sessionID}</h2><hr />";
    echo "<h2>Balance: {$devinoSMS->getBalance()} руб</h2>";

    $list = $devinoSMS->send('test', '7905000000', 'Тестовое сообщение!');
    $id = reset($list);
    echo "<h2>Send SMS: {$id}</h2>";

    $list = $devinoSMS->sendByTimeZone('test', '7905000000', 'Тестовое сообщение с учетом часового пояса!', '2015-07-09T11:55:00');
    $id = reset($list);
    echo "<h2>Send SMS By Time Zone: {$id}</h2>";

    $list = $devinoSMS->send('test', array('7905000000', '7905000001'), 'Массовое тестовое сообщение!');
    $mes = print_r($list, true);
    echo "<h2>Send SMS Bulk: {$mes}</h2>";

    $result = $devinoSMS->getSMSStatus($id);
    $mes = print_r($result, true);
    echo "<h2>SMS Status: {$mes}</h2>";
    
    $result = $devinoSMS->getStatistics('2015-07-09T09:00:00', '2015-07-09T19:00:00');
    $mes = print_r($result, true);
    echo "<h2>Get Message statistics: {$mes}</h2>";
    
    $result = $devinoSMS->getInbox('2015-07-09T09:00:00', '2015-07-09T19:00:00');
    $mes = print_r($result, true);
    echo "<h2>Get Message Inbox: {$mes}</h2>";

} catch (\SmsClient\DevinoSMS\Exception $e) {
    echo $e->getMessage();
}

TODO

  • 实现依赖注入和正常接口
  • 将配置项移至配置文件中
  • 编写测试