kristenlk / marketo-client
Marketo REST API 的 PHP 客户端。
Requires
- php: >=7.0.0
- guzzlehttp/guzzle: ~6.0|~5.0|~4.0
- kristenlk/oauth2-marketo: 1.5
- psr/http-message: ^1.0
Requires (Dev)
- codeclimate/php-test-reporter: dev-master
- mockery/mockery: *
- phpunit/phpunit: ~5.4
- squizlabs/php_codesniffer: ~2.6
This package is not auto-updated.
Last update: 2024-09-14 20:09:37 UTC
README
此包提供了一个与 Marketo REST API 交互的接口。
安装
$ composer require eventfarm/marketo-client
或者将以下行添加到您的 composer.json
文件中
{ "require": { "eventfarm/marketo-client": "dev-master" } }
$ composer install
项目默认设置
为了尽可能容易地让您启动,我们提供了默认的 REST 客户端和 Marketo 提供程序的实现,以便与该包一起使用。
- 我们选择使用 Guzzle 来发送 HTTP 请求
- 我们选择使用 The PHP League 的 Oauth 客户端 和我的 Marketo 提供程序 用于 Marketo 身份验证和令牌刷新。
Guzzle REST 客户端
我们的 REST 客户端实现了 PSR-7 HTTP 消息接口。
您可以使用提供的 GuzzleRestClient,或者使用您自己的实现,该实现符合我们的 RestClientInterface。
KristenlkMarketoProvider
我们的默认 Marketo 提供程序是我的 Marketo 提供程序 库。
您可以使用提供的 KristenlkMarketoProvider,或者使用您自己的实现,该实现符合我们的 MarketoProviderInterface。
示例客户端实现
<?php namespace App; use EventFarm\Marketo\Oauth\AccessToken; use EventFarm\Marketo\MarketoClient; use EventFarm\Marketo\TokenRefreshInterface; class DemoMarketoClient implements TokenRefreshInterface { public function getMarketoClient():MarketoClient { if (empty($this->marketo)) { $this->marketo = MarketoClient::withDefaults( 'ACCESS_TOKEN', 'TOKEN_EXPIRES_IN', // when the current access token expires (in seconds) 'TOKEN_LAST_REFRESH', // when the current access token was last refreshed (as a UNIX timestamp) 'CLIENT_ID', 'CLIENT_SECRET', 'BASE_URL', $this // TokenRefreshInterface ); } return $this->marketo; } public function tokenRefreshCallback(AccessToken $token) { // CALLBACK FUNCTION TO STORE THE REFRESHED $token TO PERSISTENCE LAYER } }
用法
活动
获取活动
文档 返回活动记录列表。有关完整选项列表,请参阅文档。
public function getCampaigns(array $options = array())
<?php $demoMarketoClient = new DemoMarketoClient()->getMarketoClient(); $options = [ "programName" => "My Marketo Program", "batchSize" => 10 ]; $campaigns = $demoMarketoClient->campaigns()->getCampaigns($options); // getCampaigns() can also be called without options. // $campaigns = { ... }
触发活动
文档 将一组潜在客户传递给触发活动以通过活动的流程运行。有关完整选项列表,请参阅文档。
- 必须传递
campaignId
和一个包含input
键的数组(映射到包含潜在客户数据的数组)到triggerCampaign()
。
public function triggerCampaign(int $campaignId, array $options)
<?php $demoMarketoClient = new DemoMarketoClient()->getMarketoClient(); $campaignId = 1029; $options = [ "input" => [ "leads" => [ [ "id" => 1234 ] ] ]//, additional options ]; $campaign = $demoMarketoClient->campaigns()->triggerCampaign($campaignId, $options); // $campaign = { ... }
潜在客户字段
获取潜在客户字段
文档 返回关于目标实例中潜在客户对象的元数据,包括通过 API 交互的所有可用字段列表。
public function getLeadFields(array $options = array())
<?php $demoMarketoClient = new DemoMarketoClient()->getMarketoClient(); $leadFields = $demoMarketoClient->leadFields()->getLeadFields(); // $leadFields = { ... }
潜在客户
创建或更新潜在客户
文档 同步潜在客户列表到目标实例。有关完整选项列表,请参阅文档。
- 必须传递一个包含
input
键的数组(映射到包含潜在客户数据的数组)到createOrUpdateLeads()
。
public function createOrUpdateLeads(array $options)
默认情况下,Marketo 将同步操作类型(action
)设置为 createOrUpdate
,并将 lookupField
设置为 email
。如果使用这些默认值
- 电子邮件不是必需的;如果在一个潜在客户数组中未包含电子邮件,Marketo 将创建一个不带电子邮件的潜在客户。
- 当包含电子邮件时,Marketo 将搜索具有该电子邮件的现有潜在客户。如果找到,Marketo 将使用发送的数据更新找到的潜在客户;如果没有找到,Marketo 将使用发送的数据创建一个新潜在客户。
<?php $demoMarketoClient = new DemoMarketoClient()->getMarketoClient(); $options = [ "input" => [ [ "email" => "email1@example.com", "firstName" => "Example1First", "lastName" => "Example1Last" ], [ "email" => "email2@example.com", "firstName" => "Example2First", "lastName" => "Example2Last" ] ]//, additional options ]; $leads = $demoMarketoClient->leads()->createOrUpdateLeads($options); // $leads = { ... }
更新潜在客户的计划状态
文档 修改目标计划中一系列潜在客户的计划状态。请参考文档以获取完整选项列表。
- 必须传递一个
programId
以及一个包含input
键(映射到一个包含潜在客户数据的数组)和status
键(映射到计划状态)的选项数组到updateLeadsProgramStatus()
。
public function updateLeadsProgramStatus(int $programId, array $options)
<?php $demoMarketoClient = new DemoMarketoClient()->getMarketoClient(); $programId = 1234; $options = [ "input" => [ [ "id" => 1111 ] ], "status" => "Registered" ]; $leads = $demoMarketoClient->leads()->updateLeadsProgramStatus($programId, $options); // $leads = { ... }
按计划获取潜在客户
文档 获取指定计划中的潜在客户列表。请参考文档以获取完整选项列表。
- 必须传递一个
programId
到getLeadsByProgram()
。
public function getLeadsByProgram(int $programId, array $options = array())
<?php $demoMarketoClient = new DemoMarketoClient()->getMarketoClient(); $programId = 1234; $options = [ "fields" => 'firstName,lastName,email,middleName,mktoIsPartner'; ]; $leads = $demoMarketoClient->leads()->getLeadsByProgram($programId, $options); // getLeadsByProgram() can also be called without options. // $leads = { ... }
潜在客户分区
获取潜在客户分区
文档 返回目标实例中可用的分区列表。请参考文档以获取完整选项列表。
public function getPartitions(array $options = array())
<?php $demoMarketoClient = new DemoMarketoClient()->getMarketoClient(); $partitions = $demoMarketoClient->partitions()->getPartitions(); // $partitions = { ... }
计划
获取计划
文档 从目标实例检索可访问的计划列表。请参考文档以获取完整选项列表。
public function getPrograms(array $options = array())
<?php $demoMarketoClient = new DemoMarketoClient()->getMarketoClient(); $programs = $demoMarketoClient->programs()->getPrograms(); // $programs = { ... }
状态
获取状态
文档 根据提供的名称检索频道。请参考文档以获取完整选项列表。
- 必须传递一个
programChannel
到getStatuses()
。
public function getStatuses(string $programChannel, array $options = array())
<?php $demoMarketoClient = new DemoMarketoClient()->getMarketoClient(); $programChannel = "Live Event"; $programs = $demoMarketoClient->statuses()->getStatuses($programChannel); // $programs = { ... }