Managing context as a set of variables for executing a digital assistant script
Project description
Контекст
В ходе взаимодействия цифрового помощника с пользователем исполнение сценария в каждом моменте находится на определенном акте. Нахождение исполнения сценария на определенном акте называется состоянием исполнения сценария. Состояние исполнения сценария хранит исполнитель сценария для каждого отдельного пользователя. Состояние определяется текущим актом и контекстом. Под контекстом понимается совокупность значений переменных сценария.
Использование библиотеки
Назначение библиотеки переводить структуру переменных из нотации сценария цифрового помощника в нотацию языка python для манипуляции контекстом при исполнении сценария.
Работа с контекстом
Инициализация контекста
Инициализация контекста, например, из файла. Используется для восстановления состояния исполнения сценария.
import json
from digitalassistantcontext.context import Context
with open('./context.json', encoding='utf-8') as f:
context = Context(json.load(f))
Изменение контекста
С помощью метода set объекта класса Context. Используется, например, при изменении контекста сценария.
from digitalassistantcontext.context import Context
vars_list = [{'name': 'Услуги[0][Имя]', 'value': 'Консультация'},
{'name': 'Услуги[0][Стоимость]', 'value': '500 р'}]
context = Context()
for v in vars_list:
context.set(v.get("name"), v.get("value"))
Наследование контекста
Область видимости переменных ограничена последовательностью и ее дочерними последовательностями первого уровня. При создании объекта класса Context в параметре parent_ctx можно передать контекст родительской последовательности
import json
from digitalassistantcontext.context import Context
try:
with open('./parent_context.json', encoding='utf-8') as f:
parent_context = Context(json.load(f))
except FileNotFoundError as e:
print(e)
try:
with open('./context.json', encoding='utf-8') as f:
context = Context(json.load(f), parent_ctx=parent_context)
except FileNotFoundError as e:
print(e)
v = context.get('Услуги[1]')
print(v)
Сохранение состояния
Текущее состояние исполнения сценария в виде списка переменных в формате сценария можно преобразовать функцией parse_var_to_list и сохранить
import json
from pprint import pprint
from digitalassistantcontext.context import parse_var_to_list, Context, DICT_VAR_LIST_TYPE
try:
with open('./context.json', encoding='utf-8') as f:
context = Context(json.load(f))
except FileNotFoundError as e:
print(e)
try:
vars_list = parse_var_to_list(context.variables, list_type=DICT_VAR_LIST_TYPE)
with open('./variable.json', 'w', encoding='utf-8') as outfile:
json.dump(vars_list, outfile, ensure_ascii=False, indent=4)
context_reload = Context()
pprint(vars_list)
for v in vars_list:
context_reload.set(v, vars_list[v])
with open('./context_reload.json', 'w', encoding='utf-8') as file:
json.dump(context_reload.variables, file, ensure_ascii=False, indent=4)
except NameError as e:
print(e)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file digital-assistant-context-0.0.4.tar.gz.
File metadata
- Download URL: digital-assistant-context-0.0.4.tar.gz
- Upload date:
- Size: 4.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b07a7940578022e5b8301e5fd22ad8ae642dcfcfb869a30e7885304b3a0ed62f
|
|
| MD5 |
c4c4af4825c09a4cc48c8c777d38c962
|
|
| BLAKE2b-256 |
53aed8642b2421ebbb17b4fcaf5da01631b0be0bb3453a24a3fc94813390d751
|
File details
Details for the file digital_assistant_context-0.0.4-py3-none-any.whl.
File metadata
- Download URL: digital_assistant_context-0.0.4-py3-none-any.whl
- Upload date:
- Size: 5.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5284b6743fbe0b537d383d3fa8dd9681c594bbe9aaa02297be6ff4c47a30794f
|
|
| MD5 |
d6055179aa6be45af261d0cc4ca7861e
|
|
| BLAKE2b-256 |
3de5c478c105955330e9316ca21605e2fb965867ab4ba8f13e9aa81998d505c6
|