利用公众号 + WeRoBot开发一款AI应用
點擊上方“AI搞事情”關注我們
WeRoBot是個啥
WeRoBot 是一個基于Python的微信機器人框架,采用MIT協議發布。
git地址:https://github.com/offu/WeRoBot
文檔地址:https://werobot.readthedocs.org/zh_CN/latest/
安裝:
pip install werobotWeRoBot咋用呀
前提你得申請一個公眾號,其次會簡單的Python編程,更重要的是得有一個服務器。這些都準備好了的話,那就可以開始搭建你的對話機器人了。
* 后臺配置
公眾號后臺進行基礎配置,
其中,AppID是公眾號為你分配的開發識別碼,配合開發者密碼便擁有調用公眾號的接口能力;服務器配置是我們需要配置的后臺服務器地址(如果服務器只有一個微信后臺服務,必須使用80端口!如果是https,必須使用443端口!,當然也可以利用Nginx進行反向代理),以及自定義的Token(后面需要在代碼里關聯),同時,有關素材的操作是需要access_token的,不過在werobot模塊里,將APP_ID和APP_SECRET就好了,access_token是會自動獲取。最后,不要忘了將云服務器公網IP加入IP白名單,否則也會報錯。
完成配置以后,點擊提交,提示提交成功,說明咱們已經完成了第一步驟的配置。
* 程序開發
WeRoBot 是一個基于Python的框架,我們需要具備一定Python能力便能進行后續程序的開發,首先來一個hello world。
import werobotrobot = werobot.WeRoBot(token='tokenhere') robot.config["APP_ID"] = "你的APP_ID" robot.config["APP_SECRET"] = "你的APP_SECRET"@robot.handler def hello(message):return 'Hello World!'# 讓服務器監聽在 0.0.0.0:80 robot.config['HOST'] = '0.0.0.0' robot.config['PORT'] = 80 robot.run()從上面代碼我們需要知道:
@為Python中裝飾器的用法,具備裝飾、修改函數功能的函數。接受一個函數作為輸入參數,并返回一個具備額外功能函數。
WeRoBot 會解析微信服務器發來的消息,并將消息轉換成成 Message 或者是 Event 。
Message 表示用戶發來的消息,如文本消息、圖片消息;
Event 則表示用戶觸發的事件, 如關注事件、掃描二維碼事件。
在消息解析、轉換完成后, WeRoBot 會將消息轉交給 Handler 進行處理,并將 Handler 的返回值返回給微信服務器。
當然, 你也可以編寫一些只能處理特定消息的 Handler。比如常見的有:
@robot.text 修飾的 Handler 只處理文本消息
@robot.image 修飾的 Handler 只處理圖片消息
@robot.subscribe 修飾的 Handler 只處理訂閱后的信息
@robot.voice 修飾的 Handler 只處理語音信息
@robot.filter 修飾的 Handler 處理有指定關鍵詞的信息
回復信息種類
TextReply:文本消息
ImageReply:圖片消息
VoiceReply:語音消息
VideoReply:視頻消息
ArticlesReply:圖文消息
MusicReply:音樂消息
TransferCustomerServiceReply:將消息轉發到多客服
SuccessReply:微信服務器回復 “success”
更多關于WeRoBot的使用可以參考官方文檔。
* 服務部署
如果服務器只有werobot應用,則只需要開放80(http)端口或者443端口(https),由于我服務器還有其他應用,則通過Nginx進行了方向代理,配置方式如下:
http {log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';sendfile on;tcp_nopush on;tcp_nodelay on;keepalive_timeout 65;types_hash_max_size 2048;include /etc/nginx/mime.types;default_type application/octet-stream;client_max_body_size 500m;client_header_timeout 1m;client_body_timeout 1m;proxy_connect_timeout 60s;proxy_read_timeout 1m;proxy_send_timeout 1m;proxy_cache_path /var/imgcachetest levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=1g;server {# 端口和域名listen 80;server_name ip或者域名;# 日志access_log /var/log/nginx/access.log;error_log /var/log/nginx/error.log;location /werobot/ {# 需要添加的代碼proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";proxy_http_version 1.1;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Host $host;proxy_pass http://127.0.0.1:4802; }}}events {worker_connections 1024; ## Default: 1024 }另外,Werobot還提供了和Python后端框架Django、Flask、Bottle和Tornado的集成使用方式。
部署方式還可以結合docker進行容器化部署。
* 效果展示
通過上面的流程,我們就可以通過公眾號和后臺進行交互,涵蓋文字、圖片、語音、視頻等信息,再結合各種算法,如圖像處理、OCR、目標檢測,文本生成、智能對話等便能開發一款基于公眾號的智能應用。
下圖為通過輸入文本,后臺返回生成的圖片,感興趣的可以嘗試一下。
長按二維碼關注我們
有趣的靈魂在等你
總結
以上是生活随笔為你收集整理的利用公众号 + WeRoBot开发一款AI应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Pycharm连接远程服务器进行代码调试
- 下一篇: django 入门,快速搭建一个后端接口