Библиотека предназначена для отправки сообщений посредством сервиса Zagruzka.com.
Сообщения отправляются посредством REST-протокола сервиса Zagruzka, подробности того, что означают поля в
объекте Request
- см. в документации
к сервису.
Список нереализованных фич (будут доделываться по запросу):
- 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");
Можно использовать хуки для дополнительной обработки в библиотеке (отправка событий статистики, логирование). Для этого надо реализовать соответствующие интерфейсы.
RestPreSendHook
- выполняется перед отправкой данных, должны возвращать значение true или false. Если такой хук вернет false - отправки не будет
RestPostSendHook
- выполняется после отправки данных, ничего не возвращает
Класс 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 приходил, НЕОБХОДИМО указать 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
не рекомендуется, так как именно там инкапсулирована вся логика записи метрик.