LUIS 語義識別API調用方法 itchat我的練習 語音與文本圖靈測試例程

本例使用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()
相關文章
相關標籤/搜索