fotografde/notification-library

该软件包最新版本(1.1.1)没有可用的许可证信息。

一个简单的库,用于将事件推送到队列,由通知服务处理

1.1.1 2018-08-28 17:00 UTC

This package is auto-updated.

Last update: 2024-09-17 08:32:26 UTC


README

Build Status

通知库

一个简单的库,用于将数据推送到由通知服务处理

设置

  • 添加到您的(项目文件夹)/composer.json中

    "require": {
        ...
        "fotografde/notification-library": "*"
    }
    
  • 运行

    (project folder)> composer update
    
  • 如有必要,修改配置文件

    (project folder)> cp vendor/GetPhoto/notification-library/config/notification.php.default vendor/GetPhoto/notification-library/config/notification.php
    OR
    (project folder)> cp src/vendors/GetPhoto/notification-library/config/notification.php.default src/vendors/GetPhoto/notification-library/config/notification.php
    

    **或(用于本地配置)**

    (project folder)> cp config/notification.php.default config/notification.php
    
  • 并配置它

    'events_table' => 'EventQueue',
    'region' => '...',
    'endpoint' => '...',
    'credential_key' => '...',
    'credential_secret' => '...',
    'notification_service_url' => '...',
    'method_add_trigger' => 'api/trigger',
    

事件

用法

  • 导入通知类

    use GetPhoto\Notification;
  • 将数据传递给推送事件的方法

    (new Notification)->pushEvent($data);
  • 示例

    • 用户登录

      $data = [
          'eventTypeId' => 'User.Login',
          'dateTime' => '20170117 232900',
          'userId' => '1',
          'photographerId' => '1',
      ];
      (new Notification)->pushEvent($data);
    • 新的联系人表

      $data = [
          'eventTypeId' => 'Contactsheet.Created',
          'dateTime' => '20170115 080005',
          'userId' => '5',
          'photographerId' => '2',
          'contactsheetId' => 'a0shfd0a9shf9',
      ];
      (new Notification)->pushEvent($data);

触发器

用法

  • 导入触发器类

    use GetPhoto\Trigger;
  • 实例化一个新对象,添加选项并保存

    //Trigger ID => Unique name for your trigger
    //Trigger type => EventBased, Scheduled, TimeBased or Manual
    //Trigger action => Action to be executed
    $trigger = new Trigger('trigger id', 'trigger description', 'trigger type', 'trigger action');
    
    //optional methods
    $trigger->addSubscriptionKey('value');
    $trigger->addDelay('value');
    $trigger->addWhen('value');
    
    //auxiliar methods
    $trigger->createActionParameterConstant('constant', 'value');
    $trigger->createActionParameterVariable('variable', 'value');
    $trigger->createActionParameterMethod('variable', 'method', ['arguments', ...]);
    
    //optional methods that can be used multiple times
    $trigger->addActionParameter($parameter);
    $trigger->addParameter(['data key' => 'data value', ...]);
    
    $trigger->save();

样本

手动触发器

通过API请求执行的触发器

  • 返回所有用户的登录信息的JSON

    问题:我们需要一个触发器来向用户的配置页面提供所有登录信息。该配置页面将在用户请求登录数据时发出API请求。

    解决方案:我们有返回事件的方法,可以根据给定的参数过滤事件。在这种情况下,我们想要根据事件类型ID和用户ID过滤。我们可以从订阅中获取用户ID,因此它是一个变量。由于我们已经知道事件类型ID,我们定义了一个常量。

    $trigger = new Trigger('UserLogins.v1', 'Shows all logins from an user', 'Manual', 'method::returnJson');
    $trigger->addSubscriptionKey('UserId');
    
    $userId = $trigger->createVariable('userId', 'userId');
    $eventTypeId = $trigger->createConstant('eventTypeId', 'User.Login');
    $eventsMethod = $trigger->createMethod('returnJson', [$userId, $eventTypeId]);
    $events = $trigger->createVariable('events', $eventsMethod);
    
    $trigger->addActionParameter($events);
    $trigger->save();

    结果

    • 触发器ID:UserLogins.v1
    • 触发器描述:显示用户的全部登录信息
    • 类型:手动
    • 订阅密钥:UserId
    • 操作:方法::returnJson
    • 操作参数:事件::{{returnEvents||userId::[[userId]]||eventTypeId::User.Login}}

    用法

    http://notification-service-url/queryEvents/UserLogins.v1/subscriber-id