forked from zqhZY/_rasa_chatbot
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhttpserver.py
More file actions
56 lines (44 loc) · 1.71 KB
/
httpserver.py
File metadata and controls
56 lines (44 loc) · 1.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import json
from klein import Klein
from rasa_nlu.config import RasaNLUConfig
class ItemStore(object):
app = Klein()
def __init__(self, model_dir):
from rasa_nlu.model import Metadata, Interpreter
self.interpreter = Interpreter.load(model_dir, RasaNLUConfig("mobile_nlu_model_config.json"))
self._items = {}
@app.route('/')
def items(self, request):
request.setHeader('Content-Type', 'application/json')
return json.dumps(self._items)
@app.route('/parse', methods=['POST'])
def save_item(self, request):
data_string = request.content.read().decode('utf-8', 'strict')
request.setHeader('Content-Type', 'application/json')
data = json.loads(data_string)
print(data)
request.setResponseCode(200)
pred = self.interpreter.parse(data["text"])
data["intent"] = pred.get("intent").get("name")
entities = pred.get("entities")
entities_res = {}
for entitie in entities:
name = entitie.get("entity")
value = entitie.get("value")
if name == "item":
if "消费" in value or "话费" in value:
value = "消费"
elif "余额" in value:
value = "余额"
elif "流量" in value:
value = "流量"
elif "宽带" in value:
value = "宽带"
entities_res.setdefault(name, value)
data["entities"] = entities_res
print(data)
return json.dumps(data, ensure_ascii=False)
if __name__ == '__main__':
model_dir = "models/ivr/demo"
store = ItemStore(model_dir)
store.app.run('127.0.0.1', 1235)