klaviyo/sdk

此包已被废弃且不再维护。未建议替代包。

赋予创作者掌控命运的力量

1.0.3.20220329 2022-07-19 05:28 UTC

This package is auto-updated.

Last update: 2023-08-18 15:25:16 UTC


README

旧版通知

此 SDK 将于 2024-06-30 废弃并退役。

我们有一个新的 PHP SDK 与我们的 新 API 一起使用。

我们建议迁移到我们最新的 SDK

您可以在这里了解更多关于我们的 SDK 发布历史和支持信息。

有关我们新旧 API 的比较,请参阅此指南

Klaviyo PHP SDK

  • SDK 版本:1.0.3.20220329

有用的资源

设计与方法

此 SDK 是我们 API 的薄包装。请参阅我们的 API 参考,了解 API 行为的完整文档。

此 SDK 与上述与语言无关的资源具有相同的组织结构和命名约定,并对命名空间进行了一些更改,以符合 PHP 习惯(详细信息见附录)。

组织

此 SDK 按以下资源组织

  • 活动

  • 数据隐私

  • 列表段

  • 指标

  • 个人资料

  • 模板

  • 跟踪识别

安装

您可以使用 Packagist 或源代码安装此包。

选项 1:Packagist

您可以使用 Packagist 安装此库。

如果您已安装 composer,则可以运行: composer require klaviyo/sdk

选项 2:源代码

您还可以直接从源代码安装此库,无需使用 Packagist 包,方法如下

  1. 克隆此存储库
  2. 在存储库中运行 composer update

使用示例

<?php
require_once(__DIR__ . '/vendor/autoload.php');

use Klaviyo\Client;

$client = new Client(
    'YOUR_API_KEY', 
    $num_retries = 3, 
    $wait_seconds = 3);

$response = $client->Metrics->getMetrics();

重试行为

  • SDK 在可解析的错误上重试,即:速率限制(常见)和 Klaviyo 端的服务器错误(罕见)。
  • 上面示例中的关键字参数定义了重试行为
    • wait_seconds 表示每次重试等待的时间,单位为
    • 如果您想禁用重试,请设置 $num_retries = 0
    • 示例中填充了默认值
  • 无法解决的错误和超时后可解决的错误会抛出 ApiException,详细信息如下。

错误处理

当服务器返回无法解决的响应,或可解决的非2XX响应超时时,此SDK会抛出ApiException错误。

如果您想扩展SDK原生支持的错误处理功能,可以使用以下方法从ApiException对象中检索相应的属性

  • getCode() : int
  • getMessage() : str
  • getReponseBody() : bytes
  • getResponseHeaders() : string[]

例如

try { 
  $client.Metrics.getMetrics();
} catch (Exception $e) {
  if ($e->getCode() == SOME_INTEGER) {
    doSomething();
  }
}

操作和参数的完整列表

注意

  • 组织:资源组和函数按字母顺序列出,首先是资源名称,然后是OpenAPI摘要。操作摘要列在API参考的右侧栏中。这些摘要直接链接到API参考的相应部分。
  • 例如值/数据类型,以及参数是否必需/可选,请参考相应的API参考链接。
  • 某些关键字参数是API调用成功所需的,上面的API文档是有关哪些关键字参数必需的确切来源。
  • 关键字参数不包括在示例SDK调用中;相反,在适用的情况下,它们作为注释包含在每个SDK调用的上方。
  • JSON有效负载应以关联数组的形式传递
  • PHP的一个奇怪特性是,默认/可选参数必须按顺序传递,并且必须包含并设置为null,至少到您想使用的最后一个默认值为止。
    • 例如,如果某个函数具有以下可选参数someFunction($a=1, $b=2, $c=3),并且您只想设置$b,则必须传递someFunction($a=null, $b=$YOUR_VALUE)
    • 否则,如果您传递类似someFunction($b=$YOUR_VALUE)的内容,PHP实际上会将$YOUR_VALUE分配给参数$a,这是错误的。

活动

取消活动

## Positional Arguments

# $campaign_id | string


client->Campaigns->cancelCampaign($campaign_id);

克隆活动

## Positional Arguments

# $campaign_id | string
# $name | string
# $list_id | string


client->Campaigns->cloneCampaign($campaign_id, $name, $list_id);

创建新活动

## Positional Arguments

# $list_id | string
# $template_id | string
# $from_email | string
# $from_name | string
# $subject | string

## Keyword Arguments

# $name | string
# $use_smart_sending | bool
# $add_google_analytics | bool

client->Campaigns->createCampaign($list_id, $template_id, $from_email, $from_name, $subject);

获取活动信息

## Positional Arguments

# $campaign_id | string


client->Campaigns->getCampaignInfo($campaign_id);

获取活动接收者

## Positional Arguments

# $campaign_id | string

## Keyword Arguments

# $count | int
# $sort | string
# $offset | string

client->Campaigns->getCampaignRecipients($campaign_id);

获取活动

## Keyword Arguments

# $page | int
# $count | int

client->Campaigns->getCampaigns();

安排活动

## Positional Arguments

# $campaign_id | string
# $send_time | string


client->Campaigns->scheduleCampaign($campaign_id, $send_time);

立即发送活动

## Positional Arguments

# $campaign_id | string


client->Campaigns->sendCampaign($campaign_id);

更新活动

## Positional Arguments

# $campaign_id | string

## Keyword Arguments

# $list_id | string
# $template_id | string
# $from_email | string
# $from_name | string
# $subject | string
# $name | string
# $use_smart_sending | bool
# $add_google_analytics | bool

client->Campaigns->updateCampaign($campaign_id);

数据隐私

请求删除

## Keyword Arguments

# $body | array

client->DataPrivacy->requestDeletion();

列表和段

向列表添加成员

## Positional Arguments

# $list_id | string

## Keyword Arguments

# $body | array

client->ListsSegments->addMembers($list_id);

创建列表

## Positional Arguments

# $list_name | string


client->ListsSegments->createList($list_name);

删除列表

## Positional Arguments

# $list_id | string


client->ListsSegments->deleteList($list_id);

从所有电子邮件中排除配置文件

## Positional Arguments

# $email | string


client->ListsSegments->excludeGlobally($email);

获取全局排除和退订

## Keyword Arguments

# $reason | string
# $sort | string
# $count | int
# $page | int

client->ListsSegments->getGlobalExclusions();

获取列表的所有排除项

## Positional Arguments

# $list_id | string

## Keyword Arguments

# $marker | int

client->ListsSegments->getListExclusions($list_id);

获取列表信息

## Positional Arguments

# $list_id | string


client->ListsSegments->getListInfo($list_id);

检查配置文件是否在列表中

## Positional Arguments

# $list_id | string

## Keyword Arguments

# $body | array

client->ListsSegments->getListMembers($list_id);

检查配置文件是否在列表中且未被抑制

## Positional Arguments

# $list_id | string

## Keyword Arguments

# $body | array

client->ListsSegments->getListSubscriptions($list_id);

获取列表

client->ListsSegments->getLists();

获取列表和段成员

## Positional Arguments

# $list_or_segment_id | string

## Keyword Arguments

# $marker | int

client->ListsSegments->getMembers($list_or_segment_id);

检查配置文件是否在段中

## Positional Arguments

# $segment_id | string

## Keyword Arguments

# $body | array

client->ListsSegments->getSegmentMembers($segment_id);

从列表中移除配置文件

## Positional Arguments

# $list_id | string

## Keyword Arguments

# $body | array

client->ListsSegments->removeMembers($list_id);

订阅配置文件到列表

## Positional Arguments

# $list_id | string

## Keyword Arguments

# $body | array

client->ListsSegments->subscribe($list_id);

从列表中退订配置文件

## Positional Arguments

# $list_id | string

## Keyword Arguments

# $body | array

client->ListsSegments->unsubscribe($list_id);

更新列表名称

## Positional Arguments

# $list_id | string
# $list_name | string


client->ListsSegments->updateListName($list_id, $list_name);

指标

获取指标信息

## Keyword Arguments

# $page | int
# $count | int

client->Metrics->getMetrics();

查询事件数据

## Positional Arguments

# $metric_id | string

## Keyword Arguments

# $start_date | string
# $end_date | string
# $unit | string
# $measurement | string
# $where | string
# $by | string
# $count | int

client->Metrics->metricExport($metric_id);

获取特定指标的的事件

## Positional Arguments

# $metric_id | string

## Keyword Arguments

# $since | string
# $count | int
# $sort | string

client->Metrics->metricTimeline($metric_id);

获取所有指标的的事件

## Keyword Arguments

# $since | string
# $count | int
# $sort | string

client->Metrics->metricsTimeline();

用户资料

根据用户资料ID交换ID

## Keyword Arguments

# $body | array

client->Profiles->exchange();

获取用户资料

## Positional Arguments

# $person_id | string


client->Profiles->getProfile($person_id);

获取用户资料ID

## Keyword Arguments

# $email | string
# $phone_number | string
# $external_id | string

client->Profiles->getProfileId();

获取特定指标的特定用户资料的事件

## Positional Arguments

# $person_id | string
# $metric_id | string

## Keyword Arguments

# $since | string
# $count | int
# $sort | string

client->Profiles->profileMetricTimeline($person_id, $metric_id);

获取所有指标的特定用户资料的事件

## Positional Arguments

# $person_id | string

## Keyword Arguments

# $since | string
# $count | int
# $sort | string

client->Profiles->profileMetricsTimeline($person_id);

更新用户资料

## Positional Arguments

# $person_id | string

## Keyword Arguments

# $params | array&lt;string,mixed&gt;

client->Profiles->updateProfile($person_id);

模板

克隆模板

## Positional Arguments

# $template_id | string
# $name | string


client->Templates->cloneTemplate($template_id, $name);

创建新模板

## Positional Arguments

# $name | string
# $html | string


client->Templates->createTemplate($name, $html);

删除模板

## Positional Arguments

# $template_id | string


client->Templates->deleteTemplate($template_id);

获取所有模板

## Keyword Arguments

# $page | int
# $count | int

client->Templates->getTemplates();

渲染模板

## Positional Arguments

# $template_id | string

## Keyword Arguments

# $context | string

client->Templates->renderTemplate($template_id);

渲染并发送模板

## Positional Arguments

# $template_id | string
# $from_email | string
# $from_name | string
# $subject | string
# $to | string

## Keyword Arguments

# $context | string

client->Templates->sendTemplate($template_id, $from_email, $from_name, $subject, $to);

更新模板

## Positional Arguments

# $template_id | string

## Keyword Arguments

# $name | string
# $html | string

client->Templates->updateTemplate($template_id);

TrackIdentify

标识配置文件(旧版)

## Positional Arguments

# $data | string


client->TrackIdentify->identifyGet($data);

标识配置文件

## Positional Arguments

# $data | string


client->TrackIdentify->identifyPost($data);

跟踪配置文件活动(旧版)

## Positional Arguments

# $data | string


client->TrackIdentify->trackGet($data);

跟踪配置文件活动

## Positional Arguments

# $data | string


client->TrackIdentify->trackPost($data);

附录

限制

  • api_key 在全局级别设置:这意味着如果您管理多个商店,您需要在不同的环境中为每个商店运行不同的代码

命名空间

为了使SDK符合PHP的语法习惯,我们对以下命名空间进行了以下更改(相对于上面的语言无关资源,例如API文档、指南等)。

  • 非字母数字符号(空格、破折号、下划线、和等)从资源名称(标签)和函数名称(操作ID)中去除
  • 资源名称和函数名称使用camelCase
  • 注意:这不适用于参数名称

例如

  • Track & Identify 变为 TrackIdentify
  • get-campaigns 变为 getCampaigns
  • profile_id 保持不变

参数 & 参数

参数遵循与资源组和操作相同的命名约定。

我们坚持以下参数/参数的约定

  1. 所有参数都作为函数参数传递。
  2. 所有可选参数以及所有Body和FormData参数(包括必需的),都作为关键字参数传递。
  3. 所有在文档中标记为required的查询和路径参数都作为位置参数传递。
  4. 在执行任何操作时,不需要传递您的私人api_key,因为它在客户端实例化时已定义;在Track/Identify端点处仍需要指定公钥。