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
Hashes for digital-assistant-context-0.0.4.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | b07a7940578022e5b8301e5fd22ad8ae642dcfcfb869a30e7885304b3a0ed62f |
|
MD5 | c4c4af4825c09a4cc48c8c777d38c962 |
|
BLAKE2b-256 | 53aed8642b2421ebbb17b4fcaf5da01631b0be0bb3453a24a3fc94813390d751 |
Hashes for digital_assistant_context-0.0.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5284b6743fbe0b537d383d3fa8dd9681c594bbe9aaa02297be6ff4c47a30794f |
|
MD5 | d6055179aa6be45af261d0cc4ca7861e |
|
BLAKE2b-256 | 3de5c478c105955330e9316ca21605e2fb965867ab4ba8f13e9aa81998d505c6 |