午夜国产福利一区二区三区_日韩激情无码不卡_视频二区一区在线_a国产在线∨的不卡视频_人妻无码久久一二三区免费_午夜毛片不卡免費觀看視頻_日韩高清无码专区_中国一级黄色录像片_亚洲韩国在线视频_丰满少妇伦精品无码专区在线观看

您所在的位置: 首頁>關(guān)于我們>公司動(dòng)態(tài)>建站知識(shí)>你也可以自己嘗試開發(fā)微信公眾號(hào)

你也可以自己嘗試開發(fā)微信公眾號(hào)

發(fā)表于:2019-09-11 閱讀:7134 關(guān)鍵詞: 開發(fā)微信公眾號(hào)

  如果公眾號(hào)只是用來發(fā)文章就太無聊了,人生就在于折騰,比如說給公眾號(hào)配上關(guān)鍵詞回復(fù)、或者是機(jī)器人。接下來我們就開始折騰吧。

  服務(wù)器選擇為安裝apache的,避免80端口被占用,無法使用nginx的情況。好吧,其實(shí)是為了省事~

  第一步,我們要先安裝nginx,讓ip指向flask的鏈接端口,安裝完成之后,配置nginx.conf ,將80端口用nginx轉(zhuǎn)發(fā)到flask服務(wù)器端口


listen       80;

server_name  公網(wǎng)ip;

location / {

   # root   html;

   # index index.html index.htm;

   proxy_pass_header Server;

   proxy_redirect off;

   proxy_pass http://127.0.0.1:5000;

}


  第二步,安裝flask pip3 install flask ,下面flask文件代碼 用于令牌token的校驗(yàn)


# -*- coding:utf-8 -*-

from flask import Flask

from flask import request


import hashlib


app = Flask(__name__)

app.debug = True


@app.route('/mp',methods=['GET','POST'])

def wechat():


   if request.method == 'GET':

       #這里改寫你在微信公眾平臺(tái)里輸入的token

       token = 'yourtoken'

       #獲取輸入?yún)?shù)

       data = request.args

       signature = data.get('signature','')

       timestamp = data.get('timestamp','')

       nonce = data.get('nonce','')

       echostr = data.get('echostr','')

       #字典排序

       list = [token, timestamp, nonce]

       list.sort()


       s = list[0] + list[1] + list[2]

       #sha1加密算法        

       hascode = hashlib.sha1(s.encode('utf-8')).hexdigest()

       #如果是來自微信的請(qǐng)求,則回復(fù)echostr

       if hascode == signature:

           return echostr

       else:

           return ""



if __name__ == '__main__':

   app.run()


  第三步,先看下微信公眾號(hào)后臺(tái)是咋樣設(shè)置的,

 ?、?服務(wù)器地址 --> http://公網(wǎng)ip/mp ,與flask路由設(shè)置一致

 ?、?token --> 自己設(shè)定,與flask中發(fā)送的token一致

 ?、?消息加密 --> 隨機(jī)生成

  如果你對(duì)微信token的校驗(yàn)機(jī)制有興趣,可以查一下微信公眾號(hào)文檔


微信公眾號(hào)文檔


  第四步點(diǎn)擊提交,如果顯示成功則配置完成了 flask服務(wù)器就可以關(guān)閉了,到此即完成了開頭難的部分,接下來就是使用werobot這個(gè)框架了,使用 pip install werobot 進(jìn)行安裝

  微信公眾號(hào)內(nèi)發(fā)送信息,所有的消息自動(dòng)回復(fù) Hello World!


import werobot


robot = werobot.WeRoBot(token='namejaho')


@robot.handler

def echo(message):

   return 'Hello World!'


robot.config['HOST'] = '0.0.0.0'

robot.config['PORT'] = 80


robot.run()


  微信公眾號(hào)已經(jīng)接入服務(wù)器,現(xiàn)在想通過 werobot 實(shí)現(xiàn)公眾號(hào)的控制,如添加回復(fù)、關(guān)鍵詞回復(fù)、自定義菜單(坑)等

  需求已經(jīng)有了,現(xiàn)在想想如何實(shí)現(xiàn),werobot框架的使用很簡單,幾行代碼就可以實(shí)現(xiàn)自動(dòng)回復(fù)功能,通過查閱文檔可知,自定義菜單代碼也不多,下面對(duì)其進(jìn)行簡單封裝


from werobot import WeRoBot


robot = WeRoBot()

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

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

class Wechat(object):


    def __init__(self):

        #self.robot = WeRoBot(token='namejaho')

        self.client = robot.client


    def create_menu(self,menu,key):

        self.client.create_menu({

            "button":[{

            "type": "click",

            "name": menu,

            "key": key

          }]

        })


    @robot.key_click("author")

    def handler(msg):

        return '歡迎添加我微信:***'


    def run(self):

        self.create_menu('聯(lián)系我','author')

        robot.run()


wechat = Wechat()

wechat.run()


  接下來跑下代碼,不出意外的話,你也會(huì)報(bào) 48001: api unauthorized hint 這個(gè)錯(cuò)誤,這是因?yàn)槲⑿殴娞?hào)有個(gè)接口權(quán)限,對(duì)個(gè)人主體賬號(hào)限制了很多,如果想開通權(quán)限,只能通過企業(yè)號(hào)或者服務(wù)號(hào)了

  自定義菜單只能以后再想辦法,接下來是關(guān)注自動(dòng)回復(fù)與關(guān)鍵詞回復(fù),這些操作可以通過 handler 解決


# 關(guān)注自動(dòng)回復(fù)

import werobot


robot = werobot.WeRoBot(token='token')


@robot.subscribe

def subscribe(message):

    return 'Hello My Friend!'


robot.config['HOST'] = '0.0.0.0'

robot.config['PORT'] = 80

robot.run()


  PS:只要你啟用了服務(wù)器配置,你公眾號(hào)就不能使用原來的自定義菜單和自動(dòng)回復(fù)了,兩者是互斥的。