rabotaru / zagruzka-connector
Zagruzka Connector
Installs: 6 832
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
Requires
- php: >=7.2
- ext-json: *
- guzzlehttp/guzzle: 6.5.*|^7.4
- promphp/prometheus_client_php: ^2.1
- ramsey/uuid: ^4.1
Requires (Dev)
- micheh/phpcs-gitlab: ^1.1
- phpstan/phpstan: ^0.12
- phpstan/phpstan-phpunit: ^0.12
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.6
This package is auto-updated.
Last update: 2025-03-06 12:48:47 UTC
README
Библиотека предназначена для отправки сообщений посредством сервиса Zagruzka.com.
Сообщения отправляются посредством REST-протокола сервиса Zagruzka, подробности того, что означают поля в
объекте Request
- см. в документации
к сервису.
TODO
Список нереализованных фич (будут доделываться по запросу):
- Viber и Whatsapp сообщения (message/data/instantContent)
- Дополнительные параметры Push-уведомлений
- CascadeChainLink
- ScheduleInfo
- Классы Sender не только для СМС
Самый простой вариант использования для отправки СМС
use RabotaRu\ZagruzkaConnector\Factory; use RabotaRu\ZagruzkaConnector\SMSSender; //Обычно CollectorRegistry у вас уже есть, вам надо получить его из вашего фреймворка. $registry = new \Prometheus\CollectorRegistry( new \Prometheus\Storage\APC(), false ); //Получим стандартный коннектор $connector = (new Factory())->defaultConnector( "https://zagruzka.com/api", "zagruzka_sender", $registry ); //И теперь сам отправщик $sender = new SMSSender( $connector, "login", "password", "MyService", //то, что будет отображаться как отправитель в СМС "https://myservice.com/callback_for_sms" //сюда будут приходить отчеты о доставке ); $sender->sendSMS("+79261234567", "Test SMS");
Hooks
Можно использовать хуки для дополнительной обработки в библиотеке (отправка событий статистики, логирование). Для этого надо реализовать соответствующие интерфейсы.
RestPreSendHook
- выполняется перед отправкой данных, должны возвращать значение true или false. Если такой хук вернет false - отправки не будет
RestPostSendHook
- выполняется после отправки данных, ничего не возвращает
Request
Класс RabotaRu\ZagruzkaConnector\RestRequest\Request
- это объектное представление запроса в API Zagruzka.com. (может не все поддерживать, см. TODO).
Пример того, как создается класс:
new Request( $id, $this->login, $this->password, $destAddr, new RequestMessage( new RequestMessageType(), new RequestMessageData( $text, $this->serviceName ) ), "https://myservice.com/callback_for_sms" );
Response
Для того чтобы Response приходил, НЕОБХОДИМО указать notifyUrl в Request. Так же вы можете прописать такой URL в личном кабинете Zagruzka.com.
Можно настроить этот эндпоинт на запись метрик с помощью вашего коннектора - предлагаются три метода на выбор:
- у вас есть только строка в json:
processResponseByJson
- ваш фреймворк вам уже все разобрал в массив:
processResponseByArray
- ваш фреймворк вам может все разобрать в объект
RabotaRu\ZagruzkaConnector\RestResponse\Response
библиотеки - тогда воспользуйтесьprocessResponse
Что еще можно расширять
Можно заменить транспорт — достаточно реализовать интерфейс RabotaRu\ZagruzkaConnector\Transport\ITransport
, тогда при инстанцировании коннектора вы можете передать его.
Транспорт отправляет в заданный URL данные с помощью метода POST в формате json, так что его можно использовать и, например, для отправки событий в статистику.
Можно написать свой коллектор метрик — достаточно реализовать интерфейс RabotaRu\ZagruzkaConnector\Metrics\IMetric
, тогда при инстанцировании коннектора вы можете передать его.
Можно отнаследовать коннектор и переопределить в нем константы-префиксы метрик. Создавать свою реализацию IRestConnector
или переопределять метод sendByRest
в ZagruzkaConnector
не рекомендуется, так как именно там инкапсулирована вся логика записи метрик.