Перейти к основному контенту

Структура платформы

«Людям не нужно еще одно приложение, они хотят лучший способ связи с бизнесом. Создавайте содержательные взаимоотношения с помощью обмена сообщениями».
Шейн Мак, со-основатель XMTP, со-основатель Assit (приобретена Verint). 


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

Давайте рассмотрим гипотетический пример общения с участием Боба, Алисы и чат-бота. Боб — клиент компании, где Алиса работает в отделе поддержки клиентов, где они только что внедрили нового чат-бота.

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

При нажатии на значок чата в правом нижнем углу экрана сайта открывается диалоговое окно, в котором чат-бот приветствует Боба.

image.png

1. Чат-бот

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

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

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

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

Клиент не хранит никаких данных или состояния разговора. Все, что Боб видит на экране, — это просто ввод и вывод, история разговора. В этом смысле современные чат-боты ничем не отличаются от консольной строки компьютера. Состояние разговора и пользовательские данные хранятся на сервере, хранение и обработку которых обеспечивает платформа Metabot. 

В понятие диалоговое приложение мы вкладываем более глубокий смысл, чем нам может позволить понятие 《чат-бот》.

2. Диалоговое приложение

Под диалоговым приложением (dialog apps) или разговорным приложением (conversocial apps) или интерактивным приложением (interactive apps) или коммуникационным приложением (communicational app) следует понимать специальные чат-боты, предназначенные для работы в мессенджере или социальной сети, которые обладают гораздо более широким функционалом и возможностями чем обычные чат-боты за счет использования графических расширений интерфейсов мессенджеров и интеграции с корпоративными системами предприятия и публичными Интернет-сервисами.

Диалоговые приложение можно противопоставить настольным приложениям (desktop apps), предназначенным для работы на настольных компьютерах, мобильным приложениям (mobile apps), скачиваемых и выполняемых на мобильных устройствах, таких как смартфон, планшет или часы, и веб-приложениям (web apps), которые запускаются в мобильных веб-браузерах, а не непосредственно на мобильном или настольном устройстве.

Диалоговые приложения обладают следующими ключевыми особенностями:

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

В этой документации мы используем понятия «диалоговые приложения»,  «метаботы», «чат-боты» и  «боты» взаимозаменяемо. В самом интерфейсе платформы мы используем повсеместно «чат-бот». В экосистеме Metabot, когда вы видите слово «чат-бот»,  «метаботы» или просто «бот», думайте «диалоговое приложение», чтобы не ограничивать ваши возможности. С помощью этой документации вы научитесь создавать диалоговые приложения на все случаи.

3. Каналы 

Когда Боб щелкнул значок чата и развернул окно живого чата, его приветствовал чат-бот.

Вместо окна живого чата на сайте Боб мог нажать на один из значков мессенджеров или социальных сетей, перейти в их приложение и там начать аналогичный диалог с компанией, например, в Telegram или WhatsApp.

Каналы коммуникации — это посредники, с помощью которых ваша компания общается с целевой аудиторией. Подумайте о «канале» чат-бота как об интерфейсе/системе, используемой конечным пользователем для взаимодействия с вашей компанией.

Подключение чат-бота к каналам популярных цифровых платформ чьи приложения, установлены или можно установить на мобильные устройства пользователей позволяет реализовать стратегию подключенного пользовательского опыта (connected experience) для вашего бренда или компании, реализовывать который вы научитесь позже по материалам этой документации.

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

Мы рекомендуем вам прочитать документацию по каналам.

4. Скрипты и команды

Согласитесь, что 《приветствие》 – важная часть разговора. В начале важно представиться и сообщить, что с человеком говорит чат-бот, чтобы задать клиенту правильные ожидания.

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

С технической точки зрения приветствие — это просто самый первый диалоговый сценарий, который отправляется пользователю при первом контакте.  

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

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

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

Разговор разворачивается последовательно от одной команды к другой команде, формируя содержательную беседу.  В один момент времени вы обсуждаете одну тему (это называется контекст), иногда перепрыгивая с темы на тему (переключаете контекст), но в целом, в каждый момент времени вы обсуждаете что-то одно. Вы либо говорите, либо слушаете. К сожалению или счастью, люди пока не научились вести диалог одновременно на несколько разных тем с разными собеседниками. Разговор в котором все говорят одновременно быстро превращается в бесполезный галдеж. Полезность разговора в котором оба собеседника молчат тоже под вопросом :P 

Чем отличается автоматический диалог человека и чат-бота от диалога двух человек? Ничем. Автоматический разговор пользователя с брендом или компаний на платформе Metabot строится аналогичным образом. В один момент времени выполняется один диалоговый сценарий, который развертывается последовательно команда за командой. Таким образом вы сможете планировать сценарии и чат-бот будет их четко придерживаться.

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

Для создания диалоговых сценариев на платформе Metabot используйте cкрипты (scripts) и команды (commands).

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

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

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

Вот пример скрипта:

image.png

5. Лиды, диалоги и состояние

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

В рамках платформы Metabot под лидом стоит понимать конечного пользователя вашего чат-бота.

Лидом в маркетинге называется потенциальный клиент. В одном из будущих релизов мы хотим переименовать лидов в пользователей бота (bot users), так как платформа вышла за рамки маркетинговых задач, с которых мы начинали. Итак, не стесняйтесь заводить привычку называть лид пользователем, как мы будем часто делать в этой документации.

Вся история диалога сохраняется на платформе для каждого пользователя и доступна на вкладке Лиды.

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

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

На платформе есть команда остановки/сброса диалога, вызов которой стирает состояние разговора и когда пользователь снова говорит с ботом, диалог начинается с самого начала т.е. с приветствия. Мы рекомендуем никогда не прерывать диалог и спроектировать бота таким образом, чтобы беседа никогда не достигла точки останова, и мы рекомендуем сбрасывать диалог только в целях отладки.

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

6. Персоны

После того как вы познакомились с концепций лида вам необходимо познакомиться с концепцией персоны (persons). Чат-бот это инструмент персонализации коммуникации и понятие персоны это важный элемент.

Если лид — это аккаунт пользователя в конкретном канале (например, в Telegram или WhatsApp), то персона — это сам человек. У персоны может быть несколько лидов (аккаунтов в каналах), не так ли? 

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

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

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

Итак, в терминах платформы Metabot, персона — это запись с данными о человеке.  У каждой персоны есть роль (person role). Вы можете создать набор ролей для каждого класса персона, например, гость, пользователь, сотрудник, администратор и другие.

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

image.png

7. Маршруты

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

Маршруты — это точки входа в сценарий диалога. Маршруты работают за кулисами — слушают ввод пользователя и запускаются при соблюдении условий запуска маршрута. Запуск нового маршрута переключает состояние диалога на новый сценарий.

Существует несколько типов маршрутов:

  • Маршруты, которые обрабатываются только тогда, когда у пользователя еще нет состояния разговора, т.е. разговор с ботом еще не начался (или был принудительно остановлен или сброшен на платформе). Например, для приветствия и отображения приветственное меню.

  • Маршруты, которые, наоборот, работают, когда разговор уже идет. Например, когда пользователь уже "течет" по боту, а мы хотели, чтобы бот реагировал на секретное слово типа «купон».

  • Третий тип маршрутов работает, когда разговор передается человеку и бот замолкает. Например, когда пользователь обратился за помощью к человеку, но передумал и хочет позвать бота обратно.

  • И, наконец, четвертый тип маршрутов работает по внешним ссылкам или так называемым deeplink-ссылкам (диплинки), когда мы заходим на бота по внешней ссылке, например, через рекламу или QR-код и хотим запустить определенный сценарий.

Маршруты имеют множество параметров, которые определяют, когда они должны сработать и какой скрипт запустить, если они сработают. Например, для примера Боба и Алисы мы создали маршрут с названием Greeting (приветствие), который запускает одноименный скрипт, когда пользователь пишет любой текст в чате. Регулярное выражение ".*" соответствует любому вводу.

image.png

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

Регулярное выражение, regular expression или cокращенно regex представляет собой специальный шаблон для сопоставления и поиска текста. Мы рекомендуем прочитать информацию в Интернет о регулярных выражениях для общего развития.

8. Обработка естественного языка (NLP)

Узнав о маршрутах, вы можете подумать, что регулярные выражения — это, конечно, хорошо, но как насчет чего-то посерьезнее: обработки естественного языка с использования нейронных сетей?

Хороший вопрос. Когда необходимо автоматизировать службу поддержки, автоматизировать ответы на часто-задаваемые вопросы или регулярных выражений просто недостаточно, вы можете использовать NLP (natural language processing).

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

На данный момент в Metabot есть готовая интеграция с Google Dialogflow. Dialogflow (сокращенно «DF») — это облачный сервис распознавания естественного языка от Google, который поддерживает различные языки, в том числе русский. У него есть бесплатные лимиты использования.

Мы также планируем подключить DeepPavlov, Rasa и другие популярные NLP. Если у вас есть свой движок и вы хотели бы сотрудничать, напишите нам.

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

Metabot поддерживает NLP отдельно от маршрутов.  В отдельном уроке по автоматизации службы поддержки мы детально разберем технические настройки Metabot, а пока верхнеуровневого рассмотрим как работает NLP на платформе Metabot:

  1. Платформа Metabot принимает ввод от пользователя в свободной форме и передает его в NLP машину.
  2. В ответ NLP сообщает так называемое намерение (intent), которое нейронная сеть посчитала наиболее вероятным (интент у которого самый большой score), а также, опционально, может вернуть готовое сообщение с ответом, которое нужно вывести пользователю.
  3. Metabot находит скрипт, соответствующий распознанному намерению, и запускает его для пользователя в качестве ответа на его запрос, заданный в свободной форме. Дальше пользователь работает как обычно, по диалоговому сценарию, которые мы рассмотрели выше.
    • Вы создаете один общий скрипт для всех ответов из NLP, а также можете создать индивидуальные скрипты под каждое распознаваемое намерение. 
  4. Если скрипт не найден или намерение не распознано, то Metabot запустит Fallback-скрипт для обработки исключительной ситуации, в котором вы можете вывести, например, "Извините, я вас не понял, можете перефразировать?"

Намерение (intent) — это разные вариации одного и того же запроса, в разных формулировках. 

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

В качестве примера, вернемся к Бобу, который открыл чат с намерением проверить состояние своего заказа. Если бы в чате мы предусмотрительно не добавили быструю кнопку "Track my order", то 100% Боб спросил бы об этом в чате, например, написав одну из следующих формулировок:

  • "Здравствуйте! Как мне отследить заказ?"
  • "Где моя посылка?"
  • "Мне два дня назад должен был прийти заказ, что случилось?"
  • "Трекер"

Все эти вариации выражают одно и того же намерение получить информацию о заказе. Понимаете теперь почему в NLP разработке каждую группу запросов называет намерением (intent)?

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

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

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

Для работы с NLP вам необходимо реализовать в вашем боте NLP замыкание (NLP closure) — это набор скриптов, настроенных специальным образом.

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

  • Настройте специальные сценарии, в которых ожидается, что пользовательский ввод и управление будут переданы машине NLP.
  • Затем настройте сценарии, в которых вы будете возвращать управление чат-боту и обрабатывать ответ от NLP.
  • Настройте сценарий Fallback для обработки исключений.

Также, с помощью NLP вы cможете извлекать сущности и переменные (entity extraction) из свободного ввода. Сущности — это справочники с набором значений, например, города, блюда, страны. Извлечение сущностей позволяет упростить пользовательский опыт и еще больше автоматизировать коммуникацию.  

Например, Боб мог бы в одном предложении попросить отследить заказа и сказать номер заказа:

  • "Где мой заказ ABC1-EFG7"
  • "Здравствуйте! Подскажите как отследить посылку  ABC1-EFG7"

Вот как работает интеграция NLP на техническом уровне:

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

Создание NLP ботов при помощи платформы Metabot24 и сервиса Dialogflow вы можете подробнее рассмотреть и опробовать на практике с помощью нашего урока "Автоматизируем службу поддержки"

9. Перевод диалога на человека и обратно

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

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

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

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

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

Для того чтобы люди могли принять участие в диалоге и обработать запрос, диалоги нужно куда-то передавать. Вы можете воспользоваться Контакт-центром от Metabot или подключить стороннюю платформу, например, Livetex, Jivo, Webim, Umnico, Bitrix24, с которыми Metabot имеет готовую интеграцию.

По завершению диалога платформа переведет диалог обратно чат-боту.

image.png

10. JavaScript Low-Code

Поддержка языка JavaScript — одна из ключевых особенностей платформы и мы надеемся, что вам понравится наш low-code подход к созданию чат-ботов также сильно как он нравится нам!

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

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

Low-code подход хорош тем, что цифровым опытом управляют бизнес-пользователи (маркетологи, дизайнеры, специалисты по работе с клиентом), которые вместе с технической командой создают проект.

Под цифровым опытом (digital experience) подразумевается взаимодействие между бизнесом/организацией и клиентом/пользователем с помощью информационных технологий и устройств. Чат-бот или диалоговое приложение, создаваемое вами, это инструмент с помощью которого ваши пользователи будут взаимодействовать с компанией или брендом, для которых вы создаете решение. Тот опыт, с которым пользователи будут сталкиваться и проживать, пользуясь вашим решением, называется цифровой опыт. В зависимости от аудитории для которой вы создаете решение, вы можете сталкиваться с различными синонимами для этого понятия: клиентский опыт (customer experience, CX), опыт сотрудника (employee experience, EX), опыт партнера (partner experience) и т.д. 

Connected Customer Exprience (CCX) — термин изобретенный нашей командой для того чтобы описывать специальные проекты, создаваемые с помощью платформы Metabot, означает диалоговый подключенный опыт, который реализуется с помощью диалогового приложения для мессенджеров, интегрированного в системы и сервисы предприятия. За счет интеграции со множественными системами и проникновения на смартфоны пользователей через мессенджеры бренд или компания начинают быть рядом с клиентом или покупателем 24/7/365, а покупатели и клиенты таким образом превращаются в подключенных пользователей. Используя эту документацию, вы научитесь создавать CCX для ваших заказчиков.

Существует несколько подходов к разработке программного обеспечения: high сode, low code и no code. А также на горизонте уже маячит еще один подход генерации кода с помощью ИИ (AI generated сode).

  • High code — это традиционный подход к разработке с большим количеством кода. При high code подходе цифровым опытом от начала до конца управляют разработчики через написание кода, в то время как при low code подходе, например с помощью платформы Metabot, в создании цифрового опыта участвует вся командой, а не только разработчики.
  • No code — это решения, которые можно разрабатывать без кода, путем конфигурирования и настроек в интерфейсе. Такие решения можно запускать без участия разработчика, можно быстро настраивать и масштабировать, но обычно они не достаточно гибкие и покрывают мало сценариев пользования (use cases).  

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

Рекомендуем ознакомиться со статьей High Code, Low Code или No Code: что выбрать?, чтобы взвесить плюсы и минусы каждого из подходов.

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

Разработка интеграций — наиболее популярный сценарий использования JS кода, ведь чат-бот — это диалоговый интерфейс к системам, но это не единственный use case для использования JS. Есть и другие случаи где полезно и необходимо применять JS, такие как:

  1. В условиях запуска команды в скрипте.  Например, когда вам нужно выполнить команду когда обращение к внешнему API вернуло успешный результат. Или ещё более распространенный пример: вам нужно вывести то или иное сообщение в зависимости от предыдущего выбора пользователя. 
  2. В условиях вывода кнопок для выбора в меню. Аналогично условиям к командам, вы можете писать условия к кнопками. Например, вы можете проверить роль пользователя и вывести в меню только кнопки доступные данной роли.
  3. Манипуляции с данными: атрибуты и тэги лида или бота, кастомными таблицы и пр. Например, когда в ходе опроса в боте вы собрали данные о пользователе, то далее эти данные можно записать в таблицу. 
  4. Работа с триггерами, рассылками и отложенными задачами в планировщике. В качестве условий для построения выборок пользователей мы также используем JS год.
  5. Вы можете разместить код JS в плагин/сниппет, который повторно использовать в разных чат-ботах.
  6. Вы можете создать API для вашего чат-бота и обрабатывать ввод при обращении к вашему API из внешних систем.
  7. Вы можете писать условия на JS в маршрутах.

И так далее. Вы уже поняли, что low сode важная составляющая разработки на Metabot и его можно использовать практически в любой точке чат-бота для создания гибких и универсальных решений?

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

Ниже приведен пример скрипта, состоящего из двух команд: Выполнить JavaScript, которая сохранит атрибут "test" во временной памяти (memory), и Отправить текст, которая выведет его. Этот пример не имеет никакого прикладного смысла, кроме как показать вам как выглядит интерфейс.

image.png

При редактировании кода открывается редактор с подсветкой синтаксиса:

image.png

На скриншоте ниже показан пример использования JS кода в условиях вывода команды.

image.png

Как происходит использование JavaScript кода? Все просто. Если вам нужно выполнить какую-то логику, описать условие выполнения той или иной операции, сделать выборку пользователей, то вы беретесь за JavaScript.

Как эффективно применять JavaScript ? Ознакомиться со справочников объектов платформы доступных для манипуляций из JS, изучить их свойствам и методы. ССЫЛКА НУЖНА

Смогу ли я без знаний JavaScript , не будучи программистов, создавать чат-боты с помощью Metabot? Конечно. Многие задачи (например, автоматизация контакт-центра) решаются практически без JS или c применением минимального набора базовых JS операторов. Также, вы можете воспользоваться нашими примерами, типовыми конфигурациями ботов, готовыми плагинами и интеграциями. Однако, для сложных задач и интеграций, вам понадобится умелое владение JS или помощь JS разработчика. 

Что такое JavaScript? JavaScript — популярный язык программирования с огромным сообществом разработчиков по всему миру и массой примеров в Интернет. Если вы не знаете как написать тот или иной код, воспользуйтесь поисковыми системами,  найдите нужный код, а затем адаптируйте его под Metabot. Платформа Metabot поддерживает урезанную версию JS без Promises, которая, однако, поддерживает все основные элементы языка JS: переменные, функции, классы, вызов REST API, и другое. 

11. Тэги и атрибуты

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

Тэги — это просто ярлыки, которыми вы можете пометить пользователя. Например, "зарегистрировался", "скачал_файл" и т.д. Тэг либо есть, либо его нет. 

Атрибуты — это переменные разных типов, в которых хранятся значения: строка, число, дата, булево, JSON. Например, "возраст", "город", "страна".

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

JSON (англ. JavaScript Object Notation, обычно произносится как /ˈdʒeɪsən/ JAY-sən) — текстовый формат обмена данными, основанный на JavaScript. Как и многие другие текстовые форматы, JSON легко читается людьми. Подробнее: https://ru.wikipedia.org/wiki/JSON 

Пример JSON:

{
   "firstName": "Иван",
   "lastName": "Иванов",
   "address": {
       "streetAddress": "Московское ш., 101, кв.101",
       "city": "Ленинград",
       "postalCode": 101101
   },
   "phoneNumbers": [
       "812 123-1234",
       "916 123-4567"
   ]
}

Еще один пример, в котором названия полей указаны на русском языке:

{
   "имя": "Иван",
   "фамилия": "Иванов",
   "адрес": {
       "улица": "Московское ш., 101, кв.101",
       "город": "Ленинград",
       "индекс": 101101
   },
   "телефоны": [
       "812 123-1234",
       "916 123-4567"
   ]
}

Для добавление и удаления тэгов используйте команды Добавить тэги и Удалить тэги, соответственно.

image.png

Для работы с тэгами лида используйте следующие JS методы объекта lead:

Название метода

Метод

Проверить существование тэга

lead.isTagExist('some_tag')

Получить список тэгов лида

lead.getAllTags(): array

 Для работы с атрибутами лида используйте следующие команды JS объекта lead:

Название метода

Метод

Установить значение переменной лида

lead.setAttr(string $key, string $value): self

Получить значение переменной лида

lead.getAttr(string $key): string|null

Получить массив всех переменных лида

lead.getAllAttr(): array

Проверить наличие переменной лида

lead.isAttrExist(string $key): bool

Объект lead доступен в JS из любого места на платформе (скрипты, триггеры, API эндпоинты, условия и пр.). Через lead вы можете обратиться к текущему лиду, с которым ваш бот ведет диалог. Ваш чат-бот может одновременно вести диалог с десятками, сотнями или даже тысячами лидов. Платформа Metabot работает асинхронно, обрабатывая каждый диалог в отдельном процессе (называемом воркером, worker, работником), который выполняет для лида различные скрипты, триггеры и прочее. Когда вы используете lead в вашем коде можете быть уверенны, что когда процесс дойдет до этого места, ваш код обратится к лиду с которыми идет диалог. Если же вам нужно в ходе диалога с одним лидом обратится к другому лиду, то такое тоже возможно, но это делается специальным образом, о чем вы узнаете позже.

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

В боте рекомендуем хранить общие для всех лидов данные (например, настройки бота, результат вызова общих API и т.д.), в то время как в лиде храните информацию по конкретному лиду.

В JavaScript вы также можете работать с атрибутами бота:

Название метода

Метод

Установить значение переменной бота

bot.setAttr(string $key, string $value): self

Получить значение переменной бота

bot.getAttr(string $key): string|null

Получить массив всех переменных бота

bot.getAllAttr(): array

Проверить наличие переменной бота

bot.isAttrExist(string $key): bool

12. Кастомные таблицы и базы данных

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

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

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

Вы сможете создавать таблицы с нужным вам полями и затем с помощью JS методов объекта table работать с ними.

Ниже приведен список некоторых функций объекта table для работы с таблицами и обьекта  item для работы со строками таблицы.

Название метода Метод
Создание записи table.createItem(string $tableName, array|object $data): ScriptCustomTableItem
Поиск записей

table.find(string $tableName, array|object $columns = [], array|object $where = [], array|object $orderBy = [], ?int $limit = null, ?int $offset = null): array

Подсчет количества записей

table.count(string $tableName, array|object $where = []): int 

Подсчет суммы по полю

table.sum(string $tableName, string $column, array|object $where = []): int

Поиск максимального значения по полю

table.max(string $tableName, string $column, array|object $where = []): mixed|null

Обновление записи

item.update(array|object $data): bool

Удаление записи

item.delete(): bool

Получить форматированную дату по названию поля

item.getDateFormatted(string $fieldName, string $format = 'Y-m-d H:i:s', ?string $timeZone = null): string|null

Получить форматированную дату из произвольной строки

item.getDateFormattedFromString(string $date, string $format = 'Y-m-d H:i:s', ?string $timeZone = null): string|null

Перезагрузить данные записи из БД

item.reload(): bool

Пример. Когда Боб запросил статус посылки, мы могли бы обратиться к таблице orders и с помощью table.find найти запись, например, с помощью следующего кода.

let items = table.find('orders', ['status'], [["orderId", "=", 1438]]);

Таким образом мы получаем из таблицы orders столбца status заказ id которого равен 1438.

Полный список функций и возможностей кастомных таблиц смотрите в разделе Кастомные таблицы

13. API эндпоинты и REST API интеграции 

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

В реальности вы часто будете сталкиваться с заказчиками, у которых уже есть ERP или Ecomm система для учёта и хранения данных, к которой нужно вам нужно будет обращаться по API запросу. Чаще всего вы будете отвечать за разработку сервиса чат-бота в то время как основная команда заказчика будет заниматься разработкой, внедрением и сопровождением корпоративных систем.

Системы предприятия будут либо самописные,  сделанные под заказ, либо популярные конфигурируемые и расширяемые проприетарные или open source продукты, например, это могут быть 1С:Предприятия, Bitrix24, Microsoft Dynamics, OTRS и другие.

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

Мы постоянно повторяем как заклинания эти два слова "бесшовный", "персонализированный" наряду с ещё одним термином "подключенный". Давайте наконец разберемся, что они означают.

  • Бесшовный диалоговый пользовательский опыт (Seamless conversational user experience)  — означает опыт взаимодействия с брендом или компанией, который характеризуется максимальным удобством и простотой, через непрекращающийся диалог в чат-боте, который не требует перехода в другие системы, сайты и приложения, используемые компанией, требующие отдельной регистрации  и изучения их уникального интерфейса и принципов работы.
    • Противоположностью бесшовному является рваный пользовательский опыт, который характеризуется необходимостью пользователю прерваться от диалога с компанией в чат-боте,  перейти по ссылке на внешний ресурс и сделать там целевые действия,  например,  зарегистрироваться на вебинар,  заполнив форму и подтвердил почту.
    • С помощью интеграции вы можете интегрировать сервис вебинара прямо в один из диалоговых сценариев вашего чат-бота, в ходе которого собрать недостающие данные и за кадром за место пользователя подать данные в систему вебинара.
    • Поверьте, ваши пользователи по достоинству оценят удобство вашего бесшовного сервиса и вашу заботу о них. Это не сможет не сказаться на их лояльности к вашему бренду или компании. Последнее что каждый из нас хочет, взаимодействуя с бизнесом, это разбираться в бесконечных лабиринтах интерфейсов тех систем и сайтов, которые требуются компании для ведения своей деятельность. Бизнес должен экономить нам время, а не отнимать его.
  • Персонализированный диалоговый пользовательский опыт (Personalized conversational user experience) — означает опыт взаимодействия с брендом или компанией, который характеризуется максимально индивидуально подстраиваемым под клиента интерфейсом в виде диалога в чат-боте.
    • Персонализация, а для того, чтобы подчеркнуть доступный вам уровень персонализации за счет чат-ботов, стоит сказать гипер-персонализация в чат-ботах обеспечивается за счет:
      • А) пользователь всегда идентифицирован — у бизнеса прямой канал связи через мессенджер или социальную сеть;
      • Б) в чат-боте накапливаются данные, опрашиваемые в ходе диалога;
      • В) за счет интеграций чат-бот получает доступ к транзакционным и другим пользовательским данным из корпоративных систем компании.
    • Когда у нас есть доступ ко всем этим параметрами пользователя и возможность строить диалоговые интерфейсы, что нам мешает адаптировать сообщения бота под индивидуальные особенности пользователя и присылать только те сообщения, которые будут интересны пользователю. Мы говорим уже не просто о сегментировании пользователей — чат-боты позволяют микро-сегментировать аудиторию вплоть до того что для не просто строить индивидуальные коммуникации с каждым микро-сегмента, а делать это индивидуально с каждым пользователем, при чем на большом масштабе и автоматически.
    • К противоположности персонализированного пользовательского опыта можно отнести, например, ECommerce сайты для массовые самообслуживания, которые хоть и представляют собой идеально оптимизированный процесс выбора товара, работы с корзиной и оплаты, но тем не менее не позволяет персонализировать внешний вид и набор экранов под каждого клиента индивидуально. Во-первых, потому что основная масса посетителей сайта не идентифицирована — это гости о которых практически ничего не известно и маркетологи постоянно должны придумывать разные ухищрения лишь бы только получить контакты — в мессенджерах это все лишнее, ведь с каждым поздоровавшимся с нашим чат-ботом человеком устанавливается прямой канал и мы всегда можем послать сообщение первым. Во-вторых, персонализация, не говоря уже о гипер-персонализации для микро-сегментов, на уровне веб-сайта или мобильного приложение это слишком дорогостоящая задача, которая мало кому по карману. Предоставление данных и контента через интерфейсы общения будь то чат-бот в мессенджере или голосовой бот в умной колонке — вот основной тренд эволюции интерфейса к компьютерным системами, который дает мощный толчек развития возможностям персонализации коммуникации , которого стоит придерживаться.    
  • Подключенный диалоговый опыт (Сonnected conversational experience) —  термин изобретенный нашей командой в ходе работы над проектами для наших заказчиков с помощью платформы Metabot и активно нами продвигаемый, который означает опыт взаимодействия с брендом или компаний, характеризуемый превращением покупателей и клиентов компании в подключенных пользователей за счет присутствия компании на мобильных устройствах пользователей с одной стороны и благодаря интеграциями с системами предприятия с другой.
    • Противоположностью подключенного опыта будет традиционный клиентский опыт, существовавший до появления Интернет и массовой популярности персональных мобильных устройств, который представляет из себя эпизодические, фрагментарные, рваные взаимодействия клиентов с брендом или компанией, например, когда клиент должен посетить компанию физически, чтобы продолжить взаимодействовать с ней, или когда компания вынуждена рассылать флаеры или показывать рекламу онлайн, чтобы напомнить о себе и вернуть клиента.
    • Подключенный опыт отличается тем, что клиента и компания уже "подключены" друг к другу, а значит необходимость в маркетинге, рекламе, пиаре уменьшается. Когда между клиентов и компанией установлена связь, компании не нужно конкурировать с другими компаниями и с самой собой за внимание клиента. C помощью интерактивного диалог в чат-боте и доступа к данным, нужно, как в жизни, поддерживать и развивать взаимоотношения клиента с брендом или компанией, зарабатывая доверие клиента.
    • Экономию и высвобождающиеся финансовые ресурсы, которые образуется за счет подключенного опыта, рекомендуется реинвестировать в еще большую персонализацию сервиса, таким образом предоставляя клиентам все более удобный, персонализированный и бесшовный опыт. Как клиенты, мы можем прийти за классным продуктом или услугой, но остаемся мы с компанией благодаря качественному сервису, не так ли? Подключенный диалоговый опыт — это стратегия (способ), которая позволит передовым и вперед -смотрящим компаниям получить уникальную дифференциацию (отличаться и конкурировать с другими) на рынке. Что все эти умные слова означают для вас разработчиков и дизайнов чат-ботов? Это означает бесконечный поток работ и постоянное развитие вашего чат-бота, потому что вместо того чтобы тратить деньги на какие-то устаревшие глупости ваш заказчику будет с удовольствием вкладывать в развитие чат-бота. Это не простые слова, это опыт, который мы подтвердили на практике нашими проектами. Сейчас просто не существует более эффективного инструмента для построения и управления коммуникациями чем мессенджеры и чат-боты с интеграциями. Именно для создания таких проектов мы создали и развиваем платформу Metabot. 

Как создавать такие проекты? Это не просто, но этому можно научиться. Мы постоянно упрощаем и улучшаем производственный процесс и платформу Metabot. Разработка диалоговых приложений и интеграций требует профессионализма, определенных технических навыков и мастерства, умения работать с технарями заказчика и другими участниками команды, а главное — постоянной практики. Проходя уроки в этой документации вы изучите методологию глубокой интеграции мессенджеров в процессы предприятия, разберете все технические особенности создания подобных проектов, получите готовые примеры кода и чат-ботов, которые сможете адаптировать под свои задачи.  

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

Технически, интеграции с системами делаются c помощью конструктора API. Платформа позволяет создавать точки интеграции, которые называются эндпоинтами, которые описывают все точки взаимодействия вашего чат-бота с внешними системами (внешние эндопоинты), и, наоборот, точки взаимодействия внешних систем с вашим чат-ботом (внуренние эндпоинты).

Интеграция сервисов осуществляется с помощью стандартных REST API интерфейсов. Для тех кто впервые знакомиться с интеграциями сделаем небольшое отступление. Если вы опытный разработчики, можете промотать и дальше знакомиться с платформой Metabot. 

Что такое API?

API (Application Programming Interface или интерфейс для прикладного программирования) — это набор определений и протоколов для создания и интеграции прикладного программного обеспечения. Иногда его называют контрактом между поставщиком информации и потребителем информации, устанавливающим контент, требуемый от потребителя (вызов), и контент, требуемый поставщиков (ответ). Например, дизайн API для погодной службы может указывать, что потребитель должен предоставить почтовый индекс, а производитель должен ответить двумя частями: первая — высокая температура, а вторая — низкая.

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

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

Еще одно преимущество API заключается в том, что вам не нужно знать особенности кэширования — как извлекается ваш ресурс или откуда он берется. 

Что такое REST?

REST (Representational State Transfer или передача репрезентативного состояния)  — это набор архитектурных ограничений, а не протокол или стандарт. Разработчики API могут реализовать REST различными способами. Для веб-служб, построенных с учётом REST (то есть не нарушающих накладываемых им ограничений), применяют термин «RESTful». 

REST API (также известный как RESTful API) — это интерфейс прикладного программирования, который соответствует ограничениям архитектурного стиля REST и позволяет взаимодействовать с веб-службами. REST означает передачу репрезентативного состояния (Representational State Transfer) и был создан компьютерным ученым Роем Филдингом. 

Когда клиентский запрос выполняется через RESTful API, он передает представление о состоянии ресурса запрашивающей стороне или конечной точке. Эта информация или представление доставляется в одном из нескольких форматов через HTTP: JSON (обозначение объектов Javascript), HTML, XLT, Python, PHP или обычный текст. JSON является наиболее популярным форматом файлов для использования, потому что, несмотря на свое название, он не зависит от языка, а также удобен для чтения как людьми, так и машинами.

Еще кое-что, о чем следует помнить: заголовки и параметры также важны в HTTP-методах HTTP-запроса RESTful API, поскольку они содержат важную информацию об идентификаторе в отношении метаданных запроса, авторизации, универсального идентификатора ресурса (URI), кэширования, файлов cookie и т. д. Существуют заголовки запросов и заголовки ответов, каждый из которых имеет собственную информацию о HTTP-соединении и коды состояния.

Чтобы API считался RESTful, он должен соответствовать следующим критериям:

  • Архитектура клиент-сервер, состоящая из клиентов, серверов и ресурсов, с запросами, управляемыми через HTTP.
  • Связь клиент-сервер без сохранения состояния (stateless), что означает информация о клиенте не сохраняется между запросами на получение, и каждый запрос является отдельным и не связанным.
  • Кэшируемые данные, которые оптимизируют взаимодействие клиент-сервер.
  • Единый интерфейс между компонентами, чтобы информация передавалась в стандартном виде. Это требует, чтобы:
    • запрашиваемые ресурсы были идентифицируемы и отделены от представлений, отправленных клиенту.
    • ресурсы могли управляться клиентом через представление, которое они получают, потому что представление содержит достаточно информации для этого.
    • самоописательные сообщения, возвращаемые клиенту, содержали достаточно информации, чтобы описать, как клиент должен их обрабатывать.
    • гипертекст/гипермедиа доступны, что означает, что после доступа к ресурсу клиент должен иметь возможность использовать гиперссылки, чтобы найти все другие доступные в настоящее время действия, которые он может предпринять.
  • Многоуровневая система, организующая каждый тип серверов (отвечающих за безопасность, балансировку нагрузки и т. д.), включающая поиск запрашиваемой информации в виде иерархий, невидимых для клиента.
  • Код по запросу (необязательно): возможность отправлять исполняемый код с сервера клиенту по запросу, расширяя функциональные возможности клиента. Metabot поддерживает эту возможность.

Хотя REST API должен соответствовать этим критериям, он по-прежнему считается более простым в использовании, чем предписанный протокол, такой как SOAP (Simple Object Access Protocol или простой протокол доступа к объектам), который имеет особые требования, такие как обмен сообщениями XML, а также встроенную безопасность и соответствие транзакциям, которые делают его медленнее и тяжелее.

REST, напротив, представляет собой набор рекомендаций, которые можно реализовать по мере необходимости, делая REST API более быстрыми и легкими, с повышенной масштабируемостью, что идеально подходит для Интернета вещей (IoT) и разработки диалоговых и мобильных приложений.

Благодарим Redhat за информацию для этой секции.

В данный момент, платформа Metabot поддерживает только REST интерфейсы с JSON и XML форматами обмена данными. Другие способы интеграции систем, например, SOAP, RPC сейчас не поддерживаются. 

Интеграции API на Metabot

К сожалению, на практике вы часто будете сталкиваться с устаревшими системами и сервисами, которые нельзя назвать RESTful. Если вам попалась система без REST интерфейса, попросите разработчиков его создать или сделайте доработку сами. Либо вам придется организовать обмен данными другим способом через промежуточную систему-шлюз, у которой будет REST интерфейс для подключения чат-бота.

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

Существует несколько способов вызова API:
  • С помощью внешних API endpoints (эндпоинтов или точек интеграции).
  • Прямым вызовов объекта api из любого места в чат-боте. 

Для обращения к вашему чат-боту по API из внешних систем:

  • Создайте и опубликуйте внутренние endpoint'ы для вашего чат-бота.
  • Обращайтесь к стандартным API методам платформы (вызов скрипта, триггеры и т.п.) 

В нашем примере, когда Боб прислал трекинг номер своей посылки, мы могли бы обратиться к внешней RESTful системе, например, с помощью следующего кода:

КОД

Подробную информацию о том как разрабатывать API интеграциями с примерами смотрите в разделе Конструктор API

14. Триггеры, бродкасты и джобы

Хорошо, раз вы дошли до этого места, то мы хотим вас поздравить! Сейчас у вас уже должно быть представление о том как создаются чат-боты и диалоговые приложения с помощью Metabot: диалоговые сценарии, база данных, API интеграции, JS алгоритмы. Этой теоретической основы достаточно, чтобы создавать решения любой сложности. Вы даже сможете автоматизировать часто-задаваемые вопросы с помощью NLP!

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

Платформа Metabot имеет встроенный cron scheduler (планировщик), в который вы можете добавлять отложенные задания (jobs, джобы) для выполнения в будущем, например, вы можете запланировать отправку цепочку контента после того как лид поздоровался с ботом.

Также, Metabot имеет триггерную систему и вы сможете создавать триггеры (triggers), который будут выполняться автоматически при наступлении определенных событий, например, при добавлении тэга у лида.    

Наконец, в Metabot есть массовые рассылки, которые называются броадкасты (broadcast), по аналогии с широковещательным форматом. Броадкасты позволяют отправлять интерактивные скрипты выборке лидов. Выборка пишется на JS. 

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

Итак, для разработки исходящих коммуникаций вам стоит овладеть следующими понятиями и функционалом:

  • Триггеры (triggers) — программируемые события, которое приводит к выполнению нужного вам действия. С помощью триггеров вы можете программировать индивидуальные сообщения.
  • Броадкасты (broadcasts) — это массовые рассылки сообщений многим получателям одновременно. С помощью JS вы указываете условия поиска лидов, которым нужно отправить сообщение.
  • Джобы (jobs) — это более свежий универсальный и общий термин , появившийся в Metabot в более поздних версиях, который коллективно означает задачи или работы по отправке коммуникации, которую нужно выполнить, но по факту джоба будет отправлять скрипт, триггер или броадкаст.

Платформа поддерживает несколько способов запуска исходящих коммуникаций со стороны бизнеса:

  1. Запланировать вызов в коде JS через объект bot:
    • Универсальный метод bot.scheduleJob() для планирования запуска коммуникации (скриптов, триггеров, броадкастов).
    • Различные методы планирования запуска на ваш выбор, который подходят под те или иные случаи, например:
      • bot.runScriptForLead() 
      • bot.runTriggerForLead() 
      • bot.runScriptByNameForLead() 
      • bot.runTriggerByNameForLead()
      • bot.runScriptForPerson()
      • bot.runTriggerForPerson()
      • bot.runScriptByNameForPerson()
      • bot.runTriggerByNameForPerson()
  2. Создать триггер руками в интерфейсе и задать у него условия автоматического выполнения запуска: 
    • image.png

  3. Создать и выполнить массовую рассылку в интерфейсе платформы:
    • image.png

    • В качестве JS условия пишется код, который фильтрует лиды.
  4. Обратиться к API бота из внешних систем через API эндпоинты вашего бота. С помощью эндпоинтов вы имеете практически полный контроль над содержимым входящего запроса и смодете разработать свою JSON структуру для тела запроса (request body). 
    • Это довольно распространенный случай когда событие происходит во внешней системе, которая инициирует коммуникацию в боте. Вы создаете внутренние API эндпоинты, в которых принимаете запросы и обрабатываете их в JS коде, используя команды планирования запуска, описанные в пункте (1) выше.
    • Ваш запрос должен быть размещен внутри script_request_params. Не забывайте этот нюанс.
    • URL: /bots/{botId}/call/{alias}
    • Пример:

      {
        "script_request_params": {
          "first_param": 7,
          "second_param": {
            "any_key": "any_value"
          }
        }
      }
  5. Запланировать джобу через API платформы, в которой указать ID лида и объект, который хотели бы вызвать для этого лида.  Также можете передать параметры script_request_params для обработки в объекте, и другие настройки.
    • URL: /bots/{botId}/jobs/schedule
    • Пример:

      {
        "script_id": 1,
        "trigger_id": 1,
        "broadcast_id": 1,
        "script_code": "script_short_code",
        "trigger_code": "trigger_short_code",
        "broadcast_code": "broadcast_short_code",
        "lead_id": 135,
        "ticket_id": 7,
        "run_at": "2021-01-21 21:00:00",
        "run_after_sec": 300,
        "is_periodic": false,
        "repeat_interval_sec": 86400,
        "condition_script_code": "if (leadId == 135) {return true; }",
        "script_request_params": {
          "first_param": 7,
          "second_param": {
            "any_key": "any_value"
          }
        },
        "add_tags": "tag1,tag2",
        "remove_tags": "tag1,tag2"
      }

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

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

  • Кейс: при наступлении события во внешней системе породить коммуникацию в чат-боте.
    • Решение 1: 
      • Cоздаете эндпоинты под каждое событие и предоставляете документацию разработчикам внешней системы.
      • Эндпоинт обрабатывает запрос и вызывате нужный скрипт напрямую, передавая в него входящие параметры через request_params.
      • Все сообщения из цепочки будут доставлены по эффекту домино.
    • Решение 2:
      • Если эндпоинтов много и вы не хотите запутаться в их диспетчеризации, можете создать промежуточный триггер для процессинга входящих запросов из внешних систем. В этом случае вы также создаете эндпоинты в которых валидируете данные, но вызываете не нужный скрипт, а передаете данные запроса в триггер процессинга, который подготавливает данные и с помощью if/switch запускает нужную коммуникацию.
    • Решение 3:
      • Третий способ, самый трудоемкий но более надежный, это реализовать внутреннюю очередь на доставку с помощью кастомной таблицы. И наконец, самый надежный способ мы планируем выпустить в будущем, он будет позволять добавлять входящие сообщения во внутреннюю быструю очередь т.к. кастомные таблицы работают в базе данных и это не самый лучший механизм для реализации очередей.
  • Кейс: создать контентную цепочку, описывающую ценность компании, продукции или услуги т.е. так называемые автоворонки.
    • Решение 1:
      • Вы создаете диалоговые сценарии и в нужных точках программируете вызов первого сообщения из цепочки с помощью JS метода bot.scheduleJob() или другого подобного, в котором указываете отсрочку запуска или точное время, в зависимости от вашего кейса.
      • В первом сообщение цепочки вы присылаете контентные сообщения, и в конце планируете следующий скрипт. И так далее.
    • Решение 2:
      • Вы можете создать кастомную таблицу с контентом и настройками времени запуска. 
      • Затем написать универсальный триггер или скрипт, который выступит процессингом очереди контента, будет брать контент из таблицы (или внешнего API), отправлять его и планировать следующий запуск самого себя для этого лида.

Подробную информацию по работе с триггерами c примерами кода смотрите в разделе Триггеры.

15. Воркеры, веб-хуки и ядро процессинга

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

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

Все входящие сообщения из канала принимаются сервером Metabot и сохраняются во входящей очереди (incoming queue). Очередь обрабатывается с помощью ядра (core) или процессинга коммуникаций (communication processing) и после обработки исходящие сообщения отправляются обратно в канал к пользователю.

В процессинге коммуникаций одновременно участвует несколько воркеров (workers) — рабочих процессов, которые разбирают входящую очередь, обрабатывают сообщения, выполняют команды и отправляют исходящие коммуникации обратно в канал. На отправку сообщений выделена одна группа воркеров, на рассылки и триггеры - другая. Количество воркеров зависит от конфигурации сервера. Обычно их не более 10.

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

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

Диалог осуществляется с помощью обмена веб-хуками (webhooks), которые каналы  (например, мессенджеры) вызывают, когда пользователь взаимодействует с чат-ботом. Историю диалога (журнал сообщений) можно просмотреть через лид или контакт-центр.

16. Пути пользователя и аналитика

Теперь когда вы полностью разобрались в техническим аспектах разработке чат-ботов (за исключением разве что Chat GPT, но об этом мы поговорим отдельно — это просто расширение NLP блока), давайте разберем ещё один важный концепт без которого внедрение комплексного чат-бота с большим количеством коммуникаций становится неполноценным.

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

Но, если у нас бот со сложной системой коммуникаций, как мы можем узнать где находятся наши пользователи в каждый момент времени? Или как нам узнать по каким путям они двигались? Как нам оценить насколько удачно нам удалось спроектировать пользовательский опыт?

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

Для визуализации путей вы можете воспользоваться дополнительным плагином, панелью аналитики Dialog Journey от команды Metabot.

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

Но просто включить аналитику и все заработало не получится. Сперва вам нужно спроектировать сами пути для каждого класса персон (сегмента), путь которого вы хотели бы отслеживать.

Пути или как мы называем его путешествие (journey) состоять из фаз/этапов (phases/stages), которые в свою очередь состоять из шагов (steps).

Мы рекомендуем создать отдельную карту для планирования путешествия пользователей. Для этого вы можете воспользоваться популярным у маркетологов фреймворком, который называется карты клиентских путей (customer journey map или CJM). Это готовая и детально описанная методология анализа того как клиент взаимодействует с бизнесом, которая помогает визуализировать путь клиента и потом командно с ним работать.

Настоятельно рекомендуем освоить этот инструмент, потому что создание чат-ботов с помощью Metabot напрямую с ним связано. Когда вы внедряете чат-бот в бизнес вы только тем и занимаетесь что улучшаете клиентские пути. Ниже пример CJM карты, созданный в Miro

image.png

Обычно работа над чат ботом начинается с вопросов заказчику:
- какие пути приносят 80% дохода?
- какие пути приносят 80% проблем/жалоб?

Автоматизацию следует начинать с наиболее популярных путей. А чтобы улучшить пути сперва их нужно понять - пройти по ним самостоятельно, собрать информацию о них от других и визуализировать в виде карты путей CJM. Тот путь который проходят ваши пользователи по CJM называется пользовательским опытом (user experience), о котором мы уже говорили выше.

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

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

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

image.png

17. Плагины

Отлично. Вы молодец, что добрались до этого места.

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

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

Получается что чат-бот это набор решений для разных этапов пути. Можно считать что бот состоит из мини-ботов или мини-программ.

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

Затем может идти регистрация или авторизация пользователя, создание учётной записи во внешней ERP или Ecomm системе.

Далее можно быть этап заказа услуги или выбор товара и формирование корзины покупок, оплата.

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

А ещё вам могут понадобится маркетинговые коммуникации, например, для приглашения пользователь на оффлайн или онлайн мероприятие.

И так далее.

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

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

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

Плагины — это расширения платформы Метабот, создаваемые с помощью языков JS или PHP для повторного и многократного использования в разных местах в одном и том же боте или в абсолютно разных ботах.

Подробнее о плагинах и сниппетах смотрите в разделе Плагины.

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

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

18. Chat GPT и генеративные алгоритмы 

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

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

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

Однако, стоит понимать и отдавать себе отчёт,  что генеративные (от слова generate , создавать) алгоритмы не везде уместны.

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

Команда Metabot работает над решением для подключением Chat GPT и над примерами использования. Информация будет опубликована позже.

Оставьте заявку, если вас интересует функционал генеративных искусственного интеллекта: https://metabot24.ru/contacts/ 

19. Личность бренда

Технологический прогресс очевиден далеко. Мы начинали со скриптов и JS алгоритмов, потом дошли до CJM и даже поговорили о Chat GPT.

Технологический прогресс за последние 50-70 лет очень сильно поменял интерфейсы компьютера. От больших мейнфремов и перфокарт человечество пришло к персональным компьютерам, потом к мобильным устройствам и сенсорным экранам. Мы пережили эпоху Интернет, расцвета ECommerce и веб-сайтов для самообслуживания.

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

Среда в которой мы живём и взаимодействуем тоже меняется с развитием технологий.
Устное слово, сменили книги и печатный пресс, потом пришло радио и телевидение, затем компьютеры, Интернет, видео камеры и мобильные устройства. А впереди маячат метавселенные, виртуальные и дополненные реальности. Уже сейчас популярность набираю умные колонки, умные автомобили и дома.

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

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

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

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

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

Интеграции ботов с системами предприятия встречаются все чаще и чаще. Например, проверка заказа как в нашем примере с Бобом

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

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

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

Если это не начинать делать, то скажите как вы собираетесь представлять вашу компанию в виртуальных 3D мирах?  В виде веб-сайта, текстового чат-бота, мобильного приложения?

Нет, вам нужен новый интерфейс, более подходящий для новых 3D сред. Интерактивный и живой, с которым можно поговорить и завести отношения.

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

Для создания личности воспользуйтесь готовым уроком: URL

Что дальше?

Ого! С вами можно иметь дело, если вы здесь. Добро пожаловать в новый дивный мир! Спасибо, что ознакомились с этим материалом.

Что делать дальше:

  • Начать делать конкретные уроки, решая те задачи на практике, которые стоят перед вами.
    - автоматизация поддержки 
    - автоматизация маркетинга 
    - внутренний бот для хелпдеска
    - создание диалогового приложения с интеграциями
    - автоматизация всего cjm
    - создание личности бренда
  • Скачать готовые шаблоны и примеры кода в уроках.
  • Изучить базовый и расширенный функционал более детально, перейдя по ссылкам выше.
  • Записаться на консультацию
  • Заказать решение «под ключ».