1. 程式人生 > >微信化身自動回覆小機器人

微信化身自動回覆小機器人

  由於微軟小冰沒有提供官方開放的API,而測試過圖靈機器人的回覆,只能說一番體驗下來,小冰簡直把圖靈機器人完爆的麻麻都不認識了呀。。只能說還好圖靈機器人唯一的好處就是和其它第三方應用的開放介面比較好,而小冰則沒有開放的api介面,所以這裡我們利用圖靈的api和微信公眾號的小冰進行結合,簡單而快捷的將自己的微訊號打造成一個簡單的自動回覆機器人,本文只是最簡單的實現思路,依據這個思路和圖靈開放的其它api介面,大膽進行拓展我們能做的事情還是有很多很多的哦!!!本文主要工作分為:

  • 獲取微信聊天內容併發送給小冰
  • 獲取小冰回覆內容,傳送給對方
1. 獲取聊天訊息併發送給小冰

  這裡對應的訊息分為幾類:文字訊息(itchat.content.TEXT

)、圖片訊息(itchat.content.PICTURE)、視訊訊息(itchat.content.VIDEO)等,對於每種不同的訊息處理方式是類似的,本文主要處理了文字訊息和圖片訊息。具體的處理程式碼十分簡單如下:

@itchat.msg_register(itchat.content.TEXT)
def get_msg(msg):
    global xiaoice,who_send
    xiaoice = itchat.search_mps(name='小冰')[0]['UserName']
    who_send = msg['FromUserName']  #這裡提取出傳送人作為全域性變數,在後續自動回覆時需要知道訊息傳送方時有用
    itchat.send(msg['Text'],xiaoice) #將資訊傳送給小冰

  以上程式碼例子是對於個人聊天內容中關於文字資訊的處理方法,通過@itchat.msg_register(itchat.content.TEXT)註解修飾方法好,這個方法就自動註冊為了對於個人聊天訊息中文字資訊的處理類,注意這裡是對個人聊天,即你和你普通使用者之間的聊天,因為對於公眾號內的聊天內容需要加引數,這裡本文和小冰的聊天資訊就是公眾號的聊天內容處理。而對於xiaoice變數就是通過名稱獲取到小冰對應的系統中的UserName,除錯發現其實“小冰”是nickname,而UserName則是一串看不懂的字串,並且對於自己的UserName在針對不同的對話中,例如和表哥A聊天時自己的UserName

是一個字串,而和堂弟B聊天時自己的UserName則是另外一個字串,所以如果要用這些API做其它應用拓展時需要注意這一點。

2. 獲取小冰回覆內容並轉發

  對於小冰回覆的內容進行處理時,和獲取內容時一樣,也要區分不同的訊息型別,當然訊息型別和上述一樣,本文這裡主要處理了文字資訊和圖片資訊,方法如下:

@itchat.msg_register(itchat.content.TEXT,isMpChat=True)
def get_ice(msg):
    itchat.send(msg['Text'],who_send)

@itchat.msg_register(itchat.content.PICTURE,isMpChat=True)
def get_ice(msg):
    msg.download(msg.fileName)
    itchat.send_image(msg.fileName,who_send)

  這裡主要也是通過註解的方式將方法註冊為對文字和圖片資訊的處理方法,其中加了isMpChat=True引數的意思就是說這個方法是處理公眾號資訊的,如果不加就是處理個人資訊的方法了。顯然,這裡在通過第一節中將資訊傳送給小冰之後,小冰會對我們傳送的內容進行智慧回覆,我們這裡對於小冰回覆的文字內容,只需要簡單的呼叫itchat.send(xxx,xxx)即可。但是,對於圖片內容,則需要先呼叫msg.download(msg.fileName)將圖片資訊下載到本地,然後呼叫itchat.send_image(msg.fileName,who_send)將本地的圖片傳送過去,因為這裡關於send_image方法的入參中只能接收圖片路徑,其實在msg.content屬性中儲存的應該是圖片的二進位制內容,但是本人好像沒有發現itchat.send_image()方法中能將圖片二進位制作為入參的,所以只能先下載到本地,然後再通過圖片名稱進行傳送。   至此,這裡關於訊息的處理已經基本搞定,其它幾類未處理的方法也可以通過itchat.send_xxx方法進行處理即可,對於每種特定方法均有一個對於的send方法,大家依據自己的需求進行處理即可,如有不清楚可以參考:https://itchat.readthedocs.io/zh/latest/。   這裡需要說明的一點就是,對於啟動而言,啟動方法如下:

itchat.auto_login(hotReload=True)
itchat.run()

  這裡第一行的作用是對於第一次登入成功後,如果應用關閉,會暫存一段時間登入狀態,下次再重新啟動時不需要再進行掃碼,最終的效果圖就是自動回覆,就不貼圖了~依據圖靈機器人的這些api,還能做得一些事情例如:http://python.jobbole.com/86532/ 這篇文章中提到的一些小工具都是有點實用性的~ 另外,今天看到一篇文章說螞蜂窩的各種評論資料都是爬蟲抄襲其它網站的,這個東西仔細想想現在這個流量就是毛爺爺的年代,爬蟲賺錢的套路還是真的有很多很多喲,嗯,不得不感嘆爬蟲真是一個好東西,python真是一個好東西!!!