天天看點

Python開發微信公衆号背景(系列三)

之前有主流的小黃雞機器人,但是沒找到官方的網頁版。(小黃雞提供付費 API )嘗試使用

<code>http://www.niurenqushi.com/app/simsimi/</code>(雖然事實證明這個網站用的是圖靈機器人的 API 而非小黃雞 API ,後面我們會再談 API 怎麼用)

Python開發微信公衆号背景(系列三)

很簡單的一個請求。

<code>http://www.niurenqushi.com/app/simsimi/ajax.aspx?txt=</code>

網址後面加上内容就可以了。

抓到了自動回複的内容以後,我們将使用者輸入的文本内容當作 content 傳入,擷取回複再傳回即可。

從小黃雞的回複我們可以看出來,丫并不是小黃雞,而是圖靈機器人僞裝的。與其給人刷請求量還不如自己去申請一個圖靈機器人的 API ,可以自己定制很多東西。

<code>http://www.tuling123.com/</code> 注冊以後會配置設定自己的 key ,免費版每天 5000 次請求。

Python開發微信公衆号背景(系列三)

官方提供了幾種接入方式,其中一種是微信公衆平台接入,這種方法直接接入圖靈機器人提供的連結而不是自己的伺服器,是以對于公衆号來講定制功能的限定就很多,但是如果有小夥伴沒有自己的伺服器的話,可以用這個嘗嘗鮮。

Python開發微信公衆号背景(系列三)

我們已經搭好了 Python 環境的伺服器,是以選擇 API 接入。

<code>http://www.tuling123.com/html/doc/api.html</code>(推薦自己詳細閱讀文檔)

下面是對 API 調用的 Python 代碼:

存儲為<code>talk_api.py</code>

(這裡的重點是根據傳回值中不同的 code 對相應傳回的格式進行處理,否則會運作不成功或者傳回資訊不全)

示例:

Python開發微信公衆号背景(系列三)

實作了文本資訊的聊天以後我就在想,我們已經可以處理文本、圖檔了,能不能處理語音呢? 

剛好看到微信官方提供了接口:

Python開發微信公衆号背景(系列三)
Python開發微信公衆号背景(系列三)

這就意味着我們不需要做太多的修改就可以将接收到的語音消息作為文本資訊處理了。

修改<code>weixinInterface.py</code>

這裡重點就是加上了 <code>elifmsgType == 'voice'</code> 這部分。

Python開發微信公衆号背景(系列三)

這一步做完以後就已經實作了大部分我想要的功能了,但還是有一點問題,因為機器人并不了解上下文的語義,是以會出現這樣的情況:

Python開發微信公衆号背景(系列三)

由于機器人并沒有了解上下文語義,前一句話問你要去哪兒,你告訴他北京以後他卻不知道你是因為什麼回複的北京。是以要告訴機器人是誰在跟他聊天。

檢視微信和圖靈機器人的開發文檔可以看到:

Python開發微信公衆号背景(系列三)
Python開發微信公衆号背景(系列三)

從微信接收到消息是,我們就能夠擷取到使用者的 <code>OpenID</code>了,隻需要将這個 ID 作為 <code>userid</code> 傳給圖靈機器人 API ,就可以保持上下文對話的語境了。(但是<code>userid</code>隻支援0-9和數字,而微信 ID 中帶有下劃線,是以需要做一些簡單處理)

修改<code>talk_api.py</code> (最終):

送出代碼即可。

測試:

Python開發微信公衆号背景(系列三)

原文釋出時間為:2017-01-14