从社交消息平台到集成到网站上的票务预订,寻找附近的餐厅,产生销售线索,购买和销售产品,聊天机器人如今已在几乎所有地方使用。一些聊天机器人,例如Microsoft的Ruuh,已经能够使用人工智能和深度学习进行类似于人的对话。您还记得Hike的Natasha吗?我在4年前使用它时,很惊讶地看到她如何处理我们的对话,这比机器人可能处理的要好得多。那时我还没有听说过机器学习的概念。
现在,聊天机器人已使我们变得如此依赖它们,它已成为当今我们生活的一部分。聊天机器人不仅通过管理任务使我们的生活更轻松,而且与他们进行对话也变得非常有趣。
但是,所有这些都会以存储我们的数据并为公司利益使用为代价。
我们对此可以采取任何措施吗?如果我们可以构建自己的聊天机器人怎么办?
我们可以添加所需的所有功能,并根据喜好进行调整。
因此,让我们构建一个聊天机器人,它可以在Slack上运行时帮助您提高工作效率。我们即将建立的聊天机器人离Google Assistant并不遥远。它甚至没有启用语音。
Slack是一个消息平台,供团队协作和相互协作。它是当今公司用于与员工沟通的最常用工具。
入门
让我们一起在Slack上构建一个聊天机器人。
免责声明:该项目是由2人一组的比赛创建的,但很遗憾,我们无法进入决赛。
这是Slackbot 的架构。
这是我们的实体关系图,它将帮助您创建自己的数据库。
.env在/src您的项目目录中创建一个文件。
安装要求:
点安装-r requirements.txt
这是您的主文件:slackbot.py。
slackbot.py首先 导入运行Slackbot所需的所有软件包。然后,它使用存储在文件中的Slack API密钥来启动Slack客户端,.env如下所示:
API_KEY =“您的Slack API密钥”
它初始化常量并尝试与Slack的RTM API连接,如果无法建立连接,则返回Connection failed with the error message printed above.
如果连接成功,我们的Slack客户端将无限循环运行,并尝试每秒读取一次,并且如果接收到任何消息,它将提取从Slack的RTM API接收到的通道ID和消息文本,并进一步检查收到的消息是否具有可以处理以生成响应的任何已分配命令。
带有代码和说明的功能
歌曲歌词
我们的用户可以通过直接从Slackbot传递拼写或拼写错误的歌曲名称来获得歌曲的歌词。此代码段已在您的slackbot.py文件中定义。
elif message.startswith(“的歌词”):
get_song_name =消息[11:]
lyrics_gen = Song_Lyrics(settings.GCS_API_KEY,settings.GCS_ENGINE_ID)
歌曲= lyrics_gen.get_lyrics(get_song_name)
响应='*'+歌曲[0] +'*'+' n n'+歌曲[1] .replace('
',' n')
· 您需要通过添加任意或所有以下网站来创建自定义搜索引擎ID。
获取自定义搜索引擎ID后,请获取Google自定义搜索JSON API密钥,此举很不错。
获取歌曲的音频和视频
我们的用户可以通过在Slackbot上传递拼写或拼写错误的歌曲名称来获得歌曲的音频和视频版本。
这是您的get_music.py。
导入所有依赖项之后,它需要YouTube数据API来提取歌曲,并从收到的搜索结果中提取拼写或拼写错误的歌曲名称的第一个链接。
注意:对于我们要求歌曲的用户,我们认为第一个YouTube搜索结果是最准确的搜索结果。
然后,它利用Pafy Python库从歌曲的视频链接中提取音频。它需要一个Bitly用户名和Bitly API密钥来缩短为流式音频生成的长URL,并缩短YouTube视频链接以提供歌曲的视频版本。
足球比分直播
在每个设定的时间间隔后,我们的用户会收到有关实时足球比赛的最新分数的通知。我只选择了顶级足球联赛,它们可以为英超,冠军,意甲,西甲,西甲提供实时比赛。
我只选择了几个联赛,因为目前有很多比赛在进行,因此为所有现场比赛发送分数对用户来说毫无意义。
注意:这是一项基于订阅的服务,因此您需要一开始按照我的共享模式设置数据库。然后,您可以使用Schedule Python Library安排在每个设置的时间间隔后将实时分数发送给订阅的用户。
您需要获取Football Data API的API密钥。
您可以从Football Data API中提供的联赛中选择自己喜欢的足球联赛。
这是您的football.py文件。
该live_football函数获取并提取comp_id字典中存储的所选联赛的实时足球比赛的实时比分,并返回带有两队所需信息的实时比赛的元组列表。
当用户从Slackbot订阅实时足球比分时,我们的football_res类对象将存储用户的频道ID和松弛的客户端API密钥,从而进一步验证用户的响应并将用户选择的联赛存储在我们的数据库中并发送后续确认信息使用实时比赛的最新分数向订阅的用户回复。
新闻
我们的用户将每天收到有关时事和突发新闻的最新消息,以便他们可以及时了解最新情况。
这是您的news.py文件。
它需要一个News API密钥来获取最新新闻,并需要一个Bitly用户名和Bitly API密钥来缩短长URL。
它返回带有标题,描述和新闻链接的“新闻”作为格式化消息。
任务
我们的用户可以在Slackbot中安排任务,它会在设置的日期和时间提醒他们设置的任务。这将帮助我们的用户按时管理和完成任务,从而提高工作效率。
这是我们的task.py文件。
如果用户消息以“提醒我”开头,则我们的parse_tasks功能将从收到的用户消息中提取日期,任务描述和时间,并验证提供的日期和时间是否有效。
如果所有内容都正确解析,则该任务将存储在我们数据库的任务表中,并且用户会收到一条确认消息,使他们知道该任务已设置了事件的格式化日期和时间。
注意:首先需要根据我的共享模式在数据库中设置一个任务表。当前日期和时间等于设置的日期和时间时,将任务发送给指定的用户。
提醒事项
用户将能够为同事和朋友的生日和周年纪念日设置提醒。这将帮助他们保持联系并保持交流。
这是我们的hinter.py文件。
我们的提醒模块的工作原理类似于任务,但唯一的区别是每年发送提醒,而任务仅在设定的日期和时间发送一次。
如果用户消息以“提醒我”开头并且不包含时间,则我们的parse_reminders功能将从收到的用户消息中提取日期和提醒,并验证提供的日期是否有效。
如果正确解析了所有内容,则该提醒将存储在我们数据库的提醒表中,并且我们的用户会收到一条确认消息,让他们知道该提醒已设置为该场合的格式化日期。
注意:首先需要按照我的共享模式在数据库中设置提醒表。当当前日期等于设置日期时,则每年将提醒发送给指定的用户。
结论
我们终于结束了构建自己的具有一些出色功能的Slackbot。这是我的Slackbot Github存储库。有很多功能,例如事实, Slackbot中提供的引号,在本文中我没有讨论,因为它们的实现非常简单。还help 向我们的用户提供了一个命令,使他们可以了解所有可用功能及其分配的命令。
如果您在这个开源社区中做出了贡献,以使Slackbot成为一个更好的人,将很高兴审查您的请求请求。
另外,请检查Lyrics Extractor Python库以通过仅传递拼写或拼写错误的歌曲名称来获取歌曲歌词。
上述就是关于如何使用Python构建多功能Slackbot的全部内容,想了解更多关于Python的信息,请继续关注中培伟业。