Andere Aufgaben
Im Folgenden finden Sie einige Themen zu verschiedenen anderen Aufgaben im Visual Flow Designer, darunter Benutzerauthentifizierung, automatische Nummerierung, Resource Bundles, das Erstellen von Eingabeformularen, das Erstellen benutzerdefinierter Parameter sowie das Importieren und Exportieren von Abläufen.
Benutzerautorisierung
An bestimmten Stellen in einem Ablauf können Sie die Benutzerautorisierung erzwingen.
Dazu führen Sie folgende Schritte aus:
- Setzen Sie für die Status, in denen Sie die Autorisierung erzwingen möchten, die Eigenschaft Autorisierung erforderlich auf
True
. Diese Eigenschaft befindet sich auf der Registerkarte Allgemein des Eigenschaftsinspektors des Status.Wenn ein Benutzer, der einen solchen Status erreicht hat, noch nicht autorisiert wurde, wird der Status "Autorisieren mit OAuth" aufgerufen, und der Ablauf ruft dann den Status auf, der die Autorisierung erfordert.
- Erstellen Sie eine Autorisierungskomponente, und ordnen Sie sie dem Standardübergangsereignis Benutzer autorisieren des Ablaufs zu:
- Wählen Sie den Ablauf und dann die Registerkarte Ablauf des Ablaufs aus.
- Doppelklicken Sie auf die Kachel Ereignisse für den Ablauf, um ihn einzublenden.
- Zeigen Sie mit der Maus auf die Kachel Benutzer autorisieren, klicken Sie auf die Schaltfläche mit den Auslassungspunkten (...) und wählen Sie Status hinzufügen aus.
- Wählen Sie in der Kategorie Sicherheit der Vorlagenauswahl eine Komponente aus, geben Sie einen Namen für den Status an, und klicken Sie auf Einfügen.
Einzelheiten zu den einzelnen verfügbaren Vorlagen finden Sie unter Sicherheitsvorlagen.
- Konfigurieren Sie im Eigenschaftsinspektor der Komponente die Eigenschaften der Komponente, einschließlich ihrer Übergangsaktionen.
Antwortpositionen automatisch nummerieren
Mit der Funktion für die automatische Nummerierung können Sie Schaltflächen und Listenoptionen mit Zahlen in Ihren Antworten voranstellen.
Wenn Benutzer keine Tippgesten verwenden können, können sie die Postback-Aktionen der Schaltfläche trotzdem durch Eingeben einer Nummer auslösen. Diese Funktion ist besonders für Textkanäle hilfreich.
Sie konfigurieren die automatische Nummerierung auf Skillstufe.
So konfigurieren Sie die automatische Nummerierung:
- Wählen Sie in der linken Navigationsleiste des Skills die Option
aus.
- Wählen Sie die Registerkarte Konfiguration aus.
- Legen Sie den Wert Automatische Nummerierung bei Postback-Aktionen in Taskflows aktivieren fest.
Wenn Sie die automatische Nummerierung für alle Kanäle aktivieren möchten, setzen Sie den Wert auf true.
Wenn Sie die automatische Nummerierung nur für bestimmte Kanäle aktivieren möchten, geben Sie einen Ausdruck an, um zu bestimmen, welche Kanäle die automatische Nummerierung erhalten. Beispiel: Um die automatische Nummerierung nur für Twilio-Kanäle zu aktivieren, geben Sie Folgendes ein:
${(system.channelType=='twilio')?then('true','false')}
Anzahl der Eingabeaufforderungen einschränken
Sie können sicherstellen, dass Benutzer nicht an einem Schritt in einem Dialogablauf hängen bleiben, indem Sie diese Komponente so konfigurieren, dass sie die Anzahl der Wiederholungen eines Prompts für den Benutzer begrenzt.
Die Eigenschaft maxPrompts
schränkt ein, wie oft Common Response-Komponenten den Benutzer anfordern können, wenn sie den Eingabewert mit keinem der Werte abgleichen können, die für die Entity oder den Eingabetyp definiert sind, auf den die Eigenschaft variable
verweist. Mit dieser Eigenschaft können Sie verhindern, dass sich der Dialog im Kreis dreht, wenn Benutzer wiederholt ungültige Werte eingeben. Sie können die maximale Anzahl von Prompts mit einer Ganzzahl festlegen. Die Unterhaltung geht in den nächsten Status über, wenn der Benutzer einen gültigen Wert eingibt, bevor dieser Grenzwert erreicht wird. Andernfalls geht die Unterhaltung in den Status über, der in der Aktion cancel
definiert ist.
Resource Bundles und Visual Flow Designer
Mit Resource Bundles können Sie alle für Benutzer sichtbaren Zeichenfolgen speichern, die Sie dem Dialogablauf hinzufügen.
Sie referenzieren Resource Bundle-Nachrichtenschlüssel über die Variable rb
. Eine Referenz auf eine einfache Resource Bundle-Nachricht wird in einer der folgenden beiden Formen verwendet:
${skill.system.rb.RB_ENTRY_NAME}
${rb.RB_ENTRY_NAME}
Tipp:
Mit der automatischen Vervollständigung können Sie die Resource Bundles auswählen, die in Apache FreeMarker-Ausdrücken referenziert werden.Resource-Bundle-Eintrag ändern
- Klicken Sie im Skill auf
, um das Ressourcen-Bundle zu öffnen.
- Wählen Sie die Registerkarte Konfiguration aus.
- Navigieren Sie mit dem Feld Filter zu dem Eintrag, den Sie aktualisieren möchten.
- Zeigen Sie mit der Maus auf den Wert für den Schlüssel, und wählen Sie das Symbol
, das angezeigt wird.
- Geben Sie im Feld Text die aktualisierte Nachricht ein.
- Klicken Sie auf Eintrag aktualisieren.
Benutzer-Eingabeformularnachrichten
In Dialogabläufen können Sie auch Eingabeformulare erstellen.
Manchmal ist ein Eingabeformular die schnellste und am wenigsten fehleranfällige Möglichkeit, Benutzerinformationen zu sammeln. Anstatt Benutzer einer Reihe von Fragen zu unterwerfen, kann Ihr Skill Benutzer bei der Bereitstellung gültiger Eingaben unterstützen, indem er ihnen Formulare sendet, die Eingabeelemente wie Texteingabefelder, Zeit- und Datumsauswahl und Umschalter enthalten.
Beschreibung der Abbildung editable-form-example.png
- Wählen Sie im Dialogfeld "Status hinzufügen" Benutzer-Messaging > Tabellen und Formulare erstellen. Wählen Sie dann Eingabeformular erstellen aus.
- Um das Layout, die Aktionen und die bearbeitbaren und schreibgeschützten Felder des Formulars zu erstellen, klicken Sie zuerst auf
Edit Response Items
, und bearbeiten Sie dann die MetadatenvorlageResponseItems
. In diesem Fall gilt die Vorlage für das AntwortelementeditForm
.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'}"
Metadatenvorlage "Formulare bearbeiten"
editForm
:
- Die für die Objekte
items
,actions
undchannelCustomProperties
angegebenen Eigenschaften sind alle spezifisch für die ObjekteeditFormMessagePayload
. Diese Payload enthält unter anderem Beschreibungen des Gesamtlayouts der vom Benutzer empfangenen Eingabeformularnachricht, der Formularfelder (schreibgeschützt und bearbeitbar) und kanalspezifischer Anpassungen für plattformspezifisches UI-Rendering und Formularweiterleitungsverhalten. - Für jedes Element und innerhalb des Knotens
actions
referenziert die Vorlage eine Variable auf Ablaufebene mit dem NamensubmittedFields
, in der die Benutzereingabe gespeichert ist. Dies ist eine Zuordnungsvariable, die generiert wird, wenn Sie dem Dialogablauf den Status inputForm hinzufügen.Hinweis
Je nach Ihren Anforderungen können Sie anstelle der VariablensubmittedFields
einzelne Variablen oder eine Mischentityvariable referenzieren. items
:- Während die Vorlage Eigenschaften für die bearbeitbaren Felder bereitstellt (Einzel- und Mehrfachauswahlfelder, Datums- und Uhrzeitauswahl, Eingabefeld für Zahlen und Umschalter), können Sie auch Elemente für den Text hinzufügen und schreibgeschützte Elemente verknüpfen.
- Die bearbeitbaren Felder verwenden eine Gruppe gemeinsamer Eigenschaften, einschließlich der Eigenschaft
autoSubmit
. Dies ist eine optionale Eigenschaft. Wenn Sie sie jedoch aktivieren (autoSubmit: true
), kann das Formular einen Feldwert weiterleiten, bevor der Benutzer das gesamte Formular weitergeleitet hat. Sie können diese Eigenschaft für voneinander abhängige Felder in Ihrem Formular verwenden. Beispiel: Sie können diese Eigenschaft festlegen, wenn die Anzeige eines Feldes von einem in ein anderes Feld eingegebenen Wert abhängt oder wenn ein WerteSet für ein Feld die in einem anderen Feld zulässige Eingabe einschränkt.Hinweis
Microsoft Teams unterstütztautoSubmit
nicht. - Die optionale Eigenschaft
clientErrorMessage
legt die feldspezifische Fehlermeldung fest, die angezeigt wird, wenn eine begrenzte clientseitige Validierung vorhanden ist oder wenn die clientseitige Validierung nicht erfolgreich ist. Beispiel: Bei Nachrichten, die über den Slack-Kanal gesendet werden, wird diese Eigenschaft nur unterstützt, wenn sich das Formular auf der Unterhaltungsseite befindet. Wird nicht angezeigt, wenn sich die Formularnachricht in einem modalen Dialogfeld befindet.Hinweis
Diese Eigenschaft ist hauptsächlich für adaptive Microsoft Teams-Karten gedacht. Dadurch können Sie nur eine einzige Nachricht für alle Fehler auf Feldebene verwenden.
actions
: In diesem Knoten beschreibt die Vorlage die Formularweiterleitungsaktionen, mit denen die Benutzereingabe überFormSubmissionMessagePayload
weitergeleitet wird.channelCustomProperties
: Um eine Multimode-Erfahrung zu unterstützen, bei der der Benutzer vor dem Weiterleiten des Formulars Text- und Sprachkombinationen zum Ausfüllen der Formularfelder verwenden kann, enthält die Vorlage die EigenschaftskonfigurationreplaceMessage
, die den Clientkanal anweist, die aktuelle Eingabeformularnachricht zu aktualisieren, anstatt der Unterhaltung ein neues Eingabeformular hinzuzufügen.
Eingabeformularfelder
Element | Beispiel | Beispielcode: Zuordnungsvariable (submittedFields) | Bearbeitbar? |
---|---|---|---|
Einfachauswahlliste | Ermöglicht es Benutzern, ein Element aus einer vordefinierten Liste zu suchen und auszuwählen. Sie können diese Komponente als eine Liste von Optionen formatieren, die Benutzer abfragen und auswählen können. |
|
Ja |
Mehrfachauswahlliste | Eine Liste, die mehrere Auswahlmöglichkeiten unterstützt. Sie können diese Komponente als Auswahlliste formatieren, die Benutzer filtern und auswählen können, oder als eine Reihe von Kontrollkästchen. |
|
Ja |
Zeitauswahl | Ermöglicht es dem Benutzer, einen Zeitwert innerhalb eines bestimmten Bereichs einzugeben. Die Eigenschaften maxTime und minTime der Komponente validieren die Benutzereingabe. |
|
Ja |
Datumsauswahl | Ein Feld mit einem Dropdown-Kalender, mit dem Benutzer einen Tag, einen Monat und ein Jahr auswählen können. Die Eigenschaften maxDate und minDate der Komponente validieren die Benutzereingabe. |
|
Ja |
Zahleneingabe | Ermöglicht dem Benutzer die Eingabe eines Zahlenwerts. Die Eigenschaften minValue und maxValue validieren die Benutzereingabe. |
|
Ja |
Texteingabe | Ermöglicht dem Benutzer die Eingabe eines Texts. |
|
Ja |
Ein-/ausschalten | Stellt einen Umschalter (oder je nach Kanal eine Optionsfeldgruppierung) für zwei Optionen bereit. |
|
Ja |
Text | Schreibgeschützter Inline-Text |
|
Nein – schreibgeschützt |
Link | Ein Inline-Link |
|
Nein – schreibgeschützt |
Aktion | Einer der Aktionstypen (Link, Schaltfläche oder Symbol). | Im folgenden Snippet wird ein Aktionslink wiedergegeben, wenn der Wert für die Variable selectedOrder mit dem Wert der Zeile item umschlungen wird.
|
Nein – schreibgeschützt |
Benutzerdefinierte Parameter
In Ihrem Skill können Sie benutzerdefinierte Parameter definieren, die Sie in Dialogabläufen referenzieren können.
Nachdem Sie den Skill veröffentlicht haben, können Sie die Werte dieser Parameter ändern (Sie können aber keine anderen Parameterdetails ändern bzw. Parameter hinzufügen oder löschen).
Benutzerdefinierte Parameter werden als skill.system.config
-Variablen zur Verwendung in der Dialogablaufdefinition angegeben. Beispiel: Auf einen benutzerdefinierten Parameter mit dem Namen faHostName
wird mit dem folgenden Ausdruck zugegriffen:
${skill.system.config.faHostName}
Wenn Sie den Wert für den Parameter eines Skills in dem digitalen Assistenten festlegen möchten, dem Sie den Skill hinzufügen, stellen Sie dem Parameternamen da.
als Präfix voran (einschließlich dem Punkt (.)). Beispiel: Sie können da.faHostName
als Namen des Parameters für einen Hostnamen verwenden.
Mit dieser Methode können Sie Parameter mit demselben Namen in mehreren Skills festlegen, alle diese Skills einem digitalen Assistenten hinzufügen und dann die Werte für die gemeinsamen Parameter an einer Stelle im digitalen Assistenten festlegen.
Um auf einen Parameter von einer benutzerdefinierten Komponente zuzugreifen, definieren Sie einen Eingabeparameter in der benutzerdefinierten Komponente, und übergeben Sie denn den Wert des Skillparameters an diesen.
Sie können die Werte benutzerdefinierter Parameter (oder anderer Variablen mit dem Präfix
skill.system.config
) nicht nicht direkt im Dialogfeld oder in benutzerdefinierten Komponenten festlegen.
Benutzerdefinierte Parameter erstellen
- Klicken Sie auf
, um das Seitenmenü zu öffnen, wählen Sie Entwicklung > Skills und dann Ihren Skill aus.
- Klicken Sie in der linken Navigationsleiste des Skills auf
.
- Klicken Sie auf die Registerkarte Konfiguration.
- Klicken Sie auf Neuer Parameter, und füllen Sie die Felder des angezeigten Dialogfeldes aus.
Sichere Parameter
Wenn Ihr Skill auf einem Parameter basiert, dessen Wert nicht für andere Benutzer sichtbar sein soll, die diesen Skill entwickeln, versionieren oder klonen, können Sie diesen Parameter als sicheren Parameter festlegen. Jeder, der dann zur Seite "Einstellungen" im Skill navigiert, kann den Namen des Parameters, nicht jedoch den Wert sehen.
Wenn Sie den Skill exportieren, wird der Wert des Parameters nicht in den Export aufgenommen.
So erstellen Sie einen sicheren Parameter:
- Wählen Sie im Dialogfeld "Parameter erstellen" in der Dropdown-Liste Typ die Option Sicher aus.
Wert für einen benutzerdefinierten Parameter in einem veröffentlichten Skill ändern
Nachdem Sie einen Skill veröffentlicht haben, können Sie keine benutzerdefinierten Parameter hinzufügen oder löschen, können ihre Werte jedoch ändern. Führen Sie hierzu die folgenden Schritte aus:
-
Klicken Sie auf
, um das Seitenmenü zu öffnen, wählen Sie Entwicklung > Skills und dann Ihren Skill aus.
-
Klicken Sie in der linken Navigationsleiste des Skills auf
.
- Wählen Sie die Registerkarte Konfiguration aus.
-
Wählen Sie den Parameter aus, klicken Sie auf Bearbeiten, und geben Sie den aktualisierten Wert ein.
Wenn Sie einem digitalen Assistenten einen Skill mit einem Parameter mit dem Präfix
da.
hinzugefügt haben und Sie den vom digitalen Assistenten verwendeten Wert aktualisieren möchten, müssen Sie diesen Vorgang im digitalen Assistenten ausführen. Ansonsten verwendet der digitale Assistent weiterhin den Wert, den der Parameter zu dem Zeitpunkt enthielt, als er dem digitalen Assistenten hinzugefügt wurde. Eine Änderung des Wertes im Skill wirkt sich nur auf den Skill aus, wenn er als Standalone-Skill verwendet wird oder wenn er später zu einem anderen digitalen Assistenten hinzugefügt wird.
Wert für einen Parameter im digitalen Assistenten festlegen
Nachdem ein Skill veröffentlicht und zu einem digitalen Assistenten hinzugefügt wurde, können Sie den Wert im digitalen Assistenten für alle Parameter mit dem Präfix da.
(einschließlich des Punkts (.)) festlegen.
Wenn ein da.
-Parameter mit demselben Namen in mehreren Skills im digitalen Assistenten definiert ist, wird der Wert dieses Parameters von den Skills im digitalen Assistenten gemeinsam verwendet.
So legen Sie den Wert für einen Parameter in einem digitalen Assistenten fest:
- Klicken Sie auf
, um das Seitenmenü zu öffnen, wählen Sie Entwicklung > Digitale Assistenten und anschließend Ihren digitalen Assistenten aus.
- Klicken Sie in der linken Navigationsleiste des digitalen Assistenten auf
.
- Wählen Sie einen der Skills aus, die den Parameter verwenden.
- Scrollen Sie nach unten zum Abschnitt "Parameter" der Seite, und geben Sie einen Wert für den Parameter ein.
Der aktualisierte Parameterwert wird auf alle Skills angewendet, die den Parameter verwenden.
Import- und Exportabläufe
Sie können Dialogabläufe im visuellen Modus mit den Optionen Importablauf und Ausgewählten Ablauf exportieren im Menü Weitere Informationen importieren und exportieren.
Flüsse exportieren
-Flow
(Beispiel: PizzaSkill-pizza.ans.proc.veggiePizza-Flow.yaml
) angehängt. Die YAML-Syntax entspricht dem visuellen Dialogmodus, nicht dem OBotML für Skills, die im YAML-Modus erstellt wurden. Wenn Sie einen Ablauf exportieren, exportieren Sie nur dieses Dokument. Es wird nicht von einer der folgenden Abhängigkeiten begleitet, auch wenn sie referenziert werden.
- Der Sicherheitsdienst, der von den Statusangaben der Sicherheitskomponenten referenziert wird.
- Services für verschiedene Serviceintegrationszustände
- Übersetzungsservices
- Intents, Entitys, Resource Bundles
- Referenzierte Taskflows
Sie können jeden Ablauf mit Ausnahme des Hauptflusses exportieren.
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"
...
Abläufe importieren
Sie können einen Ablauf importieren, indem Sie auf Mehr > Ablauf importieren klicken und dann ein YAML-Dokument suchen und auswählen, das für den visuellen Dialogmodus formatiert ist. Bei diesen Abläufen kann es sich um die YAML-Dokumente handeln, die beim Exportieren eines Dialogablaufs generiert werden (diejenigen mit Namen, die als <skill name> - <flow name> -Flow.yaml
formatiert sind), oder um die YAML-Dateien, die sich im Ordner dialogs
einer exportierten ZIP-Datei für einen mit dem visuellen Dialogmodus erstellten Skill befinden. Sie können ein OBotML-Dokument nicht direkt importieren. Sie müssen zuerst den Skill migrieren.
- Sie können keinen Hauptfluss importieren (die Datei
System.MainFlow.yaml
im Ordnerdialogs
einer exportierten ZIP-Datei für einen Skill im visuellen Dialogmodus). - Sie können keinen Ablauf importieren, der bereits im Skill oder in Ihrer Instanz vorhanden ist. Wenn der Ablauf bereits vorhanden ist, können Sie das YAML-Dokument hochladen, indem Sie den Wert für den Knoten
name
ändern.
Sie können den Ablauf jedoch stattdessen duplizieren (Menü > Ausgewählten Ablauf duplizieren), anstatt die YAML zu bearbeiten.name: "WineryChats" trackingId: "D6BFE43B-D774-412A-91F6-4582D04B3375" type: "task" ...

