Sendios SDK
Якщо ви використовуєте PHP, ви можете підключити нашу бібліотеку.
Наразі доступна лише PHP SDK, iншi мови програмування не підтримуються.
Для встановлення скористайтеся:
composer require sendios/php-sdk
Для авторизації:
$clientId = 123;
$clientToken = 'a1s2d3f4g5h6j7k8l';
$sendios = new \Sendios\SendiosSdk($clientId, $clientToken);
Send email
Для відправки системних та тригерних листів:
$email = '[email protected]'; // for matching or creating user
$projectId = 1; // sendios
$typeId = 1; // mail type id
$categoryId = $sendios->push->getCategorySystem(); // system or trigger
$letterData = [
'some' => 'hi',
'letter' => 'John',
'variables' => '!',
];
$sendios->push->send($typeId, $categoryId, $projectId, $email, [], $letterData, []);
# response: {"queued":true}
Також є можливість додати метадані для трекінгу:
// Your data, that will be sent with our webhooks
$meta = [
'tracking_id' => 72348234,
];
Check email
Щоб валідувати пошту користувача:
$result = $sendios->email->check('[email protected]');
Provide the user with an ID on your product
Щоб надати користувачеві ідентифікатор, який використовується на вашому продукті, або, як ми його називаємо, client_user_id, використовуйте:
$email = '[email protected]';
$projectId = 1;
$clientUserId = 1234;
$sendios->clientUser->create($email, $projectId, $clientUserId);
Add and update user data (custom user fields)
За допомогою цього запиту ви можете передати інформацію, унікальну для вашого продукту, додати або оновити дані користувача:
$fields = [
'name' => 'John Dou',
'gender' => 'm', // m or f
'age' => 21, // int
'photo' => 'http://moheban-ahlebeit.com/images/Face-Wallpaper/Face-Wallpaper-26.jpg',//image url
'ak' => 'FFZxYfCfGgNDvmZRqnELYqU7',//Auth key
'vip' => 1, //int
'language' => 'es', //ISO 639-1
'country' => 'esp', //ISO 3166-1 alpha-3 or ISO 3166-1 alpha-2
'platform_id' => $sendios->user->getPlatformDesktop(),
'list_id' => 1,
'status' => 0, //int
'partner_id' => 1, //int
// Your own custom fields may be here
// allowed only int values
'custom_field' => 542, //int
'sessions_count' => 22, //int
'session_last' => 1498137772, //unix timestamp
];
За ідентифікатором користувача (user_id):
$user = $sendios->user->getById(892396028);
$result = $sendios->user->setUserFieldsByUser($user, $fields);
// $result is a boolean status
За електронною поштою користувача та ідентифікатором Проєкту (email, project_id):
$result = $sendios->user->setUserFieldsByEmailAndProjectId('[email protected]', 2, $fields);
// $result is a boolean status
Get user custom fields
Щоб отримати загальну або додаткову інформацію про вашого користувача:
// by user_id
$result = $sendios->user->getUserFieldsByEmailAndProjectId('[email protected]', 1);
// or
// by email and project_id
$result = $sendios->user->getUserFieldsByUser($user);
/*
Returns [
'user' => [
'id' => 892396028,
'project_id' => 1,
...
],
'custom_fields' => [
'sessions_count' => 22,
...
],
]
*
Erase user
Щоб додати користувача до черги на видалення:
$email = '[email protected]';
$projectId = 1;
$result = $sendios->user->erase($email, $projectId);
Користувача буде видалено через 24 години.
Unsubscribe
Для відписки на сторінці налаштувань у вашому продукті використовуйте метод addBySettings:
$projectId = 1;
$user = $sendios->user->getByEmail('[email protected]', $projectId);
$unsub = $sendios->unsub->addBySettings($user);
Щоб здійснити відписку у вашій адмін-панелі, використовуйте метод addByClient:
$projectId = 1;
$user = $sendios->user->getByEmail('[email protected]', $projectId);
$unsub = $sendios->unsub->addByClient($user);
Unsubscribe by admin
$projectId = 123;
$result = $sendios->unsub->unsubByAdmin('[email protected]',$projectId);
/*
success result
array(1) {
'unsub' => bool(true)
}
error result (already unsubscribed)
array(1) {
'unsub' => bool(false)
}
*/
Subscribe back
Щоб поновити повну підписку:
$projectId = 1;
$user = $sendios->user->getByEmail('[email protected]', $projectId);
// Make DELETE to /unsub/USER_ID
$unsub = $sendios->unsub->subscribe($user);
Check is unsubscribed
Щоб перевірити наявність відписки у користувача.
За ідентифікатором користувача (user_id):
$projectId = 1;
$user = $sendios->user->getByEmail('[email protected]', $projectId);
if($user) {
$unsub = $sendios->unsub->isUnsubByUser($user); // Returns false(if not unsubscribed) or unsub data
}
За електронною поштою користувача та ідентифікатором проєкту (email, project_id):
$projectId = 1;
$unsub = $sendios->unsub->isUnsubByEmailAndProjectId('[email protected]', $projectId); // Returns false(if not unsubscribed) or unsub data
У разі позитивної відповіді, ви отримаєте інформацію про відписки.
Get unsubscribe reason
Щоб дізнатись причину відписки:
$projectId = 123;
$result = $sendios->unsub->getUnsubscribeReason('[email protected]',$projectId);
//user does not unsubscribed
array(1) {
'result' => bool(false)
}
//reason for the unsubscription is unknown
array(1) {
'result' => string(7) "Unknown"
}
//success result
array(1) {
'result' => string(5) "admin"
}
Загалом, бувають такі причини відписки:
- Settings_all_types – користувач відписався від розсилки у налаштуваннях продукту;
- fbl – користувач поскаржився на розсилку в поштовику;
- admin – користувача відписали через адмін-панель;
- client – користувача було відписано у вашій системі або його обліковий запис було видалено з продукту;
- header – користувач відписався від розсилки через поштовик із використанням заголовка листа;
- invalid – користувача відписано через невалідність його електронної адреси;
- Settings_oneclick – користувач здійснив повну відписку в одне натискання через лист;
- page – користувача відписано через сторінку Sendios;
- mx_invalid – користувача було відписано через невалідний поштовий домен;
- distance_bounce – користувача було відписаний через те, що його електронної адреси не існує.
Get unsubscribed list
Повертає список відписаних користувачів станом на вказану дату:
$result = $sendios->unsub->getByDate('2018-06-10');
//Response example
return [
0 => [
'email' => "[email protected]",
'project_id' => 9,
'client_user_id' => NULL,
'source_id' => 9,
'created_at' => "2018-02-27 20:31:45"
],
// ...
];
Для отримання списку користувачів посторінково:
$date = '2018-06-10'; // required
$page = 1; // required
$pageSize = 100; // optional
$result = $sendios->unsub->getListByDate($date, $page, $pageSize);
//Response example
return [
[
'pages' => 6,
'current_page' => 1,
'size' => 100,
'data' => [
'email' => "[email protected]",
'project_id' => 9,
'client_user_id' => NULL,
'source_id' => 9,
'created_at' => "2018-02-27 20:31:45"
],
//...
]
];
Unsubscribe users from email types
Для того, щоб відписати користувача від конкретного типу листа:
$sendios->unsubTypes->addTypes($user, [4, 5]);
Subscribe users back to email types
Щоб поновити підписку на конкретний тип листа:
$sendios->unsubTypes->removeTypes($user, [4, 5]);
Для поновлення підписки на всі типи листів:
$sendios->unsubTypes->removeAll($user);
Get current unsubscribes
Щоб отримати список типів листів, від яких відписано користувача:
$projectId = 1;
$user = $sendios->user->getByEmail('[email protected]', $projectId);
$list = $sendios->unsubTypes->getList($user);
//returns array {
// [0] =>
// array(3) {
// 'type_id' =>
// int(3)
// 'unsubscribed' =>
// bool(false)
// 'name' =>
// string(11) "Popular now"
// },
// ...
//}
Online status
Щоб оновити online-статус користувача за його ідентифікатором:
$sendios->user->setOnlineByUser($user, new \DateTime());
Щоб оновити online-статус користувача за його електронною адресою:
$sendios->user->setOnlineByEmailAndProjectId('[email protected]', 1, new \DateTime());
Payments
Для передачі інформації щодо платежів користувача:
$startDate = 1509617696; //Payment date or subscription start date
$expireDate = 1609617696; //Subscription end date (optional, default false)
$paymentCount = 14; //Pay count (optional, default false)
$paymentType = 1; //Pay type (optional, default false)
$amount = 20; //Pay amount (optional, default false)
$mailId = 12244; //Mail id (optional, default false)
За ідентифікатором користувача (user_id):
$user = $sendios->user->getById(892396028);
$result = $sendios->user->createPaymentByUser($user, $startDate, $expireDate, $paymentType, $amount, $mailId);
// $result is a boolean status
За електронною поштою користувача та ідентифікатором проєкту (email, project_id):
$result = $sendios->user->cratePaymentByEmailAndProjectId('[email protected]', 2, $startDate, $expireDate, $paymentType, $amount, $mailId);
// $result is a boolean status
Handle an error
За замовчуванням усі повідомлення про помилки (крім InvalidArgumentException у конструкторі Sendios) збираються в error_log. Якщо ви бажаєте, щоб компонент видавав винятки, просто змініть режим обробника:
$sendios = new Sendios($clientId, $clientHash);
$sendios->errorHandler->setErrorMode(SendiosErrorHandler::MODE_EXCEPTION);
Set curl options for а single request
$sendios = new Sendios($clientId, $clientHash);
$sendios->request->setOption(CURLOPT_TIMEOUT, 2);
Reset permanent curl options
$sendios->request->resetPermanentOptions();
Set curl options for multiple requests (permanent)
$sendios->request->setOption(CURLOPT_TIMEOUT_MS, 2000, true);
Get а response
(if $result === false)
$response = $sendios->request->getLastResponse()->getData();
//array(3) {
// 'errorCode' =>
// int(409)
// 'message' =>
// string(16) "Validation error"
// 'errors' =>
// array(1) {
// 'field_name' =>
// string(29) "Can't find user field: field2"
// }
//}