久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Python微信公眾號(hào)開發(fā)

 充電的狀態(tài) 2020-02-12

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

準(zhǔn)備工作

首先要注冊(cè)一個(gè)公眾號(hào),這個(gè)很簡(jiǎn)單,,我們到微信公眾平臺(tái)注冊(cè)就可以了,,選擇個(gè)人訂閱號(hào)就可以。但是如果可以認(rèn)證的,,我建議選擇認(rèn)證訂閱號(hào),,因?yàn)槲凑J(rèn)證的號(hào)很多功能權(quán)限都沒有。好了,,話不多說進(jìn)入正題,。

1. 配置公眾號(hào)
打開公眾號(hào),在 開發(fā)->基本配置 頁面填寫內(nèi)容,。
在這里插入圖片描述
下面說下需要填的內(nèi)容,,第一個(gè)URL要填的就是我們的服務(wù)地址,這個(gè)地址必須是外網(wǎng)地址并且是80端口,。我們要本地開發(fā)時(shí)可以用 ngrok 解決,。在ngrok.com官網(wǎng)下載。解壓后就是一個(gè)exe程序,。在當(dāng)前目錄下輸入.\ngrok.exe http 80即可啟動(dòng),。啟動(dòng)后如下圖所示,圖片中網(wǎng)址就是我們需要的
在這里插入圖片描述

  • 然后我們復(fù)制紅色方框里面的地址到微信的URL輸入框中,,比如我的就輸入http://c9b15df5./connect
    后面這個(gè)connect是我自己的服務(wù)的地址,。就是我們?cè)诔绦蜷_發(fā)中自己命名的一個(gè)請(qǐng)求路徑,如果是新手的話建議按照我的來,。不要改動(dòng),避免程序跑不起來,。
  • 第二個(gè)Token,,自己想一個(gè)就行了,隨便填,,你可以當(dāng)他為一個(gè)密碼,。
  • 第三個(gè)自己生成就可以了。
  • 最后一個(gè)消息加解密方式選擇明文模式,。配置到這里就結(jié)束了,,我們先不要關(guān)閉這個(gè)頁面,,等我們Python程序驗(yàn)證部分寫好以后點(diǎn)擊頁面下面的提交就可以了。現(xiàn)在點(diǎn)會(huì)報(bào)錯(cuò)的,。

2.接口驗(yàn)證部分代碼編寫

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

這一步,我們使用三個(gè)庫,,wechatpy-微信的Python SDK,falcon一個(gè)非常微小的Python Web框架,,Waitress-一個(gè)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)

代碼寫好以后,,我們?cè)诿钚休斎?waitress-serve --port=80 connect:app在80端口啟動(dòng)我們的程序。啟動(dòng)后如下圖,,代表啟動(dòng)成功,,這時(shí)候我們到微信的配置頁面點(diǎn)擊提交,會(huì)彈出提交成功消息框,,代表我們成功接入微信
在這里插入圖片描述
簡(jiǎn)單說明以下上面代碼,,on_get函數(shù)接收微信發(fā)來的get請(qǐng)求,并且通過query_string拿到微信發(fā)送的參數(shù),,之后通過wechatpy的check_signature函數(shù)來校驗(yàn),。校驗(yàn)成功后把echostr返回給微信。

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

接入成功后,,就可以回復(fù)用戶的信息了,。我們?cè)黾右粋€(gè)函數(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

'''
遇到不懂的問題,?Python學(xué)習(xí)交流群:821460695滿足你的需求,,資料都已經(jīng)上傳群文件,可以自行下載!
'''
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)拿到用戶消息時(shí),,判斷是文本消息,就原樣返回給用戶?,F(xiàn)在我們啟動(dòng)腳本后,,向公眾號(hào)發(fā)送文本消息就會(huì)收到自動(dòng)回復(fù)了。

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

我們簡(jiǎn)單修改下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)

我們?cè)诖a中加入了圖片處理邏輯,,如果是圖片類型的消息,,則把圖片返回給用戶。我們把圖片發(fā)送給微信后臺(tái)后,,會(huì)自動(dòng)生成一個(gè)media_id,我們發(fā)送這個(gè)media_id就可以了,。

效果圖

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多