goran-popovic/email-octopus-laravel

Email Octopus SDK for Laravel

v1.0.1 2024-03-30 19:49 UTC

This package is auto-updated.

Last update: 2024-08-30 20:37:39 UTC


README

Email Octopus SDK for Laravel 是一个 PHP API 客户端,允许您与 Email Octopus 提供的 API 交互。使用此包,您可以轻松地将用户订阅/取消订阅您的通讯,触发自动化并查看有关您的活动的各种数据。

注意

此存储库包含最适合与 Laravel 框架一起使用的代码。如果您想以框架无关的方式使用 PHP API 客户端,请查看 goran-popovic/email-octopus-php 存储库。

PHP 版本支持

  • >= 7.2.5

Laravel 版本支持

  • >= 7.29.0

安装

您可以通过 composer 安装此包

composer require goran-popovic/email-octopus-laravel

如果您想将配置文件发布到 config/email-octopus.php,请运行

php artisan vendor:publish --tag="email-octopus-config"

入门

API 密钥

在能够使用 SDK 之前,您需要创建一个 Email Octopus API 密钥

.env 设置

按照上述说明创建密钥后,编辑您的 .env 文件并将 API 密钥添加到其中

EMAIL_OCTOPUS_API_KEY=YOUR_API_KEY

门面

此包将注册一个门面,您可以在应用程序中使用它来执行 API 调用,只需确保在文件顶部包含它即可

use GoranPopovic\EmailOctopus\Facades\EmailOctopus;

基本实现

然后,您可以像这样与 Email Octopus 的 API 交互

use GoranPopovic\EmailOctopus\Facades\EmailOctopus;

$response = EmailOctopus::lists()->createContact('00000000-0000-0000-0000-000000000000', [
    'email_address' => 'goran.popovic@geoligard.com', // required
    'fields' => [ // optional
        'FirstName' => 'Goran',
        'LastName' => 'Popović',
    ],
    'tags' => [ // optional
        'lead'
    ],
    'status' => 'SUBSCRIBED', // optional
]);

echo $response['status']; // SUBSCRIBED

配置

其他可用的配置设置包括设置 API 的基本 URI、超时和连接超时。对于大多数用例,默认值就足够好了,但如果您想,您可以在配置文件(config/email-octopus)或通过使用环境变量中设置这些参数。

用法

此包装通常遵循官方 Email Octopus API 文档 中的逻辑和分类。所有路由和每个路由的可用参数都在那些文档中有更详细的说明。

所有方法都分配到 3 个主要资源中

Automation 资源

您可以在仪表板 URL 中找到当前正在查看的自动化的 ID,如下所示:https://emailoctopus.com/automations/<automationId>

start(string $automationId, array $params)

EmailOctopus::automations()->start('00000000-0000-0000-0000-000000000000', [ 
    'list_member_id' => '00000000-0000-0000-0000-000000000000', 
]);

Campaign 资源

您可以在仪表板 URL 中找到当前正在查看的活动 ID,如下所示:https://emailoctopus.com/reports/campaign/<campaignId>

get(string $campaignId)

EmailOctopus::campaigns()->get('00000000-0000-0000-0000-000000000000');

getAll(array $params = [])

EmailOctopus::campaigns()->getAll([
    'limit' => 1, // optional 
    'page' => 2 // optional 
]);

getReportSummary(string $campaignId)

EmailOctopus::campaigns()->getReportSummary('00000000-0000-0000-0000-000000000000');

getReportLinks(string $campaignId)

EmailOctopus::campaigns()->getReportLinks('00000000-0000-0000-0000-000000000000');

getReportBounced(string $campaignId, array $params)

EmailOctopus::campaigns()->getReportBounced('00000000-0000-0000-0000-000000000000', [
    'limit' => 1 // optional 
]);

getReportClicked(string $campaignId, array $params)

EmailOctopus::campaigns()->getReportClicked('00000000-0000-0000-0000-000000000000', [
    'limit' => 1 // optional 
]);

getReportComplained(string $campaignId, array $params)

EmailOctopus::campaigns()->getReportComplained('00000000-0000-0000-0000-000000000000', [
    'limit' => 1 // optional 
]);

getReportOpened(string $campaignId, array $params)

EmailOctopus::campaigns()->getReportOpened('00000000-0000-0000-0000-000000000000', [
    'limit' => 1 // optional 
]);

getReportSent(string $campaignId, array $params)

EmailOctopus::campaigns()->getReportSent('00000000-0000-0000-0000-000000000000', [
    'limit' => 1 // optional 
]);

getReportUnsubscribed(string $campaignId)

EmailOctopus::campaigns()->getReportUnsubscribed('00000000-0000-0000-0000-000000000000');

getReportNotClicked(string $campaignId, array $params)

EmailOctopus::campaigns()->getReportNotClicked('00000000-0000-0000-0000-000000000000', [
    'limit' => 1 // optional 
]);

getReportNotOpened(string $campaignId, array $params)

EmailOctopus::campaigns()->getReportNotOpened('00000000-0000-0000-0000-000000000000', [
    'limit' => 1 // optional 
]);

List 资源

要找到列表 ID,请转到您的 Email Octopus 仪表板,找到“列表”选项卡,通过单击其标题选择列表,然后在单个列表中打开时转到“设置”选项卡并从中复制 ID。或者,您可以在仪表板 URL 中找到列表或其他资源的 ID,如下所示:https://emailoctopus.com/lists/<listId>

get(string $listId)

EmailOctopus::lists()->get('00000000-0000-0000-0000-000000000000');

getAll(array $params = [])

EmailOctopus::lists()->getAll([
    'limit' => 1, // optional
    'page' => 2 // optional
]);

create(array $params)

EmailOctopus::lists()->create([
    'name' => 'Api test'
]);

update(string $listId, array $params)

EmailOctopus::lists()->update('00000000-0000-0000-0000-000000000000', [
    'name' => 'New name'
]);

delete(string $listId)

EmailOctopus::lists()->delete('00000000-0000-0000-0000-000000000000');

getAllTags(string $listId)

EmailOctopus::lists()->getAllTags('00000000-0000-0000-0000-000000000000');

getContact(string $listId, string $memberId)

EmailOctopus::lists()->getContact(
    '00000000-0000-0000-0000-000000000000', 
    '00000000-0000-0000-0000-000000000000', 
);

getAllContacts(string $listId, array $params = [])

EmailOctopus::lists()->getAllContacts('00000000-0000-0000-0000-000000000000', [
    'limit' => 1, // optional
    'page' => 2 // optional
]);

getSubscribedContacts(string $listId, array $params = [])

EmailOctopus::lists()->getSubscribedContacts('00000000-0000-0000-0000-000000000000', [
    'limit' => 1, // optional
    'page' => 2 // optional
]);

getUnsubscribedContacts(string $listId, array $params = [])

EmailOctopus::lists()->getUnsubscribedContacts('00000000-0000-0000-0000-000000000000', [
    'limit' => 1, // optional
    'page' => 2 // optional
]);

getContactsByTag(string $listId, string $listTag, array $params = [])

EmailOctopus::lists()->getContactsByTag('00000000-0000-0000-0000-000000000000', 'lead', [
    'limit' => 1
]);

createContact(string $listId, array $params)

EmailOctopus::lists()->createContact('00000000-0000-0000-0000-000000000000', [
    'email_address' => 'goran.popovic@geoligard.com', // required
    'fields' => [ // optional
        'FirstName' => 'Goran',
        'LastName' => 'Popović',
    ],
    'tags' => [ // optional
        'lead'
    ],
    'status' => 'SUBSCRIBED', // optional
]);

updateContact(string $listId, string $memberId, array $params)

注意:对于会员ID,您可以使用在仪表板URL中找到的列表联系人的ID:https://emailoctopus.com/lists/<listId>/contacts/<contactId>,或者列表联系人邮箱地址小写版本的MD5哈希值。

EmailOctopus::lists()->updateContact('00000000-0000-0000-0000-000000000000', md5('goran.popovic@geoligard.com'), [
    'email_address' => 'new_email_address@geoligard.com', // optional
    'fields' => [ // optional
        'FirstName' => 'New name',
        'LastName' => 'New lastname',
    ],
    'tags' => [ // optional
        'vip' => true,
        'lead' => false
    ],
    'status' => 'UNSUBSCRIBED', // optional
]);

deleteContact(string $listId, string $memberId)

注意:对于会员ID,您可以使用在仪表板URL中找到的列表联系人的ID:https://emailoctopus.com/lists/<listId>/contacts/<contactId>,或者列表联系人邮箱地址小写版本的MD5哈希值。

EmailOctopus::lists()->deleteContact(
    '00000000-0000-0000-0000-000000000000',
    md5('goran.popovic@geoligard.com')
);

createField(string $listId, array $params)

EmailOctopus::lists()->createField('00000000-0000-0000-0000-000000000000', [
    'label' => 'What is your hometown?',
    'tag' => 'Hometown',
    'type' => 'TEXT',
    'fallback' => 'Unknown' // optional
]);

updateField(string $listId, string $listFieldTag, array $params)

EmailOctopus::lists()->updateField('00000000-0000-0000-0000-000000000000', 'Hometown', [
    'label' => 'New label',
    'tag' => 'NewTag',
    'fallback' => 'New fallback' // optional
]);

deleteField(string $listId, string $listFieldTag)

EmailOctopus::lists()->deleteField('00000000-0000-0000-0000-000000000000', 'NewTag');

createTag(string $listId, array $params)

EmailOctopus::lists()->createTag('00000000-0000-0000-0000-000000000000', [
    'tag' => 'vip'
]);

updateTag(string $listId, string $listTag, array $params)

EmailOctopus::lists()->updateTag('00000000-0000-0000-0000-000000000000', 'vip', [
    'tag' => 'New Tag Name'
]);

deleteTag(string $listId, string $listTag)

EmailOctopus::lists()->deleteTag('00000000-0000-0000-0000-000000000000', 'New Tag Name');

变更日志

有关最近更改的更多信息,请参阅变更日志