Но сначала немного истории QlikBot ...

На самом деле существует около десятка различных прототипов чат-ботов (или, как мы их называем, QlikBots), разработанных сотрудниками, клиентами и партнерами.

Но сегодня Qlik выпускает два проекта QlikBot с открытым исходным кодом на Qlik Branch и GitHub.

  • QlikBotNode: веб-сервис, построенный на Node.js, Express.js и MySql, который может подключаться к платформам обмена сообщениями, таким как Telegram, Skype, Microsoft Teams, Cortana, Slack, Google Assistant и Amazon Alexa. Подробнее об этом здесь.
  • QlikBotNe t: построен на .NET / C # и обеспечивает доступ к контенту Qlik Sense. Его также можно использовать с платформой обмена сообщениями Telegram.

Как мы здесь оказались? Ну, это началось как внутренний проект два года назад, а затем впервые было представлено публике в 2016 году на нашей всемирной конференции пользователей Qonnections. С этого момента мы знали, что хотим открыть его исходный код, чтобы каждый мог изучить возможности QlikBots. Наша цель? Что проекты QlikBot на Qlik Branch и GitHub со временем станут домом для многих других ботов.

В этой публикации мы сосредоточимся на QlikBotNet - чат-боте Telegram для Qlik Sense, созданном на платформе .NET. Мы покажем, как он был создан и как он интегрируется с Qlik.

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

А теперь познакомьтесь с Отцом Боттов.

На платформе обмена сообщениями Telegram всеми чат-ботами управляет Botfather. Серьезно ... позвольте мне объяснить ...

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

Чтобы иметь правильно работающий чат-бот, вам необходимо иметь службу / программу, которая постоянно отслеживает разговоры с вашим чат-ботом через платформу Telegram Bot Platform. Таким образом, когда пользователь что-то говорит боту, эта программа объединяет сообщение от Telegram Bot Platform, интерпретирует его, а затем отправляет ответ пользователю. Это «мозги» бота.

Итак, почему .NET?

Несмотря на свой Windows-характер, основная причина, по которой был выбран .NET, заключается в том, что существует несколько пакетов NuGet, которые действительно полезны при создании чат-бота.

  • Telegram.Bot » обеспечивает связь между платформой Telegram Bot и вашей программой.
  • QlikSense.NetSDK обрабатывает задачи, связанные с Qlik Sense, которые включают, помимо прочего, открытие приложения, управление пользователями, основные элементы, фильтрацию и т. д.
  • ApiAiSDK обрабатывает запросы к службе Google API.AI, которая недавно была переименована в dialogflow. Это платформа обработки естественного языка (NLP) от Google.
  • Microsoft.Cognitive.LUIS обрабатывает запросы к Microsoft LUIS, которая является платформой NLP от Microsoft.

Анатомия нашего программного обеспечения QlikBotNet

Как только вы откроете Проект QlikBotNet в Qlik Branch (также доступен здесь), в решении будет шесть проектов.

1. QlikBot: это начальный класс всей программы - он ничего не делает, кроме запуска новой службы бота (простой, но весьма важный). В этом случае запускается QlikTelegram, который начинает объединение сообщений от платформы Telegram Bot.

2. QlikTelegram: этот класс отвечает за обмен данными между Telegram и остальными другими службами. Когда сообщение получено, оно проверяет, является ли пользователь администратором или обычным пользователем, прежде чем решит, следует ли обрабатывать команду дальше. Если получена специальная команда, она немедленно обрабатывается и отправляет ответ отправителю. Если сообщение требует обработки естественного языка, оно передает сообщение в QlikConversationService для обработки.

3. QlikConversationService: этот класс обрабатывает всю обработку естественного языка, включая сообщения, связанные с Qlik. Модель НЛП (Dialogflow или LUIS) обучена понимать конкретные вопросы - например, каковы наши продажи на сегодня? и каков KPI для [вставьте критерии здесь]. В этом классе есть экземпляр Qlik NLP и экземпляр Qlik Sense (оба в QlikSenseEasy). После получения сообщения он передает его в QlikNLP для интерпретации. Он получит объект намерение и сущность от НЛП. В зависимости от объекта, который он получает, он затем получает объекты с сервера Qlik Sense. Получив от Qlik Sense все необходимое, он передает последнее сообщение обратно в экземпляр QlikTelegram.

4. QlikNLP: В этом проекте есть два вспомогательных класса НЛП: один для Google, а другой - для Microsoft. Существует также еще один класс НЛП для их анализа.

5. QlikSenseEasy: это вспомогательный класс Qlik Sense. Он построен на основе Qlik .NET SDK. Основная цель этого класса - доступ к серверам Qlik Sense и выполнение операций, связанных с Qlik. Например, получение элементов, применение фильтров и (что наиболее важно) определение управления пользователями.

6. QlikLog: это вспомогательный класс для записи информации, например, когда новый пользователь подключает бота к файлу журнала и консоли. QlikBotNet регистрирует почти все действия (т.е. полученные сообщения, полученные встроенные сообщения, ошибки и исключения и т. Д.). Каталог файла журнала указан в app.config- ›logFilePath. Если значение не назначено, оно будет сохранено в корневой папке.

Итак, что будет дальше с QlikBotNet?

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

Мы надеемся, что QlikBotNetQlikBotNode - подробнее здесь) позволит разработчикам работать над еще более интересными проектами чат-ботов. И мы призываем разработчиков разветвлять проекты на GitHub, добавлять новые функции, тестировать их и отправлять запросы на вытягивание. Мы просто просим вас следовать нашим руководящим принципам открытого исходного кода, найденным здесь.

Наконец, если у вас есть какие-либо вопросы, не стесняйтесь задавать их в комментариях ниже или присоединяйтесь к Qlik Branch Slack. У нас есть целый канал, посвященный всему, что есть QlikBot.

Ура и удачного взлома!