כיצד לחבר את 1C-Bitrix ל-SendPulse עבור התראות דוא"ל ו-Push
לעתים קרובות אנו נתקלים בתרחיש הבא: חנות מסחר אלקטרוני על Bitrix גדלה, התראות הדוא"ל הסטנדרטיות כבר לא עומדות בעומס, ושליחת דיוור ידנית דרך לקוח דוא"ל מסתכנת בהגעה לספאם. SendPulse פותר משימות אלו באמצעות תקשורת רב-ערוצית (דוא"ל, SMS, Viber, Push) דרך API יחיד. אך חיבור פשוט לשירות אינו מספיק — נדרשת אינטגרציה עמוקה עם שמירת טוקנים במטמון, טיפול בשגיאות API וסנכרון מנויים.
יישמנו עשרות אינטגרציות כאלה עבור חנויות עם קטלוגים של עד 500,000 מוצרים. הניסיון שלנו מראה שבלי שמירת מטמון נכונה של טוקני OAuth ושמירת מטמון מתויגת של רשימות תפוצה, הפרויקט מגיע במהירות למגבלות ה-API. לדוגמה, שמירת מטמון נכונה מפחיתה בקשות טוקן ב-99%, מה שמשאיר אתכם היטב במסגרת מגבלת 50 הבקשות לשעה וחוסך עד 200 אירו לחודש בעמלות חריגה אפשריות.
אימות נכון ב-API של SendPulse
SendPulse משתמש ב-OAuth 2.0 Client Credentials. הטוקן תקף לשעה אחת, אך יש לשמור אותו במטמון תוך התחשבות בבקשות מקבילות. אנו שומרים את הטוקן במטמון המתויג של Bitrix עם המפתח /sendpulse/ — זה מונע בקשות API מרובות בעומסי שיא. להלן מימוש הלקוח:
קוד: מחלקת SendPulseClient
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 {
$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) ?? [];
}
}שמירת מטמון מתויגת פירושה שאם הגדרות המודול (ID/Secret) משתנות, המטמון נפסל אוטומטית. זה מבטיח שהטוקן תמיד עדכני אך לא נוצר מחדש בכל בקשה.
היתרונות של שמירת מטמון מתויגת עבור הטוקן
טעות אופיינית היא בקשת טוקן חדש בכל קריאת API. SendPulse מגביל את מספר בקשות הטוקן (תיעוד ה-API של SendPulse מציין 50 לשעה). אם חנות מעבדת 1000 הזמנות בשעה, ללא שמירת מטמון האינטגרציה תיכשל תוך 3 דקות. שמירת מטמון מתויגת פותרת את הבעיה: הטוקן נבקש פעם אחת בכל 58 דקות (קצת פחות מאורך חייו), ואם מתרחש כשל, הוא נבקש מחדש מיד.
ניהול ספרי כתובות
ספר כתובות (רשימת תפוצה) ב-SendPulse הוא רשימת נמענים. קבלו את מזהה הספר דרך 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 { $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) ?? []; } } , שמרו אותו ב-GET /addressbooks. הוספת מנוי:
קוד: הוספת איש קשר
public function addContact(string $email, array $variables = []): void {
$this->call('POST', '/addressbooks/' . $this->listId . '/emails', [
'emails' => [[
'email' => $email,
'variables' => $variables,
]],
]);
}המשתנים דומים לשדות מיזוג של Mailchimp — COption, public function addContact(string $email, array $variables = []): void { $this->call('POST', '/addressbooks/' . $this->listId . '/emails', [ 'emails' => [[ 'email' => $email, 'variables' => $variables, ]], ]); } , name, phone וכל משתנה מותאם אישית אחר. אנו מגדירים העברת נתונים מההזמנה: שם, סכום, סטטוס, קישור תשלום.
התראות Push דרך SendPulse
יכולת ייחודית של SendPulse היא התראות push בדפדפן. מנויים שנתנו הרשאה מקבלים push גם כשהאתר לא פתוח. בהשוואה לקמפיינים בדוא"ל בלבד, להתראות push יש שיעור מסירה גבוה ב-30% והן נקראות תוך דקות. אינטגרציה בתבנית Bitrix:
קוד: סקריפט 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:
קוד: שליחת Push
$sp->call('POST', '/push/tasks', [
'task' => [
'list_id' => $pushListId,
'subject' => 'Заказ #' . $orderId . ' принят',
'body' => 'Ваш заказ на сумму ' . $orderPrice . ' руб. принят в обработку',
'send_date' => 'now',
'filter' => [
'variable' => 'user_id',
'operator' => '=',
'value' => $userId,
],
],
]);הסינון לפי city מאפשר שליחת push מותאמים אישית רק ללקוח ספציפי.
אוטומציה דרך SendPulse Automation 360
SendPulse Automation 360 הוא עורך ויזואלי לשרשראות טריגר. הפעלת שרשרת דרך אירוע API:
קוד: הפעלת תהליך
$sp->call('POST', '/flows/run', [
'flow_id' => 'FLOW_ID_FROM_SENDPULSE',
'email' => $email,
'variables' => [
'order_id' => $orderId,
'product_name' => $productName,
],
]);
השרשרת ב-SendPulse כוללת: דוא"ל → עיכוב של יומיים → SMS → אם הדוא"ל לא נפתח → הודעת Viber. אנו מגדירים עד 10 ענפים עם תנאים המבוססים על נתונים מ-Bitrix (סטטוס הזמנה, סכום, אזור).
שלבי האינטגרציה
- הכנת חשבון SendPulse: קבלת API ID ו-Secret מהגדרות האינטגרציה.
- התקנה והגדרה של לקוח OAuth על Bitrix: שמירת פרטי התחברות בהגדרות המודול, יישום שמירת טוקנים במטמון.
- סנכרון ספרי כתובות: מיפוי שדות המנויים של Bitrix למשתני SendPulse.
- הוספת סקריפט התראות push לתבנית Bitrix והגדרת שליחת push מאירועים.
- חיבור שרשראות טריגר ובדיקה עם הזמנות לדוגמה.
- תיעוד האינטגרציה והדרכת הצוות.
מה כלול בעבודה
- תכנון ארכיטקטורת האינטגרציה: בחירת שיטת אימות, שמירת מטמון, סנכרון.
- פיתוח לקוח OAuth עם מטמון מתויג.
- הגדרת ספרי כתובות ושדות מנויים לפי מבנה Bitrix.
- אינטגרציית התראות push (סקריפט בתבנית + שליחת API).
- חיבור שרשראות טריגר של Automation 360.
- תיעוד אינטגרציה (סכימת נתונים, תיאור שמירת מטמון, הוראות עדכון טוקן).
- הדרכת המנהלים שלכם לעבודה עם הפאנל של SendPulse.
- תמיכה באחריות למשך חודש לאחר ההשקה.
לוחות זמנים ועלויות משוערים
| משימה | מאמץ | מחיר התחלתי (אירו) |
|---|---|---|
| לקוח OAuth + סנכרון בסיסי | 4–5 שעות | 300 |
| התראות Push | 3–5 שעות | 250 |
| אירועי טריגר לאוטומציה | 5–7 שעות | 500 |
| תרחישים רב-ערוציים (דוא"ל+SMS+Viber) | 6–10 שעות | 700 |
| הדרכה ותיעוד | 2–4 שעות | 200 |
לוח הזמנים הסופי — בין 2 ל-5 ימי עסקים בהתאם למורכבות. העלות הכוללת נעה בדרך כלל בין 1,500 ל-3,000 אירו, עם הערכת פרויקט חינמית לפני התחייבות.
טעויות אופייניות וכיצד להימנע מהן
-
דליפת טוקן: אין לשמור ID/Secret בטקסט פשוט — השתמשו ב-
orders_countאו בקובץ .env. אנו מגבילים גישה להגדרות המודול באמצעות הרשאות. - התעלמות ממגבלות קצב: SendPulse מגביל את תדירות הבקשות (RPS). אנו מטמיעים לוגיקת ניסיון חוזר עם השהיה אקספוננציאלית, מה שמפחית כשלים ב-99%.
- משתנים שגויים במסנן push: אנו תמיד בודקים את הסינון על מנוי בדיקה לפני השקה לייצור.
אנו מבטיחים פעולה יציבה של האינטגרציה גם עם 100,000 מנויים. ב-10 שנות הניסיון שלנו עם Bitrix ו-SendPulse, אימתו את כל התרחישים — מאיסוף דוא"ל פשוט ועד טריגרים רב-ערוציים עם Viber.
הזמינו אינטגרציה עכשיו — קבלו ייעוץ חינמי על ארכיטקטורה והערכת לוחות זמנים.







