本例使用itchat獲取微信文字消息,發送給LUIS返回識別消息,再將返回消息格式化後經過微信發回html
關於itchat的使用參考個人另一篇隨筆itchat我的練習 語音與文本圖靈測試例程json
1 # -*- coding: UTF-8 -*- 2 import requests 3 import itchat 4 import json 5 6 def get_response(msg): 7 headers = { 8 # Request headers 9 'Ocp-Apim-Subscription-Key': '=====填上本身的LUIS API密鑰========', 10 } 11 12 params ={ 13 # Query parameter 14 'q': msg,#須要檢測的消息 15 # Optional request parameters, set to default values 16 'timezoneOffset': '0', 17 'verbose': 'false', 18 'spellCheck': 'false', 19 'staging': 'false', 20 } 21 22 try: 23 r = requests.get('https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/'+'=====填上本身的luisAppId=====',headers=headers, params=params) 24 print (r.json()) 25 return json.dumps(r.json())#json()是取出json消息,dumps()是把json對象轉換爲字符串才能返回 26 27 except Exception as e: 28 print("[Errno {0}] {1}".format(e.errno, e.strerror)) 29 30 def changeEntity(entitiesList): 31 #用於把返回的entities取出來放在list裏 32 entityList=[] 33 for item in entitiesList: 34 entityList.append(item.get('entity')) 35 return entityList 36 37 # 這裏是咱們在「1. 實現微信消息的獲取」中已經用到過的一樣的註冊方法 38 @itchat.msg_register(itchat.content.TEXT) 39 def tuling_reply(msg): 40 # 爲了保證在圖靈Key出現問題的時候仍舊能夠回覆,這裏設置一個默認回覆 41 defaultReply = 'I received: ' + msg['Text'] 42 # 若是圖靈Key出現問題,那麼reply將會是None 43 jsonReply = json.loads(get_response(msg['Text'])) 44 # 返回json數據格式 45 # { 46 # 'query': <str> , 47 # 'topScoringIntent': { 48 # 'intent': <str> , 49 # 'score': <float>}, 50 # 'entities': <list> 51 # } 52 reply = "提問:" + jsonReply.get('query') + 53 "\n意圖:" + jsonReply.get('topScoringIntent').get('intent') + 54 "\n分數:" + repr(jsonReply.get('topScoringIntent').get('score')) + 55 "\n實體:" + repr(changeEntity(jsonReply.get('entities'))) 56 # a or b的意思是,若是a有內容,那麼返回a,不然返回b 57 # 有內容通常就是指非空或者非None,你能夠用`if a: print('True')`來測試 58 return reply or defaultReply 59 60 # 爲了讓實驗過程更加方便(修改程序不用屢次掃碼),咱們使用熱啓動hotReload=True 61 itchat.auto_login(hotReload=True) 62 itchat.run()