树莓派做微信公众号服务器,树莓派与微信公众号对接(python)
需要安裝webpy和python-lxml
git clonegit://github.com/webpy/webpy.git
ln -s `pwd`/webpy/web
cd /root/webpy
sudo python setup.py install
sudo apt-get install python-lxml
下載微信模板
git clone https://github.com/mcdona1d/Wechat-Python-Template.git
index.python
#!/usr/bin/env python
# -*- coding: utf- -*-
import os
import web
import time
import hashlib
from lxml import etree
urls = (
'/weixin','WeixinInterface'
)
def _check_hash(data):
#sha1加密算法
signature=data.signature
timestamp=data.timestamp
nonce=data.nonce
#自己的token
token="your_token" #這里改寫你在微信公眾平臺里輸入的token
#字典序排序
list=[token,timestamp,nonce]
list.sort()
sha1=hashlib.sha1()
map(sha1.update,list)
hashcode=sha1.hexdigest()
#如果是來自微信的請求,則回復(fù)True
if hashcode == signature:
return True
return False
class WeixinInterface:
def __init__(self):
self.app_root = os.path.dirname(__file__)
self.templates_root = os.path.join(self.app_root, 'templates')
self.render = web.template.render(self.templates_root)
def GET(self):
#獲取輸入?yún)?shù)
data = web.input()
if _check_hash(data):
return data.echostr
def POST(self):
str_xml = web.data() #獲得post來的數(shù)據(jù)
xml = etree.fromstring(str_xml)#進(jìn)行XML解析
content=xml.find("Content").text#獲得用戶所輸入的內(nèi)容
msgType=xml.find("MsgType").text
fromUser=xml.find("FromUserName").text
toUser=xml.find("ToUserName").text
return self.render.reply_text(fromUser,toUser,int(time.time()),u"接收到的文字:"+content)
application = web.application(urls, globals())
if __name__ == "__main__":
application.run()
reply_text.xml
$def with (toUser,fromUser,createTime,content)
$createTime
將此文件夾放到樹莓派中,更改index.py中的your_token為你的token
在文件夾目錄內(nèi),輸入命令執(zhí)行:sudo python index.py 80
80為綁定到80端口上,微信公眾平臺目前僅支持80端口
Ps:如果無法執(zhí)行,可能需要更改文件權(quán)限:chmod +x index.py
打開微信公眾號官網(wǎng):https://mp.weixin.qq.com
依次選擇 開發(fā)者工具-》公眾平臺測試賬號
程序執(zhí)行后,在微信公眾平臺的接口配置界面分別輸入你的ip或者域名及token:
http://你的ip或域名/weixin
然后輸入剛才配置程序時更改的自己的token
點擊提交,提示配置成功。
在微信上對此公眾平臺測試號發(fā)送消息,微信可以返回你發(fā)送的消息。
配置自定義菜單
打開微信公眾平臺-》在線接口調(diào)試工具
首先獲取access_token
填寫appid和secret,即可獲取access_token,復(fù)制備用
生成自定義菜單,access_token填入剛才生成的,body內(nèi)容為菜單項menu
menu示例:
{
"button": [
{
"name": "監(jiān)控",
"sub_button": [
{
"type": "click",
"name": "實況截圖",
"key": "V1001_SNAPSHOT"
},
{
"type": "view",
"name": "實時監(jiān)控",
"url": "http://raspberrypi.mnstar.me"
},
{
"type": "click",
"name": "云臺向左",
"key": "V1001_C_LEFT"
},
{
"type": "click",
"name": "云臺向右",
"key": "V1001_C_RIGHT"
},
{
"type": "click",
"name": "安全預(yù)警功能",
"key": "V1001_AUTOSAFE"
}
]
},
{
"name": "操作",
"sub_button": [
{
"type": "click",
"name": "獲取溫度濕度",
"key": "V1001_TEMPERATURES"
},
{
"type": "click",
"name": "電燈開",
"key": "V1001_LED_ON"
},
{
"type": "click",
"name": "電燈關(guān)",
"key": "V1001_LED_OFF"
},
{
"type": "click",
"name": "自動光控功能",
"key": "V1001_AUTOLED"
}
]
},
{
"type": "click",
"name": "幫助&簡介",
"key": "V1001_HELP"
}
]
}
至此,微信平臺與樹莓派的對接結(jié)束
在新浪SAE上搭建微信公眾號的python應(yīng)用
微信公眾平臺的開發(fā)者文檔https://www.w3cschool.cn/weixinkaifawendang/ python,flask,SAE(新浪云),搭建開發(fā)微信公眾賬號http://www. ...
個人微信公眾號搭建Python實現(xiàn) -接收和發(fā)送消息-基本說明與實現(xiàn)(14.2.1)
@ 目錄 1.原理 2.接收普通消息 3.接收代碼普通消息代碼實現(xiàn) 1.原理 2.接收普通消息 其他消息類似參考官方文檔 3.接收代碼普通消息代碼實現(xiàn) from flask import Flask, ...
個人微信公眾號搭建Python實現(xiàn) -開發(fā)配置和微信服務(wù)器轉(zhuǎn)入-配置說明(14.1.2)
@ 目錄 1.查看基本配置 2.修改服務(wù)器配置 3.當(dāng)上面都配置好,點擊提交 4.配置如下 1.查看基本配置 登錄到微信公眾號控制面板后點擊基本配置 這里要講的就是訂閱號 前往注冊微信公眾號 2.修改 ...
個人微信公眾號搭建Python實現(xiàn) -個人公眾號搭建-永久素材管理(14.3.5)
@ 目錄 1.說明 2.上傳素材 3.獲取素材列表 關(guān)于作者 1.說明 個人微信公眾號開發(fā)的功能有限,因為很多權(quán)限沒有,但支持上傳永久素材,具體查看微信公眾號文檔 這里的請求都要將本地IP地址放到微信 ...
個人微信公眾號搭建Python實現(xiàn) -個人公眾號搭建-總結(jié)(14.3.6)
@ 目錄 1.主要技術(shù):Flask,requests 2.實現(xiàn)的主要功能 3.目錄說明 4.運行方式 關(guān)于作者 1.主要技術(shù):Flask,requests requirements.txt如下 req ...
個人微信公眾號搭建Python實現(xiàn) -個人公眾號搭建-處理消息和事件(14.3.4)
@ 目錄 1.消息處理 2.事件處理 3.返回處理 關(guān)于作者 1.消息處理 現(xiàn)在只處理text文本消息 沒有關(guān)鍵字的就交給qingyunke機(jī)器人去應(yīng)付,這是一個免費的對話api 從配置文件中讀取關(guān)鍵 ...
個人微信公眾號搭建Python實現(xiàn) -個人公眾號搭建-運行run方法的編寫(14.3.3)
@ 目錄 1.主要邏輯 2.代碼 關(guān)于作者 1.主要邏輯 使用的是flask服務(wù)器 就使用一個函數(shù)處理請求 第一個是驗證服務(wù)器,返回微信服務(wù)器給的字符串就表示驗證成功 第二是要處理微信服務(wù)器發(fā)送過來的 ...
個人微信公眾號搭建Python實現(xiàn) -個人公眾號搭建-被動回復(fù)消息建模(14.3.2)
@ 目錄 1.閱讀官方文檔 2.思考 關(guān)于作者 1.閱讀官方文檔 點擊進(jìn)入微信官方開發(fā)者文檔 接收普通消息 文本消息 圖片消息 語言消息 視頻消息 小視頻消息 地理位置消息 鏈接消息 接收事件消息 關(guān) ...
個人微信公眾號搭建Python實現(xiàn) -個人公眾號搭建-構(gòu)想(14.3.1)
@ 目錄 1.需求 2.怎么做 關(guān)于作者 1.需求 個人便捷工具 2.怎么做 針對個人未認(rèn)證訂閱號擁有以下權(quán)限 以及微信網(wǎng)頁的一些權(quán)限,但是由于開發(fā)微信網(wǎng)頁有限制 可定制功能只有被動回復(fù),以及這個素材 ...
隨機(jī)推薦
React服務(wù)端渲染總結(jié)
歡迎吐槽 : ) 本demo地址( 前端庫React+mobx+ReactRouter ):https://github.com/Penggggg/react-ssr.本文為筆者自學(xué)總結(jié),有錯誤的地方 ...
html知識
1.doctype作用 doctype標(biāo)簽可以告訴瀏覽器文檔使用哪種HTML或者Xhtml規(guī)范.該標(biāo)簽可生命三種DTD類型,是嚴(yán)格版本,過渡版本和基于框架的HTML文檔. 聲明需要位于文檔的最前面,處 ...
JS中構(gòu)造函數(shù)與函數(shù)
//構(gòu)造函數(shù)中,如果返回的是一個對 象,那么就保留原意. 如果返回的是非對象,比如數(shù)字.布爾和字符串,那么就返回 this,如果沒有 return 語句,那么也返回this. var myFun1 = ...
【Valid Palindrome】cpp
題目: Given a string, determine if it is a palindrome, considering only alphanumeric characters and ig ...
WebForm頁面生命周期及asp.net運行機(jī)制
1.先上幾張原理圖著重理解: 現(xiàn)在針對第四副圖原理進(jìn)行解析: 流程: 1.瀏覽器發(fā)送請求 2.服務(wù)器軟件(IIS)接收,它最終的目的就是為了向客戶輸出它請求的動態(tài)頁面生成的html代碼. 3.服務(wù)器不 ...
POJ 3185 The Water Bowls(高斯消元-枚舉變元個數(shù))
題目鏈接:http://poj.org/problem?id=3185 題意:20盞燈排成一排.操作第i盞燈的時候,i-1和i+1盞燈的狀態(tài)均會改變.給定初始狀態(tài),問最少操作多少盞燈使得所有燈的狀態(tài)最 ...
linux 目錄及文件的命名規(guī)則、ls操作
linux 命名: 1 不超過255個字符 2 嚴(yán)格區(qū)分大小寫 3 除/外,其他的字符都是合法的 注意:1)避免文件名首字符使用+ - .(避免和隱藏文件混淆) 2)避免文件名使用空格,制表符以及@# ...
Docker 安裝及問題處理
1 確定Linux版本 uname -r 2 ?升級系統(tǒng)(添加 APT 鏡像源,添加使用 HTTPS 傳輸?shù)能浖约?CA 證書.) sudo apt-get update sudo apt-get ...
Strusts2--課程筆記6
攔截器: Struts2的大多數(shù)核心功能都是通過攔截器實現(xiàn)的.攔截器之所以稱之為"攔截器",是因為它可以在執(zhí)行Action之前或之后攔截下用戶請求,執(zhí)行一些操作,以增強(qiáng)Action ...
MVC項目中使用百度地圖
已經(jīng)很久沒更新博客了,因為最近一直在學(xué)習(xí)前端的知識,沒那么多時間,寫博客或者寫文章不但沒有錢,寫得好還好說,如果寫得不好,一些吃瓜群眾,不僅要噴你,搞不好還要人身攻擊就不好了.所以寫博客的人,臉皮得厚 ...
總結(jié)
以上是生活随笔為你收集整理的树莓派做微信公众号服务器,树莓派与微信公众号对接(python)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HFSS喇叭天线仿真
- 下一篇: URAL 1682 Crazy Prof