Otras Tareas
A continuación se muestran algunos temas sobre otras tareas del diseñador de flujos visual, como la autenticación de usuarios, la numeración automática, los grupos de recursos, la creación de formularios de entrada, la creación de parámetros personalizados y la importación y exportación de flujos.
Autorización del Usuario
En determinados puntos de un flujo, puede que desee aplicar la autorización de usuario.
Para ello, realice lo siguiente:
- En los estados en los que desea aplicar la autorización, establezca la propiedad Requiere autorización en
True
. Esta propiedad se encuentra en el separador General del inspector de propiedades del estado.Si un usuario que alcanza este estado aún no ha autorizado, se llama al estado Autorizar mediante OAuth y, a continuación, el flujo llama al estado que requiere autorización.
- Cree un componente de autorización y asígnelo al evento de transición estándar Autorizar usuario del flujo:
- Seleccione el flujo y, a continuación, seleccione el separador Flujo del flujo.
- Haga doble clic en el mosaico Eventos para que el flujo lo amplíe.
- Pase el puntero del mouse sobre el mosaico Autorizar usuario, haga clic en el botón de puntos suspensivos (...) que aparece y seleccione Agregar estado.
- En la categoría Seguridad del selector de plantillas, seleccione un componente, proporcione un nombre para el estado y haga clic en Insertar.
Consulte Plantillas de seguridad para obtener detalles de cada una de las plantillas disponibles.
- En el inspector de propiedades del componente, configure las propiedades del componente, incluidas sus acciones de transición.
Numeración automática de elementos de respuesta
Puede utilizar la función de numeración automática para prefijar botones y opciones de lista con números en las respuestas.
Aunque los usuarios no puedan utilizar gestos de pulsación, pueden disparar las acciones de devolución de los botones introduciendo un número. Esta función es especialmente útil para los canales de texto.
La numeración automática se configura en el nivel de aptitud.
Para configurar la numeración automática:
- En la navegación izquierda, seleccione
.
- Seleccione el separador Configuración.
- Defina el valor de Activar numeración automática en acciones de devolución en flujos de tareas.
Si desea activar la numeración automática para todos los canales, establezca el valor en true.
Si desea activar la numeración automática solo para determinados canales, proporcione una expresión para determinar qué canales obtendrán la numeración automática. Por ejemplo, para activar la numeración automática solo para canales de Twilio, debe introducir:
${(system.channelType=='twilio')?then('true','false')}
Limitación del número de peticiones de datos del usuario
Puede asegurarse de que los usuarios no se queden atascados en un paso de un flujo de diálogo configurando ese componente para limitar el número de veces que repite una petición de datos al usuario.
La propiedad maxPrompts
limita el número de veces que los componentes de respuesta común pueden solicitar datos al usuario cuando no pueden confrontar el valor de entrada con ninguno de los valores definidos para la entidad o el tipo de entrada al que hace referencia la propiedad variable
. Puede utilizar esta propiedad para evitar que el cuadro de diálogo entre en círculo cuando los usuarios introduzcan repetidamente valores no válidos. Puede definir el número máximo de peticiones de datos mediante un entero. El cuadro de diálogo pasa al siguiente estado si el usuario introduce un valor válido antes de alcanzar este límite. De lo contrario, el cuadro de diálogo pasa al estado definido por la acción cancel
.
Grupos de recursos y el diseñador de flujo visual
Puede utilizar grupos de recursos para almacenar cualquier cadena visible para el usuario que agregue al flujo de diálogo.
Puede hacer referencia a las claves de mensajes del grupo de recursos mediante la variable rb
. Una referencia a un mensaje de grupo de recursos simple adopta una de las dos formas siguientes:
${skill.system.rb.RB_ENTRY_NAME}
${rb.RB_ENTRY_NAME}
Consejo:
La finalización automática le ayuda a seleccionar los grupos de recursos a los que se hace referencia en las expresiones FreeMarker de Apache.Modificación de una entrada del grupo de recursos
- En la aptitud, haga clic en
para abrir el grupo de recursos.
- Seleccione el separador Configuración.
- Mediante el campo Filtro, vaya a la entrada que desea actualizar.
- Pase el mouse sobre el valor de la clave y seleccione el icono
que aparece.
- En el campo Texto, introduzca el mensaje actualizado.
- Haga clic en Actualizar entrada.
Mensajes de formulario de entrada de usuario
En los flujos de diálogo, también puede crear formularios de entrada.
A veces, un formulario de entrada es la forma más rápida y menos propensa a errores de recopilar información del usuario. En lugar de someter a los usuarios a una serie de preguntas, la aptitud puede guiar a los usuarios a proporcionar una entrada válida enviándoles formularios que contengan elementos de entrada como campos de entrada de texto, selectores de fecha y hora y conmutadores de conmutador.
Descripción de la ilustración editable-form-example.png
- En el cuadro de diálogo Agregar estado, seleccione Mensajería de usuario > Crear tablas y formularios. A continuación, seleccione Crear formulario de entrada.
- Para crear el diseño del formulario, las acciones y los campos editables y de solo lectura, primero haga clic en
Edit Response Items
y, a continuación, edite la plantilla de metadatosResponseItems
. En este caso, la plantilla es para el elemento de respuestaeditForm
.responseItems: - type: editForm title: Input Form formColumns: 2 items: - autoSubmit: false displayType: textInput defaultValue: "${(submittedFields.value.myText)!''}" multiLine: false minLength: 5 name: myText label: Text placeholder: Enter free text clientErrorMessage: Field is required and must be between 5 and 50 characters required: true maxLength: 50 - validationRegularExpression: "^[a-zA-Z\\s]*$" autoSubmit: false displayType: textInput defaultValue: "${(submittedFields.value.myTextArea)!''}" multiLine: true name: myTextArea label: Text Area placeholder: Enter free text clientErrorMessage: Numbers are not allowed - autoSubmit: false displayType: datePicker minDate: "1970-01-01" defaultValue: "${(submittedFields.value.myDate)!''}" name: myDate maxDate: "${.now?iso_utc[0..9]}" label: Date placeholder: Pick a date in the past clientErrorMessage: Date is required and must be in the past. required: true - autoSubmit: false maxTime: "12:00" displayType: timePicker minTime: "00:00" defaultValue: "${(submittedFields.value.myTime)!''}" name: myTime label: Time placeholder: Pick a time in the morning clientErrorMessage: Time must be in the morning. required: false - autoSubmit: false displayType: numberInput minValue: 5 maxValue: 500 defaultValue: "${(submittedFields.value.myNumber)!''}" name: myNumber label: Number placeholder: Enter a number between 5 and 500 clientErrorMessage: Number is required and must be between 5 and 500. required: true - autoSubmit: false displayType: singleSelect defaultValue: "${(submittedFields.value.mySingleSelect)!''}" name: mySingleSelect options: - label: Label 1 value: Value 1 - label: Label 2 value: Value 2 - label: Label 3 value: Value 3 layoutStyle: list label: Single Select clientErrorMessage: Field is required required: true - autoSubmit: false displayType: multiSelect defaultValue: "${(submittedFields.value.myMultiSelect?join(','))!''}" name: myMultiSelect options: - label: Label 1 value: Value 1 - label: Label 2 value: Value 2 - label: Label 3 value: Value 3 layoutStyle: list label: Multi Select clientErrorMessage: Field is required required: true - displayType: toggle defaultValue: "${(submittedFields.value.myToggle)!'true'}" name: myToggle labelOn: "Yes" label: Toggle valueOff: "false" labelOff: "No" valueOn: "true" actions: - label: Submit type: submitForm channelCustomProperties: - channel: "${system.channelType}" properties: replaceMessage: "${system.message.messagePayload.type == 'formSubmission'}"
Plantilla Editar Metadatos de Forms
editForm
:
- Las propiedades proporcionadas para los objetos
items
,actions
ychannelCustomProperties
son específicas de los objetoseditFormMessagePayload
. Entre otras cosas, esta carga útil contiene descripciones del diseño general del mensaje del formulario de entrada que recibe el usuario, los campos del formulario (de solo lectura y editables) y las personalizaciones específicas del canal para la representación de la interfaz de usuario específica de la plataforma y el comportamiento de envío del formulario. - Para cada elemento y dentro del nodo
actions
, la plantilla hace referencia a una variable de nivel de flujo denominadasubmittedFields
que contiene la entrada del usuario. Se trata de una variable de asignación que se genera al agregar un estado inputForm al flujo de diálogo.Nota
Según sus necesidades, puede hacer referencia a variables individuales o a una variable de bolsa compuesta en lugar de la variablesubmittedFields
. items
:- Si bien la plantilla proporciona propiedades para los campos editables (campos de selección única y múltiple, selectores de fecha y hora, el campo de entrada de número y el conmutador), también puede agregar elementos para el texto y los elementos de solo lectura de enlace.
- Los campos editables comparten un juego de propiedades comunes, incluida la propiedad
autoSubmit
. Esta propiedad es opcional, pero su activación (autoSubmit: true
) permite al formulario enviar un valor de campo antes de que el usuario haya enviado realmente todo el formulario. Puede utilizar esta propiedad para campos interdependientes dentro del formulario. Por ejemplo, puede definir esta propiedad cuando la visualización de un campo depende de un valor introducido en otro campo o cuando un valor definido para un campo restringe la entrada permitida en otro campo.Nota
Microsoft Teams no soportaautoSubmit
. - La propiedad opcional
clientErrorMessage
define el mensaje de error específico del campo que se muestra cuando hay una validación limitada del lado del cliente o cuando falla la validación del lado del cliente. Por ejemplo, para los mensajes enviados a través del canal de Slack, esta propiedad solo está soportada cuando el formulario está en la página de conversación. No se muestra cuando el mensaje de formulario está en un cuadro de diálogo modal.Nota
Esta propiedad está destinada principalmente a tarjetas adaptables de Microsoft Teams, lo que limita el uso de un único mensaje para todos los errores de nivel de campo diferentes.
actions
: en este nodo, la plantilla describe las acciones de envío de formulario que envían la entrada del usuario a través deFormSubmissionMessagePayload
.channelCustomProperties
: para soportar una experiencia de varios modos, en la que el usuario puede utilizar combinaciones de texto y voz para rellenar los campos del formulario antes de enviar el formulario, la plantilla incluye la configuración de la propiedadreplaceMessage
que indica al canal de cliente que actualice el mensaje del formulario de entrada actual en lugar de agregar un nuevo formulario de entrada a la conversación.
Campos de formulario de entrada
Elemento | Ejemplo | Código de ejemplo: Variable de asignación (submittedFields) | Editable? |
---|---|---|---|
Lista de selección única | Permite a los usuarios buscar y seleccionar un elemento de una lista predefinida. Puede aplicar un estilo a este componente como una lista de opciones que los usuarios pueden consultar y seleccionar. |
|
Sí |
Lista de selección múltiple | Lista que admite varias selecciones. Puede aplicar estilo a este componente como una lista de selección que los usuarios pueden filtrar y seleccionar, o como un juego de casillas de control. |
|
Sí |
Selector de hora | Permite al usuario escribir un valor de hora dentro de un intervalo especificado. Las propiedades maxTime y minTime del componente validan la entrada del usuario. |
|
Sí |
Selector de Fecha | Campo con un calendario desplegable que permite a los usuarios seleccionar un día, un mes y un año. Las propiedades maxDate y minDate del componente validan la entrada del usuario. |
|
Sí |
Entrada de número | Permite al usuario escribir un valor numérico. Las propiedades minValue y maxValue validan la entrada del usuario. |
|
Sí |
Introducción de Texto | Permite al usuario escribir un valor de texto. |
|
Sí |
Alternar | Presenta un conmutador (o una agrupación de botones de radio, según el canal) para dos opciones. |
|
Sí |
Texto | Texto en línea de sólo lectura |
|
No - Sólo lectura |
Enlace | Un enlace en línea |
|
No - Sólo lectura |
Acción | Uno de los tipos de acción (enlace, botón o icono). | En el siguiente fragmento, se representa un enlace de acción cuando el valor de la variable selectedOrder se coloca con el valor de la fila item .
|
No - Sólo lectura |
Parámetros personalizados
En la aptitud, puede definir los parámetros del cliente a los que se hará referencia desde los flujos de diálogo.
Una vez publicada la aptitud, puede cambiar los valores de estos parámetros (aunque no puede cambiar otros detalles de los parámetros ni agregar o suprimir parámetros).
Los parámetros personalizados se muestran como variables skill.system.config
para su uso en la definición del flujo de diálogo. Por ejemplo, se accedería a un parámetro personalizado denominado faHostName
con la siguiente expresión:
${skill.system.config.faHostName}
Si quiere establecer el valor de un parámetro de la aptitud en el asistente digital al que se agrega la aptitud, anteponga da.
(con el punto incluido (.)) al nombre del parámetro. Por ejemplo, puede utilizar da.faHostName
como nombre de un parámetro para un nombre de host.
Con este enfoque, puede definir parámetros con los mismos nombres en varias aptitudes, agregar todas esas aptitudes a un asistente digital y, a continuación, definir los valores para los parámetros compartidos en un único lugar del asistente digital.
Para acceder a un parámetro desde un componente personalizado, defina un parámetro de entrada en el componente personalizado y, a continuación, transfiera el valor del parámetro de la aptitud.
no puede definir los valores de parámetros personalizados (ni ninguna otra variable con el prefijo
skill.system.config
directamente en el flujo de diálogo ni en los componentes personalizados).
Creación de un parámetro personalizado
- Haga clic en
para abrir el menú lateral, seleccione Desarrollo > Aptitudes y elija la aptitud.
- En la navegación izquierda de la aptitud, haga clic en
.
- Haga clic en el separador Configuración.
- Haga clic en Nuevo parámetro y rellene los campos del cuadro de diálogo que aparece.
Parámetros seguros
Si la aptitud se basa en un parámetro, cuyo valor no desea que puedan ver otras personas que estén desarrollando esa aptitud o versiones o clonaciones de ella, puede designar ese parámetro como un parámetro seguro. Cualquiera que navegue a la página Configuración de la aptitud podrá ver el nombre del parámetro, pero no el valor.
Si exporta la aptitud, el valor del parámetro no se incluye en la exportación.
Para crear un parámetro seguro:
- En el cuadro de diálogo Crear parámetro, seleccione Seguro en la lista desplegable Tipo.
Modificación del valor de un parámetro personalizado en una aptitud publicada
Una vez publicada una aptitud, no puede agregar ni suprimir parámetros personalizados, pero puede cambiar sus valores. Para ello:
-
Haga clic en
para abrir el menú lateral, seleccione Desarrollo > Aptitudes y elija la aptitud.
-
En la navegación izquierda de la aptitud, haga clic en
.
- Seleccione el separador Configuración.
-
Seleccione el parámetro, haga clic en Editar e introduzca el valor actualizado.
Si ha añadido a un asistente digital una aptitud con un parámetro al que se ha antepuesto
da.
y quiere actualizar el valor que utiliza el asistente digital, tiene que hacerlo en el asistente digital. De lo contrario, el asistente digital seguirá utilizando el valor que tenía el parámetro en el momento en el que se agregó al asistente digital. La modificación del valor de la aptitud solo afectará a la aptitud si se utiliza de forma autónoma o si se agrega más adelante a un asistente digital diferente.
Definición del valor de un parámetro en Digital Assistant
Después de publicar una aptitud y agregarla a un asistente digital, puede definir el valor en el asistente digital para cualquiera de los parámetros de la aptitud con el prefijo da.
(incluido el punto (.)).
Si se define un parámetro" da.
" con el mismo nombre en varias aptitudes del asistente digital, el valor de dicho parámetro se compartirá entre las aptitudes del asistente digital.
Para definir el valor de un parámetro en un asistente digital:
- Haga clic en
para abrir el menú lateral, seleccione Desarrollo > Asistentes digitales y elija su asistente digital.
- En la navegación izquierda del asistente digital, haga clic en
.
- Seleccione una de las aptitudes que utiliza el parámetro.
- Desplácese hacia abajo, a la sección Parámetros de la página, e introduzca un valor para el parámetro.
Se aplicará el valor del parámetro actualizado a todas las aptitudes que utilicen el parámetro.
Flujos de importación y exportación
Puede importar y exportar flujos de diálogo de modo visual mediante las opciones Importar flujo y Exportar flujo seleccionado del menú Más.
Exportar flujos
-Flow
(PizzaSkill-pizza.ans.proc.veggiePizza-Flow.yaml
, por ejemplo). Su sintaxis YAML se ajusta al modo de diálogo visual, no al OBotML escrito para las aptitudes creadas en el modo YAML. Al exportar un flujo, se exporta solo este documento. No irá acompañado de ninguna de las siguientes dependencias, incluso si se hace referencia a ellas.
- Servicio de seguridad al que hacen referencia los estados del componente de seguridad.
- Servicios para varios estados de integración de servicios
- Servicios de traducción
- Intenciones, entidades, grupos de recursos
- Flujos de tareas de referencia
Puede exportar cualquier flujo, excepto el principal.
name: "WineryChats"
trackingId: "D6BFE43B-D774-412A-91F6-4582D04B3375"
type: "task"
version: "2.0"
interface:
returnActions:
- "done"
variables:
- name: "redWineCard"
type: "map"
system: false
defaultTransitions:
actions:
system.outOfOrderMessage: "outOfOrderMessageHandler"
system.startTaskFlow: "buildRedWineMenu"
states:
buildRedWineMenu:
component: "System.SetVariable"
properties:
variable: "redWineCard"
value:
Cabernet Sauvignon:
image: "https://cdn.pixabay.com/photo/2016/05/24/16/16/wine-1412603__340.jpg"
price: 35
description: "Flavor of dark fruits like black cherry and blackberry along with a warm spice, vanilla and black pepper"
title: "Cabernet Sauvignon"
...
Importar flujos
Puede importar un flujo haciendo clic en Más > Importar flujo y, a continuación, navegando y seleccionando un documento YAML formateado para el modo de diálogo visual. Estos flujos pueden ser los documentos YAML generados al exportar un flujo de diálogo (los que tienen nombres con el formato <skill name> - <flow name> -Flow.yaml
) o pueden ser los archivos YAML ubicados en la carpeta dialogs
de un archivo ZIP exportado para una aptitud creada mediante el modo de diálogo visual. No puede importar un documento OBotML directamente. Primero debe migrar la aptitud.
- No puede importar un flujo principal (el archivo
System.MainFlow.yaml
ubicado en la carpetadialogs
de un archivo ZIP exportado para una aptitud del modo de diálogo visual). - No puede importar un flujo que ya exista en la aptitud o en la instancia. Si el flujo ya existe, puede cargar el documento YAML cambiando el valor del nodo
name
.
Sin embargo, puede que desee duplicar el flujo (Menú > Duplicar flujo seleccionado) en lugar de editar el YAML.name: "WineryChats" trackingId: "D6BFE43B-D774-412A-91F6-4582D04B3375" type: "task" ...

