Skip to main content

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

digital-assistant-context-0.0.4.tar.gz (4.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

digital_assistant_context-0.0.4-py3-none-any.whl (5.2 kB view details)

Uploaded Python 3

File details

Details for the file digital-assistant-context-0.0.4.tar.gz.

File metadata

File hashes

Hashes for digital-assistant-context-0.0.4.tar.gz
Algorithm Hash digest
SHA256 b07a7940578022e5b8301e5fd22ad8ae642dcfcfb869a30e7885304b3a0ed62f
MD5 c4c4af4825c09a4cc48c8c777d38c962
BLAKE2b-256 53aed8642b2421ebbb17b4fcaf5da01631b0be0bb3453a24a3fc94813390d751

See more details on using hashes here.

File details

Details for the file digital_assistant_context-0.0.4-py3-none-any.whl.

File metadata

File hashes

Hashes for digital_assistant_context-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 5284b6743fbe0b537d383d3fa8dd9681c594bbe9aaa02297be6ff4c47a30794f
MD5 d6055179aa6be45af261d0cc4ca7861e
BLAKE2b-256 3de5c478c105955330e9316ca21605e2fb965867ab4ba8f13e9aa81998d505c6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page