rabotaru/zagruzka-connector

Загрузка 连接器

v1.1.1 2022-04-06 06:19 UTC

This package is auto-updated.

Last update: 2024-09-06 11:53:58 UTC


README

该库旨在通过Zagruzka.com服务发送消息。

消息通过Zagruzka服务的REST协议发送,关于Request对象中字段含义的详细信息,请参阅服务文档

待办事项

未实现功能列表(将根据需求完成)

  1. Viber和Whatsapp消息(message/data/instantContent)
  2. Push通知的额外参数
  3. CascadeChainLink
  4. ScheduleInfo
  5. 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 类是Zagruzka.com API请求的对象表示。(可能不支持所有功能,请参阅 待办事项)。

创建类的示例

new Request(
            $id,
            $this->login,
            $this->password,
            $destAddr,
            new RequestMessage(
                new RequestMessageType(),
                new RequestMessageData(
                    $text,
                    $this->serviceName
                )
            ),
            "https://myservice.com/callback_for_sms"
        );

响应

要接收响应,必须在请求中指定notifyUrl。您还可以在Zagruzka.com个人控制台中指定此类URL。

您可以使用连接器配置此端点以记录指标,以下提供三种选择

  • 您只有json字符串: processResponseByJson
  • 您的框架已经将其解析为数组: processResponseByArray
  • 您的框架可能将其解析为库的 RabotaRu\ZagruzkaConnector\RestResponse\Response 对象 - 此时请使用 processResponse

还可以扩展什么

可以替换传输方式 - 只需实现 RabotaRu\ZagruzkaConnector\Transport\ITransport 接口,然后在实例化连接器时传递它。传输通过POST方法以json格式将数据发送到指定的URL,因此它可以用于发送事件到统计信息。

可以编写自己的指标收集器 - 只需实现 RabotaRu\ZagruzkaConnector\Metrics\IMetric 接口,然后在实例化连接器时传递它。

可以继承连接器并重定义其中的指标前缀常量。不建议创建自己的 IRestConnector 实现或重定义 ZagruzkaConnector 中的 sendByRest 方法,因为所有记录指标的逻辑都封装在那里。