成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python微信公眾號開發(fā)—小白篇(一)

cuieney / 842人閱讀

摘要:一站式解決新手開發(fā)微信公眾號遇到的所有問題。這一步,我們使用三個庫,微信的一個非常微小的框架,一個服務(wù)器,當(dāng)然在上可以使用代替。校驗成功后把返回給微信。我們把圖片發(fā)送給微信后臺后,會自動生成一個我們發(fā)送這個就可以了。

本文面向想通過Python學(xué)習(xí)公眾號開發(fā)的同學(xué)。一站式解決新手開發(fā)微信公眾號遇到的所有問題。

為了防止我的文章被到處轉(zhuǎn)載,貼一下我的公眾號【智能制造社區(qū)】,歡迎大家關(guān)注。

github倉庫地址https://github.com/injetlee/Python/tree/master/wechat

本篇文章首先實現(xiàn)與公眾號的對接,實現(xiàn)簡單的回復(fù)文字、圖片內(nèi)容。下一篇會對接騰訊的AI平臺,實現(xiàn)對照片的人臉檢測與分析,分析年齡、性別、表情、魅力值等。

準備工作

首先要注冊一個公眾號,這個很簡單,我們到微信公眾平臺注冊就可以了,選擇個人訂閱號就可以。但是如果可以認證的,我建議選擇認證訂閱號,因為未認證的號很多功能權(quán)限都沒有。好了,話不多說進入正題。

1. 配置公眾號

打開公眾號,在 開發(fā)->基本配置 頁面填寫內(nèi)容。

下面說下需要填的內(nèi)容,第一個URL要填的就是我們的服務(wù)地址,這個地址必須是外網(wǎng)地址并且是80端口。我們要本地開發(fā)時可以用 ngrok 解決。在ngrok.com官網(wǎng)下載。解壓后就是一個exe程序。在當(dāng)前目錄下輸入. grok.exe http 80 即可啟動。啟動后如下圖所示,圖片中網(wǎng)址就是我們需要的

然后我們復(fù)制紅色方框里面的地址到微信的URL輸入框中,比如我的就輸入http://c9b15df5.ngrok.io/connect 后面這個connect是我自己的服務(wù)的地址。就是我們在程序開發(fā)中自己命名的一個請求路徑,如果是新手的話建議按照我的來。不要改動,避免程序跑不起來。

第二個Token,自己想一個就行了,隨便填,你可以當(dāng)他為一個密碼。

第三個自己生成就可以了。

最后一個消息加解密方式選擇明文模式。配置到這里就結(jié)束了,我們先不要關(guān)閉這個頁面,等我們Python程序驗證部分寫好以后點擊頁面下面的提交就可以了。現(xiàn)在點會報錯的。

2.接口驗證部分代碼編寫

查看官方文檔,當(dāng)我們點擊配置頁面的提交按鈕時,微信后臺會向我們配置的地址發(fā)送signature、timestamp、nonce、echostr四個信息,我們拿到這部分信息后通過哈希加密算法計算出(timestamp,nonce,token)的哈希值與微信發(fā)送的signature對比,如果相等則說明是微信后臺的請求,然后把echostr返回,就表示驗證成功。

這一步,我們使用三個庫,wechatpy-微信的Python SDK,falcon一個非常微小的Python Web框架,Waitress-一個Python WSGI服務(wù)器,當(dāng)然在Linux上可以使用gunicorn代替waitress。通過pip install wechatpy[pycrypto]和pip install falcon,pip install waitress安裝。代碼如下,只需要把配置界面的token替換到代碼里

import falcon
from falcon import uri
from wechatpy.utils import check_signature
from wechatpy.exceptions import InvalidSignatureException


class Connect(object):

    def on_get(self, req, resp):
        query_string = req.query_string
        query_list = query_string.split("&")
        b = {}
        for i in query_list:
            b[i.split("=")[0]] = i.split("=")[1]

        try:
            check_signature(token="這里填寫配置界面你輸入的token", signature=b["signature"], timestamp=b["timestamp"], nonce=b["nonce"])
            resp.body = (b["echostr"])
        except InvalidSignatureException:
            pass
        resp.status = falcon.HTTP_200


app = falcon.API()
connect = Connect()
app.add_route("/connect", connect)


代碼寫好以后,我們在命令行輸入 waitress-serve --port=80 connect:app在80端口啟動我們的程序。啟動后如下圖,代表啟動成功,這時候我們到微信的配置頁面點擊提交,會彈出提交成功消息框,代表我們成功接入微信

簡單說明以下上面代碼,on_get函數(shù)接收微信發(fā)來的get請求,并且通過query_string拿到微信發(fā)送的參數(shù),之后通過wechatpy的check_signature函數(shù)來校驗。校驗成功后把echostr返回給微信。

3. 發(fā)送文本信息給用戶

接入成功后,就可以回復(fù)用戶的信息了。我們增加一個函數(shù)處理用戶發(fā)送的消息,整體代碼如下:

import falcon
from wechatpy.utils import check_signature
from wechatpy.exceptions import InvalidSignatureException
from wechatpy import parse_message
from wechatpy.replies import TextReply, ImageReply


class Connect(object):

    def on_get(self, req, resp):
        query_string = req.query_string
        query_list = query_string.split("&")
        b = {}
        for i in query_list:
            b[i.split("=")[0]] = i.split("=")[1]

        try:
            check_signature(token="xxxxx", signature=b["signature"], timestamp=b["timestamp"], nonce=b["nonce"])
            resp.body = (b["echostr"])
        except InvalidSignatureException:
            pass
        resp.status = falcon.HTTP_200

    def on_post(self, req, resp):
        xml = req.stream.read()
        msg = parse_message(xml)
        if msg.type == "text":
            reply = TextReply(content=msg.content, message=msg)
            xml = reply.render()
            resp.body = (xml)
            resp.status = falcon.HTTP_200


app = falcon.API()
connect = Connect()
app.add_route("/connect", connect)

我們導(dǎo)出了parse_message,TextReply,ImageReply函數(shù)。當(dāng)拿到用戶消息時,判斷是文本消息,就原樣返回給用戶?,F(xiàn)在我們啟動腳本后,向公眾號發(fā)送文本消息就會收到自動回復(fù)了。

4. 發(fā)送圖片信息給用戶

我們簡單修改下on_post函數(shù),使其不僅能處理文本,也能處理圖片信息。完整代碼如下:

import falcon
from wechatpy.utils import check_signature
from wechatpy.exceptions import InvalidSignatureException
from wechatpy import parse_message
from wechatpy.replies import TextReply, ImageReply


class Connect(object):

    def on_get(self, req, resp):
        query_string = req.query_string
        query_list = query_string.split("&")
        b = {}
        for i in query_list:
            b[i.split("=")[0]] = i.split("=")[1]

        try:
            check_signature(token="xxxxxxx", signature=b["signature"], timestamp=b["timestamp"], nonce=b["nonce"])
            resp.body = (b["echostr"])
        except InvalidSignatureException:
            pass
        resp.status = falcon.HTTP_200

    def on_post(self, req, resp):
        xml = req.stream.read()
        msg = parse_message(xml)
        if msg.type == "text":
            reply = TextReply(content=msg.content, message=msg)
            xml = reply.render()
            resp.body = (xml)
            resp.status = falcon.HTTP_200
        elif msg.type == "image":
            reply = ImageReply(media_id=msg.media_id, message=msg)
            xml = reply.render()
            resp.body = (xml)
            resp.status = falcon.HTTP_200


app = falcon.API()
connect = Connect()
app.add_route("/connect", connect)

我們在代碼中加入了圖片處理邏輯,如果是圖片類型的消息,則把圖片返回給用戶。我們把圖片發(fā)送給微信后臺后,會自動生成一個media_id,我們發(fā)送這個media_id就可以了。

效果圖

總結(jié)

以上就是第一部分的內(nèi)容,我們首先做了接口認證,之后通過一個on_post函數(shù)處理了用戶發(fā)送的文本和圖片信息,不過目前就是原樣返回。

下一篇我們接入騰訊AI平臺,對照片進行人臉分析檢測之后再返回給用戶,不要走開哦。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/41851.html

相關(guān)文章

  • 什么是 Python 編程語言?

    摘要:由設(shè)計,作為編程語言的繼承者,于年首次發(fā)布。表達式表達式是編程語言中的語法實體,可以對其進行評估以確定其值。它是編程語言解釋和計算以產(chǎn)生值的常量變量函數(shù)和運算符的組合。它在年年年和年被評為年度編程語言,是唯一四次獲得該獎項的語言。 ...

    1treeS 評論0 收藏0
  • python實現(xiàn)微信第三方網(wǎng)站掃碼登錄(Django)

    摘要:寫在前面本周剛在項目中實現(xiàn)了微信第三方網(wǎng)站掃碼登錄。準備與注意事項微信公眾平臺跟微信開放平臺是兩個不同的平臺,別搞混了。參數(shù)在微信開放平臺中查看。 寫在前面 本周剛在項目中實現(xiàn)了微信第三方網(wǎng)站掃碼登錄。因為第一次寫相關(guān)項目,所以遇到了很多坑。所以寫這篇文章是希望像我之前那樣的小白也能從容的開發(fā),不要浪費無謂的時間,這篇文章盡量寫的詳細簡單。準備與注意事項 微信公眾平臺跟微信開放平臺是...

    lemanli 評論0 收藏0
  • 微信小程序爬蟲】表情包小程序圖文視頻教學(xué),從零寫起,保姆教程!??!

    摘要:文章目錄前言爬取分析視頻教學(xué)成果展示福利入門到就業(yè)學(xué)習(xí)路線規(guī)劃小白快速入門爬蟲路線前言皮皮蝦一個沙雕而又有趣的憨憨少年,和大多數(shù)小伙伴們一樣喜歡聽歌游戲,當(dāng)然除此之外還有寫作的興趣,,日子還很長,讓我們一起加油努力叭話 ...

    coordinate35 評論0 收藏0

發(fā)表評論

0條評論

cuieney

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<