SMS-плагины

Содержание...

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,
        ],
    ];
}