1. 程式人生 > >Python-快速實現微信公眾號自動回覆(聊天機器人)

Python-快速實現微信公眾號自動回覆(聊天機器人)

原理:通過微信公眾號提供的開發者模式,利用Python搭建環境,實現自動回覆,回覆內容通過呼叫圖靈機器人的API

配置:伺服器(這裡是阿里雲主機,Ubuntu),公眾號,圖靈機器人

一,公眾平臺上進行開發配置


三種加密方式,按需選擇。第一種最簡單,最不安全(我這裡選擇的第一種)。一般選第二種進行開發除錯,第三種顯然是最安全的。

二,伺服器配置

1,安裝Apache

apt-get update
apt-get upgrade
apt-get install apache2

檢驗是否安裝成功

apache2 -v
出現如下版本資訊,說明安裝成功:

啟動apache:

apachectl start 0.0.0.0:80
啟動成功的話從瀏覽器能成功訪問伺服器外網IP

2,安裝Django

pip install django

3,安裝werobot

pip install werobot
4,建立Django專案

在/var/www/目錄下新建一個Django專案(這樣是為了以後方便部署到Apache)

django-admin.py startproject WXGZH
WXGZH是專案名字

5,在WXGZH這個專案下面新建一個robot.py

robot.py的程式碼內容如下:

apt-get install libapache2-mod-wsgi

# -*- coding: utf-8 -*-
import json
import requests
import traceback
from werobot import WeRoBot


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('', 'n')
            elif js['code'] == 200000:
                return js['url']
            else:
                return None
        except Exception:
            traceback.print_exc()
            return None

auto_reply = TulingAutoReply('這裡填圖靈APIkey', '這裡填API地址') # key和url從圖靈機器人網站上申請得到

robot = WeRoBot(enable_session=False,
        token = 'secretsignal8023',
        APP_ID = 'wx2bfd78f13bf8b42f',
        APP_SECRET = 'be5dd452c950b98893b842d72df2614f')

@robot.handler
def hell(message):
        rep = auto_reply.reply(message)
        return rep

修改專案目錄下的urls.py檔案,修改後程式碼內容如下:

from django.conf.urls import url
from django.contrib import admin
from django.conf import settings
from werobot.contrib.django import make_view
from robot import robot
urlpatterns = [
    url(r'^robot/',make_view(robot)),
]
修改專案目錄下的settings.py檔案,將ALLOWED_HOSTS 一行改為:
ALLOWED_HOSTS = ['這裡填你的外網IP']


(其實Django本身就可以啟動執行,但是Apache才是真正的生產環境,不部署到Apache上的話,會出現一些問題,例如我遇到的:給公眾號傳送訊息,能夠正常回復,但是
會提示該公眾號障礙,請稍後再試)


7,將Django部署到Apache
sudo apt-get install libapache2-mod-wsgi

新建一個配置檔案

sudo vi /etc/apache2/sites-available/sitename.conf
內容如下:
<VirtualHost *:80>
    ServerName www.yourdomain.com
    ServerAlias otherdomain.com
    ServerAdmin [email protected]
  
    Alias /media/ /var/www/WXGZH/media/			
    Alias /static/ /var/www/WXGZH/static/	
  
    <Directory /var/www/WXGZH/media>
        Require all granted
    </Directory>
  
    <Directory /var/www/WXGZH/static>
        Require all granted
    </Directory>
  
    WSGIScriptAlias / /var/www/WXGZH/WXGZH/wsgi.py
    # 注意,這裡兩層目錄都為專案名
  
    <Directory /var/www/WXGZH/WXGZH>
    <Files wsgi.py>
        Require all granted
    </Files>
    </Directory>
</VirtualHost>

執行如下指令:
a2ensite sitename.conf
service apache2 restart
修改/var/www/ProjectName/ProjectName/wsgi.py為如下格式:
import os
from os.path import join,dirname,abspath
PROJECT_DIR = dirname(dirname(abspath(__file__)))
import sys
sys.path.insert(0,PROJECT_DIR)
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "WXGZH.settings")
from django.core.wsgi import get_wsgi_application


#os.environ.setdefault("DJANGO_SETTINGS_MODULE", "WXGZH.settings")


application = get_wsgi_application()
後重啟Apache:
service apache2 restart
三,完成

效果如下:




相關推薦

Python-快速實現公眾自動回覆聊天機器人

原理:通過微信公眾號提供的開發者模式,利用Python搭建環境,實現自動回覆,回覆內容通過呼叫圖靈機器人的API 配置:伺服器(這裡是阿里雲主機,Ubuntu),公眾號,圖靈機器人 一,公眾平臺上進行開發配置 三種加密方式,按需選擇。第一種最簡單,最不安全(我這裡選擇的第

用localStorage實現公眾自動登入

實現微信公眾號自動登入功能,我之前是想用cookie去實現,畢竟cookie可以在java後臺進行操作,但是在微信公眾號一直測試失敗,查資料說是微信授權會進行一次跳轉,無法將cookie攜帶到頁面,暫時還沒想到什麼好的解決方案,所以換了另一種方式用localStorage去實現自動登入功能,

公眾自動回覆設定教程

微信公眾號選單等功能如何開通 自定義選單最大的優點是減少了使用者的認知門檻,可以將公眾賬號裡的重點資訊入口直觀的暴露給使用者。當用戶進入到公眾賬號時,可以一目瞭然的瞭解相關的服務,只需要點選,不需要再通過一系列的命令列互動(或者簡化了命令列互動的方式,提供了更低門檻的入口) ①:《微信公眾號

公眾自動回覆業務邏輯五秒不能處理完成

主要思路,首先返給微信伺服器success 然後呼叫客服介面//請求進來 返回success ignore_user_abort(true); ob_start(); //開啟輸出控制緩衝 echo 'success'; // 返給微信伺服器的字串 header('Conne

nodekoa完成公眾自動回覆功能

首先需要在微信公眾平臺 - 基礎設定 - 設定伺服器地址 配置伺服器地址時可能出現“引數錯誤,。。。。”的情況,可能是因為域名被攔截,不能使用。 如果前端人員進行測試,可以使用ngrok,花生殼

手把手教你用圖靈機器人公眾自動回覆助手

本文首發於我的個人部落格:尾尾部落 閱讀這篇文章,你將會學會以下內容: 如何用flask搭建微信公眾平臺服務 如何將在微信公眾平臺呼叫圖靈機器人 如何用uwsgi+supervisor+nginx部署flask應用 實驗

公眾 - 下拉展開/隱藏

itl device doctype lang pan 內容 pre con -s 1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5 <meta ch

公眾支付/退款java環境開發介紹

開發之前翻閱了很多帖子,結合自己的實際開發情況,將微信支付/退款 流程以及code貼出,希望通過這一篇帖子就能解決你的問題,有不清楚的直接留言,我會及時回覆(ง •̀_•́)ง   一些說明:xxxUtils為工具類,Constant為常量類 為方便開發,所用和微信支付相關co

公眾支付教程前端部分

微信內H5發起支付一共有兩種方法:     1.呼叫微信內建js物件 WeixinJSBridge 發起支付具體方法為 WeixinJSBridge.invoke( 'getBrandWCPayRequest', { "appId":"

公眾最佳實踐 9.1會員卡

會員卡 會員卡一般是指企業發行的用於識別顧客身份的卡片,普片用於服務行業,他是公司宣傳的理想載體,能夠吸引新顧客,留住老顧客,增強顧客忠誠度的作用,還能實現打折,積分等功能。 頁面佈局 準備素材,包括會員卡的正面和反面圖片 - - 大小固

公眾最佳實踐 4.6生成帶引數二維碼

<?php $appid = "wxd1fc65357aca6efa"; $appsecret = "55a5a3a73b3f1603240a1c27cb0b270f"; $url = "https://api.weixin.qq.com/cgi-bin/token?grant

公眾獲取OpenId使用者授權無需關注公眾以及獲取使用者基本資訊

上一個部落格也寫了微信公眾號獲取OpenId,但是現在這個和上一個有什麼區別呢。 其實呢,是差不多的,只是這個是通過使用者授權。 但是,又會有人問了,明明可以未授權獲取到使用者的openId,那我為什麼要讓使用者進行授權呢,我偷偷的獲取不就好了嗎? 好像很有道理,但是呢,

公眾最佳實踐 3.2 被動回覆使用者訊息

<?php // // 響應使用者訊息 // 微信公眾賬號響應給使用者的不同訊息型別 // define("TOKEN", "weixin"); $wechatObj = new wechatCallbackapiTest(); if (!isset($_GET['echostr'])) {

實現公眾聊天機器人自動回覆——nodejs+圖靈機器人

登入微信測試號:https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index設定開發介面:填寫url地址和token,url是在微信公眾號傳送訊息的時候呼叫的介面地

java實現公眾房卡牛牛六人平臺開發搭建文章采集接口程序

package ecs util 系統 public address 用戶id 狀態 get 日誌實體類,用戶記錄用戶登錄登出 LogRec.javapackage q.dms.test; import java.util.Date; /** 實體類 包含用戶登錄的id,

使用Django實現公眾用戶openid登錄認證

cor 先生 uri lse 文本消息 利用 AR tps elb 最近在用Django做一個小項目,需要將微信的用戶與網站的用戶進行關聯,由於是微信的訂閱號,沒有oauth網頁授權的權限,只能退而求其次,在響應中獲取用戶的openid,來唯一的標識用戶。 Django中用

PK10平臺開發與用python爬取公眾文章

網址 谷歌瀏覽器 pytho google http 開發 微信 安裝python rom 本文通過微信提供微信PK10平臺開發[q-21528-76294] 網址diguaym.com 的公眾號文章調用接口,實現爬取公眾號文章的功能。註意事項 1.需要安裝python s

odoo後臺實現公眾驗證

def not append 官網 github targe method sign code 在微信公眾號開發的其中一個步驟是微信服務器調用我們自己的網站驗證身份,這一步微信服務器會傳遞過來4個參數,可是按照官方的寫法,卻無法驗證通過,下面是官方的驗證方法: impor

Python爬取公眾歷史文章進行資料分析

思路: 1. 安裝代理AnProxy,在手機端安裝CA證書,啟動代理,設定手機代理; 2. 獲取目標微信公眾號的__biz; 3. 進入微信公眾號的歷史頁面; 4. 使用Monkeyrunner控制滑屏;獲取更多的歷史訊息; 5. 記錄文章標題,摘要,建立時間,創作型別,地

實現公眾“一鍵關注”功能?

由於微信的限制,公眾號關注二維碼只能在一段時間內有效!這樣給開發者帶來了很多不便。在網上找了很多資料,大多方法已經失效,目前如下方法比較實用:1. 大家注意如下的連結,紅色*號為公眾號,只需將*替換為你的公眾號,下連線就可以實現類似一鍵關注功能  https://mp.weixin.qq.com/m