vpmv/marketo-client

Marketoo REST API 的 PHP 客户端。

1.0 2022-02-07 09:51 UTC

This package is auto-updated.

Last update: 2024-09-24 12:37:53 UTC


README

Travis Downloads Packagist

本包提供了一个与 Marketo REST API 交互的接口。

代码是对 eventfarm/marketo-client 的改进版分支。内部架构已被简化,性能得到提升,并添加了辅助函数,以便更好地集成到您的消费应用程序中。

安装

$ composer require vpmv/marketo-client

或者,将以下行添加到您的 composer.json 文件中

{
    "require": {
        "vpmv/marketo-client": "dev-master"
    }
}
$ composer install

实现细节

项目默认值

为了使您能够尽可能轻松地启动,我们提供了默认的 REST 客户端和 Marketo 提供程序的实现,以便与该包一起使用。

您可以通过使用构造函数参数 TokenRefreshCallback 来扩展客户端,以实现您自己的接口来缓存访问令牌。

Guzzle REST 客户端

我们的 REST 客户端实现了 PSR-7 HTTP 消息接口。

您可以使用提供的 GuzzleRestClient,或者拥有自己的实现我们的 RestClientInterface

MarketoProvider

我们的默认 Marketo OAuth2 提供程序是 Marketo Provider 库。

您可以使用提供的 MarketoProvider,或者使用您自己的实现我们的 MarketoProviderInterface

示例客户端实现

<?php
namespace App;

use VPMV\Marketo\Oauth\AccessToken;
use VPMV\Marketo\MarketoClient;

class DemoMarketoAPI extends Marketo
{
    public function __cosntruct() {
        parent::__construct($this->getMarketoClient());
    }

    public function getMarketoClient():MarketoClient
    {
        if (empty($this->client)) {
            $this->client = MarketoClient::with(
                'CLIENT_ID',
                'CLIENT_SECRET',
                'BASE_URL',
                $this->getRefreshTokenFromCache(),               
                $this->tokenRefreshCallback
            );
        }
        return $this->client;
    }
    
    private function getRefreshTokenFromCache(): ?AccessToken {
        // get token from cache
        return new AccessToken('my_token', 300, 1642768705);
        // or return null
    }

    public function tokenRefreshCallback(AccessToken $token)
    {
        // store the token
    }
}

用法

使用 Marketo 辅助接口是完全可选的。它所做的只是将 MarketoClient 封装到 API 端点抽象中。

注意:在某些实现中,在全面审查期间已发生更改,可能无法按以下描述工作!

活动

获取活动

文档

返回活动记录的列表。有关完整选项列表,请参阅文档。

public function getCampaigns(array $options = array())

<?php
$demoMarketo = new DemoMarketoAPI();

$options = [
  "programName" => "My Marketo Program",
  "batchSize" => 10
];

$campaigns = $demoMarketo->campaigns()->getCampaigns($options);
// getCampaigns() can also be called without options.
// $campaigns = { ... }

触发活动

文档

将一组潜在客户传递给触发活动以通过活动的流程。有关完整选项列表,请参阅文档。

  • 必须将 campaignId 和包含 input 键的选项数组(映射到包含潜在客户数据的数组)传递给 triggerCampaign()

public function triggerCampaign(int $campaignId, array $options)

<?php
$demoMarketo = new DemoMarketoAPI();

$campaignId = 1029;
$options = [
    "input" => [
        "leads" => [
            [
                "id" => 1234
            ]
        ]
    ]//, additional options
];

$campaign = $demoMarketo->campaigns()->triggerCampaign($campaignId, $options);
// $campaign = { ... }

潜在客户字段

获取潜在客户字段

文档

返回目标实例中潜在客户对象的相关信息,包括通过 API 交互的所有可用字段的列表。

public function getLeadFields(array $options = array())

<?php
$demoMarketo = new DemoMarketoAPI();
$leadFields = $demoMarketo->leadFields()->getLeadFields();
// $leadFields = { ... }

潜在客户

创建或更新潜在客户

文档

将潜在客户列表同步到目标实例。有关完整选项列表,请参阅文档。

  • 必须将包含 input 键的选项数组(映射到包含潜在客户数据的数组)传递给 createOrUpdateLeads()

public function createOrUpdateLeads(array $options)

默认情况下,Marketo 将同步操作类型(action)设置为 createOrUpdate,并将 lookupField 设置为 email。如果使用这些默认值

  • 电子邮件不是必需的;如果潜在客户数组中不包含电子邮件,Marketo将创建一个没有电子邮件的潜在客户。
  • 当包含电子邮件时,Marketo将搜索具有该电子邮件的现有潜在客户。如果找到,Marketo将更新找到的潜在客户的数据;如果没有找到,Marketo将使用发送的数据创建一个新的潜在客户。
<?php
$demoMarketo = new DemoMarketoAPI();

$options = [
    "input" => [
        [
            "email" => "email1@example.com",
            "firstName" => "Example1First",
            "lastName" => "Example1Last"
        ],
        [
            "email" => "email2@example.com",
            "firstName" => "Example2First",
            "lastName" => "Example2Last"
        ]
    ]//, additional options
];

$leads = $demoMarketo->leads()->createOrUpdateLeads($options);
// $leads = { ... }

更新潜在客户的程序状态

文档

更改目标程序中潜在客户列表的程序状态。请参阅文档以获取完整选项列表。

  • 必须传递一个programId和一个包含一个input键(映射到一个包含潜在客户数据数组的数组)和一个status键(映射到程序状态)的选项数组给updateLeadsProgramStatus()

public function updateLeadsProgramStatus(int $programId, array $options)

<?php
$demoMarketo = new DemoMarketoAPI();

$programId = 1234;
$options = [
    "input" => [
        [
            "id" => 1111
        ]
    ],
    "status" => "Registered"
];

$leads = $demoMarketo->leads()->updateLeadsProgramStatus($programId, $options);
// $leads = { ... }

按程序获取潜在客户

文档

检索指定程序中的潜在客户列表。请参阅文档以获取完整选项列表。

  • 必须传递一个programIdgetLeadsByProgram()

public function getLeadsByProgram(int $programId, array $options = array())

<?php
$demoMarketo = new DemoMarketoAPI();

$programId = 1234;
$options = [
    "fields" => 'firstName,lastName,email,middleName,mktoIsPartner';
];

$leads = $demoMarketo->leads()->getLeadsByProgram($programId, $options);
// getLeadsByProgram() can also be called without options.
// $leads = { ... }

潜在客户分区

获取潜在客户分区

文档

返回目标实例中可用的分区列表。请参阅文档以获取完整选项列表。

public function getPartitions(array $options = array())

<?php
$demoMarketo = new DemoMarketoAPI();

$partitions = $demoMarketo->partitions()->getPartitions();
// $partitions = { ... }

程序

获取程序

文档

检索目标实例中可访问的程序列表。请参阅文档以获取完整选项列表。

public function getPrograms(array $options = array())

<?php
$demoMarketo = new DemoMarketoAPI();

$programs = $demoMarketo->programs()->getPrograms();
// $programs = { ... }

状态

获取状态

文档

根据提供的名称检索通道。请参阅文档以获取完整选项列表。

  • 必须传递一个programChannelgetStatuses()

public function getStatuses(string $programChannel, array $options = array())

<?php
$demoMarketo = new DemoMarketoAPI();

$programChannel = "Live Event";

$programs = $demoMarketo->statuses()->getStatuses($programChannel);
// $programs = { ... }