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

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

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


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

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

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

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

image.png

1. Чат-бот

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

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

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

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

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

Под диалоговое приложение мы вкладываем более глубокий смысл.  

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

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

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

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

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

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

3. Каналы 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

image.png

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

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

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

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

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

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

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

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

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

6. Маршруты

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

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

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

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

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

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

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

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

image.png

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

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

7. Обработка естественного языка (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-бота для автоматизации поддержки с шаблоном кода и примерами.

7. 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, и другое. 

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

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

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

Атрибуты — это переменные разных типов, в которых хранятся значения: строка, число, дата, булево, 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

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

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

Реляционная база данных 



Workers, Webhooks and Communication Processing

На платформе GoChatbot в одном бизнесе могут одновременно работать несколько ботов, с которыми одновременно могут общаться большое количество пользователей.  A bot is a special class of software built on an asynchronous architecture. It should be noted that modern communications themselves have become asynchronous. The user sends a message to the messenger or chat on the site, switches to another task while waiting for a response.

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

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

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

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

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

The conversation is carried out using the exchange of webhooks, которые каналы вызывают когда пользователь взаимодействует с чат-ботом, the history (log) of which can also be viewed through the lead, in order to check the operation of bot commands that are visible or invisible to the user.


Handing conversation from a bot to a human and back

The user can be in a conversation with a bot or in a conversation with a person. For example, if the bot cannot answer Bob's questions, he can transfer the conversation to the support department and Alice will help Bob.