Werobot开发微信公众号小记

Werobot是基于python2集成的微信公众号后台开发框架。集成程度比较高,使用起来无脑方便,适合新手或不经常与微信公众号打交道的选手,当然很多大神也在用。
由于领导上的需要,我接触了这门手艺,主要想实现以下几个简单的功能:1、小黄鸡 2、查询油价 3、输入关键字返回图片。为了简便易行,使用新浪sae挂载。

一、安装

参考这篇帖子

git clone git://github.com/whtsky/WeRoBot-SAE-demo.git  
cd WeRoBot-SAE-demo  
virtualenv -p python2.7 --no-site-packages .  
source bin/activate  
pip install sae-python-dev  
saecloud install werobot  

其中在第三行遇到错误,因为我先装的python3,默认环境是3,所以改为:

virtualenv -p C:/python27/python.exe --no-site-packages .  

第四行遇到错误,据查证,此处应该是别的操作系统的用法,windows应改为:

source Scripts/activate  

二、第三方库的使用

第三方的库需要安装在单独的名为Vendor的文件夹下,在根目录下用以下方式安装:

pip2 install --target=vendor package_name

不要安装lxml。有一些库在sae的预装模块中,如果另行安装在vendor中会冲突报错。具体参考这篇帮助文档。在config.yaml中完成以下设置。

name: yourappname #你的项目名称
worker: wsgi
version: 1

libraries:
- name: lxml
  version: "2.3.4"

三、调试

首先要保证你的代码本身没有问题。从sae代码管理中的链接点进去,如果出现问题则会返回错误信息,按照错误信息提示改正代码,直到出现提示:这是一个 WeRoBot 应用.....
有的时候代码没有问题,上一步ok,但微信端返回平台发生故障或者不返回信息。我用这样的办法:

@robot.text
def a(message):
        try:
            代码    
            return #你想要的结果        
        except Exception as e:
            return traceback.format_exc()

这样在微信端可以接收到错误信息,根据信息有的放矢地改正代码。

四、其他两个坑

1、可能会出现ssl证书验证的错误,打开vendor/werobot/client.py,修改request函数

    def request(self, method, url, **kwargs):
        if "params" not in kwargs:
            kwargs["params"] = {"access_token": self.token}
        if isinstance(kwargs.get("data", ""), dict):
            body = _json.dumps(kwargs["data"], ensure_ascii=False)
            body = body.encode('utf8')
            kwargs["data"] = body

        r = requests.request(
            method=method,
            url=url,
             verify=False,  #在这里添加这一句,关闭证书验证
            **kwargs
           
        )
        r.raise_for_status()
        r.encoding = "utf-8"
        json = r.json()
        if check_error(json):
            return json

2、python 怎么将图片url上传到微信服务器?

upload_media函数必须使用file-object,如果直接使用upload_media上传图片的byte字段,会出现type不符的错误。
参考知乎这个问题,打开vendor/werobot/client.py,修改upload_media函数

    def upload_media(self, media_name,media_type, media_file):  #这里添加media_name变量名
        """
        上传临时多媒体文件。

        :param media_type: 媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb)
        :param media_file: 要上传的文件,一个 File-object
        :return: 返回的 JSON 数据包
        """
        return self.post(
            url="https://api.weixin.qq.com/cgi-bin/media/upload",
            params={
                "access_token": self.token,
                "type": media_type
            },
            files={
                'media': ( media_name,media_file)       #这里添加media_name参数
            }
        )

为了输入关键字返回图片,我是采用先上传到微信服务器再返回的方式,如果用以上方式上传时media_name相同,会报错,我采用uuid的方法随机命名。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容