写在最前:假期想稍微自学一下python语言,在课程中实现了聊天机器人,但是那时候是从网上找的源码,这次想要自己一句一句试试编码。为了利于交互,希望基于微信平台进行开发,但是用自己的微信账号害怕发出去奇怪的东西,现在微信都要基于手机号,小号也用不了,所以希望通过微信公众号实现与聊天机器人的对话,废话就到这里~

一,编译环境

这次开发我是基于python3.6 因为我一直喜欢用最新版的东西。。强迫症伤不起。。写到一半才发现。。很多东西真的用python2.x比较好,,但是用都用了。。硬着头皮写下去。。

在网上搜了很多资料,很多源码,大牛教程都是基于新浪sae作为后台。。但是那个我不懂。。之前毕设有接触过阿里云服务器,9.9半年,一年学生价也就120不到,还是可以接受的,,所以我就自以为是的继续用了阿里云服务器作为后台。

首先,申请服务器、公众号什么的就不说了,然后我选的是window下的系统,因为习惯..当然了也选了我可以选的最新版2012...在服务器上安装python3.6,安装web.py,这部分代码基本上都是参考大牛教程,将几个大佬的代码整合起来,然后只是把他们从python2.x移植到python3也能跑起来。

注明:在python3下,pip install web.py不成果,版本不一样

需要用pip install web.py==0.40.dev0,

然后,千万别忘了去服务器控制台,通过安全规则把80端口放出来,因为微信公众号发的xml包需要的url必须要80端口

现在为验证token成功,现在环境只需要web框架,暂时不牵扯到别的框架

二,代码开发

1,新建main.py文件,程序主体运行语言:

import web
from handle import Handleurls = ('/wx', 'Handle',
)if __name__ == '__main__':app = web.application(urls, globals())app.run()

2,新建handle.py,这部分是程序反应的主要代码,当服务器接受到指定get请求后,进行反馈的内容

import hashlib
import webclass Handle(object):def GET(self):try:data = web.input()if len(data) == 0:return "hello, this is handle view"signature = data.signaturetimestamp = data.timestampnonce = data.nonceechostr = data.echostrtoken = "gzh2018"  # 请按照公众平台官网\基本配置中信息填写list1 = [token,timestamp,nonce]list1.sort()str_list1 = ''.join(list1)print(str_list1)sha1 = hashlib.sha1()sha1.update(str_list1.encode('utf-8'))hashcode = sha1.hexdigest()print("handle/GET func: hashcode, signature: ", hashcode, signature)if hashcode == signature:return echostrelse:return ""except Exception as Argument:return Argument

说一下这边因为是python3的一点坑。。首先是因为list,python3 和python2 hashlib同样的代码 sha1 结果不一样

原来教程里的代码是map(sha1.update,list),但是因为在python2中map返回list,python3中map返回的则是迭代器。所以sha1加密的是一个空值,当然token怎么验证都不会通过的。。。所以我用以下方法实现,把排序好的list1,通过 ''.join(list1)拼接成字符串,然后再sha1,就正确啦

程序运行:

通过cmd命令行,python main.py 80进行运行,因为要指定80端口

三,测试回复用户发送

微信公众号连接好了,那么下面当然是怎么和用户互动啦,首先最基础的就是怎么获取到用户的信息,怎么将想要回复的值回复给用户,这里需要用到一个小知识点~模板,Templetor: web.py 模板系统

web.py 的模板语言叫做 Templetor,它能负责将 python 的强大功能传递给模板系统。

这样我们就可以直接把值赋给模板然后返回给用户啦

微信客户端消息回复模板:

$def with (toUser,fromUser,createTime,content)
<xml>
<ToUserName><![CDATA[$toUser]]></ToUserName>
<FromUserName><![CDATA[$fromUser]]></FromUserName>
<CreateTime>$createTime</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[$content]]></Content>
</xml>

获取用户发送,并返回给用户函数,只要添加在handle.py后即可

       def POST(self):
str_xml = web.data()  # 获得post来的数据
xml = etree.fromstring(str_xml)  # 进行XML解析
msgType = xml.find("MsgType").text
fromUser = xml.find("FromUserName").text
toUser = xml.find("ToUserName").text
if msgType == 'text':
content = "各部门注意这是一个测试而已,我只能告诉你你刚才发送的是:"+ xml.find("Content").text
render = web.template.render('templates/')
return render.reply_text(fromUser, toUser, int(time.time()), content)
elif msgType == 'image':
pass
else:
pass

现在基本功能就这样啦,下面就是怎么调用图灵机器人等api或者怎么怎么自己写语料库啥的了。。继续学习。。未完待续,欢迎大家一起讨论学习。

附上最新的测试公众号,后面会一步一步完善各项功能~请各位大佬指教
                                                          

python3+服务器+微信公众号的聊天机器人相关推荐

  1. php给微信公众号接入聊天机器人程序+采坑记录

    php给微信公众号接入聊天机器人程序 今天逛了下我的公众号,突然心血来潮,想添加个自动聊天功能,于是-动手-!! 主要用到的api: 图灵机器人api 青云客智能聊天机器人API 茉莉机器人API 至 ...

  2. 微信公众号自动回复聊天机器人实现(PHP)

    1.服务器配置 在"微信公众平台"上将"服务器配置"启用,填写"服务器地址"(即关注者输入消息后调用的回调接口,返回回复文本)," ...

  3. 如何让你的微信公众号与聊天机器人 ChatGPT 连接在一起

    微信公众号成为了许多企业.个人品牌强有力的宣传工具,与在微信上实现聊天互动的聊天机器人 chatbot 结合起来,可以大大提高网站流量和用户满意度.如果你想在微信上实现与聊天机器人的连接,那么这篇文章 ...

  4. 微信公众号添加聊天机器人

    为微信公众号添加后台自动聊天机器人. 要求:有微信公众号 操作:1.进入图灵机器人官网,进行注册. 2.创建机器人                  3.添加到相关公众号 4.为机器人进行拓展能力训练 ...

  5. 微信公众号-自动聊天机器人

    倩男靓女们,大家好,我是小二 今天给大家推荐一个好玩的东西,这几天工作比较闲,就想玩玩微信公众号,想研究下 公众号自动回复的功能,看了一遍开发文档,看的迷迷糊糊,紧接着打开同性行交友网站-csdn,看 ...

  6. python3微信公众号实现聊天机器人

    写在前面 使用python3 开发,大部分参考官网文档,官网给出的是python2 的版本 环境配置 1.首先你需要一台服务器,腾讯云,阿里云,xx云都可以 2.配置python环境 sudo pip ...

  7. 如何在微信公众号调用图灵机器人(智能聊天)

    最近在研究微信公众号,有人问我可以找你的公众号聊天吗?我的第一反应是我很忙我要上班没有时间,后面就度娘了一下,发现了这个神奇的图灵机器人,可以替你跟用户聊天!是否期待你的公众号有一个萌萌哒机器人陪客人 ...

  8. 微信公众号接入图灵机器人实现自动回复消息

    2019独角兽企业重金招聘Python工程师标准>>> 1.创建图灵机器人 进入图灵机器人网址:http://www.tuling123.com/ 登录/注册,进入机器人管理,然后点 ...

  9. 实现一个微信公众号智能问答机器人

    前言 实现一个微信公众号智能问答机器人.(注:该项目开发并不复杂,但是需要的前提条件较多,需要有一定经验的开发人员才能吃透这篇文章) 1. 前期准备 注册一个微信公众号(如果没有可以用微信官方测试的公 ...

最新文章

  1. 网页中如何获取客户端系统已安装的所有字体?
  2. servlet增删改查实例_SpringBoot系列(2)整合MongoDB实现增删改查(完整案例)
  3. P1759 通天之潜水(不详细,勿看)(动态规划递推,组合背包,洛谷)
  4. 给Linux系统/网络管理员的nmap的29个实用例子
  5. sqlserver 获取当前年_CVE-2020-0618: 微软 SQL Server 远程代码执行漏洞通告
  6. IT项目管理总结:第十章 项目沟通管理
  7. IDEA需要修改的配置
  8. 数据结构中“图”的相关概念理解
  9. RTT学习笔记2-线程
  10. problem making ssl connection
  11. struts2 javaweb 过滤器、监听器 拦截器 原理
  12. ★大脑的9大未解之谜
  13. 台式计算机诞生,生物电脑 ①1946年,世界上第一台计算机诞生,这个庞然大物开创了一个电脑时代。从那时候起,人们不断革新、创造,把庞然大物的体积一减再减,现在我们所见的台式电脑、掌上电脑...
  14. 特种作业操作电工作业2021年电力电缆考试题库
  15. Scrapy(1) 爬取起点中文网小说,并保存到数据库
  16. app自动化之monkey测试
  17. 赵小楼《天道》《遥远的救世主》深度解析(6)为什么肖亚文说丁元英是魔是鬼都可以,就是不是人?
  18. lol封号维护服务器,LOL玩家被封三年执着理论,腾讯客服是这样回复的
  19. 联想笔记本怎么重装系统?联想笔记本一键重装
  20. 前端移动端高度自适应

热门文章

  1. 高会的计算机模块,2017高会《职称计算机》模块精讲:画图和截图工具
  2. css之“计算属性“
  3. 分布式事务二——解决思路
  4. 使用python生成词云——聆心云心理健康服务平台数据可视分析和可视化
  5. 迅为iTOP-iMX6开发板-MiniLinux-GPS使用文档
  6. 【项目】---文档快速搜索工具
  7. 网络靶场实战-RouterOS漏洞分析(CVE-2022-45315)
  8. 进化算法——约束优化
  9. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java超市管理系统2178w
  10. 基于上证金融数据的情感分析和走势预测 代码+数据