最近几天在给我哥一个超市做一个服务类型的微信公众号,主要的功能是做一个可以外送的网店以及提供快递送货上门等服务。

最终实现之后的所有功能如下:

主要是从三个方面来进行功能设计,就是用户感觉越方便越好。

下面来具体聊一下开发的一些具体内容:

下面代码的运行环境:Ubuntu+python3.7

微信公众号后台配置

我使用的主要是python+werobot框架进行开发,同时还有考虑设计到python自带的cgihttpserver或者是apache服务器。

首先,开发一个微信公众号,你必须要有一个微信公众号,微信公众号中的订阅号不能提供高级接口,如果想要使用高级接口,必须要进行微信认证,我是直接申请的服务号。因为刚搭建的时候,我的域名还没有弄好,所以直接使用的是服务器的ip地址作为,后台url接口。

有关于域名解析的内容,我自己也还在学习中,先放在这里。 我们现在先只用一台服务器,运行一个werobot机器人。在微信公众号后台将token,url,appid,appsecret等都配置记录好了之后,进入到下一步。

服务器的配置

(1) 在腾讯云或者阿里云购买一个服务器,如果你是学生,只需10元即可。首先在不考虑任何功能实现的情况下,我们先将werobot机器人运行起来。

在服务器中安装werobot,推荐使用pip命令,十分简单方便:

1pip3 install werobot

一条命令安装完成。

根据werobot官方文档,我们可以写一个最基本的脚本,让服务器运行起来,如下

使用vim写一个robot.py脚本:

1from werobot import WeRoBot

robot=WeRoBot(token="****")

#编写一个只处理用户文本消息的函数

@robot.text

def hander(message):

return "欢迎,关注我的微信公众号"

#让机器人运行

robot["HOST"]="0.0.0.0"

robot["PORT"]=80

robot.run()

我想详细这段代码,希望可以帮助到大家,达到举一反三的效果。

实际上,werobot处理用户发送过来的不同消息,都是使用修饰器@来进行区分和实现的。如果和其他框架相对应来讲的话,在django中,与这个类似的就是对于不同url的视图函数。

从文档中可以得知,werobot的修饰器分为两种类型,一种是meaage(用户发送的各种类型的消息),二是event(对应各种点击型事件)。

实际上,我们需要注意的是对于所有的被message类型修饰器修饰的函数,他们都具有一些共同的属性:

也就是说对于任意的函数,他里面的message都包括这些参数,当然,对于不同的message也包含有一些不同的参数。

event类型同理。

之后使用命令:

1python3 robot.py

机器人即可开始运行。(这里就不妨示意图了)。

(2)关于自定义菜单与消息回复类型

开发一个具有完备功能的公众号,自定义菜单肯定是不能缺少的。在werobot文档中,有关于自定义菜单的具体介绍:

首先,如果需要使用自定义菜单,必须先要获得appid和appsecret:

这里我想提醒一下,在开发之前还需要将你的服务器ip地址加入ip白名单,只有这样,服务器才能获得access_token。

代码如下:

1from werobot import WeRoBot

robot=WoRoBot(token="****")

robot.config["APP_ID"]=******

robot.config["APP_AECRET"]=******

client=robot.client

client.create_menu({

"button":[

{

"type":"click",

"name":"今日歌曲",

"key":"V1001_TODAY_MUSIC"

},

{

"type":"click",

"name":"歌手简介",

"key":"V1001_TODAY_SINGER"

},

{

"name":"菜单",

"sub_button":[

{

"type":"view",

"name":"搜索",

"url":"http://www.soso.com/"

},

{

"type":"view",

"name":"视频",

"url":"http://v.qq.com/"

},

{

"type":"click",

"name":"赞一下我们",

"key":"V1001_GOOD"

}

]

}

]}

创建一个自定义菜单,使用的是client的create_menu(menu_data)函数,函数中的参数是是一个字典类型,按照一定的格式即可。

对于view类型的button,只需要给一个合理的url即可,但是对于click类型的button,则需要写一个对应key值得视图函数,结构类似下述代码(处理一个key值为abc得button):

@robot.click

def hander(message):

if message.key=="abc":

return "Hello,World!"

关于消息的回复类型

当被修饰的函数返回的是一个字符串的时候,werobot会自动帮你把它处理成文本消息返还给用户, 这个很简单,构建一个TextReply:

那么假设用户点击我的菜单某个button,我想给他回复一个图片消息呢?

从文档中可以得知,回复图片消息,需要图片得media_id,而media_id怎样获取呢?

代码如下:

client.upload_permanent_media("image",files)

其中files是文件类型,先把图片上传到服务器上面,然后直接使用open打开即可,注意是“rb”,用二进制的方式打开。

之后会返还给你一个json数据包,其中就包括所需要的media_id。

之后我们就要用到client的replies库,具体代码如下:

from werobot.replies import ImageReply

robot = WeRoBot(token='*****')

robot.config["APP_ID"] = "*********"

robot.config["APP_SECRET"] ="****************"

client = robot.client

media_id=client.upload_permanent_media("image",open(r"C:\Users\13016\Desktop\1.png","rb"))["media_id"]

@robot.click

def abort(message):

if message.key == "abc":

reply=ImageReply(message=message,media_id=media_id)

return reply

这样即可实现回复图片消息。

我的博客:www.lovexu.xyz

我的知乎:我爱小徐子

更多优质内容请关注微信公众号:生物信息与python

python 公众号开发框架_基于werobot框架的微信公众号开发相关推荐

  1. python公众号开发框架_Python的WeRoBot框架开发公众号-Go语言中文社区

    最终的效果图: 完整代码: #coding:utf-8 # Filename:return_message5.py # 被关注回复'Hello World!' # 收到 笑话 回复糗百笑话,收到收到 ...

  2. python 极速后台开发框架_基于FastAdmin快速搭建后台管理系统

    [课程简介] FastAdmin是一款基于ThinkPHP5+Bootstrap的极速后台开发框架.本课程从安装.架构.一键生成.数据库.控制器.模块.前端组件等方面,对如何使用FastAdmin框架 ...

  3. 基于mpvue框架搭建微信小程序开发环境

    一.按照mpvue官网新建前台工程 http://mpvue.com/mpvue/quickstart.html(mpvue快速上手教程) 二.路由功能代码实现 mpvue对vue-router的支持 ...

  4. java中微信公众号框架_java微信公众号开发框架包含哪些内容呢?为什么要使用框架...

    java微信公众号开发框架包含哪些内容呢?为什么要使用框架 微信公众号是现在人们生活中经常会用到的,微信公众号有着各种各样的信息,包含了齐全的内容以及完善的功能,这也让人们可以更加轻松的在公众号上找到 ...

  5. [python]用flask框架搭建微信公众号的后台

    用flask框架搭建微信公众号的后台 最近用python写了点爬虫,为了要让爬取的数据能够随时显示在我眼前,并实时根据我的指令返回数据.于是采用微信公众号做这个显示窗口,既能发送指令也能显示简单的相关 ...

  6. 微信公众号php提交表单,PHP教程:使用YII2框架实现微信公众号中表单提交功能...

    <PHP教程:使用YII2框架实现微信公众号中表单提交功能>要点: 本文介绍了PHP教程:使用YII2框架实现微信公众号中表单提交功能,希望对您有用.如果有疑问,可以联系我们. 相关主题: ...

  7. 软件作业(3):用户体验分析——基于南通大学教务管理系统微信公众号

    用户体验分析--基于南通大学教务管理系统微信公众号 1. 目标:基于实例分析,体会用户体验设计的 7 条准则. 2. 要求 ①基于我们列出的 7 条UX评价准则,分析"南通大学教务管理系统微 ...

  8. laravel框架中微信公众号推送消息

    首先呢,大家都知道微信公众号是我们现在微信的一个重要功能,那么下面到带大家分享一下微信公众号的基本消息推送,如图首先访问 https://mp.weixin.qq.com/debug/cgi-bin/ ...

  9. go+vue——基于gin框架和gorm的web开发实战

    go+vue--基于gin框架和gorm的web开发实战 gin框架 视频.资料.笔记 安装Go环境, 添加环境变量(可能自动添加好) 下载 Go 环境变量 goland 报错: GOROOT is ...

  10. sqlserver 微信 读取_基于SQLServer数据库实现微信推送消息

    本文主要向大家介绍了基于SQLServer数据库实现微信推送消息,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助. 最近新上了一个项目,需要监控设备数据,增加一个报警功能. ...

最新文章

  1. 智能ABC拼音输入法的“秘密”
  2. souce insight中文出现乱码
  3. Ubuntu15.10的64位版本启动eclipse+adt时的若干问题
  4. C strcpy和strcat
  5. php 同步代码,PHP进程同步代码实例
  6. java多线程 --ConcurrentLinkedQueue 非阻塞 线程安全队列
  7. 自己实现strcpy
  8. getResource(String name)用法及源码分析
  9. PAT1007 素数对猜想 (20 分)
  10. [20170617]vim中调用sqlplus.txt
  11. 神经网络与深度学习——TensorFlow2.0实战(笔记)(一)
  12. win10删除开机密码_win10系统,电脑密码和微软密码都忘记了,怎么办? Day22
  13. OpenGL(三)——OpenGL着色器基础
  14. c++ 写x64汇编 5参数_第9篇-C/C++ x86_64的函数栈
  15. gogs: 如何恢复repository
  16. [tips]ubuntu 12.04系统黑屏
  17. wd移动硬盘插电脑没反应_WD MY BOOK 桌面移动硬盘 插电脑不识别的解决办法。
  18. 高通MSM8953平台调整通话音量
  19. 倒在转“码”路上的文科生
  20. 四位数中有几个七C语言,用4、0和7可以组成(    )个不同的三位数,其中最大的数是(    ),最小的数是(     )。——青夏教育精英家教网——...

热门文章

  1. cad2019菜单栏怎么调出来_cad怎样调出菜单栏(cad2016工具栏怎么调出来)
  2. 移动机械硬盘测试软件,硬盘检测工具HDTune使用教程
  3. 阿里巴巴分布式调度引擎tbschedule实战四tbschedule的配置使用
  4. excel随机抽取一个数据,抽奖
  5. 希尔加密法matlab,希尔密码加密解密
  6. swfobject java_[Java教程]swfobject.js视频播放插件
  7. 两个栈实现一个队列以及两个队列实现一个栈(Java)
  8. Android基于串口通讯笔记(USB,485协议,232协议)
  9. 微信小程序UI框架之【weui】怎样使用
  10. ESP8266 WIFI模块