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
- Para obtener una introducción sobre la administración del estado en Composer, consulte el artículo del concepto Composer Flujo de conversación y memoria.