2017 © Pedro Peláez
 

library smart-emailing-v3

Wrapper for SmartEmailing API

image

pion/smart-emailing-v3

Wrapper for SmartEmailing API

  • Tuesday, May 15, 2018
  • by pionl
  • Repository
  • 4 Watchers
  • 3 Stars
  • 1,029 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 10 Versions
  • 803 % Grown

The README.md

Smart Emailing API v3

API wrapper for Smart emailing API., (*1)

img php coverage CI Total Downloads Latest Stable Version Latest Unstable Version, (*2)

Installation

Requirements, (*3)

This package requires PHP 7.4 and higher., (*4)

Install via composer, (*5)

composer require pion/smart-emailing-v3

Usage

Create an Api instance with your username and apiKey., (*6)

use SmartEmailing\v3\Api;

...
$api = new Api('username', 'api-key');

then use the $api with desired method/component., (*7)

// Creates a new instance
$api->importRequest()->addContact(new Contact('test@test.cz'))->send();

or, (*8)

// Creates a new instance
$import = $api->importRequest();
$contact = new Contact('test@test.cz');
$contact->setName('Martin')->setNameDay('2017-12-11 11:11:11');
$import->addContact($contact);

// Create new contact that will be inserted in the contact list
$contact2 = $import->newContact('test2@test.cz');
$contact2->setName('Test');

// Create new contact that will be inserted in the contact list
$import->newContact('test3@test.cz')->setName('Test');
$import->send();

Error handling

When sending any request you can catch the error exception RequestException., (*9)

use SmartEmailing\v3\Exceptions\RequestException;

try {
    $api->ping();
} catch (RequestException $exception) {
    $exception->response(); // to get the real response, will hold status and message (also data if provided)
    $exception->request(); // Can be null if the request was 200/201 but API returned error status text
}

Supports

Advanced docs

Import contacts

The import holds 2 main data points: 1. Settings $import->settings()->setUpdate(true) 2. Contacts $import->newContact() : Contact, $import->contacts() : array and $import->addContact($contact) : self, (*10)

Example of usage is above., (*11)

Contact

The import holds 3 main data points: 1. All data accessible via public properties. Fluent set method has basic validation and date convert logic 2. CustomFields $contact->customFields() for adding new fields 3. ContactLists $contact->contactLists() for adding new contact list, (*12)

See source code for all methods/properties that you can use, (*13)

CustomFields and ContactLists

Uses a data holder with create/add/get/isEmpty/toArray/jsonSerialize methods., (*14)

$field = $contact->customFields()->create(12, 'test')
$list = $contact->contactLists()->create(12, 'confirmed')

Import orders

The import holds 2 main data points: 1. Settings $import->settings()->setSkipInvalidOrders(true) 2. Orders $import->newOrder() : Order, $import->orders() : array and $import->addOrder($order) : self, (*15)

Example of usage is above., (*16)

CustomFields

The customFields uses a wrapper for each request related to custom-fields. To create a new instance call $api->customFields(). On this object you can create any request that is currently implemented. See below., (*17)

Create

Quick way that will create request with required customField, (*18)

use SmartEmailing\v3\Models\CustomFieldDefinition;

...
// Create the new customField and send the request now.
$customField = new CustomFieldDefinition('test', CustomFieldDefinition::TEXT);
$data = $api->customFields()->create($customField);

 // Get the customField in data
$customFieldId = $data->id;

or, (*19)

$request = $api->customFields()->createRequest(); // You can pass the customField object

// Setup customField
$customField = new CustomField();
$request->setCustomField($customField);

// Setup data
$customField->setType(CustomField::RADIO)->setName('test');

// Send the request
$response = $request->send();
$data = $response->data();
$customFieldId = $data->id;

Search / List

API DOCS, (*20)

Enables searching threw the custom fields with a filter/sort support. Results are limited by 100 per page. The response returns meta data (MetaDataInterface) and an array of Models\CustomFieldDefinition by calling $response->data()., (*21)

Response

  • data() returns an array Models\CustomFieldDefinition
  • meta() returns a stdClass with properties (defined in MetaDataInterface)

Creates a search request and setups only $page or $limit. The full response from api with customfield_options_url or, (*22)

$data = $api->customFields()->list();

/** @var \SmartEmailing\v3\Models\CustomFieldDefinition $customField */
foreach ($data as $customField) {
    echo $customField->id;
    echo $customField->name;
    echo $customField->type;
}

Advanced search - filter/sort/etc

$request = $api->customFields()->searchRequest(1);

// Search by name
$request->filter()->byName('test');
$request->sortBy('name');

// Send the request
$response = $request->send();
$data = $response->data();
Request methods
  • Getters are via public property
    • page
    • limit
    • select
    • expand
    • sort
  • Fluent Setters (with a validation) - more below.
  • filter() returns a Filters setup - more below
expandBy(string : $expand)

Using this parameter, "customfield_options_url" property will be replaced by "customfield_options" contianing expanded data. See examples below For more information see "/customfield-options" endpoint., (*23)

Allowed values: "customfield_options", (*24)

select(string : $select)

Comma separated list of properties to select. eg. "?select=id,name" If not provided, all fields are selected., (*25)

Allowed values: "id", "name", "type", (*26)

sortBy(string : $sort)

Comma separated list of sorting keys from left side. Prepend "-" to any key for desc direction, eg. "?sort=type,-name", (*27)

Allowed values: "id", "name", "type", (*28)

setPage(int : $page)

Sets the current page, (*29)

limit(int : $limit)

Sets the limit of result in single query, (*30)

filter()

Allows filtering custom fields with multiple filter conditions., (*31)

  • Getters are via public property
    • name
    • type
    • id
  • Fluent Setters (with a validation)
    • byName($value)
    • byType($value)
    • byId($value)

Get by name

Runs a search query with name filter and checks if the given name is found in customFields. Returns false or the CustomFields\CustomField. Uses send logic (throws RequestException)., (*32)

// Can throw RequestException - uses send.
if ($customField = $api->customFields()->getByName('name')) {
    return $customField->id;
} else {
    throw new Exception('Not found!', 404);
}

Send / Transactional emails

The implementation of API call send/transactional-emails-bulk: https://app.smartemailing.cz/docs/api/v3/index.html#api-Custom_campaigns-Send_transactional_emails, (*33)

Full transactional email example

$transactionEmail = $api->transactionalEmailsRequest();

$credentials = new SenderCredentials();
$credentials->setFrom('from@example.com');
$credentials->setReplyTo('to@example.com');
$credentials->setSenderName('Jean-Luc Picard');

$recipient = new Recipient();
$recipient->setEmailAddress('kirk@example.com');

$replace1 = new Replace();
$replace1->setKey('key1');
$replace1->setContent('content1');

$replace2 = new Replace();
$replace2->setKey('key2');
$replace2->setContent('content2');

$templateVariable = new TemplateVariable();
$templateVariable->setCustomData([
    'foo' => 'bar',
    'products' => [
        ['name' => 'prod1', 'desc' => 'desc1'],
        ['name' => 'prod1', 'desc' => 'desc2']
    ]
]);

$attachment1 = new Attachment();
$attachment1->setContentType('image/png');
$attachment1->setFileName('picture.png');
$attachment1->setDataBase64('data1');

$attachment2 = new Attachment();
$attachment2->setContentType('image/gif');
$attachment2->setFileName('sun.gif');
$attachment2->setDataBase64('data2');

$task = new Task();
$task->setRecipient($recipient);
$task->addReplace($replace1);
$task->addReplace($replace2);
$task->setTemplateVariables($templateVariable);
$task->addAttachment($attachment1);
$task->addAttachment($attachment2);

$messageContents = new MessageContents();
$messageContents->setTextBody('text_body');
$messageContents->setHtmlBody('html_body');
$messageContents->setSubject('subject');

$transactionEmail->setTag('tag_tag');
$transactionEmail->setEmailId(5);
$transactionEmail->setSenderCredentials($credentials);
$transactionEmail->addTask($task);
$transactionEmail->setMessageContents($messageContents);

$transactionEmail->send();

Send / Bulk custom emails

The implementation of API call send/custom-emails-bulk: https://app.smartemailing.cz/docs/api/v3/index.html#api-Custom_campaigns-Send_bulk_custom_emails, (*34)

Full custom email example

$transactionEmail = $api->customEmailsBulkRequest();

$credentials = new SenderCredentials();
$credentials->setFrom('from@example.com');
$credentials->setReplyTo('to@example.com');
$credentials->setSenderName('Jean-Luc Picard');

$recipient = new Recipient();
$recipient->setEmailAddress('kirk@example.com');

$replace1 = new Replace();
$replace1->setKey('key1');
$replace1->setContent('content1');

$replace2 = new Replace();
$replace2->setKey('key2');
$replace2->setContent('content2');

$templateVariable = new TemplateVariable();
$templateVariable->setCustomData([
    'foo' => 'bar',
    'products' => [
        ['name' => 'prod1', 'desc' => 'desc1'],
        ['name' => 'prod1', 'desc' => 'desc2']
    ]
]);

$task = new Task();
$task->setRecipient($recipient);
$task->addReplace($replace1);
$task->addReplace($replace2);
$task->setTemplateVariables($templateVariable);

$transactionEmail->setTag('tag_tag');
$transactionEmail->setEmailId(5);
$transactionEmail->setSenderCredentials($credentials);
$transactionEmail->addTask($task);

$transactionEmail->send();

Send / Bulk custom sms

The implementation of API call send/custom-sms-bulk: https://app.smartemailing.cz/docs/api/v3/index.html#api-Custom_campaigns-Send_bulk_custom_SMS, (*35)

Full send sms example

$bulkCustomSms = $api->customSmsBulkRequest();

$recipient = new Recipient();
$recipient->setEmailAddress('kirk@example.com');
$recipient->setCellphone('+420777888777');

$replace1 = new Replace();
$replace1->setKey('key1');
$replace1->setContent('content1');

$replace2 = new Replace();
$replace2->setKey('key2');
$replace2->setContent('content2');

$task = new Task();
$task->setRecipient($recipient);
$task->addReplace($replace1);
$task->addReplace($replace2);

$bulkCustomSms->setTag('tag_tag');
$bulkCustomSms->setSmsId(5);
$bulkCustomSms->addTask($task);

$bulkCustomSms->send();

Upgrading

See UPGRADE.md for how to upgrade to newer versions., (*36)

Contribution or overriding

See CONTRIBUTING.md for how to contribute changes. All contributions are welcome., (*37)

smart-emailing-v3 was written by Martin Kluska and is released under the MIT License., (*38)

Copyright (c) 2016 - 2022 Martin Kluska and contributors, (*39)

The Versions

15/05 2018

dev-master

9999999-dev

Wrapper for SmartEmailing API

  Sources   Download

MIT

The Requires

 

The Development Requires

15/05 2018

v0.1.7

0.1.7.0

Wrapper for SmartEmailing API

  Sources   Download

MIT

The Requires

 

The Development Requires

15/05 2018

dev-confirmation-request

dev-confirmation-request

Wrapper for SmartEmailing API

  Sources   Download

MIT

The Requires

 

The Development Requires

15/05 2018

v0.1.6

0.1.6.0

Wrapper for SmartEmailing API

  Sources   Download

MIT

The Requires

 

The Development Requires

14/08 2017

v0.1.5

0.1.5.0

Wrapper for SmartEmailing API

  Sources   Download

MIT

The Requires

 

The Development Requires

15/03 2017

v0.1.4

0.1.4.0

Wrapper for SmartEmailing API

  Sources   Download

MIT

The Requires

 

The Development Requires

23/02 2017

v0.1.3

0.1.3.0

Wrapper for SmartEmailing API

  Sources   Download

MIT

The Requires

 

The Development Requires

21/02 2017

v1.1.2

1.1.2.0

Wrapper for SmartEmailing API

  Sources   Download

MIT

The Requires

 

The Development Requires

21/02 2017

0.1.1

0.1.1.0

Wrapper for SmartEmailing API

  Sources   Download

MIT

The Requires

 

The Development Requires

17/02 2017

v0.1.0

0.1.0.0

Wrapper for SmartEmailing API

  Sources   Download

MIT

The Requires

 

The Development Requires