微信公众号配置

网上大部分都是用itchat插件。微信公众号官网上的代码复制下来格式会乱掉。对于python这样严格依赖格式的语言简直是噩梦。这里没有使用itchat,而是使用request直接post请求图灵api

微信公众平台

后台配置

Python配置

[官方文档]

安装依赖库:

1、[Python2.7] python3版本的web.py有一些bug,无法使用。安装完以后配置环境变量。用pip安装依赖库

pip install web.py
pip install hashlib
pip install time
pip install requests

主入口:Main.py

# -*- coding: utf-8 -*-
# filename: main.py
import web
from handle import Handle  #引入Handle.py模块,这个模块在之后写。

urls = (
    '/wx', 'Handle',
)

if __name__ == '__main__':
    app = web.application(urls, globals())
    app.run()

处理文件:Handle.py

# -*- coding=utf-8 -*-
import hashlib
import reply
import receive
import web
import robot #robot.py在之后写即可
class Handle(object):
 def GET(self):
  try:
   data = web.input()
   if len(data) == 0:
    return "hello, this is handle view"
   signature = data.signature
   timestamp = data.timestamp
   nonce = data.nonce
   echostr = data.echostr
   token = "微信公众号上的token值"

list = [token, timestamp, nonce]
   list.sort()
   sha1 = hashlib.sha1()
   map(sha1.update, list)
   hashcode = sha1.hexdigest()
   if hashcode == signature:
    return echostr
   else:
    return ""
  except Exception as Argument:
   return Argument
 def POST(self):
        try:
            webData = web.data()
            print("Handle Post webdata is ", webData)
            recMsg=receive.parse_xml(webData)
            if isinstance(recMsg, receive.Msg):
                toUser = recMsg.FromUserName
                fromUser = recMsg.ToUserName
                if recMsg.MsgType=='text':
                    content = recMsg.Content
                    rpyMsg= robot.get_response(content)
                    print rpyMsg
                    replyMsg = reply.TextMsg(toUser, fromUser,rpyMsg)
                    return replyMsg.send()
                if recMsg.MsgType == 'image':
                    mediaId = recMsg.MediaId
                    replyMsg = reply.ImageMsg(toUser, fromUser, mediaId)
                    return replyMsg.send()
            else:
                print("none handler yet")
                return "success"
        except Exception as Argument:
            print Argment
            return "fail"

回复接口:reply.py

# -*- coding=utf-8 -*-
import time
class Msg(object):
    def __init__(self):
        pass
    def send(self):
        return "success"
class TextMsg(Msg):
    def __init__(self, toUserName, fromUserName, content):
        self.__dict = dict()
        self.__dict['ToUserName'] = toUserName
        self.__dict['FromUserName'] = fromUserName
        self.__dict['CreateTime'] = int(time.time())
        self.__dict['Content'] = content
    def send(self):
        XmlForm = """
        <xml>
        <ToUserName><![CDATA[{ToUserName}]]></ToUserName>
        <FromUserName><![CDATA[{FromUserName}]]></FromUserName>
        <CreateTime>{CreateTime}</CreateTime>
        <MsgType><![CDATA[text]]></MsgType>
        <Content><![CDATA[{Content}]]></Content>
        </xml>
        """
        return XmlForm.format(**self.__dict)
class ImageMsg(Msg):
    def __init__(self, toUserName, fromUserName, mediaId):
        self.__dict = dict()
        self.__dict['ToUserName'] = toUserName
        self.__dict['FromUserName'] = fromUserName
        self.__dict['CreateTime'] = int(time.time())
        self.__dict['MediaId'] = mediaId
    def send(self):
        XmlForm = """
        <xml>
        <ToUserName><![CDATA[{ToUserName}]]></ToUserName>
        <FromUserName><![CDATA[{FromUserName}]]></FromUserName>
        <CreateTime>{CreateTime}</CreateTime>
        <MsgType><![CDATA[image]]></MsgType>
        <Image>
        <MediaId><![CDATA[{MediaId}]]></MediaId>
        </Image>
        </xml>
        """
        return XmlForm.format(**self.__dict)

注册免费的小机器人

在[图灵机器人官网](http://www.tuling123.com)注册自己的小机器人,并记住你的apikey

请求图灵机器人api接口:robot.py

# -*- coding=utf-8 -*-
import requests

KEY = "图灵机器人官网的apikey"

def get_response(msg):
    apiUrl = 'http://www.tuling123.com/openapi/api'
    data = {
        'key'    : KEY,
        'info'   : msg,
        'userid' : '机器人名',
    }
    try:
        r = requests.post(apiUrl, data=data).json()
        return r.get('text').encode("utf-8")
    except:
        return msg
    return msg

最后,运行主入口

python main.py

效果测试:

个人微信公众号:

Python微信公众号接入图灵机器人相关推荐

  1. 微信公众号接入图灵机器人

    微信公众号接入图灵机器人 1. 申请一个微信公众号 这个步骤和申请一个小程序了类似,首先进入微信公众平台进行注册,关键是注册的时候是选择订阅号,还是服务号,我觉的如果你是自己做着玩的,就搞个订阅号,订 ...

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

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

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

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

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

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

  5. nginx tornado php,tornado+nginx+python 微信公众号接入配置

    配置环境:腾讯主机 Ubuntu Server 16.04.1 LTS 64位 需要用到的软件或者包:nginx,tornado框架 xshell6(非必需) 微信公众号测试平台:http://mp. ...

  6. 微信公众号接入天行机器人案例和方法

    首先使用的是天行机器人: 1.接入基本原理: https://www.tianapi.com/apiview/47 申请完成后的结果如下 调用对应的接口的参数如下: http://api.tianap ...

  7. 微信个人公众号接入图灵机器人

    打开http://www.tuling123.com/,进行注册图灵机器人 在机器人设置中添加个人公众号 人物设置里面可设置机器人基本信息 技能拓展里面可设置其功能开关闭状态. 打开公众号直接回复聊天 ...

  8. 微信公众号加入图灵机器人

    <?php /** * wechat php test */ //define your token define("TOKEN", "公众号TOKEN" ...

  9. 微信公众号接入微软小冰

    前言 文章首发于微信公众号:前端指南.本文是一篇有点偏向于运营层面的技术类文章,文章略长,请耐心阅读. 也就是最近这几年,人工智能行业已经变得十分的火热了.不可否认,人工智能是整个互联网行业的一种趋势 ...

  10. 从 0 开始最详细的微信公众号接入 AI

    从 0 开始最详细的微信公众号接入 AI 文章目录 从 0 开始最详细的微信公众号接入 AI 写在前面 注册公众号 克隆到服务器 使用过微信机器人项目 未使用过微信机器人项目 更改配置文件 启动项目 ...

最新文章

  1. 润乾报表新功能静态页面和report4包分离
  2. 爬取广州所有停车场数据(Python)(并行加速版本)
  3. word公式插件_添加office小插件,让办公更高效
  4. boost::mp11::mp_bind_back相关用法的测试程序
  5. 求二叉树中以x为根的子树的深度_还在玩耍的你,该总结啦!(本周小结之二叉树)...
  6. Leetcode#102Binary Tree Level Order Traversal
  7. php打印出前一天时间戳,使用php 获取时间今天明天昨天时间戳的详解
  8. [转]《精通Javascript》笔记:第六章(事件)
  9. 借贷记账思考2015.12.28
  10. sas9.4安装教程
  11. python文字转语音
  12. 程序员最喜欢的15款文本编辑器推荐
  13. [转]C#中的global关键字(global::)
  14. 苹果服务器 显示器,苹果M1芯片的Mac可以外接什么显示器 显示器最高支持多少分辨率...
  15. 计算机色颜色有几种,电脑显示器怎么选?10、8、6bit不同色深都有哪些区别?...
  16. tomcat记录访问日志
  17. 疯狂英语(Chapter one)
  18. STS (Spring Tool Suite) 目录和作用初级
  19. 说说我的专业计算机作文,电脑让我欢喜让我忧作文600字
  20. 海马汽车经销商管理系统技术解析(七)预约失败处理

热门文章

  1. 【无人机驾照】无人机驾驶员考试题库选择题1060道(带答案)
  2. docker批量导出导入本地镜像
  3. 计算机音乐对应的数字,音乐和数字之间的关系
  4. mysql 查询条件为空则_MySql当查询条件为空时不作为条件查询
  5. 使用JIRA搭建本地项目管理工具
  6. Screenie for Mac(Mac截图工具)
  7. Linux批量修改文件名称
  8. 面向部件的整车E/E架构开发咨询服务
  9. STM32工作笔记0046---认识杜邦线_以及如何区分杜邦线公母_以及排线和杜邦线的区别
  10. java中手机号隐藏4位