最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python開(kāi)發(fā)之快速搭建自動(dòng)回復(fù)微信公眾號(hào)功能

 更新時(shí)間:2016年04月22日 11:17:15   作者:liuwons  
這篇文章主要介紹了Python開(kāi)發(fā)之快速搭建自動(dòng)回復(fù)微信公眾號(hào)功能的相關(guān)資料,需要的朋友可以參考下

在之前的一篇文章 Python利用 AIML 和 Tornado 搭建聊天機(jī)器人微信訂閱號(hào) 中用 aiml 實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的英文聊天機(jī)器人訂閱號(hào)。但是只能處理英文消息,現(xiàn)在用 圖靈機(jī)器人 來(lái)實(shí)現(xiàn)一個(gè)中文的聊天機(jī)器人訂閱號(hào)。

這里主要介紹如何利用 Python 的 Tornado Web框架以及wechat-python-sdk 微信公眾平臺(tái) Python 開(kāi)發(fā)包來(lái)快速搭建微信公眾號(hào)。

完整的公眾號(hào)代碼 GitHub 地址:green ,由于目前此公眾號(hào)有一些功能正在開(kāi)發(fā)中,此完整代碼會(huì)與下文所描述的代碼有不一致的地方,但是自動(dòng)回復(fù)的功能會(huì)一直保留。

本文搭建的微信公眾號(hào)為 Ms_haoqi,可以掃碼關(guān)注后測(cè)試效果

二維碼

自動(dòng)回復(fù)效果:

自動(dòng)回復(fù)

安裝Python庫(kù)

通過(guò) pip 安裝 wechat-python-sdk , Requests 以及 Tornado

pip install tornado
pip install wechat-sdk
pip install requests

訂閱號(hào)申請(qǐng)

要搭建訂閱號(hào),首先需要在微信公眾平臺(tái)官網(wǎng)進(jìn)行注冊(cè),注冊(cè)網(wǎng)址: 微信公眾平臺(tái)。

目前個(gè)人用戶可以免費(fèi)申請(qǐng)微信訂閱號(hào),雖然很多權(quán)限申請(qǐng)不到,但是基本的消息回復(fù)是沒(méi)有問(wèn)題的。

服務(wù)器接入

具體的接入步驟可以參考官網(wǎng)上的接入指南。

本訂閱號(hào)的配置為:

服務(wù)器配置

配置里的URL為服務(wù)器提供訂閱號(hào)后臺(tái)的url路徑,本文用到的源代碼配置的是 http://server_ip/wx 其中 server_ip 是運(yùn)行源代碼的主機(jī)的公網(wǎng)ip地址。

Token 可以設(shè)置為任意字符串。

EncodingAESKey 可以選擇隨機(jī)生成。

消息加密方式可以設(shè)置為比較簡(jiǎn)單的明文模式。

接受并處理微信服務(wù)器發(fā)送的接入請(qǐng)求的關(guān)鍵代碼為T(mén)ornado的一個(gè)Handle, wx.py :

import tornado.escape
import tornado.web
from wechat_sdk import WechatConf
conf = WechatConf(
token='your_token', # 你的公眾號(hào)Token
appid='your_appid', # 你的公眾號(hào)的AppID
appsecret='your_appsecret', # 你的公眾號(hào)的AppSecret
encrypt_mode='safe', # 可選項(xiàng):normal/compatible/safe,分別對(duì)應(yīng)于 明文/兼容/安全 模式
encoding_aes_key='your_encoding_aes_key' # 如果傳入此值則必須保證同時(shí)傳入 token, appid
)
from wechat_sdk import WechatBasic
wechat = WechatBasic(conf=conf)
class WX(tornado.web.RequestHandler):
def get(self):
signature = self.get_argument('signature', 'default')
timestamp = self.get_argument('timestamp', 'default')
nonce = self.get_argument('nonce', 'default')
echostr = self.get_argument('echostr', 'default')
if signature != 'default' and timestamp != 'default' and nonce != 'default' and echostr != 'default' \
and wechat.check_signature(signature, timestamp, nonce):
self.write(echostr)
else:
self.write('Not Open')

此代碼的作用就是驗(yàn)證消息是來(lái)自微信官方服務(wù)器后直接返回echostr。

啟動(dòng)后臺(tái)的 main.py 代碼:

import tornado.web
import tornado.httpserver
from tornado.options import define, options
settings = {
'static_path': os.path.join(os.path.dirname(__file__), 'static'),
'template_path': os.path.join(os.path.dirname(__file__), 'view'),
'cookie_secret': 'e440769943b4e8442f09de341f3fea28462d2341f483a0ed9a3d5d3859f==78d',
'login_url': '/',
'session_secret': "3cdcb1f07693b6e75ab50b466a40b9977db123440c28307f428b25e2231f1bcc",
'session_timeout': 3600,
'port': 5601,
'wx_token': 'weixin',
}
web_handlers = [
(r'/wx', wx.WX),
]
define("port", default=settings['port'], help="run on the given port", type=int)
if __name__ == '__main__':
app = tornado.web.Application(web_handlers, **settings)
tornado.options.parse_command_line()
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()

配置好程序源代碼后運(yùn)行,確認(rèn)運(yùn)行無(wú)誤后再在公眾號(hào)設(shè)置頁(yè)面點(diǎn)擊 提交 ,如果程序運(yùn)行沒(méi)問(wèn)題,會(huì)顯示接入成功。

接入圖靈機(jī)器人

要接入圖靈機(jī)器人,首先需要在官網(wǎng)申請(qǐng)API Key。

申請(qǐng)到之后可以利用以下代碼包裝一個(gè)自動(dòng)回復(fù)接口:

# -*- coding: utf-8 -*-
import json
import requests
import traceback
class TulingAutoReply:
def __init__(self, tuling_key, tuling_url):
self.key = tuling_key
self.url = tuling_url
def reply(self, unicode_str):
body = {'key': self.key, 'info': unicode_str.encode('utf-8')}
r = requests.post(self.url, data=body)
r.encoding = 'utf-8'
resp = r.text
if resp is None or len(resp) == 0:
return None
try:
js = json.loads(resp)
if js['code'] == 100000:
return js['text'].replace('<br>', '\n')
elif js['code'] == 200000:
return js['url']
else:
return None
except Exception:
traceback.print_exc()
return None

編寫(xiě)公眾號(hào)自動(dòng)回復(fù)代碼

利用 wechat-python-sdk 微信公眾平臺(tái) Python 開(kāi)發(fā)包可以很容易地處理公眾號(hào)的所有消息。

如下為處理來(lái)自微信官方服務(wù)器的微信公眾號(hào)消息的 Tornado Handler對(duì)象(此代碼會(huì)獲取公眾號(hào)收到的用戶消息并調(diào)用剛剛包裝的圖靈機(jī)器人API自動(dòng)回復(fù)) wx.py部分代碼:

# -*- coding: utf-8 -*-
import tornado.escape
import tornado.web
auto_reply = TulingAutoReply(key, url) # key和url填入自己申請(qǐng)到的圖靈key以及圖靈請(qǐng)求url
class WX(tornado.web.RequestHandler):
def wx_proc_msg(self, body):
try:
wechat.parse_data(body)
except ParseError:
print 'Invalid Body Text'
return
if isinstance(wechat.message, TextMessage): # 消息為文本消息
content = wechat.message.content
reply = auto_reply.reply(content)
if reply is not None:
return wechat.response_text(content=reply)
else:
return wechat.response_text(content=u"不知道你說(shuō)的什么")
return wechat.response_text(content=u'知道了')
def post(self):
signature = self.get_argument('signature', 'default')
timestamp = self.get_argument('timestamp', 'default')
nonce = self.get_argument('nonce', 'default')
if signature != 'default' and timestamp != 'default' and nonce != 'default' \
and wechat.check_signature(signature, timestamp, nonce):
body = self.request.body.decode('utf-8')
try:
result = self.wx_proc_msg(body)
if result is not None:
self.write(result)
except IOError, e:
return

關(guān)于Python開(kāi)發(fā)之快速搭建自動(dòng)回復(fù)微信公眾號(hào)功能就給大家介紹這么多,希望對(duì)大家有所幫助!

相關(guān)文章

  • Python實(shí)現(xiàn)將Excel某范圍單元格內(nèi)容截圖

    Python實(shí)現(xiàn)將Excel某范圍單元格內(nèi)容截圖

    Openpyxl是一個(gè)強(qiáng)大的Python庫(kù),主要用于讀取、寫(xiě)入和操作Excel文件,本文將使用Openpyxl實(shí)現(xiàn)將Excel某范圍單元格內(nèi)容截圖,感興趣的可以了解下
    2024-11-11
  • 詳解如何利用Python進(jìn)行客戶分群分析

    詳解如何利用Python進(jìn)行客戶分群分析

    每個(gè)電子商務(wù)數(shù)據(jù)分析師必須掌握的一項(xiàng)數(shù)據(jù)聚類技能,如果你是一名在電子商務(wù)公司工作的數(shù)據(jù)分析師,從客戶數(shù)據(jù)中挖掘潛在價(jià)值,來(lái)提高客戶留存率很可能就是你的工作任務(wù)之一。這篇就來(lái)告訴你如何將客戶分成不同的群組,并在一段時(shí)間內(nèi)觀察每個(gè)群組的留存率
    2023-02-02
  • Python如何破解壓縮包密碼

    Python如何破解壓縮包密碼

    破解rar和zip壓縮包。Windows下使用PyCharm軟件,本文給大家詳細(xì)介紹Python如何破解壓縮包密碼,感興趣的朋友一起看看吧
    2022-05-05
  • Python traceback模塊獲取異常信息的使用

    Python traceback模塊獲取異常信息的使用

    Python的traceback模塊提供了多種方法來(lái)獲取和展示異常的堆棧信息,本文主要介紹了Python traceback模塊獲取異常信息的使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • 詳談Python 窗體(tkinter)表格數(shù)據(jù)(Treeview)

    詳談Python 窗體(tkinter)表格數(shù)據(jù)(Treeview)

    今天小編就為大家分享一篇詳談Python 窗體(tkinter)表格數(shù)據(jù)(Treeview),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • Numpy之random函數(shù)使用學(xué)習(xí)

    Numpy之random函數(shù)使用學(xué)習(xí)

    這篇文章主要介紹了Numpy之random使用學(xué)習(xí),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • 基于Python實(shí)現(xiàn)PPT合并小工具

    基于Python實(shí)現(xiàn)PPT合并小工具

    在日常工作和學(xué)習(xí)中,如果需要將多個(gè)PPT文件合并成一個(gè)文件,手動(dòng)操作可能會(huì)非常繁瑣和耗時(shí),所以本文將使用Python制作一個(gè)簡(jiǎn)單的PPT合并小工具,希望對(duì)大家有所幫助
    2024-01-01
  • 基于Tensorflow使用CPU而不用GPU問(wèn)題的解決

    基于Tensorflow使用CPU而不用GPU問(wèn)題的解決

    今天小編就為大家分享一篇基于Tensorflow使用CPU而不用GPU問(wèn)題的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • Python issubclass和isinstance函數(shù)的具體使用

    Python issubclass和isinstance函數(shù)的具體使用

    本文主要介紹了Python issubclass和isinstance函數(shù)的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02

最新評(píng)論

徐水县| 康保县| 星座| 罗山县| 平度市| 睢宁县| 达孜县| 临海市| 连南| 神农架林区| 儋州市| 营山县| 丰镇市| 定远县| 师宗县| 洞口县| 汝城县| 林芝县| 南昌县| 临夏市| 民和| 海盐县| 北流市| 元谋县| 乌鲁木齐市| 永清县| 江城| 雷波县| 汝州市| 电白县| 泗洪县| 河北区| 册亨县| 孝昌县| 萝北县| 会同县| 阜阳市| 忻城县| 泾源县| 项城市| 共和县|