cloudloyalty/smsaero-client

Client library for smsaero.ru API

v1.6 2023-12-18 13:26 UTC

This package is auto-updated.

Last update: 2024-12-21 22:38:33 UTC


README

Библиотека для подключения к API сервиса SMS Aero.

Зависимости

Можно использовать свою реализацию клиента без использования пакета Guzzle

Установка

$ php composer.phar require cloudloyalty/smsaero-client

Пример работы

<?php

use Feech\SmsAero\Auth\Auth;
use Feech\SmsAero\Client\ClientGuzzle;
use Feech\SmsAero\Exception\BaseSmsAeroException;
use Feech\SmsAero\SmsAero;
use Feech\SmsAero\Sms\Sms;

$auth = new Auth('email', 'pass');
$client = new ClientGuzzle($auth);

$smsAero = new SmsAero($client);
$sms1 = new Sms('79591234567', 'Тестовое сообщение', Sms::CHANNEL_TYPE_INTERNATIONAL);
$sms2 = new Sms(['79591234567', '79599876543'], 'Тестовое сообщение', Sms::CHANNEL_TYPE_DIGITAL);

try {
    $smsAero->testSend($sms1); // тестовое сообщение
    $smsAero->send($sms1); // отправка сообщения
    $response = $smsAero->bulkSend($sms1); // массовая отправка сообщений

    $responseArray = json_decode($response, true); // ответ в виде ассоциативного массива
} catch (BaseSmsAeroException $e) {
    $e->getMessage();
}

Настройка guzzle адаптера

use Feech\SmsAero\Auth\Auth;
use Feech\SmsAero\Client\ClientGuzzle;
use GuzzleHttp\Client;
use GuzzleHttp\HandlerStack;

// configure required handler, middleware:
$handlerStack = HandlerStack::create();

$guzzleClient = new Client([
    'connect_timeout' => 5,
    'timeout' => 5,
    'handler' => $handlerStack,
]);

$auth = new Auth('email', 'pass');
$client = new ClientGuzzle($auth, $guzzleClient);

Десериализация ответов в DTO

Для работы с ответами сервиса через DTO используется jms/serializer и отдельный класс клиента SmsAeroClient.

use Feech\SmsAero\Auth\Auth;
use Feech\SmsAero\Client\ClientGuzzle;
use Feech\SmsAero\Sms\Sms;
use Feech\SmsAero\SmsAeroClient;
use JMS\Serializer\SerializerBuilder;

$auth = new Auth('email', 'pass');
$client = new ClientGuzzle($auth);
$serializer = SerializerBuilder::create()->build();

$smsAero = new SmsAeroClient($client, $serializer);

$sms = Sms::toSingleNumber('79591234567', 'Тестовое сообщение', Sms::CHANNEL_TYPE_INTERNATIONAL);

$result = $smsAero->send($sms);
var_dump($result->data->status);
var_dump($result->data->cost);