forked from MyDuerOS/DuerOS-Python-Client
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsystem.py
More file actions
131 lines (115 loc) · 3.37 KB
/
system.py
File metadata and controls
131 lines (115 loc) · 3.37 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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# -*- coding: utf-8 -*-
'''
系统模块
参考:http://open.duer.baidu.com/doc/dueros-conversational-service/device-interface/system_markdown
'''
import uuid
import datetime
class System(object):
'''
系统控制类
'''
def __init__(self, dueros):
'''
类初始化
:param dueros:DuerOS核心模块实例
'''
self.namespace = 'ai.dueros.device_interface.system'
self.dueros = dueros
def reset_user_inactivity(self, directive):
'''
重置“用户最近一次交互”的时间点为当前时间(云端directive name方法)
:param directive:云端下发directive
:return:
'''
self.dueros.last_activity = datetime.datetime.utcnow()
# {
# "directive": {
# "header": {
# "namespace": "System",
# "name": "SetEndpoint",
# "messageId": "{{STRING}}"
# },
# "payload": {
# "endpoint": "{{STRING}}"
# }
# }
# }
def set_endpoint(self, directive):
'''
设置服务端接入地址,重置连接(云端directive name方法)
:param directive:云端下发directive
:return:
'''
pass
def throw_exception(self, directive):
'''
当设备端发送的请求格式不正确、登录的认证信息过期等错误情况发生时,服务端会返回ThrowException指令给设备端
(云端directive name方法)
:param directive: 云端下发directive
:return:
'''
pass
def synchronize_state(self):
'''
SynchronizeState状态上报(dueros_core中会使用)
:return:
'''
event = {
"header": {
"namespace": self.namespace,
"name": "SynchronizeState",
"messageId": uuid.uuid4().hex
},
"payload": {
}
}
self.dueros.send_event(event)
def __user_Inactivity_report(self):
'''
UserInactivityReport状态上报
:return:
'''
inactive_time = datetime.datetime.utcnow() - self.dueros.last_activity
event = {
"header": {
"namespace": self.namespace,
"name": "UserInactivityReport",
"messageId": uuid.uuid4().hex
},
"payload": {
"inactiveTimeInSeconds": inactive_time.seconds
}
}
self.dueros.send_event(event)
# {
# "directive": {
# "header": {
# "namespace": "System",
# "name": "ResetUserInactivity",
# "messageId": "{{STRING}}"
# },
# "payload": {
# }
# }
# }
def __exception_encountered(self):
'''
ExceptionEncountered状态上报
:return:
'''
event = {
"header": {
"namespace": self.namespace,
"name": "ExceptionEncountered",
"messageId": "{{STRING}}"
},
"payload": {
"unparsedDirective": "{{STRING}}",
"error": {
"type": "{{STRING}}",
"message": "{{STRING}}"
}
}
}
self.dueros.send_event(event)