dream
48 строк · 1.9 Кб
1from typing import Dict
2import logging
3import difflib
4
5
6logger = logging.getLogger(__name__)
7logger.setLevel(logging.INFO)
8
9
10def http_api_output_formatter(payload: Dict):
11response = payload["utterances"][-1]["text"]
12active_skill = payload["utterances"][-1]["active_skill"]
13ssml_tagged_response = []
14for hyp in payload["utterances"][-2]["hypotheses"]:
15if hyp.get("skill_name") == active_skill and hyp.get("ssml_tagged_text"):
16if difflib.SequenceMatcher(None, hyp.get("text", "").split(), response.split()).ratio() > 0.9:
17ssml_tagged_response.append(hyp["ssml_tagged_text"])
18ssml_tagged_response = ssml_tagged_response[-1] if ssml_tagged_response else ""
19ret_val = {
20"user_id": payload["human"]["user_telegram_id"],
21"response": response,
22"ssml_tagged_response": ssml_tagged_response,
23"active_skill": active_skill,
24}
25logger.info(f"http api output {ret_val}")
26return ret_val
27
28
29def http_debug_output_formatter(payload: Dict):
30response = payload["utterances"][-1]["text"]
31active_skill = payload["utterances"][-1]["active_skill"]
32ssml_tagged_response = []
33for hyp in payload["utterances"][-2]["hypotheses"]:
34if hyp.get("skill_name") == active_skill and hyp.get("ssml_tagged_text"):
35if difflib.SequenceMatcher(None, hyp.get("text", "").split(), response.split()).ratio() > 0.9:
36ssml_tagged_response.append(hyp["ssml_tagged_text"])
37ssml_tagged_response = ssml_tagged_response[-1] if ssml_tagged_response else ""
38ret_val = {
39"user_id": payload["human"]["user_telegram_id"],
40"response": response,
41"active_skill": active_skill,
42"ssml_tagged_response": ssml_tagged_response,
43"debug_output": payload["utterances"][-2]["hypotheses"],
44"attributes": payload["utterances"][-1].get("attributes", {}),
45}
46
47logger.info(f"http api output {ret_val}")
48return ret_val
49