unisender api + bitrix
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
<?php /* TODO: Получаем список email активных юзеров и засылаем их в sendpulse */ require($_SERVER["DOCUMENT_ROOT"] . '/bitrix/modules/main/include/prolog_before.php'); // Получаем список email всех активных юзеров global $USER; $filter = Array( "ACTIVE" => "Y", ); $email = Array(); $rsUsers = CUser::GetList(($by = "NAME"), ($order = "desc"), $filter); while ($arUser = $rsUsers->Fetch()) { $phone = $arUser['PERSONAL_PHONE']; $phone = !is_null($phone) ? trim($phone) : null; $fields = [ "email" => $arUser['EMAIL'], "name" => $arUser['NAME'], "phone" => $phone ]; array_push($email, $fields); } $apiKey = 'КЛЮЧ API'; // Массив с исключениями $array = Array( "retailcrm.com", "retailcrm.ru", "sberbank.ru", "matveevs.ru", ); /** * Ищем если совпадение * * @param string $value Искомое значение * @param Array $array Массив исключений * * @return Boolean Результат */ function strposArray($value, $array) { $res = false; foreach ($array as $key) { $res = strpos($value, $key) ? true : $res; } return $res; } // удаляем с исключением покупателей foreach ($email as $key => $value) { if (strposArray($value['email'], $array)) { unset($email[$key]); } } // чистим поля покупателей для подписчиков)) unset($rsUsers, $arUser, $value, $key, $phone, $fields); $emailSub = Array(); // Subscribe CModule::IncludeModule('subscribe'); $rsUsers = CSubscription::GetList(Array(), $filter, false); while ($arUser = $rsUsers->Fetch()) { $fields = [ "email" => $arUser['EMAIL'], ]; array_push($emailSub, $fields); } // удаляем с исключением подписчиков foreach ($emailSub as $key => $value) { if (strposArray($value['email'], $array)) { unset($emailSub[$key]); } } unset($value, $key); function addSubscribe($bookID, $array, $mode = false) { global $apiKey; $query = [ 'list_ids' => $bookID, 'fields[email]' => $array['email'], 'api_key' => $apiKey, 'double_optin' => 3, 'tags' => urlencode("Added using API by positron-it.ru") ]; if ($mode) { $query['fields[Name]'] = $array['name']; $query['fields[phone]'] = $array['phone']; } $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $query); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_URL, 'https://api.unisender.com/ru/api/subscribe?format=json'); $result = curl_exec($ch); } foreach ($email as $key => $value) { addSubscribe('id книги с покупателями', $value, true); } unset($key, $value); foreach ($emailSub as $key => $value) { addSubscribe('id книги с подписчиками', $value); } |