Skip to content

JustCommunication-ru/wiracle-api-php-sdk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Wiracle API PHP SDK

Latest Stable Version Total Downloads

PHP SDK для Wiracle.ru API

Установка

composer require justcommunication-ru/wiracle-api-php-sdk

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

$client = new WiracleClient('email', 'token');

email — email пользователя на wiracle.ru

token — аутентификационный токен. Токен можно получить через web-интерфейс https://wiracle.ru/account/settings/api, либо методом WiracleClient::getToken($email, $password)

Методы

Токен авторизации

$token = WiracleClient::getToken($email, $password);

print_r($token);

Так же токен авторизации можно получить через web-интерфейс https://wiracle.ru/account/settings/api

Информация об аккаунте и его профилях

$account = $client->getAccount();

print_r($account);

Список каналов профиля

$response = $client->sendChannelsRequest(new ChannelsRequest($profile_id));

print_r($response->getChannels());

Список каналов доступных профилю

Каналы всех профилей на страницу которых можно добавлять сообщения (включая собственные)

$response = $client->sendChannelsAvailableRequest(new ChannelsAvailableRequest($profile_id));

print_r($response->getProfiles());

Отправить простое текстовое сообщение

$response = $client->sendMessageCreateRequest(MessageCreateRequest::withPlainText($profile_id, $channel_id, $text));

// идентификатор нового сообщения
print_r($response->getId());

Отправить изображение

// $width, $height не обязательные поля
$response = $client->sendMessageCreateRequest(MessageCreateRequest::withImage($profile_id, $channel_id, $src, $width, $height));

// идентификатор нового сообщения
print_r($response->getId());

Отправить составное сообщение

$message = new Message([
    new HeaderPart('Header'),
    new TextPart('Text')
]);

$message
    ->addPart(new ImagePart('https://wiracle.ru/images/app_banner/512x512.png', 512, 512))
    ->addPart(new CutlinePart())
    ->addPart(new TextPart('Text 2'))
;

$response = $client->sendMessageCreateRequest(MessageCreateRequest::withMessage($profile_id, $channel_id, $message));

// идентификатор нового сообщения
print_r($response->getId());

Сообщения поддерживают inline markdown такие как: bold text, italic text, link и тд.

Обработка ошибок

При ошибке будет сгенерировано исключение WiracleAPIException

try {
    $client->sendMessageCreateRequest(MessageCreateRequest::withPlainText($profile_id, $channel_id, $text));
} catch (WiracleAPIException $e) {
    $logger->error('Wiracle ERROR: ' . $e->getMessage());
}

Настройка HTTP клиента

Способ №1: передача массива параметров

$client = new WiracleClient('email', 'token', [
    'proxy' => 'tcp://localhost:8125',
    'timeout' => 6,
    'connect_timeout' => 4
]);

Список доступных параметров: https://docs.guzzlephp.org/en/stable/request-options.html

Способ №2: передача своего \GuzzleHttp\Client

Настройте своего http клиента:

// Http клиент с логгированием всех запросов

$stack = HandlerStack::create();
$stack->push(Middleware::log($logger, new MessageFormatter(MessageFormatter::DEBUG)));

$httpClient = new \GuzzleHttp\Client([
    'handler' => $stack,
    'timeout' => 6
]);

и передайте его аргументом конструктора:

$client = new WiracleClient('email', 'token', $httpClient);

либо сеттером:

$client = new WiracleClient('email', 'token');
$client->setHttpClient($httpClient);

Логирование

В $client можно передать свой Psr\Logger.

$client->setLogger($someLogger);

По-умолчанию, логирование отключено.

Тесты

Запустить тесты можно командой:

vendor/bin/phpunit