This component allows you to simply work with smsfeedback.ru base API.
See service API documentation for more detailed information.
composer require phpinfo/smsfeedback
The best way to instantiate API client is to use ApiClientBuilder:
$client = ApiClientFactory::createApiClient('login', 'password');
$client->send('71234567', 'Some SMS Text');
You can specify connection timeout (in msec) or API base URI:
$client = ApiClientFactory::createApiClient('login', 'password', 'https://service.mock', 3000);
SDK builder supports psr/logger. Monolog usage example:
use Monolog\Handler\StreamHandler;
use Monolog\Logger;
$handler = new StreamHandler(STDOUT);
$logger = new Logger('SmsFeedback', [$handler]);
$client = ApiClientFactory::createApiClient('login', 'password', null, null, $logger);
$client->balance();
Will output:
[2019-05-19 20:21:34] SmsFeedback.INFO: GET /messages/v2/balance HTTP/1.1 200 [] []
See SmsFeedback Symfony Bundle for easy integration.
You can use ApiClientFactory
in your DI container as well:
SmsFeedback\ApiClientInterface:
factory: ['SmsFeedback\Factory\ApiClientFactory', 'createApiClient']
arguments:
$login: '%env(SMSFEEDBACK_LOGIN)%'
$password: '%env(SMSFEEDBACK_PASSWORD)%'
Simply sends SMS:
$message = $client->send('79161234567', 'SMS Text');
Argument | Type | Description | Example |
---|---|---|---|
phone | string | Phone number | 79161234567 |
text | string | SMS Text | Some SMS Text |
sender | ?string | Sender short name | SENDER |
statusQueueName | ?string | SMS status queue name | my-queue |
scheduleTime | ?string | Scheduled time to send message (UTC only) | 2009-01-01T12:30:01+00:00 |
Response object:
{
"id": "A133541BC",
"status": "accepted"
}
$statuses = $client->status(['5169837636', '5169837647']);
[
{
"id": "5169837636",
"status": "delivered"
},
{
"id": "5169837647",
"status": "delivery error"
}
]
$balances = $client->balance();
[
{
"type": "RUB",
"amount": 385.5,
"credit": 0.0
}
]
$senders = $client->senders();
[
{
"name": "SENDER",
"status": "active",
"comment": "Some sender comment"
}
]
SDK uses Guzzle 6 under the hood. You can specify Guzzle params directly:
$client = ApiClientBuilder::create('login', 'password')
->setHttpClientParams(
[
'base_uri' => 'https://my-domain.com',
'timeout' => 5.2,
]
)
->getApiClient();
Note: Guzzle params will completely override timeout, base URI, logger and authorization features. You have to specify everything manually. In some cases it might be useful.
$stack = HandlerStack::create();
$stack->push(function (callable $handler) use ($login, $password) {
return new AuthorizationMiddleware($handler, $login, $password);
});
$client = ApiClientBuilder::create()
->setHttpClientParams(
[
'base_uri' => 'http://api.smsfeedback.ru',
'timeout' => 5.0,
'handler' => $stack,
]
)
->getApiClient();
$stack = HandlerStack::create();
$stack->push(function (callable $handler) use ($login, $password) {
return function (RequestInterface $request, array $options) use ($handler, $login, $password) {
$fn = $handler;
$authHeader = sprintf('Basic %s', base64_encode($login . ':' . $password));
$request = $request->withHeader('Authorization', $authHeader);
return $fn($request, $options);
};
});
$client = ApiClientBuilder::create()
->setHttpClientParams(
[
'base_uri' => 'http://api.smsfeedback.ru',
'timeout' => 5.0,
'handler' => $stack,
]
)
->getApiClient();
$stack = HandlerStack::create();
$logger = new Logger('SmsFeedback', [$handler]);
$formatter = new MessageFormatter(MessageFormatter::SHORT);
$stack->push(Middleware::log($logger, $formatter));
$client = ApiClientBuilder::create()
->setHttpClientParams(
[
'base_uri' => 'http://api.smsfeedback.ru',
'timeout' => 5.0,
'handler' => $stack,
]
)
->getApiClient();