Интеграция amocrm и посадочной страницы

Интеграция amocrm и посадочной страницы.

Наш клиент обратился к нам с задачей: необходимо интегрировать созданную посадочную страницу и amocrm.

Исходные данные:

  • сверстанная посадочная страница в виде статичного html и файлов ресурсов
  • имеющийся аккаунт в amocrm

Условия: необходимо сделать быстро и с минимальными затратами времени и бюджета.

Приступаем.

Работая с amocrm, у нас есть несколько способов интеграции с сайтом/страницей:
- формы amocrm
- Интеграция через API
- Интеграция через email

Формы. Пожалуй, самый простой способ интеграции. Вы создаете форму с необходимыми полями, получаете ее код, размещаете его на сайте/лендинге и начинаете получать заявки. Просто. Есть один недостаток: сложность стилизации таких форм под внешний вид страницы. Да, есть какие-то возможности для этого, но они довольно ограничены. Сделать формы полностью "родными" для сайта довольно проблематично если не менять текущую вёрстку и стили. Все усложняется тем, что формы на целевой странице сделаны модальными (popup). Попробовали, покрутили стили, попытались поменять разметку - с ходу не вышло.

API. amocrm имеет хорошее (ну почти) API, через которое можно управлять любыми объектами CRM. Имеются и готовые библиотеки для PHP, позволяющие интегрировать amo и текущий проект. Основная проблема: трудозатраты и относительная сложность. Данный вариант отложили, но не отбросили.

Email. Работает даже проще чем формы. Вы отправляете необходимую информацию на специальный email-ящик, настраиваете amocrm на получение писем из этого ящика и они автоматически появляются в вашей CRM. Просто же!

Решили попробовать. Все, что нам необходимо - написать скрипт, обрабатывающий отправку формы с лендинга и пересылающий эту информацию на указанный email. Большинство своих проектов мы разрабатываем на Yiiframework первой и второй версии. Однако, в этот конкретный проект тащить целый большой Фреймворк нам показалось излишним. Хотелось чего-то более простого. В то же время писать на "голом" PHP, даже в эпоху composer и пакетов - нам не хотелось. Вспомнили о микрофреймворках. Silex - один из них. Основан на компонентах Symfony, активно развивается и поддерживается сообществом. Берём.

Почему:

  • все приложение в одном файле - просто поддерживать
  • понятный и простой роутинг - все правила наглядно видны
  • наличие готовых пакетов для типовых задач: отправка почты, валидация и т.д.

За код!

Первым делом инициализируем новый composer-проект:

composer init

Добавляем Silex:

composer require silex/silex

Все! Можно писать нашу простейшую бизнес-логику.

В качестве URL-адреса для обработки форм выбираем путь "/feedback"
Обратите внимание, обработка идёт только для POST-запросов.
Первым делом нам необходимо проверить полученные данные на корректность.
Для этого подключим отдельную батарейку - компонент Validator от Symfony:

composer require symfony/validator

И расскажем о новом модуле сайлексу:

$app->register(new \Silex\Provider\ValidatorServiceProvider());

Обойдемся простыми проверками: имя и номер телефона должны быть обязательными для заполнения и содержать как минимум 3 символа. На данный момент нам этих правил будет достаточно, при необходимости можно реализовать более сложные проверки.

Если данные корректны - отправим их в CRM.

Подключаем еще одну батарейку:

composer require silex/mail

Подключаем установленный модуль:

$app->register(new \Silex\Provider\SwiftmailerServiceProvider());

Указываем настройки почтового (smtp) сервера:

$app['swiftmailer.options'] = array(
'host' => 'smtp.yandex.ru',
'port' => '465',
'username' => '*******',
'password' => '*******',
'encryption' => 'ssl'
);


Готово!

Итоговое приложение. Всего 40 строк кода, на написание которых ушло не больше одного часа. Профит!

<?php
require_once __DIR__ . '/vendor/autoload.php';
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Validator\Constraints\Collection;
use Symfony\Component\Validator\Constraints\Length;
$app = new \Silex\Application();
$app->register(new \Silex\Provider\ValidatorServiceProvider());
$app->register(new \Silex\Provider\SwiftmailerServiceProvider());
$app['swiftmailer.options'] = array(
'host' => 'smtp.yandex.ru',
'port' => '465',
'username' => '********',
'password' => '********',
'encryption' => 'ssl'
);
$app->post('/feedback', function (Request $request) use ($app) {
$constraint = new Collection([
'phone' => new Length(['min' => 5]),
'name' => new Length(['min' => 3])
    ]);
$data = [
'name' => $request->get('name'),
'phone' => $request->get('phone')
    ];
$errors = $app['validator']->validate($data, $constraint);
if (count($errors) === 0) {
$message = Swift_Message::newInstance()
            ->setSubject('Новая заявка с сайта')
            ->setFrom('********')
            ->setTo('********')
            ->setBody(sprintf('Имя - %s, телефон - %s...', $data['name'], $data['phone']));
return new JsonResponse(['result' => $app['mailer']->send($message)]);
}
return new JsonResponse(['result' => 0, 'message' => (string)$errors]);
});
$app->run();

Возможные улучшения:

  • более строгие и полные правила валидации
  • фильтрация данных
  • вынос всех настроек в конфигурационный файл
  • проверка на спам и ботов
  • защита от csrf-атак

Перейдем к настройке amocrm.

Все, что нам необходимо сделать на стороне amocrm - настроить сбор почты с ящика, на который мы отправляем заявки:

Конечно, данный способ интеграции имеет ряд ограничений и недостатков, например, мы не можем передать никакой дополнительной информации (utm-метки) для их "распознавания" в CRM. Но ничто не мешает передавать эту информацию в теле отправляемого письма и обработать в ручном режиме. Интеграция получилась быстрой и дешевой, со своей задачей успешно справляется.

Для полноценной интеграции так или иначе придётся работать с API amocrm - но это тема для отдельной публикации.

Мы являемся сертифицированными партнерами amostart!

Поможем вам в настройке и интеграции любых решений с amocrm!

А если вы задумываетесь об открытии небольшого интернет-магазина и планируете обрабатывать заказы в amo - у нас для вас есть готовое решение!

Готовый интернет-магазин, интегрированный с amocrm за 1 день и 4 тысячи рублей!

Пишите!