SMS-плагины используются для интеграции с сервисами отправки быстрых текстовых сообщений. Обычно это отправка SMS, но, в принципе, такой сервис может отправлять сообщения, например, в мессенджер или сохранять их в виде файлов для каких-то целей.
Параметры подключения к сервису отправки сообщений заполняются пользователями в системных настройках аккаунта. Стандартное поле автоматически доступно для любого плагина — для ввода идентификаторов отправителя. В каждом плагине можно реализовать также добавление других полей в дополнение к стандартному.
Основная часть разработки SMS-плагина — это реализация в его основном классе метода send(), в котором должна выполняться отправка одного сообщения. Основной класс SMS-плагина должен наследовать системный класс waSMSAdapter
.
<?php class mySMS extends waSMSAdapter { public function send ($to, $text, $from = null) { // здесь нужно реализовать логику отправки сообщения $text получателю с номером телефона $to // и при необходимости использовать обозначение отправителя $from, если оно доступно } }
Файловая структура
Файлы с исходным кодом SMS-плагина должны размещаться в директории wa-plugins/sms/[plugin_id]/
, где вместо [plugin_id] используется идентификатор плагина.
Базовая файловая структура плагина выглядит так:
Быстро создать заготовку для нового SMS-плагина можно с помощью консольной команды createSystemplugin. Пример создания плагина с идентификатором my
:
php wa.php createSystemplugin sms my
Методы основного класса плагина
-
send
Отправляет сообщение.
-
getControls
Определяет конфигурацию дополнительных полей настройки плагина.
public function send ($to, $text, $from = null)
Отправляет сообщение. Для выполнения сетевых запросов к серверу провайдера в коде этого метода удобно использовать класс waNet.
Параметры
-
$to
Номер телефона получателя.
-
$text
Текст сообщения.
-
$from
Необязательное обозначение отправителя.
public function getControls()
Определяет конфигурацию дополнительных полей настройки плагина в виде массива. Каждый элемент массива — подмассив со следующими ключами:
- title: Локализованное название поля.
- description: Необязательное описание поля.
- control_type: Необязательное обозначение типа поля, сформированного классом waHtmlControl, из списка:
waHtmlControl::INPUT
(тип по умолчанию): строка текста,waHtmlControl::TEXTAREA
: многострочное текстовое поле,waHtmlControl::CHECKBOX
: флажок.
Пример
public function getControls() { return [ 'api_id' => [ 'title'=> 'api_id', 'description' => 'Значение <em>api_id</em> из вашего личного кабинета на сайте SMS-провайдера.', // указывать тип waHtmlControl::INPUT необязательно // 'control_type' => waHtmlControl::INPUT, ], 'api_key' => [ 'title'=> 'api_key', 'description' => 'Значение ключа <em>api_key</em> из вашего личного кабинета на сайте SMS-провайдера.', 'control_type' => waHtmlControl::TEXTAREA, ], 'use_custom_sender' => [ 'title'=> 'Собственное имя отправителя', 'description' => 'Нужно ли использовать собственное имя отправителя, настроенное в личном кабинете на сайте SMS-провайдера.', 'control_type' => waHtmlControl::CHECKBOX, ], ]; }