Administración del estado en diálogos adaptables - guía de referencia

SE APLICA A: 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. Para obtener una introducción a los ámbitos de memoria y administrar el estado en diálogos adaptables, consulte el artículo del concepto Composer Flujo de conversación y memoria.

Sugerencia

Ninguna de las rutas de acceso de las propiedades distinguen entre mayúsculas y minúsculas. Por ejemplo, user.name es lo mismo que user.Name. Además, si no tiene una propiedad denominada user.name y crea una propiedad denominada user.name.first el objeto user.name se creará automáticamente.

Ámbito de usuario

El ámbito de usuario es un dato persistente cuyo ámbito es el id. del usuario con el que está conversando.

Ejemplos:

  • user.name
  • user.address.city

Ámbito de conversación

El ámbito de conversación es un dato persistente cuyo ámbito es el id. de la conversación que está manteniendo.

Ejemplos:

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

Ámbito de diálogo

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. El ámbito de diálogo se borra cuando finaliza el diálogo asociado.

Ejemplos abreviados de ámbito de diálogo:

  • La forma abreviada de dialog.orderStarted es $orderStarted.
  • La forma abreviada de dialog.shoppingCart es $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. Puede acceder a estas propiedades por nombre: dialog.<propertyName>. Por ejemplo, si el autor de la llamada pasó {a : '1', b: '2'} se establecerá como dialog.a y dialog.b.

Subámbitos de diálogo

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 tiene acceso a la acción Foreach como 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.

Ámbito de turno

El ámbito de turno contiene datos no persistentes que se limitan solo al turno actual. El ámbito de turno proporciona un lugar para compartir datos mientras dure el turno actual.

Ejemplos:

  • turn.bookingConfirmation
  • turn.activityProcessed

Subámbitos de turno

turn.activity

Cada actividad de entrada en el bot está disponible a través del ámbito turn.activity.

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:

Sorry, I don't understand '${turn.activity.text}'. ${GetAge()}

turn.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. El ámbito turn.recognized tiene tres propiedades:

  • turn.recognized.intents.xxx: una lista de las intenciones principales clasificadas por el reconocedor de ese turno.
  • turn.recognized.entities.xxx: una lista de las entidades reconocidas de ese turno.
  • turn.recognized.score: la puntuación de confianza de la intención con mayor puntuación de ese turno.

turn.dialogEvent

turn.dialogEvent contiene la carga de un evento generado por el sistema o por el código. Puede acceder a la información contenida en la carga mediante el acceso al ámbito turn.dialogEvent.<eventName>.value.

turn.lastResult

Puede acceder a los resultados desde el último diálogo al que se llamó desde el ámbito turn.lastResult.

turn.activityProcessed

turn.activityProcessed, una propiedad booleana; true indica que algún componente del sistema ha consumido turnContext.activity.

turn.interrupted

turn.interrupted, una propiedad booleana; true indica que se ha producido una interrupción.

Ámbito de configuración

Representa cualquier configuración que esté disponible para el bot a través del sistema de configuración de valores específico de la plataforma, por ejemplo, si está desarrollando el bot con C#, esta configuración aparecerá en el archivo appsettings.json.

Ejemplo de ámbito de configuración

Este es un ejemplo de un archivo appsettings.json que contiene la configuración del bot:

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

Este ámbito

El ámbito this pertenece al contenedor de propiedades de la acción activa. 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.value contiene el valor reconocido actual de la entrada.
  • this.turnCount contiene el número de veces que se ha solicitado la información que falta para esta entrada.

Ámbito de clase

Este ámbito contiene las propiedades de instancia del diálogo activo. Puede hacer referencia a este ámbito de la siguiente manera: ${class.<propertyName>}.

Información adicional