0

Как создать бот?

Чат-боты упрощают процесс покупки продуктов онлайн. Netflix, Adidas, British Airways и другие крупные компании уже внедрили ботов в свои маркетинговые системы. Так ли это эффективно и как установить чат-бота — об этом в новом посте.

Содержание

Что такое чат-бот

Вы этого не замечаете, но боты повсюду.

Чат-бот для сайта — это программа, которая заменяет оператора колл-центра с помощью заранее прописанных ответов на вопросы пользователей. Бот — может следовать запрограммированным инструкциям, а может самообучаться.

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

Компании, использующие чат-ботов для различных целей

Зачем бизнесу чат-бот

Любому бизнесу нужно несколько эффективных инструментов, ведь только комплексный подход дает результат. Чат-бот не поможет конверсии взлететь до небес или осчастливить всех клиентов. Но при правильном подходе он сыграет значительную роль в путешествии клиента (customer journey).

Зачем нужен чат-бот:

  1. Лояльность клиента. Коммуникация — важная часть взаимодействия с клиентов. Правильно настроенный бот может расположить доверие клиента к компании.
  2. Сокращение штата. Чат-бот — выгодное вложение, которое позволяет экономить на операторах колл-центра. Некоторые крупные компании совсем отказались от живого общения с клиентами.
  3. Качество общения. Даже если клиент недоволен и раздражен, бот продолжает выполнять свою функцию, вежливо отвечая на вопросы.
  4. Замена звонкам. Большинство клиентов привыкли общаться в чате и все реже выбирают звонки.
  5. Быстрое предоставление информации. Никто не любит, когда из заставляют ждать. Боту не нужно время на раздумывание и поиск информации — он уже все знает.

Какому бизнесу нужны чат-боты

B2C-компании — идеальная среда обитания чат-ботов. Товары и услуги, которые требуют предоставление дополнительной информации о себе, должны предоставлять возможность общения с поддержкой.

Это может быть продажа онлайн-продуктов, техники и гаджетов, банковские продукты, аренда авто и недвижимости, медицинские услуги и так далее.

Какому бизнесу не нужны чат-боты

Чат-бот не нужен B2B-компаниям, где клиенты хорошо разбираются в товаре. Если они захотят уточнить характеристики товара, боту не хватит умений разобраться в вопросе. В этом сегменте лучше оставить возможность пообщаться по телефону.

Не подходит чат-бот B2C-компаниям с несложными товарами и услугами. Это продукты, о которых клиенты обычно не спрашивают, потому что все и так ясно. Например, товары для дома, одежда и обувь, услуги салонов красоты.

Какие бывают чат-боты

Ботов создают с разными целями и для разных клиентов, поэтому они делятся на типы, например, по назначению:

  • для оформления заказов;
  • для предоставления информации о продукте.

По функциональности:

  • ограниченные. Они отвечают на точные запросы и ограничиваются набором ответов на самые распространенные вопросы;
  • саморазвивающиеся. Эти боты бывают настолько реалистичными, что диалог с ними сложно отличить от обычного общения. Умеют проводить анализ диалога, чтобы совершенствоваться в каждой последующей беседе.

Как создать и установить чат-бот на свой сайт

Как создать чат-бота? Нанимайте специалистов. Это обойдется дороже, но не так времязатратно. Перед началом создания чат-бота следует прописать алгоритм:

  1. Проектирование. На начальном этапе прорабатывается интерфейс приложения и система ответов. Создаются все возможные вопросы и ответы на них. Важно «очеловечить» бота, чтобы его ответы были максимально похожими на человеческие.
  2. API. После проектирования бот совмещается с другими программами, базой данных сайта, CRM-системы компании и так далее.
  3. Разработка. Далее пишется сама программа, подключается к API и мессенджерам, выставляются нужные настройки. Нужно настроить чат-бот для бизнеса, в котором он будет применяться.
  4. Запуск и аналитика. После запуска ведется аналитика и вносятся правки, если это необходимо.

Каким должен быть бот

  • Минимум кликов и сообщений. Пользователь должен получать быстрые и информативные ответы. Не нужно загружать его лишними вопросами. Бот должен быть вежливым и заботливым.
  • Быть полезным. Бот должен отвечать на вопросы, ответы на которые не представлены на сайте.
  • Предлагать следующий шаг. Не заставляйте пользователя думать — предлагайте практические решения (перейти на страницу, кликнуть на кнопку) и давайте советы.
  • Всегда отвечать. Чат-бот должен моментально реагировать на вопросы и решать проблемы. Даже если он не понимает вопрос или не знает ответ, бот должен предложить решение этой проблеме и оставаться вежливым.
  • Персонализировать. Не давайте сухих ответов. Добавляйте забавные ответы и свои изюминки вашему боту.

Сервисы для создания чат-ботов

Создание чат-бота для сайта — популярная услуга, поэтому софт для этого уже есть. Можно сделать это самостоятельно с нуля или воспользоваться программой. Например, взять плагин CMS или специальные отдельные сервисы. Перечислим самые популярные:

  • Dexter;
  • Smooch;
  • MEOKAY;
  • ChattyPeople;
  • Bot Kits;
  • Flow XO;
  • Botsify;
  • Morph.ai;
  • Meya.ai.

Установить чат-бот очень просто, если следовать инструкциям, которые даются на сайте разработчика.

Плагин CMS

WordPress – Collect.chat, IBM Watson Assistant, Acobot Lead Generation AI Chatbot (полный список)

Joomla – Webemus Cliengo ChatBotDrupal – Drupal Chatbot, Acobot AI Live Chat (Free Chatbot), Chatbot Builder

Бесплатный бот бывает только в мышеловке. Вы можете взять пробные версии на указанных сервисах и посмотреть, как ваш клиент будет взаимодействовать с ботом. Но пробные и любые другие бесплатные версии обычно содержат ограниченный функционал и не покажут всех преимуществ инструмента.

Истории бизнеса и полезные фишки

В этом уроке мы будем создавать простое приложение веб-чата с помощью PHP и jQuery. Утилита такого типа прекрасно подойдет для системы онлайн-поддержки вашего сайта.

Введение

Приложение чата, которое мы сегодня построим, будет довольно простым. Оно будет включать в себя систему входа и выхода, возможности в AJAX-стиле, а также предложит поддержку нескольких пользователей.

Шаг 1: HTML разметка

Мы начнем этот урок с создания нашего первого файла index.php.

<!DOCTYPE html PUBLIC «-//W3C//DTD XHTML 1.0 Transitional//EN» «https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd»> <html xmlns=»http://www.w3.org/1999/xhtml»> <head> <title>Chat — Customer Module</title> <link type=»text/css» rel=»stylesheet» href=»style.css» /> </head> <div id=»wrapper»> <div id=»menu»> <p class=»welcome»>Welcome, <b></b></p> <p class=»logout»><a id=»exit» href=»#»>Exit Chat</a></p> <div style=»clear:both»></div> </div> <div id=»chatbox»></div> <form name=»message» action=»»> <input name=»usermsg» type=»text» id=»usermsg» size=»63″ /> <input name=»submitmsg» type=»submit» id=»submitmsg» value=»Send» /> </form> </div> <script type=»text/javascript» src=»http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js»></script> <script type=»text/javascript»> // jQuery Document $(document).ready(function(){ }); </script> </body> </html>

  • Мы начнем наш html с обычных DOCTYPE, html, head, и body тагов. В таг head мы добавим наш заголовок и ссылку на нашу таблицу стилей css (style.css).
  • Внутри тага body, мы структурируем наш макет внутри блока — обертки #wrapper div. У нас будет три главных блока: простое меню, окно чата и поле ввода нашего сообщения; каждый со своим соответствующим div и id.
    • Блок меню #menu div будет состоять из двух абзацев. Первый будет приветствием пользователю и поплывет налево, а второй будет ссылкой на выход и поплывет направо. Мы также включим блок div для очистки элементов.
    • Блок чата #chatbox div будет содержать лог нашего чата. Мы будем загружать наш лог из внешнего файла с использованием ajax-запроса jQuery.
    • Последним пунктом в нашем блоке-обертке #wrapper div будет наша форма, которая будет включать в себя текстовое поле ввода для сообщения пользователя и кнопку отправки.
  • Мы добавляем наши скрипты последними, чтобы грузить страницу быстрее. Сначала мы вставим ссылку Google jQuery CDN, так как в этом уроке мы будем использовать библиотеку jQuery. Наш второй таг скрипта будет там, где мы будем работать. Мы загрузим весь наш код после того, как документ будет готов.

Шаг 2: Создание стиля CSS

Теперь мы добавим немного css, чтобы заставить наше приложение чата выглядеть лучше, чем стиль браузера по умолчанию. Код, указанный ниже будет добавлен в наш файл style.css.

/* CSS Document */ body { font:12px arial; color: #222; text-align:center; padding:35px; } form, p, span { margin:0; padding:0; } input { font:12px arial; } a { color:#0000FF; text-decoration:none; } a:hover { text-decoration:underline; } #wrapper, #loginform { margin:0 auto; padding-bottom:25px; background:#EBF4FB; width:504px; border:1px solid #ACD8F0; } #loginform { padding-top:18px; } #loginform p { margin: 5px; } #chatbox { text-align:left; margin:0 auto; margin-bottom:25px; padding:10px; background:#fff; height:270px; width:430px; border:1px solid #ACD8F0; overflow:auto; } #usermsg { width:395px; border:1px solid #ACD8F0; } #submit { width: 60px; } .error { color: #ff0000; } #menu { padding:12.5px 25px 12.5px 25px; } .welcome { float:left; } .logout { float:right; } .msgln { margin:0 0 2px 0; }

В вышеуказанном css нет ничего особенного, кроме того факта, что некоторые id или классы, для которых мы устанавливаем стиль, будут добавлены немного позже.

Как вы можете видеть выше, мы закончили строить пользовательский интерфейс чата.

Шаг 3: Используем PHP, чтобы создать форму входа.

Теперь мы реализуем простую форму, которая будет спрашивать у пользователя его имя, перед тем, как пустить его дальше.

<? session_start(); function loginForm(){ echo’ <div id=»loginform»> <form action=»index.php» method=»post»> <p>Please enter your name to continue:</p> <label for=»name»>Name:</label> <input type=»text» name=»name» id=»name» /> <input type=»submit» name=»enter» id=»enter» value=»Enter» /> </form> </div> ‘; } if(isset($_POST)){ if($_POST != «»){ $_SESSION = stripslashes(htmlspecialchars($_POST)); } else{ echo ‘<span class=»error»>Please type in a name</span>’; } } ?>

Функция loginForm(), которую мы создали, состоит из простой формы входа, которая спрашивает у пользователя его/ее имя. Затем мы используем конструкцию if else, чтобы проверить, ввел ли пользователь имя. Если человек ввел имя, мы устанавливаем его, как $_SESSION. Так как мы используем сессию, основанную на cookie, чтобы хранить имя, мы должны вызвать session_start() перед тем, как что-нибудь выводить в браузер.

Есть одна вещь, на которую вы возможно захотите обратить особое внимание — то, что мы использовали функцию htmlspecialchars(), которая конвертирует специальные символы в HTML сущности, тем самым защищая имя переменной, чтобы оно не стало жертвой межсайтового скриптинга (XSS). Мы также добавим эту функцию позже к текстовой переменной, которая будет опубликована в логе чата.

Отображение формы входа

Для того, чтобы показать форму логина в случае, если пользователь не вошел в систему, и следовательно, не сессия не создалась, мы используем другую инструкцию if else вокруг блока-обертки #wrapper div и тагов скрипта в нашем исходном коде. В противоположном случае, если пользователь вошел в систему и создал сессию, этот код спрячет форму входа и покажет окно чата.

<?php if(!isset($_SESSION)){ loginForm(); } else{ ?> <div id=»wrapper»> <div id=»menu»> <p class=»welcome»>Welcome, <b><?php echo $_SESSION; ?></b></p> <p class=»logout»><a id=»exit» href=»#»>Exit Chat</a></p> <div style=»clear:both»></div> </div> <div id=»chatbox»></div> <form name=»message» action=»»> <input name=»usermsg» type=»text» id=»usermsg» size=»63″ /> <input name=»submitmsg» type=»submit» id=»submitmsg» value=»Send» /> </form> </div> <script type=»text/javascript» src=»http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js»></script> <script type=»text/javascript»> // jQuery Document $(document).ready(function(){ }); </script> <?php } ?>

Приветствие и меню выхода из системы

Мы еще не закончили создавать систему входа для этого приложения чата. Нам еще нужно дать пользователю возможность выйти из системы и закончить сессию чата. Как вы помните, наша исходная HTML разметка включала в себя простое меню. Давайте вернемся назад и добавим некоторый PHP код, который придаст меню больше функциональности.

Прежде всего, давайте добавим имя пользователя в сообщение приветствия. Мы сделаем это, выводя сессию имени пользователя.

<p class=»welcome»>Welcome, <b><?php echo $_SESSION; ?></b></p>

Для того, чтобы позволить пользователю выйти из системы и завершить сессию, мы прыгнем выше головы и кратко используем jQuery.

<script type=»text/javascript»> // jQuery Document $(document).ready(function(){ //If user wants to end session $(«#exit»).click(function(){ var exit = confirm(«Are you sure you want to end the session?»); if(exit==true){window.location = ‘index.php?logout=true’;} }); }); </script>

Код jquery, приведенный выше просто показывает диалог подтверждения, если пользователь кликнет по ссылке выхода #exit. Если пользователь подтвердит выход, тем самым решив закончить сессию, мы отправим его в index.php?logout=true. Это просто создаст переменную с именем logout со значением true. Мы должны перехватить эту переменную с помощью PHP:

if(isset($_GET)){ //Simple exit message $fp = fopen(«log.html», ‘a’); fwrite($fp, «<div class=’msgln’><i>User «. $_SESSION .» has left the chat session.</i><br></div>»); fclose($fp); session_destroy(); header(«Location: index.php»); //Redirect the user }

Теперь мы увидим, существует ли get переменная ‘logout’, используя функцию isset(). Если переменная была передана через url, такой, как ссылка, упомянутая выше, мы переходим к завершению сессии пользователя с текущим именем.

Перед уничтожением сессии пользователя с текущим именем с помощью функции session_destroy() мы хотим выводить простое сообщение о выходе в лог чата. В нем будет сказано, что пользователь покинул сессию чата. Мы сделаем это, используя функции fopen(), fwrite() и fclose(), чтобы манипулировать нашим файлом log.html, который, как мы увидим позднее, будет создан в качестве лога нашего чата. Пожалуйста, обратите внимание, что мы добавили класс ‘msgln’ в блок div. Мы уж определили стиль css для этого блока.

Проделав это, мы уничтожаем сессию и перенаправляем пользователя на ту же страницу, где появится форма входа в систему.

Шаг 4: Поддержка пользовательского ввода данных

После того, как пользователь подтвердил свои действия в нашей форме, нам нужно захватывать его ввод с клавиатуры и писать его в лог нашего чата. Для того, чтобы сделать это, мы должны использовать jQuery и PHP, чтобы работать синхронно на стороне сервера и на стороне клиента.

jQuery

Практически все, что мы собираемся делать с jQuery для обработки наших данных, будет вращаться вокруг запроса на jQuery post.

//If user submits the form $(«#submitmsg»).click(function(){ var clientmsg = $(«#usermsg»).val(); $.post(«post.php», {text: clientmsg}); $(«#usermsg»).attr(«value», «»); return false; });

  1. Перед тем, как мы что-то начнем делать, мы должны захватить пользовательский ввод, или то, что он напечатал в поток ввода #submitmsg. Этого можно достигнуть функцией val(), которая берет значение, установленное в поле формы. Теперь мы сохраняем это значение в переменную clientmsg.
  2. Вот и наступает самая важная часть: запрос jQuery post. Она отправляет запрос POST в файл post.php, который мы создадим через мгновение. Он отправляет ввод клиента, или то, что было сохранено в переменную clientmsg.
  3. В конце мы очищаем ввод #usermsg, очищая атрибут значения.

Пожалуйста обратите внимание, что код, указанный выше, пойдет в наш таг скрипта, где мы поместили jQuery код выхода из системы.

PHP — post.php

На данный момент мы имеем данные POST, отправляемые в файл post.php каждый раз, когда пользователь отправляет форму и посылает новое сообщение. Наша задача теперь захватить эти данные и записать их в лог нашего чата.

<? session_start(); if(isset($_SESSION)){ $text = $_POST; $fp = fopen(«log.html», ‘a’); fwrite($fp, «<div class=’msgln’>(«.date(«g:i A»).») <b>».$_SESSION.»</b>: «.stripslashes(htmlspecialchars($text)).»<br></div>»); fclose($fp); } ?>

  1. Прежде чем мы что-либо сделаем, мы должны начать файл post.php с помощью функции session_start(), так как мы будем использовать сессию по имени пользователя в этом файле.
  2. Используя логическую isset, мы проверим, существует ли сессия для ‘name’, перед тем, как что-то делать дальше.
  3. Теперь мы захватим данные POST, которые jQuery послал в этот файл. Мы сохраним эти данные в переменную $text.
  4. Эти данные, так же, как и вообще все данные, вводимые пользователем, будут храниться в файле log.html. Чтобы сделать это, мы откроем файл в режиме ‘a’ функции fopen, который согласно php.net открывает файл только для записи; помещает указатель файла на конец файла. Если файл не существует, попытаемся создать его. Затем мы запишем наше сообщение в файл, используя функцию fwrite().
    • Сообщение, которое мы будем записывать, будет заключено внутри блока .msgln div. Он будет содержать дату и время, сгенерированную функцией date(), сессию имени пользователя и текст, которые также будет окружен функцией htmlspecialchars(), чтобы избежать XSS.

    И наконец, мы закрываем наш файл с помощью fclose().

Шаг 5: Отображение содержимого лога чата (log.html)

Все, что пользователь разместил, обработано и опубликовано с помощью jQuery; оно записано в лог чата с помощью PHP. Единственное, что осталось сделать — это показать обновленный лог чата пользователю.

Чтобы сэкономить нам немного времени, мы предварительно загрузим лог чата в блок #chatbox div, как если бы он что-то содержал.

<div id=»chatbox»><?php if(file_exists(«log.html») && filesize(«log.html») > 0){ $handle = fopen(«log.html», «r»); $contents = fread($handle, filesize(«log.html»)); fclose($handle); echo $contents; } ?></div>

Мы используем процедуру, похожую на ту, что мы использовали в файле post.php, но на этот раз мы только читаем и выводим содержимое файла.

Запрос jQuery.ajax

Запрос ajax — это ядро всего, что мы делаем. Этот запрос не только позволяет нам посылать и принимать данные через форму без обновления страницы, но также и позволяет нам обрабатывать запрошенные данные.

//Load the file containing the chat log function loadLog(){ $.ajax({ url: «log.html», cache: false, success: function(html){ $(«#chatbox»).html(html); //Insert chat log into the #chatbox div }, }); }

Мы завернем наш ajax запрос в функцию. Вы увидите, зачем, прямо сейчас. Как вы можете видеть выше, мы использовали только три из объектов запроса jQuery ajax.

  • url: Строка URL для запроса. Мы используем имя файла лога нашего чата log.html.
  • cache: Это предотвратит кэширование нашего файла. Это обеспечит нам то, что всегда, когда мы посылаем запрос, мы будем иметь обновленный лог чата.
  • sucess: Это позволит нам прикрепить функцию, которая передаст запрошенные нами данные.

Как вы видите, затем мы перемещаем запрошенные нами данные (html) в блок #chatbox div.

Автопрокрутка

Как мы, возможно, видели в других приложениях чатов, содержимое автоматически прокручивается вниз, если контейнер лога чата (#chatbox) переполняется. Мы воплотим простую и похожую возможность, которая будет сравнивать высоту полосы прокрутки контейнера до и после того, как мы выполним ajax запрос. Если высота полосы прокрутки стала больше после запроса, мы используем эффект анимации jQuery, чтобы прокрутить блок #chatbox div.

//Load the file containing the chat log function loadLog(){ var oldscrollHeight = $(«#chatbox»).attr(«scrollHeight») — 20; //Scroll height before the request $.ajax({ url: «log.html», cache: false, success: function(html){ $(«#chatbox»).html(html); //Insert chat log into the #chatbox div //Auto-scroll var newscrollHeight = $(«#chatbox»).attr(«scrollHeight») — 20; //Scroll height after the request if(newscrollHeight > oldscrollHeight){ $(«#chatbox»).animate({ scrollTop: newscrollHeight }, ‘normal’); //Autoscroll to bottom of div } }, }); }

  • Сначала мы сохраним высоту полосы прокрутки блока #chatbox div в переменную oldscrollHeight перед выполнением запроса.
  • После того, как наш запрос вернет успех, мы сохраним высоту полосы прокрутки блока #chatbox div в переменную newscrollHeight.
  • Затем мы сравним высоту полосы прокрутки в обеих переменных, используя конструкцию if. Если newscrollHeight больше, чем oldscrollHeight, мы используем эффект анимации, чтобы прокрутить блок #chatbox div.

Постоянное обновление лога чата

Теперь может возникнуть вопрос, как часто мы будем обновлять новые данные, переданные между пользователями. Или перефразируя вопрос, с какой регулярностью мы будем отправлять постоянные запросы на обновление данных?

setInterval (loadLog, 2500); //Reload file every 2500 ms or x ms if you wish to change the second parameter

Ответ на наш вопрос находится в функции setInterval. Эта функция будет запускать нашу функцию loadLog() каждые 2,5 секунды, которая будет запрашивать обновленный файл и делать автопрокрутку блока.

Закончили

Мы закончили! Я надеюсь, что вы изучили, как работает базовая система чата, и, если у вас есть какие-либо пожелания, я с радостью их приветствую. Это максимально простая система чата, которую вы можете создать как приложение чата. Вы можете оттолкнуться от нее и построить множественные чат комнаты, добавить админку, эмотиконы и т.д. Здесь ваш предел — это небо.

Ниже привожу несколько ссылок, которые вы возможно захотите посмотреть, если задумаетесь о расширении этого приложения чата:

  • Защитите ваши формы ключами форм — избегайте XSS (межсайтового скриптинга) и подделок межсайтовых запросов.
  • Отправка формы без обновления страницы с использованием jQuery — расширьте наш ajax запрос
  • Как делать AJAX запросы на чистом Javascript — изучите, как работает кухня запросов на чистом javascript.
  • Следите за нами на Twitter, или подпишитесь на RSS ленту NETTUTS, чтобы получать больше ежедневных уроков и статей по веб-разработке.

Время чтения: 4 минуты Прочту позже

Повсеместная автоматизация процессов не обходит стороной ни один из аспектов жизни человека в современном мире: производство, системы учета и анализа, торговля и многое другое. Во всех этих отраслях активно внедряются автоматизированные системы.

Боты — часть этой глобальной автоматизации. Их задачи могут быть совершенно различными: от предоставления информации о пробках на дорогах или развлечения анекдотами, до приема платежей и работы с клиентскими базами. Но если обобщить, то вся деятельность ботов сводится к тому, чтобы освободить человека от рутинной работы, в которой постоянно нужно выполнять одни и те же действия.

Для того, чтобы сделать бота, не обязательно писать его с нуля. На сегодняшний день существует достаточное количество специальных сервисов-конструкторов, где самостоятельно можно собрать собственного бота. В статье мы затронем некоторые из них. Это поможет поближе познакомиться с возможностями ботов и провести с пользой время. Такой опыт может пригодиться в дальнейшем, даже если сейчас у вас нет необходимости в боте — она может появиться в любой момент. К тому же, это просто интересно!

Обзор конструкторов

Рассмотрим конструкторы и их возможности немного подробнее:

Aimylogic

Разработчики этой компании заявляют, что в основе ботов, созданных в их конструкторе, лежит искусственный интеллект. Именно он позволяет пользователю создать бота, который будет понимать не только заранее прописанные команды или команды с помощью кнопок, но и распознавать человеческую речь.

Заявлена поддержка социальных сетей, мессенджеров и популярных голосовых помощников, за исключением Siri от компании Apple. Созданным ботом можно пользоваться бесплатно. Конечно, не весь функционал доступен в бесплатной версии, но вдруг после того, как вы соберете бота, вам не захочется с ним расставаться.

Botmother

Очень известный сервис для создания ботов. Как и предыдущий конструктор, он позволяет создать первого бота совершенно бесплатно. Благодаря этому, потренироваться в создании бота можно сразу после регистрации.

Функционал ботов, созданных при помощи этого конструктора, просто огромен. В любом случае — это хорошая возможность бесплатно потренироваться в создании своего первого бота. После создания его можно интегрировать в популярные социальные сети — Вконтакте и Одноклассники, а также в мессенджеры Viber, Telegram, Facebook.

Этот конструктор умеет создавать ботов только для платформы Facebook Messenger и имеет английский интерфейс. Бот, соответственно, тоже будет общаться на английском. Но это не нужно относить к недостаткам. Лучше воспринимать это как еще одну возможность улучшить свой английский.

После создания бота, им можно пользоваться бесплатно до тех пор, пока его аудитория будет меньше 1000 человек, после этого придется ежемесячно платить 15 долларов.

Одной из фишек сервиса является возможность задействовать в боте инструмент распознавания речи.

Dexter

Как и предыдущий, этот конструктор имеет английский интерфейс. Кроме этого, он имеет существенные отличия от других схожих проектов, в которых конфигурация бота осуществляется путем отметки чекбоксов с необходимыми функциями или просто перетаскиванием их в бота.

В этом конструкторе придется писать сценарий диалога, а значит необходимо свободное владение английским языком. К сожалению, сервис не поддерживает социальные сети, ориентированные на аудиторию СНГ — Вконтакте, Однокласники и другие. Зато он отлично подойдет тем, кто хорошо владеет английским и рассчитывает на англоязычную аудиторию.

Позволяет создать до 5 ботов бесплатно. Так что вы можете создать 5 различных ботов и устроить среди них соревнование: кто быстрее справится с поставленной задачей. Умеет собирать информацию о пользователях и использовать ее.

Если бот понравится, в последующем можно отправить его работать в Telegram, Slack или Facebook. Кроме этого, сервис умеет работать и с SMS.

Manychat

Еще один конструктор ботов для платформы Facebook Messenger. Существует в двух вариантах: бесплатная и платная версия за 10 долларов в месяц. Используется для рассылки писем и ответов на стандартные вопросы. Умеет учитывать особенности действий пользователя, например, время его ответа.

Бесплатной версии вполне хватит для того, чтобы потренироваться в создании бота и затем с его помощью рассылать письма своим знакомым.

Умеет жаловаться на то, что не справляется, если требуется вмешательство человека для решения нестандартных ситуаций.

Morph.ai

Серьезный конструктор для создания серьезных ботов. Стоимость начинается от 250 долларов в месяц. Умеет работать с Facebook, WhatsApp и веб-сайтами. Созданные боты умеют обрабатывать разговорную человеческую речь и используют глубинное обучение.

Для понимания картины эффективности сервис дает возможность воспользоваться в любое время аналитическим отчетом о работе ботов.

В этой статье мы рассмотрели некоторые сервисы, которые помогут с пользой провести свободное время. Для того, чтобы статья не вышла слишком большой, часть интересных конструкторов мы оставили для следующего материала, в котором продолжим знакомиться с различными сервисами для создания собственного бота.

Считали ли вы, сколько времени сотрудники вашей компании тратят на нецелевых клиентов?

Мы поговорили с теми, кто в разных компаниях отвечает за маркетинг и продажи, и выяснили, что:

  • менеджеры по продажам тратят на нецелевых лидов до 70% времени;
  • из 10 потенциальных клиентов, на разговор с каждым из которых уходит около часа, целевым, как правило, оказывается всего один;
  • на сбор первичной информации о клиенте тратится до 20 минут.

Время, потраченное впустую из-за недостатка информации о лидах, — вечная боль команд продаж и маркетинга. Решение — квалификация пользователей, чтобы передавать в продажи только данные о тех из них, кто готов к покупке.

Самый быстрый способ квалифицировать лидов — чат-бот. Он общается с пользователями без вашего участия и квалифицирует их, то есть собирает первичную информацию. И в зависимости от их действий направляет данные в команду продаж или нет.

Скачайте гайд по квалификации лидов
с помощью чат-бота

Спасибо! Мы уже отправили всё на почту

Мы выбрали 7 сервисов для коммуникации с пользователями, возможности которых позволяют создать чат-бота:

  • Intercom
  • Carrot quest
  • Drift
  • LiveChat+ChatBot
  • User.com
  • Freshworks
  • Gist

Intercom

Intercom предоставляет большой набор инструментов для коммуникации с пользователями сайта и мобильного приложения. Среди инструментов Intercom есть как маркетинговые, так и инструменты для продаж и поддержки:

  • чат,
  • управление базой клиентов,
  • возможности для сегментации и персонализации сообщений,
  • база знаний,
  • email-рассылки,
  • А/Б тесты.

Что умеют чат-боты Intercom

Всего у Intercom есть пять видов ботов:

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

Первые два вида ботов выполняют простые задачи, следующие из их описания. Эти боты сами начинают диалог, а пользователю предлагают возможные ответы в виде кнопок.

Начало диалога с ботом Intercom. Бот предлагает ответы да/нет в виде кнопок.

Два следующих бота устроены сложнее: они умеют самостоятельно отвечать пользователям на частые вопросы и автоматически назначать встречи. Но и обойдутся в разы дороже.

Цена: от $99 до $999

Возможность создавать чат-ботов — это дополнительный модуль, доступный для тарифов от $99. Доступ к созданию так называемых кастомных ботов для вовлечения пользователей появляется только на тарифах с возможностями для автоматизации от $499 и $999. Бот, отвечающий на вопросы, и бот с интегрированными приложениями подключаются только вместе с продвинутыми модулями для квалификации лидов (от $499) и автоматизации поддержки (от $249).

В чате на сайте бот рекомендует статьи об обновлениях в сервисе

Язык и бесплатный триал

Есть бесплатный триал — 14 дней, но вам придется поделиться с Intercom данными своей банковской карты.

Сервис доступен на 5 языках, но русского среди них нет.

Carrot quest

Чат-бот — это новая возможность чата Carrot quest.

Помимо чата, в Carrot quest есть:

  • трекинг пользователей,
  • сегментация и персонализация сообщений,
  • триггерные и ручные email-рассылки,
  • А/Б тестирование автосообщений,
  • SDK для Android и iOS, чтобы делать все то же самое в мобильном приложении.

В целом, задача сервиса — помогать увеличивать продажи без привлечения дополнительного трафика и улучшать качество коммуникации с пользователями.

Что умеет чат-бот Carrot quest

Мы называем его лид-ботом, потому что его основная работа — квалификация лидов и сбор контактов пользователей. Лид-бот запускается по триггеру и задаёт вопросы посетителям сайта, а затем предлагает ответы в виде кнопок на выбор. В зависимости от ответа бот задаёт следующий вопрос или назначает диалог на оператора.

Пример диалога с чат-ботом Carrot quest

С помощью вопросов лид-бота команда маркетинга собирает первичную информацию о потенциальных клиентах. Он помогает вовлекать больше посетителей в диалог и собирать больше квалифицированных лидов для передачи в команду продаж, а заодно разгружает первую линию поддержки.
Что лид-бот уже умеет:

  • отправлять несколько отдельных текстовых сообщений;
  • предлагать до 10 вариантов кнопок на каждое сообщение и совершать действия в зависимости от ответа;
  • cохранять информацию на основе ответов на вопросы для последующей сегментации и отправки триггерных сообщений;
  • отправлять файлы и картинки;
  • назначать диалог на конкретного оператора или в канал.

Интерфейс раздела для создания чат-бота в Carrot quest

Чему скоро научится:

  • отправлять формы Calendly для самостоятельной записи на мероприятия;
  • отправлять статьи из базы знаний Carrot quest.

Лид-бот поможет компаниям:

  • с большим трафиком — собирать больше лидов, не перегружая менеджеров.
  • с большим средним чеком — сэкономить время команды продаж, которое сейчас тратится на тех, кто еще не готов к покупке.

Мы разработали готовые сценарии диалогов с чат-ботом.

Пример сценария с част-ботом для интернет-магазинов:

  • Нажмите на картинку, чтобы посмотреть поближе
  • Нажмите на картинку, чтобы посмотреть поближе
  • Нажмите на картинку, чтобы посмотреть поближе

онлайн-сервисов:

  • Нажмите на картинку, чтобы посмотреть поближе
  • Нажмите на картинку, чтобы посмотреть поближе
  • Нажмите на картинку, чтобы посмотреть поближе

консультаций и услуг:

  • Нажмите на картинку, чтобы посмотреть поближе
  • Нажмите на картинку, чтобы посмотреть поближе
  • Нажмите на картинку, чтобы посмотреть поближе

Цена: от 1 000 рублей

\Тарифы Carrot quest зависят от количества уникальных посетителей на вашем сайте и начинаются от 1 000₽. До 1 октября 2020 чат-боты — бесплатный для всех пользователей Carrot quest модуль.

Бесплатный триальный доступ к сервису — 14 дней. Во время триала вы можете тестировать абсолютно все возможности сервиса бесплатно. Язык сервиса — русский. Есть англоязычная версия продукта — Dashly.

Drift

Drift — это коммуникационная платформа, которую используют преимущественно команды продаж. Все инструменты сервиса заточены под продажи:

  • чат,
  • видеозвонки,
  • email-рассылки,
  • автоматизация (в том числе боты).

Что умеют боты Drift

Ботов у Drift тоже несколько.

  • Простой лид-бот

Он квалифицирует посетителей сайта, инициируя диалог и предлагая ответы:

Пример квалификации лидов с помощью чат-бота на сайте Drift

Ответы пользователей записываются в карточку лида в CRM-системе. Дальше бот автоматически связывается с рабочими календарями команды продаж и назначает демо на удобное клиенту время.

  • Обучаемый бот

Его основная работа — тоже квалификация пользователей. Но его также можно научить отвечать на распространенные вопросы с помощью базы знаний:

Лид-бот Drift квалифицирует пользователя, призывает оператора и помогает сориентироваться в сервисе с помощью статей из базы знаний

Обучать его придется совместно с командой Drift.

Цена: от $400 до $1500 и выше

Лид-бот доступен на тарифах от $400. Бот для квалификации является частью модуля автоматизации. Его услуги обойдутся как минимум в $1500 в месяц и даже больше.

Drift квалифицирует посетителей на своем сайте с помощью бота Бот приветствует вернувшегося пользователя

Зарегистрироваться в сервисе можно бесплатно, но попробовать ботов получится только после апгрейда тарифа.

Готовые сценарии запуска бота Drift, доступ к которым открывается после апгрейда тарифа

Сервис англоязычный.

LiveChat+ChatBot

Это не единая платформа, а два продукта — чат и AI-бот, разработанные одной компанией и легко интегрирующиеся между собой.

ChatBot на своем продуктовом лендинге предлагает поболтать с ним

LiveChat — это чат с кучей фичей и возможностей, таких как:

  • тикеты,
  • аналитика,
  • интеграции с Facebook, Slack, десятком CMS, сервисами для email и другими.

Правда, воспользоваться большинством возможностей чата на триале нельзя — они платные.

Что умеет ChatBot

ChatBot используют как вместе с LiveChat, так и независимо от него. Можно создать бота не только для сайта, но и для Facebook и других мессенджеров. У сервиса простой и приятный современный интерфейс.

Работа, которую призван выполнять продукт, — вовлечение пользователей и клиентский сервис. Созданные с его помощью боты могут как квалифицировать лидов, так и закрывать первую линию поддержки.

Технически с его помощью просто:

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

Вам помогут подсказки:

Всплывающие подсказки при первой настройке бота в сервисе ChatBot

Если вы хотите, чтобы бот не просто автоматически отправлял заданную цепочку сообщений, но с помощью нейросети отвечал на вопросы пользователей, его придется этому обучать. При желании это тоже можно сделать самостоятельно.

Цена: от $50 до $499 и выше

Создание одного бота будет стоить от $50, на тарифах от $499 можно создать неограниченное количество ботов. Точная стоимость зависит от количества диалогов в месяц. ChatBot считается дополнительным оператором, так что в рамках использования интеграции с LiveChat за него придется доплачивать, как за оператора. Стоимость самой ограниченной версии сервиса LiveChat — от $19 за оператора.

Бесплатный триал длится 14 дней, на нем доступно большинство функций бота. Язык сервиса — английский.

User.com

User.com — сервис для трекинга пользователей и омниканальной коммуникации.

Сообщение от чат-бота на главной странице сайта User.com

Инструментами User.com могут воспользоваться команды маркетинга, продаж и поддержки. Среди них:

  • чат,
  • email-рассылки,
  • SMS и звонки,
  • пуш-уведомления,
  • простенькая CRM,
  • верхнеуровневая аналитика.

Что умеет чат-бот User.com

Интерфейс сервиса. Раздел для создания чат-бота

Сервис позволяет создать простого бота, который будет предлагать ответы в виде кнопок.

Технически в сервисе можно:

  • настроить отправку автоматических сообщений по триггеру;
  • установить таймаут для отправки сообщений бота;
  • спрашивать email пользователя и отправлять данные оператору.

Цепочку сообщений бота можно построить самому, а можно воспользоваться шаблонами. В разделе автоматизации есть больше 20 готовых сценариев для бота, подходящих разным организациям, — от галерей и свадебных агентств до геймдев студий и школ. Любой фрагмент такой цепочки можно изменить.

Пример готового сценария для бота — бот выходного дня, который отвечает в чате,
когда операторы недоступны

Цена: от $49

Чат-бот доступен уже на тарифе для маленьких компаний (от $49 в месяц).

Язык и бесплатный триал

Сервис англоязычный. Триал 14 дней.

Freshworks

Freshworks — это 12 разных продуктов, среди которых есть пакетное программное обеспечение для разных целей:

  • управления командой,
  • колл-центром,
  • данными о клиентах
  • и так далее.

Один из пакетов ПО — freshchat. А чат-бот — это одна из фичей чата.

Что умеют боты freshchat

Ботов у freshchat два вида:

  • для поддержки — бот-ответчик (да, как в суде);
  • и для продаж — так называемые «собственные боты», задача которых — привлечение и удержание клиентов.

Боты-ответчики и собственные боты создаются с помощью искусственного интеллекта и машинного обучения и либо сами отвечают клиенту, либо передают разговор оператору. Они могут сами оценить лида и записать его данные в CRM-систему.

Кроме того, сервис дает техническую возможность:

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

Раздел интерфейса freshchat для создания чат-ботов

Лендинги сервиса локализованы на 14 языков, включая русский. Но это машинный перевод, и это сказывается. При этом сам интерфейс сервиса переведен только частично.

Зарегистрироваться в сервисе и подключить чат можно бесплатно, доступ на условиях триала длится 21 день. Но боты доступны только на самом дорогом тарифе — от $69 за оператора в месяц. Чтобы оформить триал на этот тариф, нужно написать в поддержку.

Gist

У Gist тоже много фичей:

  • чат,
  • автоматизация email-маркетинга,
  • трекинг событий,
  • формы,
  • база знаний.

Что умеют чат-боты Gist

Видов ботов у Gist несколько, задачи они выполняют несложные. Боты Gist предназначены, в первую очередь, в помощь команде продаж:

  • предварительно квалифицируют пользователей с помощью вопросов и вариантов ответов на них;
  • рекомендуют статьи;
  • автоматически назначают встречи.

Открытый диалог с ботом на стартовой странице Gist

Цена: от $0 до $499

Доступ к созданию самого простого бота можно получить на бесплатном тарифе, ботов посложнее — на время триала на 14 дней. Квалификационный бот есть на профессиональном тарифе (от $29 на команду из 5 операторов в месяц), боты для назначения встреч и рекомендаций контента — только на тарифе премиум (от $99 сейчас и $499 в обычное время).

Маша Бурдина Пишу о том, в чем мы разбираемся.

24 июня разработчики Telegram открыли платформу для создания ботов. Новость кого-то обошла стороной Хабр, однако многие уже начали разрабатывать викторины. При этом мало где указаны хоть какие-то примеры работающих ботов.
Прежде всего, бот для Telegram — это по-прежнему приложение, запущенное на вашей стороне и осуществляющее запросы к Telegram Bot API. Причем API довольное простое — бот обращается на определенный URL с параметрами, а Telegram отвечает JSON объектом.
Рассмотрим API на примере создания тривиального бота:

Регистрация

Прежде чем начинать разработку, бота необходимо зарегистрировать и получить его уникальный id, являющийся одновременно и токеном. Для этого в Telegram существует специальный бот — @BotFather.
Пишем ему /start и получаем список всех его команд.
Первая и главная — /newbot — отправляем ему и бот просит придумать имя нашему новому боту. Единственное ограничение на имя — оно должно оканчиваться на «bot». В случае успеха BotFather возвращает токен бота и ссылку для быстрого добавления бота в контакты, иначе придется поломать голову над именем.
Для начала работы этого уже достаточно. Особо педантичные могут уже здесь присвоить боту аватар, описание и приветственное сообщение.
Не забудьте проверить полученный токен с помощью ссылки api.telegram.org/bot<TOKEN>/getMe, говорят, не всегда работает с первого раза.

Программирование

Создавать бота буду на Python3, однако благодаря адекватности этого языка алгоритмы легко переносятся на любой другой.
Telegram позволяет не делать выгрузку сообщений вручную, а поставить webHook, и тогда они сами будут присылать каждое сообщение. Для Python, чтобы не заморачиваться с cgi и потоками, удобно использовать какой-нибудь реактор, поэтому я для реализации выбрал tornado.web. (для GAE удобно использовать связку Python2+Flask)
Каркас бота:
URL = «https://api.telegram.org/bot%s/» % BOT_TOKEN MyURL = «https://example.com/hook» api = requests.Session() application = tornado.web.Application() if __name__ == ‘__main__’: signal.signal(signal.SIGTERM, signal_term_handler) try: set_hook = api.get(URL + «setWebhook?url=%s» % MyURL) if set_hook.status_code != 200: logging.error(«Can’t set hook: %s. Quit.» % set_hook.text) exit(1) application.listen(8888) tornado.ioloop.IOLoop.current().start() except KeyboardInterrupt: signal_term_handler(signal.SIGTERM, None)
Здесь мы при запуске бота устанавливаем вебхук на наш адрес и отлавливаем сигнал выхода, чтобы вернуть поведение с ручной выгрузкой событий.
Приложение торнадо для обработки запросов принимает класс tornado.web.RequestHandler, в котором и будет логика бота.
class Handler(tornado.web.RequestHandler): def post(self): try: logging.debug(«Got request: %s» % self.request.body) update = tornado.escape.json_decode(self.request.body) message = update text = message.get(‘text’) if text: logging.info(«MESSAGE\t%s\t%s» % (message, text)) if text == ‘/’: command, *arguments = text.split(» «, 1) response = CMD.get(command, not_found)(arguments, message) logging.info(«REPLY\t%s\t%s» % (message, response)) send_reply(response) except Exception as e: logging.warning(str(e))
Здесь CMD — словарь доступных команд, а send_reply — функция отправки ответа, которая на вход принимает уже сформированный объект Message.
Собственно, её код довольно прост:
def send_reply(response): if ‘text’ in response: api.post(URL + «sendMessage», data=response)
Теперь, когда вся логика бота описана можно начать придумывать ему команды.

Команды

Перво-наперво, необходимо соблюсти соглашение Telegram и научить бота двум командам: /start и /help:
def help_message(arguments, message): response = {‘chat_id’: message} result = .get(«first_name»), «\rI can accept only these commands:»] for command in CMD: result.append(command) response = «\n\t».join(result) return response
Структура message — это объект типа User, она предоставляет боту информацию как id пользователя, так и его имя. Для ответов же полезнее использовать message — в случае личного общения там будет User, а в случае чата — id чата. В противном случае можно получить ситуацию, когда пользователь пишет в чат, а бот отвечает в личку.
Команда /start без параметров предназначена для вывода информации о боте, а с параметрами — для идентификации. Полезно её использовать для действий, требующих авторизации.
После этого можно добавить какую-нибудь свою команду, например, /base64:
def base64_decode(arguments, message): response = {‘chat_id’: message} try: response = b64decode(» «.join(arguments).encode(«utf8»)) except: response = «Can’t decode it» finally: return response
Для пользователей мобильного Telegram, будет полезно сказать @BotFather, какие команды принимает наш бот:
I: /setcommands
BotFather : Choose a bot to change the list of commands.
I: @******_bot
BotFather: OK. Send me a list of commands for your bot. Please use this format:
command1 — Description
command2 — Another description
I:
whoisyourdaddy — Information about author
base64 — Base64 decode
BotFather: Success! Command list updated. /help
C таким описанием, если пользователь наберет /, Telegram услужливо покажет список всех доступных команд.

Свобода

Как можно было заметить, Telegram присылает сообщение целиком, а не разбитое, и ограничение на то, что команды начинаются со слеша — только для удобства мобильных пользователей. Благодаря этому можно научить бота немного говорить по-человечески.
UPD: Как верно подсказали, такое пройдет только при личном общении. В чатах боту доставляются только сообщения, начинающиеся с команды (/<command>) (https://core.telegram.org/bots#privacy-mode)
Чтобы бот получал все сообщения в группах пишем @BotFather команду /setprivacy и выключаем приватность.
Для начала в Handler добавляем обработчик:
if text == ‘/’: … else: response = CMD(message) logging.info(«REPLY\t%s\t%s» % (message, response)) send_reply(response)
А потом в список команд добавляем псевдо-речь:
RESPONSES = { «Hello»: , «Hi there»: , «Hi!»: , «Welcome»: , } def human_response(message): leven = fuzzywuzzy.process.extract(message.get(«text», «»), RESPONSES.keys(), limit=1) response = {‘chat_id’: message} if leven < 75: response = «I can not understand you» else: response = random.choice(RESPONSES.get(leven)).format_map( {‘name’: message.get(«first_name», «»)} ) return response
Здесь эмпирическая константа 75 относительно неплохо отражает вероятность того, что пользователь всё-таки хотел сказать. А format_map — удобна для одинакового описания строк как требующих подстановки, так и без нее. Теперь бот будет отвечать на приветствия и иногда даже обращаться по имени.

Не текст.

Боты, как и любой нормальный пользователь Telegram, могут не только писать сообщения, но и делиться картинками, музыкой, стикерами.
Для примера расширим словарь RESPONSES:
RESPONSES =
И будем отлавливать текст <at_sticker>:
if response == «<at_sticker>»: response = «BQADAgADeAcAAlOx9wOjY2jpAAHq9DUC» del response
Видно, что теперь структура Message уже не содержит текст, поэтому необходимо модифицировать send_reply:
def send_reply(response): if ‘sticker’ in response: api.post(URL + «sendSticker», data=response) elif ‘text’ in response: api.post(URL + «sendMessage», data=response)
И все, теперь бот будет время от времени присылать стикер вместо времени:

Возможности

Благодаря удобству API и быстрому старту боты Telegram могут стать хорошей платформой для автоматизации своих действий, настройки уведомлений, создания викторин и task-based соревнований (CTF, DozoR и прочие).
Вспоминая статью про умный дом, могу сказать, что теперь извращений меньше, а работа прозрачнее.

Ограничения

К сожалению, на данный момент существует ограничение на использование webHook — он работает только по https и только с валидным сертификатом, что, например для меня пока критично за счет отсутствия поддержки сертифицирующими центрами динамических днс.
К счастью, Telegram также умеет работать и по ручному обновлению, поэтому не меняя кода можно создать еще одну службу Puller, которая будет выкачивать их и слать на локальный адрес:
while True: r = requests.get(URL + «?offset=%s» % (last + 1)) if r.status_code == 200: for message in r.json(): last = int(message) requests.post(«http://localhost:8888/», data=json.dumps(message), headers={‘Content-type’: ‘application/json’, ‘Accept’: ‘text/plain’} ) else: logging.warning(«FAIL » + r.text) time.sleep(3)
P.S. По пункту 7 нашел удобное решение — размещение бота не у себя, а на heroku, благо все имена вида *.herokuapp.com защищены их собственным сертификатом.
UPD: Telegram улучшили Бот Апи, из-за чего, теперь не обязательно иметь отдельную функцию для отправки сообщений при установленном вебхуке, а в ответ на POST запрос можно отвечать тем же сформированным JSON с ответным сообщением, где одно из полей устанавливается как ч ‘method’: ‘sendMessage’ (или любой другой метод, используемый ботом).

admin

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *