1. Go to this page and download the library: Download citilink/expert-sender-api library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
citilink / expert-sender-api example snippets
// ...
use GuzzleHttp\Client;
use Citilink\ExpertSenderApi\RequestSender;
use Citilink\ExpertSenderApi\ExpertSenderApi;
use Citilink\ExpertSenderApi\Model\SubscribersRequest\SubscriberInfo;
use Citilink\ExpertSenderApi\Model\SubscribersRequest\Options;
use Citilink\ExpertSenderApi\Model\SubscribersPostRequest\Identifier;
use Citilink\ExpertSenderApi\Enum\SubscribersPostRequest\Mode;
// ...
$httpClient = new Client(['base_uri' => 'https://api.esv2.com/']);
$requestSender = new RequestSender($httpClient, 'api-key');
$api = new ExpertSenderApi($requestSender);
$email = '[email protected]';
$listId = 25;
$subscriberData = new SubscriberInfo(Identifier::createEmail($email), $listId);
$subscriberInfo->setFirstName('John');
$subscriberInfo->setLastName('Doe');
$subscriberInfo->setVendor('vendor');
$subscriberInfo->setTrackingCode('tracking code');
// another sets
$addResult = $api->subscribers()->addOrEdit([$subscriberData]);
if ($addResult->isOk()) {
// ... make some stuff
} else {
$errorMessages = $addResult->getErrorMessages();
$errorCode = $addResult->getErrorCode();
}
// ...
use GuzzleHttp\Client;
use Citilink\ExpertSenderApi\RequestSender;
use Citilink\ExpertSenderApi\ExpertSenderApi;
// ...
// api endpoint always the same
$apiEndpoint = 'https://api.esv2.com/';
// http client must implements Guzzle's ClientInterface
$httpClient = new Client(['base_uri' => $apiEndpoint]);
// request sender object must implements RequestSenderInterface
$requestSender = new RequestSender($httpClient, 'api-key');
// now we have api object and can access to all methods of api
$api = new ExpertSenderApi($requestSender);
// ...
use Citilink\ExpertSenderApi\Model\TransactionalPostRequest\Receiver;
use Citilink\ExpertSenderApi\Model\TransactionalPostRequest\Snippet;
use Citilink\ExpertSenderApi\Model\TransactionalPostRequest\Attachment;
// ...
// message id is ceiver::createById(862547);
// snippets are optional
$snippets = [];
$snippets[] = new Snippet('name1', 'value1');
$snippets[] = new Snippet('name2', 'value2');
// attachments are optional
$attachments = [];
$attachments[] = new Attachment('filename.jpeg', base64_encode('content'), 'image/jpeg');
// should response has guid of sent message
$returnGuid = true;
$response = $api->messages()->sendTransactionalMessage($messageId, $receiverById, $snippets, $attachments, $returnGuid);
if ($response->isOk()) {
// guid available, only if returnGuid=true in request
$guid = $response->getGuid();
} else {
// handle errors
}
// ...
use Citilink\ExpertSenderApi\Model\TransactionalPostRequest\Receiver;
use Citilink\ExpertSenderApi\Model\TransactionalPostRequest\Snippet;
use Citilink\ExpertSenderApi\Model\TransactionalPostRequest\Attachment;
// ...
// message id is ceiver::createById(862547);
// snippets are optional
$snippets = [];
$snippets[] = new Snippet('name1', 'value1');
$snippets[] = new Snippet('name2', 'value2');
// attachments are optional
$attachments = [];
$attachments[] = new Attachment('filename.jpeg', base64_encode('content'), 'image/jpeg');
// should response has guid of sent message
$returnGuid = true;
$response = $api->messages()->sendSystemTransactionalMessage($messageId, $receiverById, $snippets, $attachments, $returnGuid);
if ($response->isOk()) {
// guid available, only if returnGuid=true in request
$guid = $response->getGuid();
} else {
// handle errors
}
// ...
use Citilink\ExpertSenderApi\Model\TriggersPostRequest\Receiver;
// ...
$triggerMessageId = 25;
$response = $api->messages()->sendTriggerMessage(
$triggerMessageId,
[
Receiver::createFromEmail('[email protected]'),
Receiver::createFromId(384636),
]
);
if ($response->isOk()) {
// do some stuff
} else {
// handle errors
}
$subscriberEmail = '[email protected]';
// get short info about subscriber
$shortInfoResponse = $api->subscribers()->getShort($subscriberEmail);
// get long info about subscriber
$longInfoResponse = $api->subscribers()->getLong($subscriberEmail);
// get full info about subscriber
$fullInfoResponse = $api->subscribers()->getFull($subscriberEmail);
// get events history
$eventsHistoryResponse = $api->subscribers()->getEventsHistory($subscriberEmail);
// ...
use Citilink\ExpertSenderApi\Model\SubscribersPostRequest\Options;
use Citilink\ExpertSenderApi\Model\SubscribersPostRequest\Identifier;
use Citilink\ExpertSenderApi\Enum\SubscribersPostRequest\Mode;
// ...
$listId = 25;
// to add new subscriber you can use one of identifiers email or phone (but not others, read documentation
// for more information). You can use phone identifier, if sms channel is turned on, otherwise api
// return 400 response.
$emailIdentifier = Identifier::createEmail('[email protected]');
$phoneIdentifier = Identifier::createPhone('89159109933');
// if you want to edit subscriber you can use more identifiers
$emailMd5Indentifier = Identifier::createEmailMd5('md5');
$customSubscriberIdentifier = Identifier::createCustomSubscriberId('cuscom-subscriber-id');
$idIdentifier = Identifier::createId(100);
$identifierToUse = $emailIdentifier;
$subscriberData = new SubscriberInfo($identifierToUse, $listId);
$subscriberData->setFirsname('firstname');
// another sets...
// if you want to get additonal data on response, or verbose errors, you can create object
// with type Options. It's optional
$returnAdditionalDataOnResponse = true;
$useVerboseErrors = true;
$options = new Options($returnAdditionalDataOnResponse, $useVerboseErrors);
// if you want use another adding mode, create it. It's optional too and by default "AddAndUpdate"
$mode = Mode::ADD_AND_UPDATE();
// you can add more than one subscriber to request
$addOrEditResponse = $api->subscribers()->addOrEdit([$subscriberData], $options, $mode);
if ($addOrEditResponse->isOk()) {
// do something if everything is ok
} else {
// handle errors
}
$listId = 25;
$subscriberId = 5839274;
$subscriberEmail = '[email protected]';
// delete by subscriber's ID from list
$api->subscribers()->deleteById($subscriberId, $listId);
// delete by subscriber's email from every list
$api->subscribers()->deleteByEmail($subscriberEmail);
// ...
use Citilink\ExpertSenderApi\Enum\RemovedSubscribersGetRequest\RemoveType;
use Citilink\ExpertSenderApi\Enum\RemovedSubscribersGetRequest\Option;
// ...
// you can choose list ids
$listIds = [1, 2, 3];
// and/or you can choose remove types (reasons)
$removeTypes = [RemoveType::OPT_OUT_LINK(), RemoveType::USER_UNKNOWN()];
// and/or start date
$startDate = new \DateTime('2015-01-01');
// and/or end date
$endDate = new \DateTime('2016-01-01');
// and/or option. If specified, additional subscriber information will be returned
$option = Option::CUSTOMS();
$response = $api->subscribers()->getRemovedSubscribers($listIds, $removeTypes, $startDate, $endDate, $option);
foreach ($response->getRemovedSubscribers() as $removedSubscriber) {
$email = $removedSubscriber->getEmail();
// subscriber data present, only if Customs option specified
$subscriberData = $removedSubscriber->getSubscriberData();
$id = $subscriberData->getId();
$properties = $subscriberData->getProperties();
}
// every parameter is optional
$listIds = [1,2,3];
$startDate = new \DateTime('2017-01-01');
$endDate = new \DateTime('2017-02-02');
$response = $api->subscribers()->getSnoozedSubscribers($listIds, $startDate, $endDate);
if ($response->isOk()) {
foreach ($response->getSnoozedSubscribers() as $snoozedSubscriber) {
echo $snoozedSubscriber->getEmail();
echo $snoozedSubscriber->getListId();
echo $snoozedSubscriber->getSnoozedUntil();
}
} else {
// handle errors
}
// Unique subscriber identifier
$subscriberId = 12;
// Number of weeks the subscription will be snoozed for
$snoozeWeeks = 20;
// List ID
$listId = 23;
// Snooze subscriber with id #12 for 20 weeks in List #23
$snoozedByIdResponse = $api->subscribers()->snoozeSubscriberById($subscriberId, $snoozeWeeks, $listId);
if ($snoozedByIdResponse->isOk()) {
// ok
} else {
// handle errors
}
// subscriber's email
$subscriberEmail = '[email protected]';
// Number of weeks the subscription will be snoozed for
$snoozeWeeks = 10;
// Snooze subscriber with email '[email protected]' for 20 weeks in all lists
$snoozedByEmailResponse = $api->subscribers()->snoozeSubscriberByEmail($subscriberEmail, $snoozeWeeks);
if ($snoozedByEmailResponse->isOk()) {
// ok
} else {
// handle errors
}
// ...
use Citilink\ExpertSenderApi\Enum\DataTablesGetDataPostRequest\Direction;
use Citilink\ExpertSenderApi\Enum\DataTablesGetDataPostRequest\Operator;
use Citilink\ExpertSenderApi\Model\WhereCondition;
use Citilink\ExpertSenderApi\Model\DataTablesGetDataPostRequest\OrderByRule;
// ...
// limit is optional, and null by default
$limit = 30;
$response = $api->dataTables()->getRows(
// table name to get data from
'table-name',
// array of column names to get from table
['ColumnName1', 'ColumnName2'],
// where conditions to filter data
[
new WhereCondition('ColumnName1', Operator::EQUAL(), 'value'),
new WhereCondition('ColumnName2', Operator::LIKE(), 'string'),
new WhereCondition('ColumnName3', Operator::GREATER(), 24),
new WhereCondition('ColumnName4', Operator::LOWER(), 10.54),
],
// sorting rules
[
new OrderByRule('ColumnName1', Direction::ASCENDING()),
new OrderByRule('ColumnName1', Direction::DESCENDING()),
],
// and limit
$limit
);
if ($response->isOk()) {
// if everything is okay, you can get csv reader and fetch data
$csvReader = $response->getCsvReader();
foreach ($csvReader->fetchAll() as $row) {
// fetched data will have column names in keys and values ... will be values
echo $row['ColumnName1'];
echo $row['ColumnName2'];
}
} else {
// handle errors
}
// ...
use Citilink\ExpertSenderApi\Enum\DataTablesGetDataPostRequest\Operator;
use Citilink\ExpertSenderApi\Model\WhereCondition;
// ...
$response = $api->dataTables()->getRowsCount(
'table-name',
[
new WhereCondition('Column1', Operator::EQUAL(), 12),
new WhereCondition('Column2', Operator::GREATER(), 12.53),
new WhereCondition('Column3', Operator::LOWER(), -0.56),
new WhereCondition('Column5', Operator::LIKE(), 'string'),
]
);
if ($response->isOk()) {
$count = $response->getCount();
} else {
// handle errors
}
$response = $api->dataTables()->clearTable('table-name');
if ($response->isOk()) {
// table has been cleared
} else {
// handle errors
}
// ...
use Citilink\ExpertSenderApi\Model\Column;
use Citilink\ExpertSenderApi\Model\DataTablesAddMultipleRowsPostRequest\Row;
// ...
$response = $api->dataTables()->addRows(
// table name to insert rows
'table-name',
// rows to insert
[
new Row(
[
// fields to set
new Column('ColumnName1', 10),
new Column('ColumnName2', 10.5),
new Column('ColumnName3', 'string'),
]
),
new Row(
[
new Column('ColumnName1', 25),
new Column('ColumnName2', 0.45),
new Column('ColumnName3', 'value'),
]
),
]
);
if ($response->isOk()) {
// make some stuff
} else {
// handle errors
echo $response->getErrorCode();
foreach ($response->getErrorMessages() as $errorMessage) {
echo $errorMessage->getMessage();
}
}
// ...
use Citilink\ExpertSenderApi\Model\Column;
// ...
$response = $api->dataTables()->updateRow(
// table name
'table-name',
// primary keys to find row
[
new Column('ColumnName1', 12),
new Column('ColumnName2', 'value'),
],
// fields to change
[
new Column('ColumnName3', 25),
new Column('ColumnName4', 'string'),
new Column('ColumnName5', 25.4)
]
);
if ($response->isOk()) {
// make some stuff
} else {
// handle errors
echo $response->getErrorCode();
foreach ($response->getErrorMessages() as $errorMessage) {
echo $errorMessage->getMessage();
}
}
// ...
use Citilink\ExpertSenderApi\Model\Column;
// ...
$response = $api->dataTables()->deleteOneRow(
// table name to update rows
'table-name',
// primary keys to find row
[
new Column('ColumnName1', 12),
new Column('ColumnName2', 'value'),
]
);
if ($response->isOk()) {
// make some stuff
} else {
// handle errors
echo $response->getErrorCode();
foreach ($response->getErrorMessages() as $errorMessage) {
echo $errorMessage->getMessage();
}
}
// ...
use Citilink\ExpertSenderApi\Model\DataTablesDeleteRowsPostRequest\Filter;
use Citilink\ExpertSenderApi\Enum\DataTablesDeleteRowsPostRequest\FilterOperator;
// ...
$response = $api->dataTables()->deleteRows(
'table-name',
[
new Filter('Column1', FilterOperator::EQ(), 12),
new Filter('Column2', FilterOperator::GE(), 56.7),
new Filter('Column3', FilterOperator::EQ(), 'string'),
new Filter('Column4', FilterOperator::GT(), 89.234),
new Filter('Column5', FilterOperator::LT(), 87.3),
new Filter('Column6', FilterOperator::LE(), 98),
]
);
if ($response->isOk()) {
$count = $response->getCount();
} else {
// handle errors
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.