定制 cri2net/sms-client 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

cri2net/sms-client

最新稳定版本:1.4.6

Composer 安装命令:

composer require cri2net/sms-client

包简介

SMS Client Library for php

README 文档

README

Эта библиотека предназначена как основа для других библиотек, которые отправляют SMS через сторонний SMS шлюз.

На текущий момент поддерживаются следующие SMS шлюзы:

Установка

Установка библиотеки

В базовом случае библиотека установится сама при установке библиотеки для конкретного шлюза. Но всегда можно выполнить установку через команду:

composer require cri2net/sms-client

Таблица в БД

Для лучшей интеграции будет удобно создать таблицу в базе данных. Однако это не обязательно для работы.

Не забывайте просматривать файл install.sql при обновлениях версии.

Также, поддерживаются автоматические SQL миграции на основе пакета placebook/framework-selfupdate

Текущее содержимое:

-- 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 время фактической отправки sms
  • min_sending_time: unix время минимального момента времени, когда можно отправлять смс - для отложенной отправки
  • replace_data: JSON строка с правилами замен
  • raw_text: текст сообщения, есть поддержка "макросов"
  • processing: ключ (название) sms шлюза, который отправил (или должен отправить) sms
  • processing_data: JSON с данными для шлюза
  • processing_status: статус отправки, полученный от шлюза
  • additional: предназначено для дополнительной информации в JSON. Библиотека не использует это поле и логика его работы целиком зависит от пользователей библиотеки

Использование

Описание методов

Библиотека имеет лишь интерфейс и абстрактный класс, так что нельзя создать экземпляр предоставляемого класса напрямую и использовать его.

Тут приведены лишь базовые методы, в том числе абстрактные, которые будут доступны в классе конкретного sms шлюза. Если метод будет переопределён в дочернем классе, об этом будет написано в описании к дочернему классу

  • getBalance() — получение текущего остатка денег в аккаунте на шлюзе
  • checkStatus($campaignID, $recipient) — проверка текущего статуса отправленного сообщения по ID кампании отправки (от шлюза) и номеру телефона получателя в международном формате
  • sendSMS($recipient, $text) — отправка sms, параметры: номер в международном формате и текст
  • processPhone($international_phone) — В силу того, что некоторые SMS шлюзы могут не работать с международным форматом номера телефона, этот метод адаптирует номер в международном формате к тому виду, в котором его может использовать шлюз
  • checkStatusByCron() — метод предназначен для проверки статусов отправленных сообщений по расписанию (через crontab)
  • sendSmsByCron() — отправка подготовленных sms, которые сохранены в БД

Выбор оптимального шлюза из всех доступных

<?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!');

统计信息

  • 总下载量: 1.72k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 2
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2016-08-29

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固