favoriteeats/laravel-calq-http

Laravel 对 Calq HTTP API 的包装

dev-master / 1.0.x-dev 2015-07-28 22:01 UTC

This package is not auto-updated.

Last update: 2024-10-02 09:49:02 UTC


README

Laravel-Calq-HTTP 是 Calq.io HTTP API 的 API 包装器。当不需要或不想与 Calq Javascript 客户端进行客户端集成时,此软件包非常有用。如果需要客户端集成,请考虑使用官方的 Calq PHP 客户端

##先决条件

  • PHP >= 5.5.9
  • Laravel ~5.1
  • Composer(推荐,但不是必需的)
  • Calq 账户和应用程序 write_key

安装

要安装 Laravel Calq HTTP

  • composer require favoriteeats/laravel-calq-http 或将 "favoriteeats/laravel-calq-http": "dev-master" 添加到 composer.json 文件中 "require" 部分
  • FavoriteEats\CalqHTTP\CalqHTTPServiceProvider::class 添加到 config/app.php "providers" 数组中
  • 然后,运行 composer installcomposer update
  • 可选地,使用 php artisan vendor:publish --provider=FavoriteEats\Laravel-Calq-HTTP\CalqHTTPServiceProvider 导出配置文件,并编辑 config/calqhttp.php,或者(更好的方法)将预期的配置值添加到 .env 文件中

用法

有关详细信息,请参阅 Calq HTTP API 文档

//First, specify the HTTP client you want to use. The service provider defaults to Guzzle,
// and Guzzle is the only client currently supported.

$calqHTTPApi = new FavoriteEats\CalqHTTP\API\GuzzleCalqHTTPAPI();

//Then, instantiate the main Calq class.
$calq = new CalqHTTP($calqHTTPApi, '[Calq write key]');

//If the CalqHTTP instance is resolved through the IoC container then the Guzzle client and write key are
// automatically composed with the object as a singleton for you

use FavoriteEats\CalqHTTP\CalqHTTP;

class SomeController extends Controller {

    protected $calq;
    
    public function __construct(CalcHTTP $calq)
    {
        $this->$calq = $calq;
    }
    
}

使用 /track 端点

//Now create a payload corresponding to the type of request you want to make. Payloads include:
// CalqTrackPayload (/track endpoint), CalqProfilePayload (/profile endpoint),
// and CalqIdentityPayload (/transfer endpoint). An array of CalqTrackPayloads
// is used in /batch endpoint operations.

$payload = new FavoriteEats\CalqHTTP\Payloads\CalqTrackPayload([
    12345,                                             //actor (required); unique identifier for the user 
    'some_action_name',                                //action_name (required); name of the action you're tracking
    [                                                  //properties (required), [] allowed; custom or special properties
        'time_on_page' => 65.2,
        '$view_url' => 'http://www.example.com/somepage',
        '$device_mobile' => true
    ],
    '192.168.10.100',                                  //ip_address (optional); actor's ip address
    Carbon::now()->tz('utc')->format('Y-m-d\TH:i:s\Z') //timestamp (optional); timestamp of event, example using Carbon
]);

$response = $calq->track($payload);

echo $response->getBody(); //response is a GuzzleHttp\Message\Response object

//Payload attributes may also be set individually.
$payload = new FavoriteEats\CalqHTTP\Payloads\CalqTrackPayload();
$payload->setActor(12345);
$payload->setActionName('some_action_name');
$payload->setProperties(['test'=>true]);

在单个批处理中发送多个有效载荷

//Send multiple payloads together as follows...

foreach($userAction as $action) {
    $payload = new FavoriteEats\CalqHTTP\Payloads\CalqTrackPayload([
        'actor' => $action->user->id, 
        'action_name' => $action->name,
        'properties' => [
            '$view_url' => $visit->pageUrl
        ]
    ]);
    
    $calq->batch($payload);
}

$response = $calq->track() //sends all batched CalqTrackPayload payloads

使用 /profile 端点

$payload = new FavoriteEats\CalqHTTP\Payloads\CalqProfilePayload([
    12345,
    [
        'height' => '5ft 11in',
        'weight' => '185lbs',
        'favorite_color' => 'blue'
        '$full_name' => 'Snoopy Dawg',
        '$gender' => 'male',
        '$age' => 29
    ]
]);
$response = $calq->profile($payload);

使用 /transfer 端点

$payload = new FavoriteEats\CalqHTTP\Payloads\CalqIdentityPayload([12346, 12345]);
$response = $calq->transfer($payload);

高级

您还可以使用 $payload->verify() 方法在发送到 API 之前验证有效载荷是否已设置所有必需的字段。

贡献

请在问题页面上报告任何问题。欢迎提交拉取请求。

许可证

MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件