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

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

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

«Окей, Google, напомни мне опубликовать статью о чат-боте»

«В какое время?»

«Полночь»

«Конечно, напомню в среду в полночь».

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

«Окей, Google, расскажи анекдот»

«Вот шутка как раз ко Дню святого Валентина. Я забыла сказать вам, что у меня назначена дата на День святого Валентина. Это 14 февраля ».

Но все это происходит за счет того, что наши данные хранятся и используются в интересах компании. Недавно Google India написал в Твиттере вопрос: "Почему индийские пользователи продолжают просить Google Ассистента выйти за них замуж?"

Можем ли мы что-нибудь с этим сделать? Скорее всего, нет.

Что, если бы мы могли создать собственного чат-бота?

Мы могли бы добавить все необходимые функции и настроить их по своему вкусу.

Итак, давайте создадим чат-бота, который поможет вам работать более продуктивно, поскольку он работает на Slack. Чат-бот, который мы собираемся создать, никоим образом не похож на Google Assistant. Это даже не голосовое управление.

Slack - это платформа обмена сообщениями, созданная для совместной работы и совместной работы команд. Это наиболее распространенный инструмент, который сегодня используется в компаниях для общения со своими сотрудниками.

Начало работы

Давайте вместе создадим чат-бота на Slack.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: этот проект был создан командой из двух человек для конкурса, но, к сожалению, мы не смогли пройти в финал.

Это наша Архитектура нашего Slackbot.

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

Клонируйте репозиторий с GitHub.

Создайте файл .env в каталоге /src вашего проекта.

Установите требования:

pip install -r requirements.txt

Это ваш основной файл: slackbot.py.

slackbot.py сначала импортирует все пакеты, необходимые для запуска Slackbot. Затем он запускает Slack-клиент, используя ваш ключ API Slack, который хранится в вашем .env файле следующим образом:

API_KEY=”Your Slack API Key”

Он инициализирует константы и пытается подключиться к Slack's RTM API, и если ему не удается установить соединение, он возвращает Connection failed with the error message printed above.

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

Функции с кодом и объяснением

Тексты песен

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

elif message.startswith("lyrics for "):
get_song_name = message[11:]
lyrics_gen = Song_Lyrics(settings.GCS_API_KEY, settings.GCS_ENGINE_ID)
song = lyrics_gen.get_lyrics(get_song_name)
response = '*' + song[0] + '*' + '\n\n' + song[1].replace('<br>','\n')

Вам необходимо создать идентификатор системы пользовательского поиска, добавив любой или все следующие веб-сайты по вашему выбору:

  • https://genius.com/
  • http://www.lyricsted.com/
  • http://www.lyricsbell.com/
  • https://www.glamsham.com/
  • http://www.lyricsoff.com/
  • http://www.lyricsmint.com/

Примечание. Для получения дополнительной информации обратитесь к библиотеке Python Lyrics Extractor.

Получив идентификатор своей системы пользовательского поиска, получите ключ API JSON пользовательского поиска Google, и все готово.

Получите аудио и видео для песни

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

Это ваш get_music.py.

После импорта всех зависимостей требуется API данных YouTube для извлечения песен и извлечение первой ссылки из результатов поиска, полученных для написанных или неправильно написанных названий песен.

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

Затем он использует Pafy Python Library для извлечения аудио из видео ссылки песни. Для сокращения длинных URL-адресов, созданных для потокового аудио, срок действия которых истекает в течение нескольких часов, требуется Bitly username и Bitly API key, а также сокращается ссылка на видео YouTube для предоставления видеоверсии песни.

Примечание. Вы можете найти эту статью полезной для установки Bitly Package с GitHub.

Текущие результаты по футболу

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

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

Примечание. Это услуга на основе подписки, поэтому вам необходимо настроить базу данных в соответствии с моей общей схемой в начале. Затем вы можете использовать Schedule Python Library, чтобы запланировать отправку ваших результатов в реальном времени подписанным пользователям через каждый установленный временной интервал.

Вам необходимо получить API-ключ Football Data API.

Вы можете выбрать свои любимые футбольные лиги из лиг, предлагаемых в Football Data API.

Вот ваш файл football.py.

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

Когда пользователь подписывается на результаты футбольных матчей в режиме реального времени от Slackbot, наш объект класса football_res хранит идентификатор канала пользователя и наш ключ API клиента Slack, который дополнительно проверяет ответ пользователя и сохраняет выбранные пользователем лиги в нашей базе данных и отправляет последующие запросы. подтверждающий ответ подписанному пользователю с последними результатами матчей в прямом эфире.

Новости

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

Это ваш файл news.py.

Требуется ключ API новостей для получения последних новостей и имя пользователя Bitly и ключ API Bitly для сокращения длинных URL-адресов.

Примечание. Вы можете найти эту статью полезной для установки Bitly Package с GitHub.

Он возвращает новости с заголовком, описанием и ссылкой на новости в виде форматированного сообщения.

Примечание. Это услуга на основе подписки, поэтому вам необходимо настроить базу данных в соответствии с моей общей схемой в начале. Затем вы можете использовать Schedule Python Library, чтобы запланировать отправку ваших результатов в реальном времени подписанным пользователям через каждый установленный временной интервал.

Задачи

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

Это наш файл task.py.

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

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

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

Напоминания

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

Вот наш файл Reminder.py.

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

Если пользовательское сообщение начинается с «напомнить мне» и не содержит времени, наша parse_reminders функция извлекает дату и напоминания из полученного пользовательского сообщения и проверяет, действительна ли указанная дата.

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

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

Заключение

Фух! Наконец-то мы подошли к концу. Поздравляем с созданием собственного Slackbot с некоторыми замечательными функциями. Вот мой Репозиторий Slackbot на Github.

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

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

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

Большое спасибо за то, что нашли время прочитать это! Если вам понравилось, пожалуйста, хлопните в ладоши, так как это поможет большему количеству людей увидеть эту историю. И ★ этот репозиторий на GitHub, если вам понравился этот проект. ❤