微信公衆號之訂閱號開發 - 智能機器人對話(僅限文本類型)

1、註冊公衆號html

  微信公衆平臺:https://mp.weixin.qq.com/python

一、註冊帳號nginx

  1)選擇帳號類型json

  2)填寫註冊郵箱(注意,一個郵箱只能註冊一種帳號)flask

  3)選擇類型(注意,一旦創建帳號,類型不可更改)api

 

  4)填寫我的信息服務器

    到此,微信公衆號的註冊基本完成,接下來看幾個配置。微信

  5)在左側菜單「開發」 - > 「基本配置」,可查看基本配置參數,以下:app

 

  6)在本身的服務器上安裝nginx,具體步驟可參照博客:http://www.javashuo.com/article/p-powerkdw-co.html微信公衆平臺

  7)nginx.conf配置以下:

server {
        listen       80;
        # 配置成本身服務器的url地址
        server_name  39.xx.xx.130;

        ......

        location / { 
            # 配置nginx的反向代理功能,本身服務器的5000端口,由於接下來的項目使用flask,且將其運行在本身的服務器的5000端口
            proxy_pass  http://39.xx.xx.130:5000;  
            # root   html;
            # index  index.html index.htm;
        }

        ......
  }

  8)首次啓用須要配置微信服務器,以下代碼(前提是在虛擬環境下已經安裝好 flask ):

from flask import Flask, request
from xml.etree import ElementTree as ET

app = Flask(__name__)


@app.route('/')
def index():
    # 配置微信服務器
    if request.method == 'GET':
        echostr = request.args.get('echostr')
        return echostr      # 給微信服務器返回echostr,則認證成功

if __name__ == '__main__':
    app.run('0.0.0.0', port=5000, debug=True)

    可先使用命令運行該腳本,配好本身的服務器後再去開發和部署下面二次開發微信訂閱號的項目代碼。

  9)在服務器合適的位置新建一個目錄,在此目錄下創建對微信訂閱號的二次開發項目代碼,目錄結構以下:

/root/my_flask
        ├── app
        │   ├── __init__.py 
        │   ├── templates
        │   │       └── index.html
        │   └── views
        │         └── wx_demo.py
        ├── logs
        ├── manager.py
        └── settings.py 
from flask_script import Manager

from app import create_app
my_app = create_app()

manager = Manager(my_app)

if __name__ == '__main__':
    manager.run()
manager.py
# 圖靈機器人配置
TULING_URL = 'http://openapi.tuling123.com/openapi/api/v2'

TULING_STR = {
    "reqType":0,
    "perception": {
        "inputText": {
            "text": ""
        }
    },
    "userInfo": {
        "apiKey": "17cec68551c847c59ac48a5a9dd00327",
        "userId": ""
    }
}
settings.py
from flask import Flask

# 引入藍圖
from .views.wx_demo import wx_bp


def create_app():
    my_app = Flask(__name__)

    my_app.register_blueprint(wx_bp)

    return my_app
app/__init__.py
from flask import Blueprint, request, render_template, make_response
from xml.etree import ElementTree as ET
import time
import requests
from settings import TULING_URL, TULING_STR

wx_bp = Blueprint('wx_bp', __name__)

def tuling(text, userid):
    print(type(text), type(userid))
    TULING_STR['perception']['inputText']['text'] = text
    TULING_STR['userInfo']['userId'] = '111'
    res = requests.post(TULING_URL, json=TULING_STR)
    print(res.json().get("results")[0].get("values").get("text"))
    return res.json().get("results")[0].get("values").get("text")


@wx_bp.route('/', methods=['GET', 'POST'])
def index():
    # 配置微信服務器
    # if request.method == 'GET':
    #     echostr = request.args.get('echostr')
    #     return echostr
    #
    if request.method == 'GET':
        return render_template('index.html')

    else:
        print('這裏是POST請求')
        data = request.get_data()
        print(data)
        xml = ET.fromstring(data)  # 實例化一個xml對象
        ToUserName = xml.findtext('.//ToUserName')
        FromUserName = xml.findtext('.//FromUserName')
        CreateTime = xml.findtext('.//CreateTime')
        Content = xml.findtext('.//Content')
        print(Content)

        Content = tuling(Content, ToUserName)

        MsgId = xml.findtext('.//MsgId')
        print(ToUserName, FromUserName, CreateTime, Content, MsgId)

        res = '''<xml>
            <ToUserName><![CDATA[%s]]></ToUserName>
            <FromUserName><![CDATA[%s]]></FromUserName>
            <CreateTime>%s</CreateTime>
            <MsgType><![CDATA[text]]></MsgType>
            <Content><![CDATA[%s]]></Content>
        </xml>'''

        response = make_response(res % (FromUserName, ToUserName, str(int(time.time())), Content))
        response.content_type = 'application/xml'
        return response
app/views/wx_demo.py
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<h1>網站正在建設中......,詳情敬請關注微信公衆號"python小牛"</h1>
</body>
</html>
app/templates/index.html

  10)部署完成併成功啓動項目後,關注公衆號"python小牛",發消息測試以下:

  11)注意不要使用命令啓動flask,而要使用使用進程管理工具supervisor和uWSGI將項目運行在服務器後臺,具體部署步驟可參考博客:http://www.javashuo.com/article/p-bngezzjk-ec.html

  12)你們可關注以下公衆號與智能機器人進行互動:

相關文章
相關標籤/搜索