Здравствуйте!
Сегодня речь пойдет о технических моментах реализации взаимодействия ваших систем с API платформы Бизон365.
Немного о платформе
Бизон365 — это очень удобный, функциональный и недорогой сервис для проведения вебинаров и автовебинаров, а также платформа для создания онлайн-курсов и приема платежей. Со всеми преимуществами Бизона вы можете ознакомиться на официальном сайте, в этой же статье я предполагаю, что вы уже знакомы с платформой и ищете способ использовать ее наиболее эффективно.
Зачем это нужно?
API позволяет значительно расширить функционал, за счет передачи информации в сторонние приложения, такие как CRM-система, сервисы email-маркетинга, аналитики и т.п.
Использование API Бизон365 позволяет лично нам на момент написания статьи:
- строить персонализированные цепочки email-рассылки в зависимости от выбранной пользователем при регистрации даты и времени автовебинара, событий посетил/не посетил автовебинар, оформил/оплатил заказ;
- отправлять уведомление в мессенджер если на вебинаре присутствует меньше людей, чем обычно, что говорит о сбое в автоворонке;
- отправлять в мессенджер ежедневный отчет с цифрами по воронке и выручке;
- передавать данные в систему аналитики для отслеживания прибыли по каналам трафика;
- автоматически генерировать для каждого ученика именной сертификат по имени, указанному им в профиле.
Бизон имеет встроенный функционал email-рассылки, однако мы используем для рассылок специализированную платформу ActiveCampaign, что добавляет возможностей при построении стратегий email-маркетинга, но об этом подробнее в следующих статьях.
С чего начать?
Перед использование API, вам необходимо пройти авторизацию, используя свой логин и пароль, и сохранить cookie, которые вернет сервер. Далее, cookie необходимо передавать при каждом обращении. Все функции API описаны на странице справочного портала.
Ниже приведен пример функции авторизации, которая передает на сервер явки и пароли и сохраняет cookie в файл cookie.txt.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
//Авторизует, получает куки function authBizon() { $user = 'bizon@user.email'; $pass = 'bizon-user-password'; $ua = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.A.B.C Safari/525.13'; $cookie = fopen("cookie.txt","w+"); $ch = curl_init("https://online.bizon365.ru/api/v1/auth/login"); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false); curl_setopt($ch,CURLOPT_POST,1); curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query(array( 'username' => $user, 'password' => $pass))); curl_setopt($ch,CURLOPT_USERAGENT,$ua); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); curl_setopt($ch,CURLOPT_COOKIEJAR,$_SERVER['DOCUMENT_ROOT']."/cookie.txt"); curl_setopt($ch,CURLOPT_HEADER,1); $res = curl_exec($ch); curl_close($ch); fclose($cookie); } |
Обратите внимание, что срок действия cookie ограничен 1 часом. Поэтому, если вы будете делать запрос через час, вам необходимо снова выполнить авторизацию и получить «свежие» cookie.
Предположим, далее вы хотите получить информацию о подписчиках вашей страницы регистрации, для этого напишем следующую функцию.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
//Возвращает информацию по подписчикам страницы регистрации function getBizonSubData($pageId, $skip, $limit){ $url = "https://online.bizon365.ru/api/v1/webinars/subpages/getSubscribers?pageId=".urlencode($pageId)."&skip=".$skip."&limit=".$limit; $ch = curl_init($url); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0); curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0); curl_setopt($ch,CURLOPT_USERAGENT,$ua); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); curl_setopt($ch,CURLOPT_HEADER,1); curl_setopt($ch,CURLOPT_COOKIEFILE,$_SERVER['DOCUMENT_ROOT']."/cookie.txt"); $res = curl_exec($ch); curl_close($ch); $pos1 = strpos($res, '{'); $pos2 = strrpos($res, '}'); $resjson = substr($res, $pos1, $pos2); $json = json_decode($resjson, true); return $json; } |
Описываем все используемые нами функции в отдельном файле, назовем его bizon_API.php, и подключаем во всех необходимых нам скриптах. Имея две вышеописанные функции, мы можем получать ежедневно информацию по регистрациям, посетившим и не посетившим вебинар, передавать эту информацию в другие необходимые нам сервисы.
Предположим, у нас ежедневно проходит вебинар в 17 и 20 МСК. Давайте создадим скрипт getWebinarInfo.php, который на входе будет принимать время вебинара, который необходимо проверить, а на выходе будет обновлять информацию в БД на нашем сервере и в ActiveCampaign (подробнее об ActiveCampaign API). Скрипт будем вызывать по расписанию через ХХ минут после начала автовебинара. То есть, если автовебинар длится 90 минут, вызываем скрипт getWebinarInfo.php?time=17 в 18:30 и getWebinarInfo.php?time=20 в 21:30 соответственно.
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 |
<?php include('bizon_API.php'); include('activeCampaign_API.php'); if (!isset($_GET['time'])){ echo 'Задайте параметр time'; exit; } $time = (($_GET['time'] == '17') ? '14:00:00.000Z' : '17:00:00.000Z'); $date = date('o').'-'.date('m').'-'.date('d'); authBizon(); //ПОЛУЧАЕМ ИНФОРМАЦИЮ С БИЗОН $pageIds = array( 'XXXX:yyyyyyyy', 'XXXX:zzzzzz' ); $mails = []; // массив почта -> посетил/не посетил foreach ($pageIds as &$p) { $skip = 0; $limit = 1000; $total = 1001; while (($skip+limit) < $total) { $json = getBizonSubData($p, $skip, $limit); foreach ($json['list'] as &$v) { if ((strtotime($v['webinarTime']) == strtotime($date.'T'.$time))) { //на случай, если записался на оба вебинара в один день, //а пришел естественно только на один if ($v['vizitWebinar']) { $mails[$v['email']] = $v['vizitWebinar']; } elseif (!$mails[$v['email']]) { $mails[$v['email']] = $v['vizitWebinar']; } } } if ($json['total'] > $total) { $total = $json['total']; } $skip += $limit; } } //ВНОСИМ ИНФОРМАЦИЮ В БД И ActiveCampaign $mysqli = new mysqli('localhost', 'db_username', 'db_password', 'db_name'); if ($mysqli->connect_errno) { echo "Проблема при подключении к БД"; exit; } foreach ($mails as $email=>$visit){ if ($email) { //ОБНОВЛЯЕМ ДАННЫЕ В БД $query = "UPDATE regs SET visited='".$visit."' WHERE email='".$email."'"; $mysqli->query($query); //ОБНОВЛЯЕМ ДАННЫЕ В ActiveCampaign $tag = ($visit) ? 'Посетил 1й вебинар' : 'Не посетил 1й вебинар'; contact_tag_add($email, $tag); } } ?> |
Здесь, массив $pageIds, содержит ID страниц регистрации, где ХХХХ — это номер вашего аккаунта на Бизон, а yyyyyy и zzzzzz уникальный идентификатор страницы.
Подытожим
Таким образом, мы можем получить ряд дополнительных возможностей, используя API Бизон365, как вы будете ими пользоваться решать вам. О том же, зачем мы пишем информацию по посетителям вебинара в свою БД, а также как мы используем ActiveCampaign я расскажу в следующих статьях.
Напишите в комментариях используете ли вы Бизон API или только планируете? Как вы это делаете и для чего? А также будем рады видеть ваши вопросы и предложения относительно данной темы.
Это все? Где хотя бы один пример с добавлением подписчика в базу? Почему через аяксы нет примеров?
Сергей, а в какой момент ты начал считать, что нормально вместо спасибо требовать от людей того, что они тебе не должны?