Zulip聊天机器人Python开发
来源:互联网 发布:大学毕业后悔做程序员 编辑:程序博客网 时间:2024/06/04 18:46
Zulip是什么
Zulip是移动和桌面办公聊天解决方案开发商
一个强大的群组聊天软件
目前已被Dropbox收购并完全开源
(github:https://github.com/zulip/zulip)
就Zulip而言,该公司对消息的处理专注于会话,而不仅仅是基本的“聊天”。因此,消息流中包含主题和线程式回复,每个主题可以包含多个细分主题。
例如,在Zulip网站的一张截图中,“工程”消息流中可以包含“文档”、“新招聘”和“WebKit漏洞”等细分主题。
示例如下:
Zulip表示,这一功能将帮助用户更好地找到对他们有意义的会话。
其他功能还包括:
强大而快速的搜索,以及能吸引开发者兴趣的“极客”功能。如键盘快捷键、代码高亮、应用程序接口(API),以及与Trac、Nagios、GitHub和Jenkins的整合等。
并且,Zulip还提供了标准的消息/聊天应用功能集合,其中包括拖动上传文件、粘贴图片、群聊、声音通知、未收到消息的电子邮件通知,以及虚拟表情等。
最重要的一点,zulip还提供了聊天机器人接口。
一、我们用Zulip来做什么
在日常工作中,对于一些非技术的小伙伴们,由于需要查询某业务数据结果之类,只有通过攻城狮临时生成一大串数据,或者攻城狮提供调用某个API接口URL链接,直接在网页浏览器中查看数据结果。如此一来,攻城狮还要花时间教小白如何看数据。
而且,如果API接口URL中涉及用户授权认证,就容易暴露内部授权码,得不偿失了。
所以我们希望可以通过聊天机器人的开发,把这些非技术人员需要查询的需求集成进去,然后智能解析他们发送的消息,并以友好方式自动答复数据结果。
举个栗子。
如果我们需要使用岂安Red.Q(业务风险情报系统)服务查询一些手机号码或者IP地址是否有风险,并给机器人发送消息(我们约定多个数据以逗号隔离)
消息如下:
211.97.131.210,58.243.254.109,13136482589, 20160909
查询结果:
13136482589:87.4,临时号码、收码平台、异常状态211.97.131.210:50.6,组织出口、爬虫58.243.254.109:81.9,vps服务器、组织出口、爬虫其他: 20160909:无效内容(不符合有效ip和手机号码基本格式)
二、如何实现
Zulip安装步骤这里略。安装好并登陆zulip系统,我们先在帐号设置里添加一个机器人redq-bot@bigsec.com,系统会生成对应的API Key。
打开zulip系统url(https://zulip.local/api),系统提供了相关API的使用说明,python说明如下:
Python API#!/usr/bin/env pythonimport zulipimport sys# Keyword arguments 'email' and 'api_key' are not required if you are using ~/.zuliprcclient = zulip.Client(email="*********************", api_key="********************", site=https://zulip.local/api )# Send a stream messageclient.send_message({ "type": "stream", "to": "Denmark", "subject": "Castle", "content": "Something is rotten in the state of Denmark."})# Send a private messageclient.send_message({ "type": "private", "to": "hamlet@example.com", "content": "I come not, friends, to steal away your hearts."})# Print each message the user receives# This is a blocking call that will run foreverclient.call_on_each_message(lambda msg: sys.stdout.write(str(msg) + "\n"))# Print every event relevant to the user# This is a blocking call that will run forever# This will never be reached unless you comment out the previous lineclient.call_on_each_event(lambda msg: sys.stdout.write(str(msg) + "\n"))
Red.Q案例里:
通过消息事件回调函数client.call_on_each_message(redq)解析用户发送给机器人的消息内容返回每个匹配内容的Red.Q服务API结果:
msgsenddef msgsend(sender, msg): client.send_message({ "type": "private", "to": sender, "content": msg })
当脚本编写完毕后,需要单独去运行在某台服务器上,该服务器需要与zulip服务器的api接口通信,一般为443或者80端口,交互流程如下:
此时,在zulip的Web界面找到此机器人并发送相关消息就可以愉快地进行聊天啦。
- Zulip聊天机器人Python开发
- Python搭建聊天机器人
- python-图灵-聊天机器人
- 快速开发聊天机器人
- 微信 聊天 机器人 python itchat
- Python使用AIML搭建聊天机器人
- [python][project] 微信聊天机器人
- 利用python搭建微信聊天机器人
- python:基于wxpy微信聊天机器人
- python 聊天机器人 ,编译为exe
- 用.NET开发MSN聊天机器人
- 用.NET开发MSN聊天机器人- -
- 用.NET开发MSN聊天机器人
- 用.NET开发MSN聊天机器人
- 用.NET开发MSN聊天机器人
- 用.NET开发MSN聊天机器人
- 用.NET开发MSN聊天机器人
- 用.NET开发MSN聊天机器人
- php读取xml文件,并存入数据库
- MyBatis中一对多关联查询
- Android framework中使用stl库
- mysql导入数据load data infile用法
- 在前台,以session为查询条件,查询数据库。 seer_name的值就是当前系统的session值。
- Zulip聊天机器人Python开发
- MySQL数据库优化(三)
- 浏览器的工作原理:新式网络浏览器幕后揭秘
- FZU 2242 Daxia like acute triangle
- Ehcache缓存框架小案例
- 鱼眼校正之类1
- 根据后台配置项,动态的在页面先控制显示内容
- CH6--正则表达式,p112,练习一???
- 每日积累(20161219-day-19)(shell &bash学习 make&cmake&qmake)