Administración del estado en diálogos adaptables: guía de referenciaManaging state in adaptive dialogs - reference guide

se aplica a: SDK V4APPLIES TO: SDK v4

En este artículo se proporcionan detalles técnicos que le ayudarán a trabajar con ámbitos de memoria en diálogos adaptables.This article provides technical details that will help you work with memory scopes in adaptive dialogs. Para obtener una introducción a los ámbitos de memoria y la administración del estado en diálogos adaptables, consulte el artículo Concepto de Compositor de flujo de conversación y memoria.For an introduction to memory scopes and managing state in adaptive dialogs, see the Conversation flow and memory Composer concept article.

Sugerencia

Ninguna de las rutas de acceso de las propiedades distinguen entre mayúsculas y minúsculas.All property paths are case-insensitive. Por ejemplo, user.name es igual que user.Name.For example, user.name is the same as user.Name. Además, si no tiene una propiedad denominada user.name y crea una denominada user.name.first el objeto user.name se creará automáticamente.Also, if you do not have a property named user.name and you create a property named user.name.first the user.name object will automatically be created for you.

Ámbito de usuarioUser scope

El ámbito de usuario es un dato persistente cuyo ámbito es el identificador del usuario con el que está conversando.User scope is persistent data scoped to the ID of the user you are conversing with.

Ejemplos:Examples:

  • user.name
  • user.address.city

Ámbito de conversaciónConversation scope

El ámbito de conversación es un dato persistente cuyo ámbito es el identificador de la conversación que está manteniendo.Conversation scope is persistent data scoped to the ID of the conversation you are having.

Ejemplos:Examples:

  • conversation.hasAccepted
  • conversation.dateStarted
  • conversation.lastMaleReference
  • conversation.lastFemaleReference
  • conversation.lastLocationReference

Ámbito de diálogoDialog scope

El ámbito de diálogo conserva los datos durante el ciclo de vida del diálogo asociado, lo que proporciona espacio de memoria para que cada diálogo tenga una contabilización persistente interna.Dialog scope persists data for the life of the associated dialog, providing memory space for each dialog to have internal persistent bookkeeping. El ámbito de diálogo se borra cuando finaliza el diálogo asociado.Dialog scope is cleared when the associated dialog ends.

Ejemplos abreviados de ámbito de diálogo:Dialog scope shorthand examples:

  • La abreviatura de dialog.orderStarted es $orderStarted .The shorthand for dialog.orderStarted is $orderStarted.
  • La abreviatura de dialog.shoppingCart es $shoppingCart .The shorthand for dialog.shoppingCart is $shoppingCart.

Todas las opciones que se pasan a BeginDialog al crear un nuevo diálogo adaptable se convierten en propiedades de ese diálogo y se puede acceder a ellas siempre y cuando se encuentren en el ámbito.All options passed into BeginDialog when creating a new adaptive dialog become properties of that dialog and can be accessed as long as it is in scope. Tiene acceso a estas propiedades por nombre: dialog. <propertyName> .You access these properties by name: dialog.<propertyName>. Por ejemplo, si el autor de la llamada pasó {a: "1", b: "2"} se establecerán como dialog.a y dialog.b.For example, if the caller passed {a : '1', b: '2'} then they will be set as dialog.a and dialog.b.

Subámbitos de diálogoDialog sub-scopes

Todas las acciones de desencadenadores de un diálogo adaptable tienen sus propios subámbitos y se puede acceder a ellas por su nombre: por ejemplo, se puede acceder a la acción Foreach como dialog.Foreach.All trigger actions in an adaptive dialog have their own sub-scopes and are accessed by name, for example the Foreach action is accessed as dialog.Foreach. De forma predeterminada, el índice y el valor se establecen en el ámbito de dialog.foreach, al que se puede acceder como dialog.Foreach.index y dialog.Foreach.value.By default, the index and value are set in the dialog.foreach scope, which can be accessed as dialog.Foreach.index and dialog.Foreach.value.

Ámbito de turnoTurn scope

El ámbito de turno contiene datos no persistentes que se limitan solo al turno actual.The turn scope contains non-persistent data that is only scoped for the current turn. El ámbito de turno proporciona un lugar para compartir datos mientras dure el turno actual.The turn scope provides a place to share data for the lifetime of the current turn.

Ejemplos:Examples:

  • turn.bookingConfirmation
  • turn.activityProcessed

Subámbitos de turnoTurn sub-scopes

turn.activityturn.activity

Cada actividad de entrada en el bot está disponible a través del ámbito turn.activity.Each incoming activity to the bot is available via turn.activity scope.

Por ejemplo, podría definir algo parecido a esto en el archivo .lg para responder a un usuario que especificó un valor no válido cuando se le solicitó su edad:For example, you might have something like this defined in our .lg file to respond to a user that entered an invalid value when prompted for their age:

Sorry, I do not understand '${turn.activity.text}'. ${GetAge()}

turn.recognizedturn.recognized

Todas las intenciones y entidades devueltas por un reconocedor en cualquier turno determinado se establecen automáticamente en el ámbito turn.recognized y permanecen disponibles hasta que se produce el siguiente turno.All intents and entities returned from a recognizer on any given turn, are automatically set in the turn.recognized scope and remain available until the next turn occurs. El ámbito turn.recognized tiene tres propiedades:the turn.recognized scope has three properties:

  • turn.recognized.intents.xxx: una lista de las intenciones principales clasificadas por el reconocedor de ese turno.turn.recognized.intents.xxx: A list of the top intents classified by the recognizer for that turn.
  • turn.recognized.entities.xxx: una lista de las entidades reconocidas de ese turno.turn.recognized.entities.xxx: A list of entities recognized that turn.
  • turn.recognized.score: la puntuación de confianza de la intención con mayor puntuación de ese turno.turn.recognized.score: The confidence score of the top scoring intent for that turn.

turn.dialogEventturn.dialogEvent

turn.dialogEvent contiene la carga de un evento generado por el sistema o por el código.turn.dialogEvent contains the payload of an event raised either by the system or your code. Puede acceder a la información contenida en la carga si accede al evento turn.dialog. <eventName> . ámbito de valor.You can access the information contained in the payload by accessing the turn.dialogEvent.<eventName>.value scope.

turn.lastResultturn.lastResult

Puede acceder a los resultados desde el último diálogo al que se llamó desde el ámbito turn.lastResult.You can access the results from the last dialog that was called from the turn.lastResult scope.

turn.activityProcessedturn.activityProcessed

turn.activityProcessed, una propiedad booleana que, si se establece, significa que algún componente del sistema ha utilizado turnContext.activity.turn.activityProcessed, a boolean property which if set means that turnContext.activity has been consumed by some component in the system.

turn.interruptedturn.interrupted

turn.interrupted, una propiedad booleana; true indica que se ha producido una interrupción.turn.interrupted, a Boolean property; true indicates that an interruption has occurred.

Ámbito de configuraciónSettings scope

Representa cualquier configuración que esté disponible para el bot a través del sistema de configuración específico de la plataforma; por ejemplo, si está desarrollando el bot con C#, esta configuración aparecerá en el archivo appsettings.js.This represents any settings that are made available to the bot via the platform specific settings configuration system, for example if you are developing your bot using C#, these settings will appear in the appsettings.json file..

Ejemplo de ámbito de configuraciónSettings scope example

Este es un ejemplo de una appsettings.jsen el archivo que contiene los valores de configuración del bot:This is an example of an appsettings.json file that holds configuration settings for your bot:

{
    "MicrosoftAppId": "<yourMicrosoftAppId>",
    "MicrosoftAppPassword": "<yourMicrosoftAppPassword>",
    "QnAMaker": {
        "knowledgebaseId": "<yourQnAKnowledgebaseId>",
        "hostname": "https://<YourHostName>.azurewebsites.net/qnamaker",
        "endpointKey": "yourEndpointKey"
    }
}

Este ámbitoThis scope

El ámbito this pertenece al contenedor de propiedades de la acción activa.The this scope pertains the active action's property bag. Esto resulta útil para las acciones de entrada, ya que su tipo de vigencia suele durar más allá de un único turno de conversación.This is helpful for input actions since their life type typically lasts beyond a single turn of the conversation.

  • this.value contiene el valor reconocido actual de la entrada.this.value holds the current recognized value for the input.
  • this.turnCount contiene el número de veces que se ha solicitado la información que falta para esta entrada.this.turnCount holds the number of times the missing information has been prompted for this input.

Ámbito de claseClass scope

Este ámbito contiene las propiedades de instancia del diálogo activo.This holds the instance properties of the active dialog. Puede hacer referencia a este ámbito de la siguiente manera: ${class.<propertyName>}.you reference this scope as follows: ${class.<propertyName>}.

Información adicionalAdditional information

  • Para obtener una introducción a la administración del estado en Composer, consulte el artículo Concepto de compositor de flujo de conversación y memoria.For an introduction to managing state in Composer, see the Conversation flow and memory Composer concept article.