Інтеграція 1С-Бітрікс із SendPulse

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Інтеграція 1С-Бітрікс із SendPulse
Середня
~1-2 тижні
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Інтеграція 1С-Бітрікс з SendPulse

SendPulse — російський мультиканальний сервіс: email, SMS, Viber, push-сповіщення, чат-боти. Для проектів у Росії та СНД зручніший за Mailchimp: рублеві тарифи, підтримка російською, немає проблем з платежами. API v2 надає повний набір методів для управління підписниками та відправленнями.

Аутентифікація в API SendPulse

SendPulse використовує OAuth 2.0 Client Credentials. Перед кожною сесією отримуємо токен:

class SendPulseClient {
    private string $apiId;
    private string $apiSecret;
    private ?string $token = null;

    public function __construct() {
        $this->apiId     = COption::GetOptionString('site', 'sendpulse_id');
        $this->apiSecret = COption::GetOptionString('site', 'sendpulse_secret');
    }

    private function getToken(): string {
        // Кешуємо токен на 1 годину
        $cached = \Bitrix\Main\Data\Cache::createInstance();
        if ($cached->initCache(3500, 'sendpulse_token', '/sendpulse/')) {
            return $cached->getVars()['token'];
        }

        $http = new \Bitrix\Main\Web\HttpClient();
        $response = json_decode($http->post('https://api.sendpulse.com/oauth/access_token', [
            'grant_type'    => 'client_credentials',
            'client_id'     => $this->apiId,
            'client_secret' => $this->apiSecret,
        ]), true);

        $token = $response['access_token'];
        $cached->startDataCache();
        $cached->endDataCache(['token' => $token]);
        return $token;
    }

    public function call(string $method, string $endpoint, array $data = []): array {
        $http = new \Bitrix\Main\Web\HttpClient();
        $http->setHeader('Authorization', 'Bearer ' . $this->getToken());
        $http->setHeader('Content-Type', 'application/json');

        $url = 'https://api.sendpulse.com/' . ltrim($endpoint, '/');
        $response = $method === 'POST'
            ? $http->post($url, json_encode($data))
            : $http->get($url);

        return json_decode($response, true) ?? [];
    }
}

Управління адресними книгами

Адресна книга (mailing list) у SendPulse = список розсилки. Отримуємо ID книги через GET /addressbooks, зберігаємо в COption.

Додавання підписника:

public function addContact(string $email, array $variables = []): void {
    $this->call('POST', '/addressbooks/' . $this->listId . '/emails', [
        'emails' => [[
            'email'     => $email,
            'variables' => $variables, // [['name'=>'name','value'=>'Іван']]
        ]],
    ]);
}

Змінні аналогічні merge fields Mailchimp — name, phone, city, orders_count та будь-які кастомні.

Push-сповіщення через SendPulse

Унікальна можливість SendPulse — push-сповіщення в браузері. Підписники, які надали дозвіл, отримують push навіть без відкритого сайту.

Підключення в шаблоні Бітрікса:

<!-- Скрипт SendPulse Push -->
<script>
(function(d,w) {
    var n = d.getElementsByTagName('script')[0];
    var s = d.createElement('script');
    s.type = 'text/javascript';
    s.async = true;
    s.src = 'https://cdn.sendpulse.com/push/scripts/push.js';
    n.parentNode.insertBefore(s, n);
    w.PushwooshSDK_onLoad = function() {
        Pushwoosh.init({ 'applicationCode': '<?= COption::GetOptionString("site","sendpulse_push_id") ?>' });
    };
})(document, window);
</script>

При оформленні замовлення — надсилаємо push з підтвердженням через API:

$sp->call('POST', '/push/tasks', [
    'task' => [
        'list_id'    => $pushListId,
        'subject'    => 'Замовлення #' . $orderId . ' прийнято',
        'body'       => 'Ваше замовлення на суму ' . $orderPrice . ' прийнято в обробку',
        'send_date'  => 'now',
        'filter'     => ['variable' => 'user_id', 'operator' => '=', 'value' => $userId],
    ],
]);

Автоматизація через SendPulse Automation 360

SendPulse Automation 360 — візуальний редактор тригерних ланцюжків. Запускаємо ланцюжок через API-подію:

// Запускаємо автоматизацію "welcome_series" для нового підписника
$sp->call('POST', '/flows/run', [
    'flow_id'  => 'FLOW_ID_FROM_SENDPULSE',
    'email'    => $email,
    'variables'=> ['order_id' => $orderId, 'product_name' => $productName],
]);

Ланцюжок у SendPulse включає: email → затримка 2 дні → SMS → якщо email не відкрито → Viber-повідомлення.

Завдання Трудовитрати
OAuth-клієнт + базова синхронізація 4–5 год
Push-сповіщення 3–5 год
Тригерні події для автоматизації 5–7 год
Мультиканальні сценарії (email+SMS+Viber) 6–10 год