Umwandlung eines String-Wertes in einen typisierten Wert
Innerhalb eines Anrufablaufs ist es nicht ungewöhnlich, dass Ablaufautoren einen String-Wert in einen typisierten Wert umwandeln wollen. Für viele grundlegende Datentypen unterstützt Architect die Konvertierung eines String-Wertes in einen anderen Typ.
Das folgende Szenario veranschaulicht das Problem, auf das ein Flow-Autor stoßen kann, wenn er versucht, einen String-Wert von "5" zu konvertieren, der zur Laufzeit den Integer-Wert von 5 zurückgibt.
ToInt("5")
In diesem Beispiel muss der Fluss eine Zeichenkette in einen netzbasierten Datentyp konvertieren. Der Fluss möchte einen Anruf an eine Warteschlange weiterleiten und ruft eine Bridge-Aktion auf, um den Namen der Warteschlange abzurufen. Die Aktion Bridge gibt den Namen der Warteschlange in einer Zeichenkette zurück. Mit der Aktion Übergabe an ACD wird die Übergabe an die Warteschlange durchgeführt.
Wenn ein Ablaufautor versucht, die Zeichenkette als Warteschlangeneinstellung direkt für die Aktion Übergabe an ACD zu verwenden, gibt das System einen Fehler zurück. Die Aktion Übergabe an ACD erwartet, dass das System einen Warteschlangenwert für das Ziel der Warteschlangenübergabe liefert. Da die To-Funktionen einen Typ in einen anderen umwandeln, kann der Flow-Autor versuchen, die Zeichenkette mit der ToQueue-Funktion in eine Warteschlange umzuwandeln. Da Architect jedoch keine ToQueue-Implementierung hat, die einen String-Wert in einen Queue-Wert konvertiert, können Sie Strings nicht in netzwerkbasierte Datentypen in einem Flow konvertieren:
Verwenden Sie in Architect parallele Arrays, um einen String-Wert in einen anderen Werttyp zu konvertieren. Da diese Lösung effektiv eine Schlüssel-Wert-Zuordnung einrichtet und die angegebenen Werte unbegrenzt sind, funktioniert sie über netzbasierte Wertetypen hinaus.
Ein Ablauf enthält beispielsweise eine String-Sammlungsvariable namens Task.QueueNames und eine Warteschlangen-Sammlungsvariable namens Task.Queues. Die Anzahl der Objekte in beiden Sammlungen ist gleich. Sie können die Variablen so konfigurieren, dass sie die zugehörige Warteschlange in Task.Queues schnell für einen in Task.QueueNames gefundenen String-Wert nachschlagen.
Verwenden Sie eine Aktion zur Datenaktualisierung, um die für diese Variablen festgelegten Sammlungen zu konfigurieren:
Aufgabe.QueueNames | Aufgabe.Warteschlangen |
---|---|
"Verkauf" | Genesys Cloud Verkaufswarteschlange |
"Marketing" | Genesys Cloud Marketing-Warteschlange |
Technischer Websupport | Genesys Cloud Warteschlange für technischen Support |
Als Nächstes erstellen Sie einen Ausdruck, der die Suche durchführt und über eine Standard-Warteschlange verfügt, falls das System die für die Suchkonvertierung angegebene Zeichenfolge nicht finden kann. Setzen Sie zunächst Task.DefaultQueue auf die Genesys Cloud Operator-Warteschlange für diese Organisation.
Erstellen Sie nun den Ausdruck, der die Warteschlange nach ihrem Namen sucht und die mit dieser Zeichenfolge verbundene Warteschlange zurückgibt:
If(FindFirst(Task.QueueNames, Task.QueueNameStr)!=-1, Task.Queues[FindFirst(Task.QueueNames, Task.QueueNameStr)], Task.DefaultQueue)
Jetzt können Sie Zeichenkettenwerte den Warteschlangen in einem Anrufablauf zuordnen. Der obige Ausdruck funktioniert für Sammlungen, die eine geringe Anzahl von Elementen haben. Speichern Sie bei größeren Sammlungen den Wert aus dem FindFirst-Aufruf in einer Variablen, damit das System den Aufruf nicht zweimal im selben Ausdruck ausführt. Wenn Sie den Wert des FindFirst-Aufrufs in einer Task.FoundIndex-Ganzzahlvariablen speichern, schreiben Sie den obigen Ausdruck wie folgt um:
If(Task.FoundIndex!=-1, Task.Queues[Task.FoundIndex], Task.DefaultQueue)
Derzeit enthält Architect keine eingebaute Funktion, die einen String in einen netzwerkbasierten Typ konvertiert. Architect unterstützt diese Funktion aus verschiedenen Gründen nicht:
- Zur Laufzeit des Anrufablaufs erfordert die Auflösung eines netzbasierten Datentyps, z. B. einer Warteschlange aus einer Zeichenkette, derzeit einen Round Trip vom Edge zur Cloud. Dieses Szenario kann eine Menge Netzwerkverkehr verursachen.
- Eine Kante kann auch bei unterbrochener Verbindung laufen. In diesem Fall ist die Laufzeitauflösung eines String-Wertes in einen netzbasierten Wert durch den Aufruf der Cloud nicht möglich.
- In dem seltenen Fall, dass zwei netzbasierte Objekte denselben Namen haben, wird die Suche nach dem Namen mehrdeutig, da das System zwei oder mehr Objekte mit demselben Namen zurückgeben könnte.
Sie können jedoch die verschiedenen Such- und Abrufaktionen verwenden, mit denen Sie Such- und Nachschlageoperationen durchführen können. Weitere Informationen finden Sie unter Aufgaben- und Zustandseditor-Aktionen.