Convertir un valor de cadena en un valor escrito
Dentro de un flujo de llamada, no es raro que los autores de flujos deseen convertir un valor de cadena en un valor escrito. Para muchos tipos de datos básicos, Architect admite la conversión de un valor de cadena en otro tipo.
El siguiente escenario ilustra el problema que puede encontrar un autor de flujo al intentar convertir un valor de cadena de "5" que, en tiempo de ejecución, devuelve el valor entero de 5.
ToInt("5")
En este ejemplo, el flujo debe convertir una cadena en un tipo de datos basado en la red. El flujo quiere transferir una llamada a una cola y llama a una acción Puente para recuperar el nombre de la cola. La acción Puente devuelve el nombre de la cola en una cadena. Una acción Transferir a ACD realizará la transferencia a la cola.
Si un autor de flujo intenta utilizar la cadena como una configuración de cola directamente en la acción Transferir a ACD, el sistema devuelve un error. La acción Transferir a ACD espera que el sistema proporcione un valor de cola para el destino de la transferencia de cola. Debido a que las funciones To convierten un tipo en otro, el autor del flujo puede intentar usar la función ToQueue para convertir la cadena en una cola usando la función ToQueue. Sin embargo, debido a que Architect no tiene una implementación de ToQueue que convierta un valor de cadena en un valor de cola, no puede convertir cadenas a tipos de datos basados en la red en un flujo:
En Architect, use matrices paralelas para convertir un valor de cadena en otro tipo de valor. Debido a que esta solución configura efectivamente un mapeo clave> valor, y los valores especificados son ilimitados, funciona más allá de los tipos de valores basados en la red.
Por ejemplo, un flujo contiene una variable de colección de cadenas denominada Task.QueueNames y una variable de colección de cola denominada Task.Queues. El número de artículos en ambas colecciones es el mismo. Puede configurar las variables para buscar rápidamente la cola asociada en Task.Queues para un valor de cadena que se encuentra en Task.QueueNames.
Utilice una acción Actualizar datos para configurar las colecciones establecidas en estas variables:
Task.QueueNames | Task.Queues |
---|---|
"Ventas" | Cola de ventas de Genesys Cloud |
"Márketing" | Cola de marketing de Genesys Cloud |
"Apoyo técnico" | Cola de soporte técnico de Genesys Cloud |
A continuación, cree una expresión para realizar la búsqueda y tenga una cola de reserva predeterminada si el sistema no puede encontrar la cadena proporcionada para la conversión de búsqueda. Para comenzar, configure Task.DefaultQueue en la cola de Genesys Cloud Operator para esta organización.
Ahora, cree la expresión que busca la cola por nombre y devuelve la cola asociada con esa cadena:
If(FindFirst(Task.QueueNames, Task.QueueNameStr)!=-1, Task.Queues[FindFirst(Task.QueueNames, Task.QueueNameStr)], Task.DefaultQueue)
Ahora, puede asignar valores de cadena a colas en un flujo de llamadas. La expresión anterior funciona para colecciones que tienen una pequeña cantidad de elementos. Para colecciones más grandes, guarde el valor de la llamada FindFirst en una variable, lo que garantiza que el sistema no ejecute la llamada dos veces en la misma expresión. Si guarda el valor de la llamada FindFirst a una variable entera Task.FoundIndex, reescriba la expresión anterior como:
If(Task.FoundIndex!=-1, Task.Queues[Task.FoundIndex], Task.DefaultQueue)
Actualmente, Architect no incluye una función incorporada que convierta una cadena en un tipo basado en red. Architect no admite esta función por varias razones:
- En el tiempo de ejecución del flujo de llamadas, la resolución de un tipo de datos basado en la red, por ejemplo, una cola de una cadena, actualmente requiere un viaje de ida y vuelta desde el borde hasta la nube. Este escenario puede potencialmente crear mucho tráfico de red.
- Un borde puede correr mientras está desconectado. En este caso, la resolución en tiempo de ejecución de un valor de cadena a un valor basado en la red no es posible llamando a la nube.
- En el raro caso de dos objetos basados en la red con el mismo nombre, la búsqueda por nombre se vuelve ambigua porque el sistema podría devolver dos o más objetos con el mismo nombre.
Sin embargo, puede utilizar las diversas acciones Buscar y Obtener que le permiten realizar operaciones de búsqueda y búsqueda. Para más información, ver Acciones del editor de tareas y estados.