Benutzeroberflächenkomponenten
Diese Komponenten sind in der Kategorie "Benutzeroberfläche" des YAML-basierten Dialogablaufeditors verfügbar.
-
System.CommonResponse - Gibt umfangreiche Nachrichten aus.
-
System.Webview - Integriert Ihren Bot mit einer Webanwendung.
-
System.IncidentCreation - Erstellt einen Vorfall für Oracle B2C Service oder Oracle Fusion Service.
-
System.IntelligentAdvisor: Integriert Ihren Skill mit einem Oracle Intelligent Advisor-Interview.
-
System.KnowledgeSearch - Ermittelt einen Knowledge-Service für Informationen zu einem Thema.
-
System.AgentTransfer: Ermöglicht einem DA-Agent-Skill, eine Unterhaltung zurück an Oracle B2C Service oder Oracle Fusion Service zu übertragen.
-
System.AgentTransferCondition - Hier können Sie prüfen, ob Agents verfügbar sind, und die erwartete Wartezeit abrufen.
-
System.AgentInitiation und System.AgentConversation: Damit können Sie eine Unterhaltung an einen Oracle B2C Service-Live-Agent übertragen.
-
System.ResolveEntities - Berechnet die Werte für die Mitgliedsentitys einer Mischentity.
- System.Feedback - Gibt eine Feedbackbewertungskomponente aus.
System.CommonResponse
Mit der Komponente System.CommonResponse
können Sie Nachrichten mit umfangreichen UI-Features wie Kartenkarussellen mit Bildern und Aktionsschaltflächen oder Formularen mit Tabellen und Eingabefeldern erstellen.
In diesem Thema wird die Verwendung dieser Komponente im YAML-Modus behandelt. Informationen zur Verwendung im Visual Flow Designer finden Sie unter Allgemeine Antwortkomponentenvorlagen.
Vorlagen für System.CommonResponse
sind im Abschnitt User Messaging des Dialogfelds Komponente hinzufügen verfügbar.
System.CommonResponse
in der CrcPizzaBot, einem der Beispielbots. In diesem Spin in der PizzaBot können Sie ein bildreiches Menü mit Schnellaktionsschaltflächen anzeigen.
Im Kontext der Komponente System.CommonResponse
werden die verschiedenen Nachrichtentypen als Antworttypen bezeichnet. In CrcPizzaBot wird unter anderem gezeigt, wie die Benutzer mit den Aktionsschaltflächen auf Eingabeaufforderungen reagieren und das Pizza-Menü als kaskadenförmige Kartenelemente anzeigen können.
Im Menü Komponente hinzufügen können Sie verschiedene System.CommonResponse
-Vorlagen für Karten, Text, Anhangsreaktionen und Mischentitys auswählen (wie in CbPizzaBot dargestellt). Diese Vorlagen umfassen beide Eigenschaften, die bei all diesen Antworttypeigenschaften üblich und für die einzelnen Antworttypen spezifisch sind. Während das Menü Komponente hinzufügen separate Status für jeden Reaktionstyp hinfügt, können Sie einen oder mehrere Reaktionstypen in einem einzigen Status kombinieren. In CrcPizzaBot werden Beispiele für die Status ShowMenu
(Textantwort) und OrderPizza
(Text- und Kartenantworten) veranschaulicht.
Sie sollten jeden Skill in den Zielkanälen frühzeitig im Entwicklungszyklus testen, um sicherzustellen, dass die Komponenten wie gewünscht gerendert werden.
Die Eigenschaften der Komponente
Die Konfiguration von System.CommonResponse
-Komponenten beinhaltet das Festlegen von Eigenschaften, die Dialog-Engine zusammen mit Metadateneigenschaften leiten, die nicht nur beschreiben, wie die Komponente Nachrichten zustellt (als Texteingabeaufforderungen, Karten oder Anhänge), sondern auch den Inhalt und das Verhalten für die Nachrichten selbst festlegen.
Name | Beschreibung | Erforderlich? |
---|---|---|
metadata |
Die von dieser Komponente erstellte Chatantwort wird durch den Inhalt der Eigenschaft metadata gesteuert. Siehe Die Metadateneigenschaft in gemeinsamen Antwortkomponenten.
|
Ja |
processUserMessage |
Setzen Sie diese Eigenschaft auf true , um die Dialog-Engine so anzuweisen, dass sie in den Status zurückkehrt, nachdem der Benutzer Text eingibt oder auf eine Schaltfläche tippt. Setzen Sie diese Eigenschaft auf false , wenn keine Benutzereingabe erforderlich (oder erwartet) ist.
Setzen Sie diese Eigenschaft auf |
Ja |
autoNumberPostbackActions |
Diese Eigenschaft wird für Mischentitys, Textantworten und Kartenantworten verwendet. Wenn dies auf true gesetzt ist, stellt diese Option den Optionen Zahlen voran. Selbst wenn Sie diese Option nicht auf true gesetzt haben, kann die automatische Nummerierung für Kartenelemente erzwungen werden, wenn die Konfiguration Automatische Nummerierung bei Postback-Aktionen aktivieren des digitalen Assistenten auf true gesetzt ist. Wie durch die Standardkonfiguration demonstriert, kann die kanalspezifische automatische Nummerierung auf alle Skillbots angewendet werden, die bei einem digitalen Assistenten registriert sind (${(system.channelType=='twilio')?then('true','false')} ):
|
Nein |
variable |
Diese Variable enthält den Namen des Kontexts oder der Benutzervariablen, die aufgefüllt wird, wenn ein Benutzer antwortet, indem er freien Text eingibt, anstatt auf eine Schaltfläche zu tippen. Diese Eigenschaft wird ignoriert, wenn ein Benutzer auf eine Schaltfläche tippt, da die Payload der Schaltfläche bestimmt, welche Variablenwerte festgelegt werden. Wenn die Eigenschaft "variable" bereits festgelegt wurde, wenn die Dialog-Engine in diesen Status wechselt, wird der Status übersprungen. Referenzieren Sie bei Mischentitys die Mischentityvariable. Benutzer werden in der Mischentity zur Eingabe der einzelnen Entitywerte aufgefordert. Wenn alle Entitywerte festgelegt sind, geht die Komponente in den nächsten Status über. |
Nein |
nlpResultVariable |
Legt die Eigenschaft variable mit einem Entitywert fest (wenn dieser Entitywert noch nicht für die referenzierte Variable festgelegt wurde). Sie können nlpResultVariable aktivieren, um einen Wert zurückzugeben, wenn Sie diesen mit einer Variablen definieren, die die NLP-Ergebnisse enthält (wie iResult: "nlpresult" in den Beispielbots). In diesem Fall kann die Eigenschaft nlpResultVariable den Wert bei Null dennoch auffüllen, wenn sie eine aufgelöste Entity findet, die mit der von der Variablen referenzierten Entity übereinstimmt. Der Dialog geht in den nächsten Status über, wenn nlpResultVariable den Wert festlegt. Sie können diese Eigenschaft anstelle der Komponente System.SetVariable verwenden.
|
Nein |
useFullEntityMatches |
Wenn dieser Wert auf true gesetzt ist, werden benutzerdefinierte Entitywerte als JSON-Objekte gespeichert (ähnlich wie integrierte Entitywerte). Auf diese Weise können Sie Ausdrücke für den Zugriff auf Eigenschaften wie value , primaryLanguageValue und originalString erstellen. Diese sind besonders wichtig für Skills, die derzeit mehrsprachig sind oder das noch werden können.
|
Nein |
maxPrompts |
Bevor die Komponente System.CommonResponse den Variablenwert auffüllen kann, den Sie für die Eigenschaft variable aus dem vom Benutzer eingegebenen Text angegeben haben, validiert sie den Wert mit dem Variablentyp. Dies kann eine Entitytypvalidierung oder bei einem primitiven Typ ein Wert sein, der in den primitiven Typ umgewandelt werden kann.
Wenn die Komponente den Wert nicht validieren kann, sendet die Dialog-Engine den Nachrichtentext und die Optionen erneut. (Sie können diese Nachricht ändern, um den Validierungsfehler wiederzugeben.) Um eine Endlosschleife zu vermeiden, wenn ein Benutzer fortlaufend einen ungültigen Wert eingibt, legen Sie mit dieser Eigenschaft einen Grenzwert für die Anzahl von Versuchen fest, die der Benutzer hat. Wenn der Benutzer diese Anzahl überschreitet, geht die Komponente Wie in Mischentity erstellen beschrieben, können einzelne Entitys in der Mischentity diese Einstellung außer Kraft setzen, wenn die Option Maximale Benutzereingabeversuche festgelegt ist. |
Nein |
keepTurn |
Die Eigenschaft keepTurn gilt nur, wenn Sie die Eigenschaft processUserMessage auf false setzen. Informationen zum Festlegen dieser Eigenschaft finden Sie unter System.Output.
|
Nein |
translate |
Mit dieser Eigenschaft können Sie den booleschen Wert außer Kraft setzen, den Sie für die Kontextvariable autotranslate festgelegt haben. Wenn Sie diese Variable nicht festgelegt oder auf false gesetzt haben, können Sie diese Eigenschaft auf true setzen, um die automatische Übersetzung nur für diese Komponente zu aktivieren. Wenn die Variable autotranslation auf true gesetzt ist, können Sie diese Eigenschaft auf false setzen, um diese Komponente von der automatischen Übersetzung auszuschließen. Siehe Übersetzungsservices in Skills.
|
Nein |
footerText |
Erweitert die Ausgabe auf textbasierten Kanälen. Wie unter Footer beschrieben, können Sie FreeMarker-Ausdrücke verwenden, um den Footertext für Nur-Text-Kanäle bedingt zu formatieren. | Nein |
transitionAfterMatch (veraltet)
|
Ein boolescher Wert, der bei true einen temporären Übergang vom Entityabgleich, der von dieser Komponente ausgeführt wird, zu einem anderen Status ermöglicht. Diese Eigenschaft wird nicht mehr unterstützt. Um diese Funktionalität abzurufen, verwenden Sie einen Entity Event Handler |
Nein |
cancelPolicy |
Bestimmt den Zeitpunkt des cancel -Übergangs:
maxPromptsReached -Handler auf Element- oder Ereignisebene registriert haben. |
Nein |
Im Folgenden finden Sie die YAML für einen Beispielstatus basierend auf der Komponente System.CommonResponse
.
AskPizzaSize:
component: "System.CommonResponse"
properties:
variable: "pizzaSize"
nlpResultVariable: "iresult"
maxPrompts: 2
metadata:
responseItems:
- type: "text"
text: "<#if system.invalidUserInput == 'true'>Invalid size, please try again.\
\ </#if>What size do you want?"
name: "What size"
separateBubbles: true
actions:
- label: "${enumValue}"
type: "postback"
payload:
action: ""
variables:
pizzaSize: "${enumValue}"
name: "size"
iteratorVariable: "pizzaSize.type.enumValues"
processUserMessage: true
transitions:
actions:
cancel: "Intent"
next: "AskLocation"
Tipp:
Die Eigenschafttext
in diesem Snippet wird mit Apache FreeMarker Template Language (FTL) definiert. Weitere Informationen zum Hinzufügen von FTL-Ausdrücken und Verwenden von in FreeMarker integrierten Vorgängen zum Transformieren von Variablenwerten finden Sie unter Apache FreeMarker Template Language-Syntax.
Übergänge für die Komponente System.CommonResponse
Übergang | Beschreibung |
---|---|
cancel |
Wird ausgelöst, wenn ein Benutzer die von der Eigenschaft maxAttempts zugewiesenen Versuche überschreitet, oder wenn er den Ablauf umleitet.
|
textReceived |
Wird ausgelöst, wenn ein Benutzer Text oder Emojis sendet, anstatt auf eine Aktionsschaltfläche oder einen Link zu tippen. |
attachmentReceived |
Wird ausgelöst, wenn ein Benutzer einen Bild-, Audio-, Video- oder Dateianhang sendet. |
locationReceived |
Wird ausgelöst, wenn der Benutzer einen Standort sendet. |
system.outOfOrderMessage |
Legen Sie diese Option fest, um unerwartetes Benutzerverhalten zu umgehen. Dies ist insbesondere der Fall, wenn ein Benutzer nicht in der aktuellen Nachricht auf ein Aktionselement tippt, sondern stattdessen auf eine Aktion tippt, die zu einer älteren Nachricht in der Chatsession gehört. |
Mischentityübergänge in der Komponente System.CommonResponse
System.CommonResponse
-Komponenten lösen die Aktionen match
und cancel
basierend auf den Werten aus, die mit der Benutzereingabe und Ihrer Konfiguration der Eigenschaft cancelPolicy
übereinstimmen.
Aktion | Beschreibung | Erforderlich? |
---|---|---|
match |
Die Komponente löst diese Aktion aus, um in den angegebenen Status zu navigieren, wenn mindestens eine Entity in der Mischentity mit der Benutzereingabe übereinstimmt. | Nein |
cancel |
Die Komponente löst diese Aktion aus, um basierend auf der Einstellung für die Eigenschaft cancelPolicy zum angegebenen Status zu wechseln.
|
Nein |
System.Webview
In diesem Thema wird die Verwendung dieser Komponente im YAML-Modus behandelt. Informationen zur Verwendung im Visual Flow Designer finden Sie unter Webview-Komponente.
Die Komponente System.Webview
öffnet eine Webview in Ihrem Skill oder für Skills, die in einem Webkanal ausgeführt werden, auf einer Browserregisterkarte.
System.WebView Komponenteneigenschaften
Eigenschaft | Beschreibung | Erforderlich? |
---|---|---|
sourceVariableList |
Eine durch Komma getrennte Liste mit Kontext- oder Benutzervariablennamen. Diese Variablennamen sind die Parameter, die an die Webview gesendet werden. Sie sind die Eingabeparameter aus Ihrem Bot. Sie können jede Variable festlegen, indem Sie eine Reihe von System.SetVariable -Status vor dem Status System.Webview hinzufügen.
|
Ja |
variable |
Der Name der Variablen (ein Zeichenfolgenwert), mit der die Webview-Payload identifiziert wird, die an den Bot zurückgegeben wird, nachdem der Benutzer seine Interaktionen innerhalb der Webview abgeschlossen hat.
Die Payload ist in dieser Variablen gespeichert, auf die Sie zu einem späteren Zeitpunkt in der Definition des Dialogablaufs zugreifen können. Sie können dies beispielsweise in einer Ausgabekomponente referenzieren. |
Ja |
prompt |
Eine Textzeichenfolge wie "Tippen, um fortzufahren". | Nein |
service |
Der Name des Webview-Komponentenservice. | Nein |
imageUrl |
Die URL zu dem Bild für einen Prompt. | Nein |
linkLabel |
Das Label für die Schaltfläche, die die Webanwendung aufruft. | Nein |
cancelLabel |
Das Label für die Schaltfläche "Abbrechen", mit der Benutzer den Status verlassen können, ohne die Webanwendung aufzurufen. | Nein |
autoNumberPostbackActions |
Aktiviert die Benutzereingabe in SMS-Kanälen, die keine Schaltflächen unterstützen, indem Zahlenäquivalente zu den UI-Elementen hinzugefügt werden.
|
Nein |
translate |
Mit dieser Eigenschaft können Sie den booleschen Wert außer Kraft setzen, den Sie für die Kontextvariable autotranslate festgelegt haben. Wenn Sie diese Variable nicht festgelegt oder auf false gesetzt haben, können Sie diese Eigenschaft auf true setzen, um die automatische Übersetzung nur für diese Komponente zu aktivieren. Wenn die Variable autotranslation auf true gesetzt ist, können Sie diese Eigenschaft auf false setzen, um diese Komponente von der automatischen Übersetzung auszuschließen. Siehe Übersetzungsservices in Skills.
|
Nein |
Übergänge für die Komponente "System.Webview"
Wechsel | Beschreibung |
---|---|
next |
Benennt den nächsten Status im Dialogablauf nach dem erfolgreichen Callback von der Webanwendung. |
return |
Beendet die Unterhaltung nach dem erfolgreichen Callback von der Webanwendung. |
error |
Benennt den Status, der Fehler verarbeitet. |
actions |
|
System.IncidentCreation
Mit der Komponente System.IncidentCreation
können Sie einen Vorfall auf einer Kundenservice-Site erstellen. Beachten Sie, dass Sie eine Kundenserviceintegration auf der Seite Einstellungen > Zusätzliche Services > Kundenserviceintegration erstellen müssen, bevor Sie diese Komponente in Ihrer Instanz verwenden können.
In diesem Thema wird die Verwendung dieser Komponente im YAML-Modus behandelt. Informationen zur Verwendung im Visual Flow Designer finden Sie unter Vorfallerstellung.
Nachfolgend finden Sie ein Beispiel für die Verwendung dieser Komponente, um die Unterhaltung wieder an eine Oracle B2C Service-Site zu übertragen.
component: "System.IncidentCreation"
properties:
serviceName: "IncidentService"
subject: "${incident.value.subject}"
attachmentUrl: <#if (incident.value.Attachment.url)??>${incident.value.Attachment.url}<#else></#if>
customFields:
description: "${incident.value.description}"
contactInfo: "<#if (profile.contactInfo)??>${profile.contactInfo}<#else></#if>"
contactProperties:
firstName: "${profile.firstName}"
lastName: "${profile.lastName}"
email: "${incident.value.email}"
incidentNumberVariable: "incidentNumber"
transitions:
error: "incidentError"
next: "exitIncident"
Und hier ist ein Beispiel für Oracle Fusion Service:
component: "System.IncidentCreation"
properties:
serviceName: "IncidentServiceB2BEndUserAuth"
subject: "${service.value.subject}"
attachmentUrl: <#if (service.value.Attachment.url)??>${service.value.Attachment.url}<#else></#if>
agentReportFilter: "ODAQueue"
addChatTranscript: "true"
customFields:
description: "${service.value.description}"
contactInfo: "<#if (profile.contactInfo)??>${profile.contactInfo}<#else></#if>"
contactProperties:
firstName: "${profile.firstName}"
lastName: "${profile.lastName}"
email: "<#if (profile.email)??>${profile.email}<#else></#if>"
incidentNumberVariable: "incidentNumber"
transitions:
error: "incidentError"
next: "exitIncident"
Eigenschaft | Beschreibung | Erforderlich? | |
---|---|---|---|
serviceName |
Der Name der Integration gemäß der Konfiguration unter Einstellungen > Zusätzliche Services > Kundenserviceintegration. | Ja | |
subject |
Der Text für den Betreff des Vorgangs. | Ja | |
attachmentUrl |
Die URL eines Dokuments oder Bilds, das sich auf den Vorfall bezieht. Beachten Sie, dass das Hinzufügen von Anhängen für DA-Agent-Skills nicht unterstützt wird. | Nein | |
agentReportFilter |
(Bei Vorfällen mit Oracle Fusion Service) Text zum Filtern der Vorfälle. Der Standardwert ist ODA .
|
Nein | |
addChatTranscript |
(Nur für Oracle Fusion Service-Vorfälle.) Bei 'Wahr' wird dem Vorgang ein Chattranskript hinzugefügt. Der Standardwert ist false.
Insights müssen für den Skill aktiviert sein, damit das Chattranskript verfügbar gemacht werden kann. Ein Transkript kann dem Vorfall nur hinzugefügt werden, wenn eine DA-Agent-Integration in Kombination mit Webchat for Service- oder Oracle Inlay Toolkit-Inlays verwendet wird. |
Nein | |
customFields |
Eine Map, die description und optional contactInfo enthält, die zusätzliche Details zum Vorfall enthalten können.
Die Zuordnung wird unvalidiert als Textversion des Objekts übergeben und als private Notiz in die Vorfallnachricht eingefügt. |
Nein | |
contactProperties |
Eine Zuordnung von Name/Wert-Paaren, die Informationen enthält, die zum Suchen oder Erstellen von Kontaktinformationen für den Kundenservice erforderlich sind. Er muss email enthalten und kann optional firstName und lastName enthalten.
Wenn |
Nur für Oracle B2C Service | |
incidentNumberVariable |
Der Name der Zeichenfolgenkontextvariable, in der die Vorfallnummer gespeichert werden soll. | Nein |
System.IntelligentAdvisor
Mit dieser Komponente können Sie von einem Skill aus auf ein Oracle Intelligent Advisor-Interview zugreifen.
In diesem Thema wird die Verwendung dieser Komponente im YAML-Modus behandelt. Informationen zur Verwendung im Visual Flow Designer finden Sie unter Intelligent Advisor.
Sie müssen eine Intelligent Advisor-Serviceintegration erstellen, bevor Sie diese Komponente verwenden können. Siehe Intelligent Advisor-Service hinzufügen. Außerdem muss das Interview im Intelligent Advisor Hub bereitgestellt und im Chatservicekanal aktiviert worden sein. Das Interview muss für anonyme Benutzer gelten. Sie können nicht auf Interviews für Portalbenutzer oder Agent-Benutzer zugreifen.
Mit den Eigenschaften der Komponente können Sie die folgenden Intervieweinstellungen angeben:
- Anzeige der Titel und Erläuterungen
- Die Labels für die Schaltflächen "Ja", "Nein" und "Weiß nicht"
- Die Zeichenfolgen, die der Benutzer zum Zurücksetzen, zum Zurückkehren zur vorherigen Frage (Rückgängig) und zum Beenden des Interviews eingibt
- Der Text, der am Ende des Interviews angezeigt werden soll
- Formulierung der Frage, ob die Erklärung angezeigt werden soll
- Die Zeichenfolge, mit der Benutzer angeben, dass Dateien vollständig hochgeladen wurden
- Die Attributwerte und Connector-Parameter, die an das Interview übergeben werden
- Das zu verwendende Projektgebietsschema
Beispiel:
loanAdvisorIA:
component: "System.IntelligentAdvisor"
properties:
intelligentAdvisorService: "myService"
deployment: "Loan Advisor"
# default yesLabel: "yes"
# default noLabel: "no"
uncertainLabel: "not sure"
endLabel: "You can ask me another question if there's something else that I can help
you with."
# default doneLabel: "/done"
# default undoLabel: "/back"
# default resetLabel: "/reset"
# default exitLabel: "/exit"
showExplanation: "ask"
# default explanationAskLabel: "Do you want to see the explanation?"
# default removeHtml: false
transitions:
error: "handleIAError"
next: "endOfFlow"
handleIAError:
component: "System.Output"
properties:
text: |
We are having a problem with a connection.
Can you please send email to
contact@example.com to let them know that
the loan advisor isn't working? Thank you.
transitions:
next: "endOfFlow"
Ein Beispiel, das die Komponente in einem Dialogablauf verwendet, finden Sie unter Intelligent Advisor-Komponente im Skill verwenden.
Tipp:
Die Standardwerte für alle Beschriftungseigenschaften werden im Resource Bundle des Skills gespeichert. Um einen Standardwert zu ändern, öffnen Sie die Seite Resource Bundle des Skills, klicken Sie auf
Mit dem Konfigurations-Resource Bundle können Sie auch die folgenden Nachrichten ändern: IntelligentAdvisor - defaultValue, IntelligentAdvisor - doneHelp, IntelligentAdvisor - maskLabel, IntelligentAdvisor - outOfOrderMessage, IntelligentAdvisor - resumeSessionPrompt, IntelligentAdvisor - numberMinMax, IntelligentAdvisor - outOfOrderMessage, IntelligentAdvisor - resumeSessionPrompt und IntelligentAdvisor - yesNoMessage. Beispiel: Die Nachricht IntelligentAdvisor - doneHelp wird für Anhangsfelder ausgegeben. Sie wird standardmäßig auf When you are done with the upload, say {0}.
gesetzt. Möglicherweise sollten Sie es in Say {0} to let me know that you are done uploading.
ändern.
Eigenschaft | Beschreibung | Erforderlich? |
---|---|---|
currency |
Der ISO-4217-Währungscode für die im Interview verwendete Währung. Wenn dieser Schlüssel angegeben ist, kann der Benutzer nur Währungswerte in den für diese Währung zulässigen Formaten eingeben. Sie können diese Eigenschaft auf leer setzen oder ausschließen, wenn das Interview keine Währungsbeträge anfordert oder keine bestimmte Währung erwartet. | Nein |
deployment |
Der Name des aktiven Deployment-Projekts im Intelligent Advisor Hub. | Ja |
doneLabel |
Der Text, den die Benutzer eingeben, um anzugeben, dass sie eine Datei hochgeladen haben.
Der Standardwert ist |
Nein |
endLabel |
Text, der am Ende des Interviews im Chat angezeigt wird.
Der Standardwert ist |
Nein |
exitLabel |
Der Text, den die Benutzer eingeben, um anzugeben, dass sie das Interview beenden möchten.
Der Standardwert ist |
Nein |
explanationAskLabel |
Die Frage, die gestellt werden soll, wenn showExplanation auf ask gesetzt ist.
Der Standardwert ist |
Nein |
hideScreenTitle |
Gibt an, ob alle Bildschirmtitel im Interview ausgeblendet werden sollen.
Der Standardwert ist |
Nein |
intelligentAdvisorService |
Der Name des Intelligent Advisor-Service, der in Einstellungen > Zusätzliche Services konfiguriert ist. | Ja |
interviewAttributes |
Der Name einer Kontextvariablen des Typs "Zeichenfolge", in der die Attributwerte des Interviews gespeichert werden sollen. Die Attributwerte werden als Array von Schlüssel/Wert-Paaren gespeichert. | Nein |
locale |
Diese Eigenschaft wirkt sich sowohl auf das Zielinterview als auch auf die Datums- und Zahlenauflösung aus. Die Komponente initiiert die Version des benannten Interviews (Deployments), das mit der Sprache verknüpft ist, die durch die Eigenschaft Bei der Datums- und Zahleneingabe werden die Werte gemäß den Entityeinstellungen DATE und NUMBER berechnet. Wenn Gebietsschema des Endbenutzers berücksichtigen für die Entity auf "Ein" gesetzt ist, wird der Wert für das Gebietsschema aufgelöst, das von dieser Eigenschaft (oder dem Standardwert, wenn nicht angegeben) angegeben wird. Siehe Gebietsschemabasierte Entityauflösung. Diese Eigenschaft wird standardmäßig auf den Wert |
Nein |
noLabel |
Das Label für boolesche FALSE-Werte.
Der Standardwert ist |
Nein |
params |
Eine Zuordnung von Schlüssel/Wert-Verbindungsparametern, die beim Start des Interviews übergeben werden sollen. Dies ist in der Regel für Interviews mit externer Datenintegration erforderlich. | Nein |
removeHtml |
Gibt an, ob das HTML-Markup aus dem Text entfernt werden soll. Der Standard ist false .
|
Nein |
resetLabel |
Der Text, den Benutzer eingeben, um anzugeben, dass sie zur ersten Frage zurückkehren möchten.
Der Standardwert ist |
Nein |
seedData |
Eine Map der Attributnamen und -werte von Intelligent Advisor, die an das Interview übergeben werden. Verwenden Sie für Datums- und Uhrzeitattribute die standardmäßigen Datums- und Uhrzeitformate von Intelligent Advisor. Beispiel: start_date: "2010-01-31" .
Für das Attribut, an das Sie den Wert übergeben, muss die Option Von URL-Parameter vordefinieren in Policy Modeling aktiviert sein. |
Nein |
showExplanation |
Gibt an, ob die Intelligent Advisor-Erläuterung angezeigt werden soll. Die zulässigen Werte sind never , always und ask .
Geben Sie bei Der Standard ist |
Nein |
uncertainLabel |
Das Label, das der Benutzer eingeben kann, wenn er den Wert nicht kennt. Dieses Label wird für optionale boolesche Optionsfelder angezeigt.
Der Standardwert ist |
Nein |
undoLabel |
Der Text, den die Benutzer eingeben, um anzugeben, dass sie zur vorherigen Frage zurückkehren möchten.
Der Standardwert ist |
Nein |
yesLabel |
Das Label für die Darstellung boolescher TRUE-Werte.
Standardwert ist |
Nein |
Beispiel: Intelligent Advisor-Komponente im Skill verwenden
####################
# Loan Advisor
####################
loanAdvisorStart:
component: "System.Output"
properties:
keepTurn: true
text: |
OK, I can initiate a loan request for you.
But first I'll transfer you to an
automated advisor that will ask some
questions about the loan that you want,
your assets, your liabilities, and your
financial history. It shouldn't take
more than 5 minutes.
<#if (user.notFirstTime)??><#else>
At any time, you can say
/back to go to the previous question,
/reset to start over or
/exit to stop the questions.</#if>
transitions:
next: "setNotFirstTime"
setNotFirstTime:
component: "System.SetVariable"
properties:
variable: "user.notFirstTime"
value: true
transitions:
next: "loanAdvisorIA"
loanAdvisorIA:
component: "System.IntelligentAdvisor"
properties:
intelligentAdvisorService: "myService"
deployment: "Loan Qualifier"
# default yesLabel: "yes"
# default noLabel: "no"
uncertainLabel: "not sure"
endLabel: " "
# default doneLabel: "/done"
# default undoLabel: "/back"
# default resetLabel: "/reset"
# default exitLabel: "/exit"
showExplanation: "ask"
# default explanationAskLabel: "Do you want to see the explanation?"
interviewAttributes: "interviewDetails"
transitions:
error: "handleIAError"
next: "handleEligibility"
handleEligibility:
component: "System.Switch"
properties:
source: <#list interviewDetails.value as i><#if i.key = 'eligibility'>${i.val}</#if></#list>
# The values that are matched against the value of the variable or source property. The value that matches is set as transition action
values:
- "eligible"
- "noteligible"
transitions:
actions:
eligible: "initiateLoan"
noteligible: "suggestNextSteps"
NONE: "handleUnexpectedAttributeValue" # the attribute value was other than eligible or noteligible or the user exited interview
error: "handleAttributeNotSet" # the attribute wasn't set during the interview or the key is incorrect
handleIAError:
component: "System.Output"
properties:
text: |
We are having a problem with a connection.
Can you please send email to
contact@example.com to let them know that
the loan advisor isn't working? Thank you.
transitions:
next: "endOfFlow"
...
Beispiel: Auf Interviewattribute zugreifen
Im Folgenden finden Sie ein einfaches Beispiel für den Zugriff auf die Attributwerte eines Interviews:
context:
variables:
iResult: "nlpresult"
interviewDetails: "string"
states:
...
loanAdvisorIA:
component: "System.IntelligentAdvisor"
properties:
intelligentAdvisorService: "myService"
deployment: "Loan Qualifier"
# default yesLabel: "yes"
# default noLabel: "no"
uncertainLabel: "not sure"
endLabel: " "
# default doneLabel: "/done"
# default undoLabel: "/back"
# default resetLabel: "/reset"
# default exitLabel: "/exit"
showExplanation: "ask"
# default explanationAskLabel: "Do you want to see the explanation?"
interviewAttributes: "interviewDetails"
transitions:
error: "handleIAError"
next: "handleEligibility"
handleEligibility:
component: "System.Switch"
properties:
source: <#list interviewDetails.value as i><#if i.key = 'eligibility'>${i.val}</#if></#list>
# the values that are matched against the value of the variable or source property. The value that matches is set as transition action
values:
- "eligible"
- "noteligible"
transitions:
actions:
eligible: "initiateLoan"
noteligible: "suggestNextSteps"
NONE: "handleUnexpectedAttributeValue" # the attribute value was other than eligible or noteligible or the user exited interview
error: "handleAttributeNotSet" # the attribute wasn't set during the interview or the key is incorrect
...
System.KnowledgeSearch
In diesem Thema wird die Verwendung dieser Komponente im YAML-Modus behandelt. Informationen zur Verwendung im Visual Flow Designer finden Sie unter Knowledge Search.
Mit dieser Komponente können Sie in Oracle B2C Service Knowledge Foundation oder Oracle Fusion Service Knowledge Management nach Informationen über einen bestimmten Suchbegriff suchen und die Ergebnisse anzeigen.
Bei Oracle B2C Service hängen die Ergebnisse, die der Service zurückgibt, davon ab, ob die Antworten öffentlich sind und welche Zugriffsebene, welches Produkt und welche Kategorieeinstellungen ausgewählt sind.
Sie müssen einen Knowledge-Suchservice erstellen, bevor Sie diese Komponente verwenden können. Siehe Knowledge-Suchservice hinzufügen.
Nachfolgend finden Sie ein Beispiel für die Verwendung dieser Komponente. Dabei wird ein Knowledge Management-Service nach allen Informationen durchsucht, die sich auf die letzte Äußerung des Benutzers beziehen. Weitere Beispiele finden Sie unter Knowledge-Suchkomponente verwenden.
searchFor: knowledgeSearch:
component: "System.KnowledgeSearch"
properties:
searchServiceName: "myKnowledgeSearch"
searchTerm: "${iResult.value.query}"
searchPrelude: "I don't know the answer for that. Let me search for an answer."
resultSizeLimit: 5
resultVersion: "Special Response"
resultVersionExclusive: true
resultLinkLabel: "Show More"
searchLinkLabel: "Open Page with All Answers" # For B2B set to "Go to search home page"
noResultText: "I don't have an answer for that. Try rephrasing your question."
transitions:
actions:
resultSent: "reset"
noResult: "reset"
serverError: "handleSearchServerProblem"
error: "handleSearchError"
next: "reset"
Tipp:
Die Standardwerte für die EigenschaftendefaultAttachmentLabel
, noResultText
und resultLinkLabel
werden im Resource Bundle des Skills gespeichert. Um einen Standardwert zu ändern, öffnen Sie die Seite Resource Bundle des Skills, klicken Sie auf 
Eigenschaft | Beschreibung | Erforderlich? |
---|---|---|
cardLayout |
Gibt an, ob die Ergebniskarten vertikal oder horizontal angezeigt werden sollen. Der Standardwert ist horizontal .
|
Nein |
customFilters |
Eine Liste der Suchergebnisfilter, die als Name/Wert-Paare dargestellt werden. Die zulässigen Filternamen sind product und category . Jeder von ihnen erlaubt nur eine Filterdeklaration. Siehe Ergebnisse nach Produkt und Kategorie filtern.
|
Nein |
customProperties |
Nur Oracle B2C Service: Eine Zuordnung von Schlüssel/Wert-Paaren, die an den Suchservice gesendet werden sollen. Derzeit unterstützt diese Eigenschaft nur den Schlüssel word_connector . Mit der Eigenschaft word_connector , die auf AND gesetzt ist, stellen Sie jedem Wort im Suchbegriff + voran.
|
Nein |
defaultAttachmentLabel |
Das Standardlabel, das für die URL-Aktion der Ergebniskarte verwendet wird, die mit einem Anhang verknüpft ist, wenn der Anhang keinen konfigurierten Anzeigenamen aufweist. Bei Verwendung wird eine Indexnummer angehängt. Beispiel: Wenn der zweite Anhang keinen Anzeigenamen hat, wird an das Standardanhangslabel Der Standardwert ist |
Nein |
locale |
Der Standardwert ist der Wert der Variable profile.locale .
Bei Knowledge Integration Services für Oracle B2C Service mit mehreren Schnittstellen ist dies der aus fünf Zeichen bestehende ISO- oder BCP-Gebietsschemacode, der angibt, welche Schnittstelle für die Suche verwendet werden soll (Beispiel: en_GB). Wenn keine Schnittstelle das Gebietsschema unterstützt, wird die Standardschnittstelle verwendet. Siehe Mehrsprachige Knowledge-Suche implementieren. Bei Oracle Fusion Service werden die Artikel abgerufen, die dem angegebenen Gebietsschema zugeordnet sind. Wenn keine übereinstimmenden Artikel für das Gebietsschema vorhanden sind, wird |
Nein |
noResultText |
Der Text, der ausgegeben werden soll, wenn kein Suchergebnis verfügbar ist. Standardmäßig wird der Text aus dem Resource Bundle-Eintrag KnowledgeSearch - noResultText angezeigt. |
Nein |
resultLinkLabel |
Das Label, das für die URL-Aktion (Schaltfläche) der Ergebniskarte verwendet werden soll, die mit der Webversion der Informationen verknüpft wird. Standardmäßig wird der Text aus dem Resource Bundle-Eintrag KnowledgeSearch - resultLinkLabel angezeigt. Wenn Sie diese Eigenschaft auf |
Nein |
resultSizeLimit |
Die maximale Anzahl anzuzeigender Ergebnisse. Der Standard lautet |
Nein |
resultVersion |
Nur Oracle B2C Service: Die bevorzugte Version, die zurückgegeben werden soll, wenn mehrere Versionen für ein Ergebnis vorhanden sind. Sie können diese Eigenschaft auf Sie können spezielle Antworten nutzen, um Ausgaben anzuzeigen, die speziell auf Chatunterhaltungen und nicht auf Webseiten zugeschnitten sind. Die Standardversion ist |
Nein |
resultVersionExclusive |
Nur Oracle B2C Service: Gibt an, ob nur Ergebnisse angezeigt werden sollen, die in der bevorzugten Version verfügbar sind. Bei Der Standard ist |
Nein |
searchLinkLabel |
Oracle B2C Service: Das Label, das für die Payload-Aktion der Kartennachricht verwendet werden soll, die mit der Webseite mit der vollständigen Suchergebnisliste verknüpft ist. Oracle Fusion Service: Das Label, das für die Payload-Aktion für Kartennachrichten verwendet werden soll, die mit der Homepage für die Suche verknüpft ist. Wenn diese Eigenschaft nicht festgelegt ist, zeigt die Payload der Kartennachricht die Aktion nicht an. |
Nein |
searchPrelude |
Der Text, der vor der Anzeige des Suchergebnisses ausgegeben werden soll. Wenn diese Eigenschaft nicht festgelegt ist, wird der Text aus dem Resource-Bundle-Eintrag KnowledgeSearch - searchPrelude ausgegeben. Wenn der Suchauftakt nicht angezeigt werden soll, setzen Sie diese Eigenschaft auf |
Nein |
searchServiceName |
Der Name der Knowledge-Suchintegration, wie in den Einstellungen konfiguriert. | Ja |
searchTerm |
Der Text, der als Suchbegriff für den Knowledge-Suchaufruf verwendet werden soll. Für Oracle Fusion Service Knowledge Management ist ein Suchbegriff erforderlich. Für Oracle B2C Service Knowledge Foundation werden die beliebtesten Artikel zurückgegeben, wenn kein Suchbegriff angegeben wird.
Techniken für Suchbegriffe finden Sie unter Knowledge-Suchkomponente verwenden. |
Ja |
System.KnowledgeSearch-Übergänge
Aktion | Beschreibung |
---|---|
resultSent |
Die Suche hat mindestens ein Ergebnis zurückgegeben. |
noResult |
Für den Suchbegriff gab es keine Ergebnisse. |
serverError |
Während des Aufrufs ist auf dem Server des Knowledge-Suchservice ein Fehler aufgetreten, wie z.B. ein Serverfehler oder ein unerwarteter Fehler.
Wenn dieser Fehler auftritt, wird die Fehlermeldung in |
Beispiel: Zugehörige Fragen einem Suchbegriff in einem YAML-Dialogablauf zuordnen
Das folgende Diagramm veranschaulicht, wie Sie die Single State-Methode implementieren, wenn Ihr Dialogablauf im YAML-Modus erstellt wird. 1) Sie verwenden eine Map-Kontextvariable, um die Knowledge Intents mit Suchbegriffen zu verknüpfen. 2) Sie legen die Aktion im Status Intent
, um zu einem Datenfluss zu wechseln, der die Zuordnung verwendet, um die Kontextvariable searchTerm
auf den Suchbegriff des Intents festzulegen. 3) Sie wechseln dann zu einem Status, der die Wissensdatenbank nach dem Wert searchTerm
durchsucht.
Beschreibung der Abbildung kf-assoc-intent-term.png
Im Folgenden finden Sie ein Beispiel für einen Dialogablauf, in dem für jede Knowledge-Base-Antwort individuelle Intents vorhanden sind.
context:
variables:
iResult: "nlpresult"
intentName: "string"
searchTerm: "string"
searchTerms: "map"
someVariable: "string" # For the reset state
states:
#
# Set search term for each knowledge intent
#
setSearchTerms:
component: "System.SetVariable"
properties:
variable: "searchTerms"
value:
knowledge.Shipping Return Costs: "Shipping Return Costs"
knowledge.Locate Service Tag or Serial: "Locating Your Service Tag or Asset Serial Number"
knowledge.Support Account: "My Support Account"
knowledge.Product Registration: "How do I register my product?" # (1)
knowledge.Noncontiguous Delivery Time: "What is the delivery time to Alaska, Hawaii and the U.S. Territories?"
knowledge.Return Policy: "What is your return policy?"
transitions:
next: "intent"
intent:
component: "System.Intent"
properties:
variable: "iResult"
transitions:
actions:
system.Greeting: "welcome"
system.Unsatisfactory Response: "transferToAgent"
system.Request Agent: "transferToAgent"
knowledge.Shipping Return Costs: "startIntentKnowledgeSearch"
knowledge.Locate Service Tag or Serial: "startIntentKnowledgeSearch"
knowledge.Support Account: "startIntentKnowledgeSearch"
knowledge.Product Registration: "startIntentKnowledgeSearch" # (2)
knowledge.Noncontiguous Delivery Time: "startIntentKnowledgeSearch"
knowledge.Return Policy: "startIntentKnowledgeSearch"
unresolvedIntent: "genericKnowledgeSearch"
#
# Start knowledge search for a knowledge intent's search term
# based on searchTerms context variable
#
# First, reset variables
#
startIntentKnowledgeSearch: # (2)
component: "System.ResetVariables"
properties:
variableList: "searchTerm, intentName"
transitions:
next: "setIntentName"
#
# Set the intentName context variable
#
setIntentName:
component: "System.SetVariable"
properties:
variable: "intentName"
value: "${iResult.value.intentMatches.summary[0].intent}"
transitions:
next: "setSearchTerm"
#
# Get the search term to use for the intent
#
setSearchTerm:
component: "System.SetVariable"
properties:
variable: "searchTerm"
value: "${searchTerms.value[intentName.value]}"
transitions:
next: "knowledgeSearchForGivenSearchTerm" # (3)
#
# This state searches for the searchTerm variable's value
#
knowledgeSearchForGivenSearchTerm:
component: "System.KnowledgeSearch"
properties:
# Set to the name of the search service that is configured in Settings
searchServiceName: "KnowledgeSearch"
searchTerm: "${searchTerm.value}" # put the search term here (3)
# searchPrelude: Optional property. If missing, there's no search prelude.
resultSizeLimit: 1 # Change to how many articles to show.
# resultVersion: Optional property. Defaults to "Answer".
# resultVersionExclusive: Optional property. Defaults to false.
resultLinkLabel: "Show More"
# defaultAttachmentLabel: Optional property. Defaults to "Download"
searchLinkLabel: "Search for Similar Answers"
noResultText: >
I don't have an answer for that. Try rephrasing your question
(or you can ask to speak to a live agent).
# cardLayout: Optional property. Defaults to "horizontal"
transitions:
actions:
resultSent: "offerMoreHelp"
noResult: "reset"
serverError: "handleSearchServerProblem"
error: "handleSearchError"
next: "reset"
#
# This state is called after knowledge search returns its results.
#
offerMoreHelp:
component: "System.Output"
properties:
text: >
You can ask me another question if there's something
else that I can help you with.
transitions:
return: "offerMoreHelp"
#
# This state is called when there's a problem accessing the knowledge base such
# as a server error fault or an unexpected error fault. When this error occurs,
# the error message is stored in system.state.<state-name>.serverError.message.
#
handleSearchServerProblem:
component: "System.Output"
properties:
text: >
I'm not able to get an answer for that question. Let me know
if there's anything else I can help you with.
transitions:
return: "handleSearchServerProblem"
#
# This state is called when there's a problem using the knowledge search component
# such as when there's a problem with the knowledge search integration configuration
#
handleSearchError:
component: "System.Output"
properties:
text: >
Oops, my answer mechanism for that isn't working properly.
You can ask a different question or ask to speak to an agent?
transitions:
return: "handleSearchError"
#
# This state ends the conversation
#
reset:
component: "System.SetVariable"
properties:
variable: "someVariable"
value: "x"
transitions:
return: "reset"
Beispiel: Benutzeräußerung als Suchbegriff verwenden
Das folgende Beispiel zeigt, wie Sie die searchTerm
auf die Äußerung des Benutzers in einem YAML-Dialogskill festlegen. Bei einem visuellen Dialogskill verwenden Sie stattdessen ${skill.system.nlpresult.value.query}
.
context:
variables:
iResult: "nlpresult"
someVariable: "string" # For the reset state
states:
intent:
component: "System.Intent"
properties:
variable: "iResult"
transitions:
actions:
system.Greeting: "welcome"
system.Unsatisfactory Response: "transferToAgent"
...
unresolvedIntent: "genericKnowledgeSearch"
#
# This state searches the knowledge base with the user input as the search term.
#
genericKnowledgeSearch:
component: "System.KnowledgeSearch"
properties:
# Set to the name of the search service that is configured in Settings
searchServiceName: "KnowledgeSearch"
searchTerm: "${iResult.value.query}"
searchPrelude: "I don't know the answer offhand. Let's see what articles we have..."
resultSizeLimit: 3 # Change to how many articles to show. Defaults to 10.
# resultVersion: Optional property. Defaults to "Answer".
# resultVersionExclusive: Optional property. Defaults to false.
resultLinkLabel: "Show More"
# defaultAttachmentLabel: Optional property. Defaults to "Download"
searchLinkLabel: "Open Page with All Answers"
noResultText: >
I couldn't find any articles about that. Try rephrasing your
question (or you can ask to speak to a live agent).
# cardLayout: Optional property. Defaults to "horizontal"
transitions:
actions:
resultSent: "offerMoreHelp"
noResult: "reset"
serverError: "handleSearchServerProblem"
error: "handleSearchError"
next: "reset"
#
# This state is called after knowledge search returns its results.
#
offerMoreHelp:
component: "System.Output"
properties:
text: >
You can ask me another question if there's something
else that I can help you with.
transitions:
return: "offerMoreHelp"
#
# This state is called when there's a problem accessing the knowledge base such
# as a server error fault or an unexpected error fault. When this error occurs,
# the error message is stored in system.state.<state-name>.serverError.message.
#
handleSearchServerProblem:
component: "System.Output"
properties:
text: >
I'm not able to get an answer for that question. Let me know
if there's anything else I can help you with.
transitions:
return: "handleSearchServerProblem"
#
# This state is called when there's a problem using the knowledge search component
# such as when there's a problem with the knowledge search integration configuration
#
handleSearchError:
component: "System.Output"
properties:
text: >
Oops, my answer mechanism for that isn't working properly.
You can ask a different question or ask to speak to an agent?
transitions:
return: "handleSearchError"
#
# This state ends the conversation
#
reset:
component: "System.SetVariable"
properties:
variable: "someVariable"
value: "x"
transitions:
return: "reset"
System.AgentTransfer
Mit der Komponente System.AgentTransfer
können Sie in digitalen DA-Agents die Unterhaltung zurück an den Chatservice übertragen. Die Unterhaltung wird gemäß den im Chatservice konfigurierten Chatregeln an einen Live-Agent weitergeleitet.
In diesem Thema wird die Verwendung dieser Komponente im YAML-Modus behandelt. Informationen zur Verwendung im Visual Flow Designer finden Sie unter Agent-Transfer.
Diese Komponente ist für Unterhaltungen bestimmt, die aus einem Servicechat stammen, wie in Digital Assistant-Agent-Framework in Aktion beschrieben. Verwenden Sie stattdessen System.AgentConversation für Unterhaltungen, die aus dem Skill stammen.
Nachfolgend finden Sie ein Beispiel für die Verwendung dieser Komponente, um die Unterhaltung wieder an den Chatservice zu übertragen.
transferToAgent:
component: "System.AgentTransfer"
properties:
maxEngagementsInQueue: "8"
maxWaitSeconds: "300"
waitingMessage: "Let me see if a human agent is available to help you. Hold tight."
rejectedMessage: "No agents are available at this time. Please try again later."
errorMessage: "We're unable to transfer you to a human agent because there was a system error."
transitions:
actions:
accepted: "reset"
rejected: "handleRejected"
error: "offerMoreHelp"
next:
"reset"
Tipp:
In Skills mit Plattformversion 21.04 und höher werden die Standardwerte für die EigenschaftenacceptedMessage
, errorMessage
, rejectedMessage
und waitingMessage
im Resource Bundle des Skills gespeichert. Um einen Standardwert zu ändern, öffnen Sie die Seite Resource Bundle des Skills, klicken Sie auf 
Eigenschaft | Beschreibung | Erforderlich? | |
---|---|---|---|
agentStatusVariable |
Der Name der Kontextvariablen der Typzuordnung, die zum Speichern der Informationen zum Agent-Verfügbarkeitsstatus verwendet werden soll. Wenn die Eigenschaft nicht angegeben ist, werden keine Informationen gespeichert. Um eine Mapvariable zu referenzieren, verwenden Sie einen Wertausdruck wie: ${<mapVariableName>.value.<key>} . Beispiel: agentStatus.value.expectedWaitMinutes .
Informationen zu den in dieser Variablen zurückgegebenen Werten finden Sie unter System.AgentTransferCondition. |
Nein | |
allowTransferIf |
Gibt die Bedingungen an, unter denen der Skill die Chatsession übertragen soll.
Wenn die angegebenen Bedingungen nicht erfüllt sind, wird die |
Nein | |
customProperties |
Eine Map, die Informationen zum Übergeben an den Service enthält. Siehe Informationen an den Service übergeben. | Nein | |
errorMessage |
Die Nachricht, die dem Benutzer angezeigt wird, wenn beim Übertragen der Chatsession an einen Agenten ein Systemfehler auftritt. Der Standardwert ist Wir konnten Sie aufgrund eines Systemfehlers nicht übertragen . Sie können die Eigenschaft auf eine leere oder leere Zeichenfolge setzen, um die Nachrichtenausgabe zu unterdrücken.
|
Nein | |
maxEngagementsInQueue |
Die maximal zulässige Anzahl an Interaktionen, die in der Zielqueue warten. Wenn die Chatanforderung gesendet wird, antwortet der Chatservice mit der aktuellen Anzahl an Interaktionen, die in der Queue warten. Wenn dieser Wert maxEngagementsInQueue überschreitet, wird die rejected -Aktion ausgeführt. Der Standardwert ist -1 . Das bedeutet, dass die Interaktionen unbegrenzt sind.
Beachten Sie, dass die Antwort für Oracle Fusion Service Chat immer 0 lautet. Daher hat diese Eigenschaft keinen Wert für Oracle Fusion Service. |
Nein | |
maxWaitSeconds |
Die maximal zulässige Anzahl der geschätzten Wartezeit in Sekunden. Wenn der Chatservice die Übertragungsanforderung empfängt, antwortet er mit der geschätzten Wartezeit. Wenn dieser Wert maxWaitSeconds überschreitet, wird die Aktion rejected ausgeführt. Diese Eigenschaft entspricht standardmäßig -1 , d.h., es gibt keine maximale Wartezeit. Wenn dies auf -1 gesetzt ist, überträgt der digitale Assistent den Benutzer unabhängig von der geschätzten Wartezeit an einen menschlichen Agenten.
Beachten Sie, dass die Aktion |
Nein | |
rejectedMessage |
Die Nachricht, die den Benutzern angezeigt wird, wenn einer der folgenden Fälle auftritt:
Agent hat abgelehnt . Sie können die Eigenschaft auf eine leere oder leere Zeichenfolge setzen, um die Nachrichtenausgabe zu unterdrücken.
|
Nein | |
waitingMessage |
Die Nachricht, die Benutzern angezeigt wird, wenn sie in eine Queue übertragen werden. Der Standardwert ist Agent-Chatsession gestartet. Warten auf Beitritt des Agent . Sie können die Eigenschaft auf eine leere oder leere Zeichenfolge setzen, um die Nachrichtenausgabe zu unterdrücken.
|
Nein |
Diese Komponente kann folgende Aktionen zurückgeben:
Aktion | Beschreibung |
---|---|
accepted |
Der accepted -Übergang wird festgelegt, wenn der Chat erfolgreich in eine Queue übertragen wird.
Beachten Sie, dass die Unterhaltung nach Annahme einer Chatanfrage mit einem
|
rejected |
Der rejected -Übergang wird festgelegt, wenn einer der folgenden Fälle auftritt:
|
error |
Der Übergang error wird festgelegt, wenn ein Systemfehler auftritt, der die Übertragung an einen menschlichen Agenten verhindert.
|
Beispiel: An einen menschlichen Agent übertragen
Nachfolgend finden Sie ein Beispiel für einen Dialogablauf, bei dem der Chat an einen Agent übertragen wird, wenn der Kunde mit einem Agent sprechen möchte:
metadata:
platformVersion: "1.1"
main: true
name: "AutomatedAgentConversation"
context:
variables:
iResult: "nlpresult"
someVariable: "string"
states:
intent:
component: "System.Intent"
properties:
variable: "iResult"
transitions:
actions:
...
system.Unsatisfactory Response: "transferToAgent"
system.Request Agent: "transferToAgent"
...
#
# This state tries to transfer the user to another agent when the user explicitly requests for it.
#
transferToAgent:
component: "System.AgentTransfer"
properties:
maxWaitSeconds: "300"
waitingMessage: "I'm transferring you to a human agent. Hold tight."
rejectedMessage: "I wasn't able to transfer you to a human agent. Please try again later."
errorMessage: "We're unable to transfer you to a human agent because there was a system error."
transitions:
actions:
accepted: "reset"
rejected: "handleRejected"
error: "offerMoreHelp"
next: "reset"
#
# This state is called when an agent transfer is rejected.
# It lets the customer know they can ask for something else.
#
handleRejected:
component: "System.Output"
properties:
text: "Meanwhile, let me know if there's anything else I can help you with."
transitions:
return: "handleRejected"
#
# This state is called when an agent transfer encounters a system error.
# It lets the customer know they can ask for something else.
#
offerMoreHelp:
component: "System.Output"
properties:
text: >
You can ask me another question if there's something
else that I can help you with.
transitions:
return: "offerMoreHelp"
#
# This state ends the conversation with a return transition for insights purposes,
# after the user has been transferred to another agent.
#
reset:
component: "System.SetVariable"
properties:
variable: "someVariable"
value: "x"
transitions:
return: "reset"
Beispiel: Informationen an den Service übergeben
Wenn Sie eine Unterhaltung von einem digitalen Assistenten an einen Live-Agent übertragen, können Sie diese Informationen mit benutzerdefinierten Eigenschaften in der Komponente System.AgentTransfer
übergeben.
Struktur für Oracle B2C Service:
customProperties:
- name:
value:
type:
Die Eigenschaft type
ist für benutzerdefinierte Felder erforderlich. Andernfalls ist sie optional.
Die Struktur von Oracle Fusion Service lautet wie folgt:
customProperties:
- name:
value:
Beispiel für die Einstellung customProperties
für Oracle Fusion Service:
doTransfer:
component: "System.AgentTransfer"
properties:
maxWaitSeconds: "300"
allowTransferIf: "agentSessionsAreAvailable"
# Example of passing a custom property to Oracle Fusion
Service
customProperties:
# This is a checkbox custom field in the Universal Work Object.
# Checkboxes take the value of Y (selected) or N (unselected).
- name: "TriagedByODA_c"
value: "Y"
acceptedMessage: "The conversation has been transferred to a live agent."
waitingMessage: "I'm transferring you to a human. Hold tight"
rejectedMessage: "Looks like no one is available. Please try later"
errorMessage: "We're unable to transfer you to a live agent because there was a system error."
transitions:
actions:
accepted: "reset"
rejected: "handleRejected"
error: "offerMoreHelp"
next: "reset"
Tipp:
Bei Oracle Fusion Service wird die Regelauswertung bei der ersten Regel gestoppt, wenn alle Bedingungen erfüllt sind. Stellen Sie beim Konfigurieren der Regeln sicher, dass die übertragene Unterhaltung nicht wieder zum Digital Assistant-Agent umgeleitet wird. Im BeispieldoTransfer
ist die benutzerdefinierte Eigenschaft TriagedByODA_c
auf Y
gesetzt. Die Regeln können diese benutzerdefinierte Eigenschaft verwenden, um sicherzustellen, dass die Unterhaltung nicht an den Digital Assistant-Agent weitergeleitet wird, wenn sie auf Y
gesetzt ist. (Bei Oracle B2C Service bestimmt die Konfiguration Übergangsstatus und Stopp das Routing.)
System.AgentTransferCondition
Mit der Komponente System.AgentTransferCondition
in digitalen Assistenten des Typs DA-as-agent können Sie bestimmen, ob Agents verfügbar sind und, falls ja, die erwartete Wartezeit.
In diesem Thema wird die Verwendung dieser Komponente im YAML-Modus behandelt. Informationen zur Verwendung im Visual Flow Designer finden Sie unter Bedingung für Agent-Transfer.
Mit den Eigenschaften der Komponente können Sie die Übertragungsbedingungen angeben. Außerdem wird eine Aktion zurückgegeben, die angibt, ob die Bedingungen erfüllt wurden. Darüber hinaus werden die Werte der benannten Kontextzuordnungsvariablen wie folgt festgelegt:
queueId (integer, optional): The engagement queue ID,
expectedTotalWaitSeconds (integer, optional): Expected wait time in the queue in seconds
( -1 if there's inadequate information, zero or greater otherwise ).,
expectedWaitSeconds (integer, optional): The number representing the "ss" segment of the expected wait time of format mm:ss
( -1 if there's inadequate information, zero or greater otherwise ).,
expectedWaitMinutes (integer, optional): The number representing the "mm" segment of the expected wait time of format mm:ss
( -1 if there's inadequate information, zero or greater otherwise ).,
availableAgentSessions (integer, optional): Total number of sessions available across all agents.,
totalAvailableAgents (integer, optional): Total number of agents whose status is available.,
totalUnavailableAgents (integer, optional): Total number of agents whose status is unavailable.,
totalAgentsRequestingNewEngagement (integer, optional): Total number of agents who are available and have capacity.,
outsideOperatingHours (boolean, optional): True if outside operating hours. False if inside operating hours.,
engagementsInQueue (integer, optional): The number of engagements currently in the queue.,
sessionId (string, optional): The session ID.,
clientId (integer, optional): The client ID.
Im Folgenden finden Sie ein Beispiel für die Verwendung dieser Komponente, um herauszufinden, ob Agents verfügbar sind, die Wartezeit zu melden und den Benutzern das Abbrechen der Transferanforderung zu ermöglichen, wenn sie nicht so lange warten möchten.
handleAgentRequest:
component: "System.CommonResponse"
properties:
keepTurn: true
metadata:
responseItems:
- type: "text"
text: "I understand. Give me a moment while I see who might be available to help you."
transitions:
next: "evaluateAgentTransferCondition"
############################
# Agent Transfer
############################
# See if there are any agents available
evaluateAgentTransferCondition:
component: "System.AgentTransferCondition"
properties:
maxWaitSeconds: 300
maxEngagementsInQueue: 20
allowTransferIf: "agentsAreAvailable"
agentStatusVariable: "agentStatus"
transitions:
actions:
conditionsMet: "askIfWillWait"
conditionsNotMet: "handleRejected"
error: "handleTransferError"
next: "done"
askIfWillWait:
component: "System.CommonResponse"
properties:
processUserMessage: true
metadata:
responseItems:
- type: "text"
text: "${rb('promptTextForTransferDecision','minutes,seconds',agentStatus.value.expectedWaitMinutes,agentStatus.value.expectedWaitSeconds)}"
separateBubbles: true
actions:
- label: "Yes, I'll wait"
type: "postback"
keyword: "yes"
payload:
action: "yes"
name: "Yes"
- label: "No, nevermind"
keyword: "no"
type: "postback"
payload:
action: "no"
name: "No"
transitions:
actions:
yes: "transferToAgent"
no: "handleCancelled"
textReceived: "intent"
next: "handleCancelled"
# Perform the actual transfer
#
# The maxWaitSeconds, maxEngagementsInQueue, allowTransferIf,
# and customProperties, if any, should match those used for
# System.AgentTransferCondition
transferToAgent:
component: "System.AgentTransfer"
properties:
maxWaitSeconds: 300
maxEngagementsInQueue: 20
allowTransferIf: "agentsAreAvailable"
transitions:
actions:
accepted: "done"
rejected: "handleRejected"
error: "handleTransferError"
next: "handleTransferError"
Tipp:
Im Folgenden finden Sie eine vorgeschlagene Resource Bundle-Definition, mit der Sie die erwartete Wartezeit anzeigen können:This might take {minutes, plural,
=-1 {}
=0 {}
=1 {1 minute and }
other {# minutes and }
}{seconds, plural,
=-1 {a while}
=0 {{minutes, plural,
=0 {a short wait time}
other {0 seconds}
}}
=1 {1 second}
other {# seconds}
} to connect. Are you willing to wait?
Eigenschaft | Beschreibung | Erforderlich? | |
---|---|---|---|
agentStatusVariable |
Der Name der Kontextvariablen der Typzuordnung, die zum Speichern der Informationen zum Agent-Verfügbarkeitsstatus verwendet werden soll. Wenn die Eigenschaft nicht angegeben ist, werden keine Informationen gespeichert. Um eine Mapvariable zu referenzieren, verwenden Sie einen Wertausdruck wie: ${<mapVariableName>.value.<key>} . Beispiel: agentStatus.value.expectedWaitMinutes .
|
Nein | |
allowTransferIf |
Gibt das Basisset von Bedingungen an, die erfüllt werden müssen.
Wenn die angegebenen Bedingungen nicht erfüllt sind, wird die |
Nein | |
customProperties |
Eine Map, die Informationen zum Übergeben an den Service enthält. Siehe Informationen an den Service übergeben. Diese Eigenschaft wird in Version 21.04 und höher unterstützt. | Nein | |
errorMessage |
Die Nachricht, die dem Benutzer angezeigt wird, wenn der digitale Assistent Probleme mit dem Agent-Chat-Service hat. Standard ist We were unable to check the agent transfer conditions because there was a system error. . Diese Standardzeichenfolge wird im Konfigurationsressourcen-Bundle unter dem Schlüssel systemComponent_AgentTransferCondition_errorMessage gespeichert. Sie können die Eigenschaft auf eine leere oder leere Zeichenfolge setzen, um die Nachrichtenausgabe zu unterdrücken.
|
Nein | |
maxEngagementsInQueue |
Die maximal zulässige Anzahl an Interaktionen, die in der Zielqueue warten. Wenn die Anforderung gesendet wird, antwortet der Chatservice mit der aktuellen Anzahl an Interaktionen, die in der Queue warten. Wenn dieser Wert maxEngagementsInQueue überschreitet, wird die conditionsNotMet -Aktion ausgeführt. Der Standardwert ist -1 . Das bedeutet, dass die Interaktionen unbegrenzt sind.
|
Nein | |
maxWaitSeconds |
Die maximal zulässige Anzahl der geschätzten Wartezeit in Sekunden. Wenn der Chatservice die Anforderung empfängt, antwortet er mit der geschätzten Wartezeit. Wenn dieser Wert maxWaitSeconds überschreitet, wird die Aktion conditionsNotMet ausgeführt. Diese Eigenschaft entspricht standardmäßig -1 , d.h., es gibt keine maximale Wartezeit.
Beachten Sie, dass die Aktion |
Nein |
Diese Komponente kann folgende Aktionen zurückgeben:
Aktion | Beschreibung |
---|---|
conditionsMet |
Der Übergang conditionsMet wird festgelegt, wenn er innerhalb der Geschäftszeiten liegt und die Bedingungen maxWaitSeconds , maxEngagementsInQueue und allowTransferIf erfüllt sind.
|
conditionsNotMet |
Der conditionsNotMet -Übergang wird festgelegt, wenn einer der folgenden Fälle auftritt:
|
error |
Der error -Übergang wird festgelegt, wenn bei der Prüfung der Agent-Bedingungen ein Problem mit der Verbindung zum Agent-Chatservice auftritt.
|
Beispiel: Agent-Verfügbarkeit und Wartezeit abrufen
Im Folgenden finden Sie ein Beispiel für einen Dialogablauf, der die Komponente aufruft, die Wartezeit anzeigt und dem Benutzer die Möglichkeit gibt, seine Transferanforderung abzubrechen.
############################
# Agent Transfer
############################
# See if there are any agents available
evaluateAgentTransferCondition:
component: "System.AgentTransferCondition"
properties:
maxWaitSeconds: 300
maxEngagementsInQueue: 20
allowTransferIf: "agentsAreAvailable"
agentStatusVariable: "agentStatus"
transitions:
actions:
conditionsMet: "askIfWillWait"
conditionsNotMet: "setInsightsCustomMetricsConditionsNotMet"
error: "handleTransferError"
next: "done"
# Measure when agents aren't available
setInsightsCustomMetricsConditionsNotMet:
component: "System.SetCustomMetrics"
properties:
dimensions:
- name: "Agent Transfer Choice"
value: "No agents available for new chats"
transitions:
next: "handleRejected"
askIfWillWait:
component: "System.CommonResponse"
properties:
processUserMessage: true
metadata:
responseItems:
- type: "text"
text: "${rb('promptTextForTransferDecision','minutes,seconds',agentStatus.value.expectedWaitMinutes,agentStatus.value.expectedWaitSeconds)}"
separateBubbles: true
actions:
- label: "Yes, I'll wait"
type: "postback"
keyword: "yes"
payload:
action: "yes"
name: "Yes"
- label: "No, nevermind"
keyword: "no"
type: "postback"
payload:
action: "no"
name: "No"
transitions:
actions:
yes: "setInsightsCustomMetricsAgentTransferInitiated"
no: "setInsightsCustomMetricsAgentTransferCancelled"
textReceived: "intent"
next: "handleCancelled"
# Measure when user chooses to wait for transfer
setInsightsCustomMetricsAgentTransferInitiated:
component: "System.SetCustomMetrics"
properties:
dimensions:
- name: "Agent Transfer Choice"
value: "User chose to wait"
transitions:
next: "transferToAgent"
# Measure when user chooses to not wait for transfer
setInsightsCustomMetricsAgentTransferCancelled:
component: "System.SetCustomMetrics"
properties:
dimensions:
- name: "Agent Transfer Choice"
value: "User didn't want to wait"
transitions:
next: "handleCancelled"
# Perform the actual transfer
#
# The maxWaitSeconds, maxEngagementsInQueue, allowTransferIf,
# and customProperties, if any, should match those used for
# System.AgentTransferCondition
transferToAgent:
component: "System.AgentTransfer"
properties:
maxWaitSeconds: 300
maxEngagementsInQueue: 20
allowTransferIf: "agentsAreAvailable"
transitions:
actions:
accepted: "done"
rejected: "handleRejected"
error: "handleTransferError"
next: "handleTransferError"
############################
# All done
############################
done:
component: "System.Output"
properties:
text: "Let me know if you need help on anything else."
transitions:
return: "done"
handleRejected:
component: "System.CommonResponse"
properties:
keepTurn: true
metadata:
responseItems:
- type: "text"
text: >
Unfortunately, none of my colleagues are currently available to assist with this.
Still, we’d love to see this through for you.
Please feel free to reach us through email@example.com.
transitions:
next: "done"
handleCancelled:
component: "System.CommonResponse"
properties:
keepTurn: true
metadata:
responseItems:
- type: "text"
text: "OK. Maybe some other time. Please feel free to reach us through email@example.com."
transitions:
next: "done"
handleTransferError:
component: "System.CommonResponse"
properties:
keepTurn: true
metadata:
responseItems:
- type: "text"
text: "Unfortunately, we can't transfer you at this time. Please try again later."
transitions:
next: "done"
############################
# Global error handler
############################
globalErrorHandler:
component: "System.Output"
properties:
text: "Sorry, we were unable to do the action that you requested."
transitions:
next: "done"
Der Status askIfWillWait
verwendet einen Resource Bundle-Eintrag, um die Wartezeitnachricht zu bilden, sodass die Nachricht sinnvoll ist, ob die Zeit mehr oder weniger als eine Minute beträgt und ob eine Zahl 0, eine oder mehrere ist.
There are some experts online. But it might take {minutes, plural,
=-1 {}
=0 {}
=1 {1 minute and }
other {# minutes and }
}{seconds, plural,
=-1 {a while}
=0 {{minutes, plural,
=0 {a very short wait time}
other {0 seconds}
}}
=1 {1 second}
other {# seconds}
} for one to join. Are you willing to wait?
Beachten Sie, dass in diesem Beispiel System.SetCustomMetrics verwendet wird, um zu verfolgen, ob Agents verfügbar waren, und wenn ja, wie viele Benutzer gewartet haben und wie viele die Transferanforderung abgebrochen haben.
Live-Agent - Komponenten übertragen
System.AgentInitiation
Wenn Sie die Unterhaltung eines Skills an einen Oracle B2C Service-Agent übertragen möchten, fügen Sie diese Komponente dem Dialogablauf hinzu, um den Handshake mit dem Agent-Integrationskanal zu starten, der mit der Eigenschaft agentChannel
angegeben wird. Sie müssen diese Komponente aufrufen, bevor Sie die Komponente System.AgentConversation
aufrufen können.
Diese Komponente ist für Unterhaltungen bestimmt, die aus dem Skill stammen. Verwenden Sie diese Komponente nicht für Unterhaltungen, die aus einem Oracle B2C Service-Chat stammen, wie in Digital Assistant-Agent-Framework in Aktion beschrieben.
Nachfolgend finden Sie ein Beispiel für die Verwendung dieser Komponente, um den Handshake mit der Oracle B2C Service-Instanz zu initiieren, die vom Agent-Integrationskanal mit dem Namen ServiceCloudIntegration
definiert wird.
agentInitiation:
component: "System.AgentInitiation"
properties:
agentChannel: "ServiceCloudIntegration"
nlpResultVariable: "iResult"
waitingMessage: "Waiting for an agent..."
rejectedMessage: "Agents are not available right now."
resumedMessage: "We're connecting you to an agent..."
errorMessage: "Oops! We're having system issues. We're sorry, but we can't connect you with an agent right now."
transitions:
actions:
accepted: "agentConversation"
rejected: "tryAgain"
error: "tryAgain"
agentConversation:
component: "System.AgentConversation"
properties:
agentChannel: "ServiceCloudIntegration"
nlpResultVariable: "iResult"
exitKeywords: "bye, exit, take care, goodbye, quit"
expiryMessage: "Your chat with the agent timed out."
conclusionMessage: "Your chat with the agent has ended."
waitMessage: "You are number ${system.message.messagePayload.position} in the queue. Your waiting time is ${(system.message.messagePayload.waitTime>60)?then('${(system.message.messagePayload.waitTime/60)?int} mins','${system.message.messagePayload.waitTime} seconds')}."
transitions:
next: "endPrompt"
actions:
agentLeft: "endPrompt"
expired: "sessionExpired"
error" "agentConversationError"
Tipp:
In Skills mit Plattformversion 21.04 und höher werden die Standardwerte für die EigenschaftenagentActionsMessage
, errorMessage
, rejectedMessage
, resumedMessage
und waitingMessage
im Resource Bundle des Skills gespeichert. Um einen Standardwert zu ändern, öffnen Sie die Seite Resource Bundle des Skills, klicken Sie auf 
Eigenschaft | Beschreibung | Erforderlich? | |
---|---|---|---|
agentActions |
Eine Liste der Aktionen, die der Agent auslösen kann, um den Chat zu beenden und den Ablauf in den für die Übergangsaktion definierten Status weiterzuleiten. In der Konsole des Kundenservicemitarbeiters werden diese Aktionen als Schrägstrichbefehle angezeigt, wenn die Agent-Unterhaltung initiiert wird, wie in diesem Beispiel gezeigt:
Die Aktionsnamen müssen den
Sie können die
|
Nein | |
agentActionsMessage |
Wenn die Eigenschaft agentActions festgelegt ist, zeigt die Agent-Konsole diesen Wert anstelle der Standardnachricht an. Beispiel:
|
Nein | |
agentChannel |
Benennt den Agent-Integrationskanal. Dieser Wert, der Name des Agentenintegrationskanals und die für die Komponente System.AgentConversation definierte Eigenschaft agentChannel müssen übereinstimmen.
|
Ja | |
allowTransferIf |
Gibt die Bedingungen an, unter denen der Skill die Chatsession übertragen soll. Die Komponente verwendet den queueId -Wert, um die Queue zu identifizieren, von der die Statistiken abgerufen werden. Sie sollten sicherstellen, dass die Chatregeln die Unterhaltung tatsächlich in die angegebene Queue übertragen und nicht in eine andere Queue.
Wenn die angegebene Bedingung nicht erfüllt wird, gibt die Komponente Wenn Sie diese Eigenschaft aufnehmen, müssen Sie auch die Eigenschaft Diese Eigenschaft ist nur in Instanzen von Oracle Digital Assistant verfügbar, die auf Oracle Cloud Infrastructure bereitgestellt wurden (auch als Cloud-Infrastruktur der 2. Generation bezeichnet). |
Nein | |
chatResponseVariable |
Benennt die Zuordnungsvariable, die die Agent-Antwortinformationen enthält. Nachdem die Komponente System.AgentInitiation erfolgreich verbunden wurde, enthält die Zuordnung die folgenden Eigenschaften:
|
Nein | |
customProperties |
Eine Map, die die Vorfalls-ID, die Schnittstelle, den Kontakt oder benutzerdefinierte Felder (oder eine Kombination daraus) zum Übergeben an den Service enthält. Um eine Mapvariable zu referenzieren, verwenden Sie einen Wertausdruck wie: ${mapVariableName.value} . Siehe Kundeninformationen an einen Livechat übergeben.
|
Nein | |
errorMessage |
Die Nachricht, die angezeigt werden soll, wenn beim Herstellen der Verbindung mit Oracle B2C Service ein Problem aufgetreten ist. Beispiel: Das Kennwort im Agent-Integrationskanal ist nicht mehr gültig, oder es ist ein Problem mit dem Server aufgetreten. | Nein | |
nlpResultVariable |
Die Variable, die die Abfragenachricht des Kunden speichert. | Nein | |
rejectedMessage |
Eine Nachricht, die angezeigt wird, wenn das AgentInitiation -Handshake abgelehnt wurde, z.B. wenn es außerhalb der konfigurierten Geschäftszeiten liegt. Beispiel:
|
Nein | |
resumedMessage |
Eine Nachricht (z.B. Einen Moment bitte, wir verbinden Sie mit einem Agent.), die angezeigt wird, wenn der Chat des Kunden mit dem Kundenservicemitarbeiter wiederaufgenommen wird. Durch das Hinzufügen dieser Eigenschaft wird verhindert, dass Kunden, deren Anforderungen bereits in die Queue gestellt wurden, eine irreführende Nachricht Chat mit Agent wird wiederaufgenommen erhalten, wenn sie wiederholt einen Livechat anfordern. | Nein | |
subject |
Die Betreffzeile, die in der Konsole des Agent nach der Übergabe an die Agent-Plattform angezeigt wird. Standardmäßig ist dies die letzte Kundennachricht, die in der Eigenschaft nlpResultVariable gespeichert wurde. Sie können dies jedoch auch mit einer Variablen definieren, die Sie vorher in der Dialogablaufdefinition festgelegt haben. Beispiel: Sie können eine Kontextvariable des Typs string definieren, deren Wert vor der Komponente System.AgentInitiation festgelegt wird:
|
Nein | |
queueId |
Die ID der Queue, mit der die Komponente bestimmen muss, ob die angegebene allowTransferIf -Bedingung erfüllt ist. Diese muss die ID der Queue sein, an die die Oracle B2C Service-Chatregeln diese Unterhaltung weiterleiten.
Diese Eigenschaft wird ignoriert, wenn die Eigenschaft |
Erforderlich, wenn die Eigenschaft allowTransferIf vorhanden ist.
|
|
transcriptDateTimeFormat |
Das Format für Datum und Uhrzeit in den Transkriptnachrichten der Unterhaltung, die an den Agent weitergeleitet werden. Gültige Muster finden Sie in der Java-Klasse DateTimeFormatter . Beispiel: dd/MM/yyyy HH:mm . Der Standardwert ist yyyy-mmm-ddThh:mm:ssZ .
|
Nein | |
transcriptTimezoneName |
Der Internet Assigned Numbers Authority-(IANA-)Name der Zeitzone, die zur Formatierung des Unterhaltungstranskripts mit der Eigenschaft transcriptDateTimeFormat verwendet wird. Beispiel: America/Sao_Paulo . Der Standardwert ist Europe/London . Wenn Sie die Eigenschaft transcriptDateTimeFormat nicht aufnehmen, wird diese Eigenschaft ignoriert.
|
Nein | |
waitingMessage |
Eine Nachricht, die angezeigt wird, während Kunden auf die Verbindung mit einem Agent warten. Beispiel:
|
Nein |
System.AgentInitiation-Übergänge
System.AgentInitiation
gibt die Aktionen accepted
, rejected
und error
zurück. Diese Aktionen können jeweils auf einen anderen Status zeigen, wobei die Aktion accepted
normalerweise den Status für die Komponente System.AgentConversation
benennt: agentInitiation:
component: "System.AgentInitiation"
properties:
agentChannel: "ServiceCloudIntegration"
...
transitions:
actions:
accepted: "agentConversation"
rejected: "noAgentsAvailable"
error: "handshakeError"
Aktion | Beschreibung |
---|---|
accepted |
Der Handshake wurde erfolgreich abgeschlossen, und der Status kann in den Status mit der Komponente System.AgentConversation wechseln.
|
error |
Beim Herstellen der Verbindung mit Oracle B2C Service ist ein Problem aufgetreten. Beispiel: Das Kennwort im Agent-Integrationskanal ist nicht mehr gültig, oder es ist ein Problem mit dem Service Cloud-Server aufgetreten. |
rejected |
Oracle B2C Service hat die Verbindungsanforderung abgelehnt. Einige Gründe für die Ablehnung einer Verbindungsanforderung:
Wenn Sie |
Beispiel: Ablehnung der Agent-Initiierung und Systemfehler verarbeiten
Nachfolgend finden Sie ein Beispiel für die Verarbeitung von Systemfehlern und der error
- und rejected
-Aktionen.
agentInitiation:
component: "System.AgentInitiation"
properties:
agentChannel: "B2CServiceIntegration"
nlpResultVariable: "iResult"
waitingMessage: "Let me connect you with someone who can further assist you."
resumedMessage: "Someone will be with you shortly."
errorMessage: "Oops! We're having system issues and we can't connect you with an agent right now."
rejectedMessage: "Unfortunately, no one's available right now."
transitions:
actions:
accepted: "agentConversation"
rejected: "initiationRejected"
error: "tryAgain"
error: "agentInitiationSystemError"
initiationRejected:
component: "System.Output"
properties:
text: "Perhaps it's outside their working hours or it's a holiday."
transitions:
return: "initiationRejected"
tryAgain:
component: "System.Output"
properties:
text: "Please try again later."
transitions:
return: "tryAgain"
agentInitiationSystemError:
component: "System.Output"
properties:
text: "I seem to be having a connection problem. Can you please email email@example.com to let them know?"
transitions:
return: "done"
Beispiel: Die Eigenschaft incidentID
context:
variables:
liveChatInfo: "map"
customerTicketId: "int"
...
setCustomFields:
component: "System.SetVariable"
properties:
variable: "liveChatInfo"
value:
incidentID: "${customerTicketId}" # long value
...
agentInitiation:
component: "System.AgentInitiation"
properties:
...
customProperties: "${liveChatInfo.value}"
Beispiel: Das Standardobjekt customerInformation
In diesem Beispiel wird contactID
festgelegt.
context:
variables:
liveChatInfo: "map"
contactId: "int"
...
setCustomFields:
component: "System.SetVariable"
properties:
variable: "liveChatInfo"
value:
customerInformation:
contactID:
id: "${customerId}"
...
agentInitiation:
component: "System.AgentInitiation"
properties:
...
customProperties: "${liveChatInfo.value}"
Beispiel: Das Legacy-Objekt customerInformation
In diesem Beispiel werden interfaceID
und contactID
festgelegt.
Tipp:
Da die WSDL angibt, dassinterfaceID
vom Typ NamedID
ist, hätten wir name: "myInterfaceName"
anstelle von id: id: "${interfaceId}"
verwenden können.
context:
variables:
liveChatInfo: "map"
interfaceId: "int"
contactId: "int"
...
setCustomFields:
component: "System.SetVariable"
properties:
variable: "liveChatInfo"
value:
customerInformation:
interfaceID:
id:
id: "${interfaceId}"
contactID:
id: "${customerId}"
...
agentInitiation:
component: "System.AgentInitiation"
properties:
...
customProperties: "${liveChatInfo.value}"
Beispiel: Das Standardobjekt customFields
context:
variables:
liveChatInfo: "map"
...
setupCustomFields:
component: "System.SetVariable"
properties:
variable: "liveChatInfo"
value:
customFields:
- name: "c$text_field" # text field
type: "STRING"
value: "SILVER"
- name: "c$text_area" # text area
type: "STRING"
value: "My package arrived but there were no contents in the box. Just bubble wrap."
- name: "c$integer" # integer
type: "INTEGER"
value: 21
- name: "c$yes_no" # yes/no (1=yes and 0=no)
type: "BOOLEAN"
value: 1
- name: "c$date_field" # date (yyyy-MM-dd'T'00:00:00. Use 0 for time)
type: "DATE"
value: "2020-02-04T00:00:00+00:00"
- name: "c$date_time" # datetime (yyyy-MM-dd'T'HH:mm:ssXXX)
type: "DATETIME"
value: "2020-02-04T21:24:18+00:00"
- name: "c$menu" # menu (no type property, you can pass the string or the ID for the value property)
value: "12"
transitions:
...
...
agentInitiation:
component: "System.AgentInitiation"
properties:
...
customProperties: "${liveChatInfo.value}"
Beispiel: Das Legacy-Objekt customFields
context:
variables:
liveChatInfo: "map"
skillType: "string"
...
setupCustomFields:
component: "System.SetVariable"
properties:
variable: "liveChatInfo"
value:
customerInformation:
interfaceID:
id:
id: 1
customFields:
# Text Field
- name: "c$da_text_field"
dataType: "STRING"
dataValue:
stringValue: "SILVER"
# Text Area
- name: "c$da_text_area"
dataType: "STRING"
dataValue:
stringValue: "This is a very long string that is more than 32 characters."
# Integer
- name: "c$da_integer"
dataType: "INTEGER"
dataValue:
integerValue: 21
# Menu
- name: "c$da_menu"
dataType: "NAMED_ID"
dataValue:
namedIDValue:
name: "Item 1"
# Instead of name, you can use
# id:
# id: 1
#
# Yes/No
- name: "c$da_is_from_skill"
dataType: "BOOLEAN"
dataValue:
booleanValue: true
# Date (XML Schema Date)
- name: "c$da_date"
dataType: "DATE"
dataValue:
dateValue: "2019-10-26"
# DateTime (XML Schema DateTime)
- name: "c$da_datetime"
dataType: "DATETIME"
dataValue:
dateTimeValue: "2019-10-26T21:32:52"
transitions:
...
...
agentInitiation:
component: "System.AgentInitiation"
properties:
...
customProperties: "${liveChatInfo.value}"
Beispiel: Benutzerdefiniertes Eigenschaftsobjekt assemblieren
In diesen Schritten wird beschrieben, wie Sie das Objekt customProperties
deklarieren und die verschiedenen Werte festlegen können.
Schritt 1: Variable "customProperties" deklarieren
customProperties
in der Komponente System.AgentInitiation
. Dabei handelt es sich um ein JSON-Objekt, das die Kundeninformationen des Chats und benutzerdefinierte Feldwerte enthalten kann. Im folgenden Beispiel wird diese Variable als liveChatInfo
deklariert:context:
variables:
size: "PizzaSize"
type: "PizzaType"
crust: "PizzaCrust"
iResult: "nlpresult"
interfaceId: "string"
categoryId: "string"
skillType: "string"
liveChatInfo: "map"
Schritt 2: Werte für die Zuordnungsvariable "customProperties" festlegen
customProperties
in der Komponente System.AgentInitiation
. Dabei handelt es sich um ein JSON-Objekt, das die Kundeninformationen des Chats und benutzerdefinierte Feldwerte enthalten kann. Im folgenden Beispiel wird diese Variable als liveChatInfo
deklariert:context:
variables:
size: "PizzaSize"
type: "PizzaType"
crust: "PizzaCrust"
iResult: "nlpresult"
interfaceId: "string"
categoryId: "string"
skillType: "string"
liveChatInfo: "map"
Schritt 3: Felder für die Zuordnungsvariable "customProperties" definieren
setLiveChatInfo:
component: "System.SetVariable"
properties:
variable: "liveChatInfo"
value:
customerInformation:
categoryID:
id: "${categoryId}"
customFields:
- name: "c$skilltype"
type: "STRING"
value: "${skillType}"
transitions:
next: "agentInitiation"
Schritt 4: customProperties zur Komponente "System.AgentInitiation" hinzufügen
customProperties
der Komponente System.AgentInitiation
hinzu und definieren sie mit einem Ausdruck, der auf den Wert der Zuordnungsvariablen zugreift. agentInitiation:
component: "System.AgentInitiation"
properties:
subject: "A customer needs help regarding ${skillType}."
agentChannel: "ServiceCloudIntegration"
waitingMessage: "Let me connect you with someone who can further assist you."
resumedMessage: "Please wait, someone will be with you shortly."
rejectedMessage: "Sorry no one is available now."
errorMessage: "We're sorry! We're having system issues and we can't connect you with an agent."
customProperties: "${liveChatInfo.value}"
transitions:
actions:
accepted: "agentConversation"
rejected: "initiationRejected"
error: "tryAgain"
initiationRejected:
component: "System.Output"
properties:
text: "Perhaps it's outside their working hours or it's a holiday."
transitions:
return: "tryAgain"
tryAgain:
component: "System.Output"
properties:
text: "Please try again later."
transitions:
return: "tryAgain"
System.AgentConversation
Mit dieser Komponente können Sie die Unterhaltung eines Skills an einen Oracle B2C Service-Live-Agent übertragen und den Austausch zwischen Skill und Live-Agent verwalten. Beachten Sie, dass Sie die Komponente System.AgentInitiation
aufrufen müssen, bevor Sie diese Komponente verwenden können.
System.AgentConversation
ist für Unterhaltungen bestimmt, die aus dem Skill stammen. Verwenden Sie diese Komponente nicht für Unterhaltungen, die aus einem Oracle B2C Service-Chat stammen, wie in Digital Assistant-Agent-Framework in Aktion beschrieben.
Nachfolgend finden Sie ein Beispiel für die Verwendung dieser Komponente zur Übertragung der Unterhaltung an die Oracle B2C Service-Instanz, die vom Agent-Integrationskanal mit dem Namen ServiceCloudIntegration
definiert wird.
agentConversation:
component: "System.AgentConversation"
properties:
agentChannel: "ServiceCloudIntegration"
nlpResultVariable: "iResult"
errorMessage: "Oops, we lost connection with the agent. If you need further help, please call customer support."
exitKeywords: "bye, exit, take care, goodbye, quit"
expiryMessage: "Your chat with the agent timed out"
waitExpiryMessage: "The chat expired while waiting for an agent"
conclusionMessage: "Your chat with the agent has ended."
waitMessage: "You are number ${system.message.messagePayload.position} in the queue. Your waiting time is ${(system.message.messagePayload.waitTime>60)?then('${(system.message.messagePayload.waitTime/60)?int} mins','${system.message.messagePayload.waitTime} seconds')}."
transitions:
next: "endPrompt"
actions:
agentLeft: "endPrompt"
expired: "sessionExpired"
waitExpired: "expiredWhileWaiting"
error: "handleConnectionError"
Eigenschaft | Beschreibung | Erforderlich? |
---|---|---|
agentChannel |
Benennt den Agent-Integrationskanal. Dieser Wert, der Name des Agentenintegrationskanals und die für die Komponente System.AgentInitiation definierte Eigenschaft agentChannel müssen übereinstimmen.
|
Ja |
conclusionMessage |
Eine automatisierte Nachricht, die an den Kunden gesendet wird, wenn entweder der Benutzer ein Beendigungsschlüsselwort eingibt, die Aktion agentLeft ausgelöst wird oder der Agent die Unterhaltung beendet, ohne eine der agentActions zu senden. Beispiel: Ihr Chat mit dem Agent wurde beendet .
|
Nein |
errorMessage |
Die Nachricht, die der Chat anzeigt, wenn ein Problem mit der Verbindung zu Oracle B2C Service vorliegt.
Die Standardnachricht lautet Diese Eigenschaft kann nur mit Instanzen von Oracle Digital Assistant verwendet werden, die auf Oracle Cloud Infrastructure bereitgestellt wurden (auch als Cloud-Infrastruktur der 2. Generation bezeichnet). |
Nein |
exitKeywords |
Eine durch Komma getrennte Liste typischer Beendigungswörter, die von einem Kunden verwendet werden, um die Unterhaltung mit dem Live-Agent zu beenden. Beispiel:
Der Eigenschaftswert lautet standardmäßig |
Nein |
expiryMessage |
Eine Nachricht, die angezeigt wird, wenn die Aktion expired ausgelöst wird. Die Standardnachricht ist Chatsession abgelaufen. Vielen Dank, dass Sie mit uns gechattet haben .
Beachten Sie, dass Die Ablaufnachricht wird nicht ausgegeben, wenn die Unterhaltung beendet wird, weil die Service Cloud-Eigenschaft |
Nein |
nlpResultVariable |
Die Variable nlpResultVariable , die die Abfragenachricht des Kunden enthält.
|
Nein |
waitExpiryMessage |
Die Nachricht, die dem Benutzer angezeigt wird, wenn der Chat beim Warten auf einen Agent abläuft. Die Standardnachricht lautet The request for live chat expired while waiting for an agent. |
Nein |
waitMessage |
Standardmäßig zeigt der Skill nach dem Initiieren der Dialogübertragung die Wartenachricht an, die der Livechatservice an den Skill sendet, wie die Queueposition und die Wartezeit. Mit dieser Eigenschaft können Sie die Nachricht anpassen. Beispiel:
|
Nein |
System.AgentConversation-Übergänge
Die Aktion System.AgentConversation
kann die Aktion expired
, agentLeft
, error
oder waitExpired
auslösen. Außerdem kann sie jede Aktion aus der Eigenschaft agentActions
der Komponente System.AgentInitiation
auslösen. Sie müssen auch einen next
-Übergang hinzufügen, da ein Kunde möglicherweise eines der exitKeywords
eingeben kann, um den Chat zu verlassen, bevor diese Aktionen ausgelöst werden können.
agentConversation:
component: "System.AgentConversation"
properties:
agentChannel: "ServiceCloudIntegration"
nlpResultVariable: "iResult"
exitKeywords: "bye, adios, take care, goodbye"
...
transitions:
next: "endPrompt"
actions:
agentLeft: "endPrompt"
expired: "endPrompt"
waitExpired: "endPrompt"
error: "agentConversationError"
...
endPrompt:
component: "System.List"
properties:
prompt: "Your session has ended. What would you like to do?"
options:
- label: "Order a Pizza"
value: "OrderPizza"
- label: "Nothing. I'm done here."
value: "Finished"
autoNumberPostbackActions: true
transitions:
actions:
OrderPizza: "resolvePizzaSize"
Finished: "done"
...
Aktion | Beschreibung |
---|---|
agentActions |
Wenn die Komponente System.AgentInitiation eine Eigenschaft agentActions aufweist, muss diese Komponente eine Übergangsaktion für jede unterstützte Aktion aufweisen, die von agentActions angegeben wird.
|
agentLeft |
Der Agent hat die Session beendet, ohne eine Schrägstrichaktion zu verwenden (z.B. /Order). Alternativ wurde die Session beendet, weil es innerhalb der von der Oracle B2C Service-Konfiguration CS_IDLE_TIMEOUT angegebenen Zeit keine Aktivität gab und diese Konfiguration kleiner ist als die Einstellung Sessionablauf für den Agent-Integrationskanal. Weitere Informationen finden Sie in der Aktion expired .
Beachten Sie, dass diese Aktion nicht zurückgegeben wird, wenn der Benutzer die Unterhaltung durch Eingabe eines Beendigungsschlüsselworts verlässt. In diesem Fall wechselt der Ablauf in den Status, der durch den |
error |
Beim Verbinden mit dem Live-Agent-Service ist ein Problem aufgetreten. Diese Aktion kann nur mit Instanzen von Oracle Digital Assistant verwendet werden, die auf Oracle Cloud Infrastructure bereitgestellt wurden (auch als Cloud-Infrastruktur der 2. Generation bezeichnet). |
expired |
Wenn die Oracle B2C Service-Einstellung Standardmäßig beträgt Die Um die Einstellungen Ihrer Oracle B2C Service-Instanz anzuzeigen oder zu ändern, öffnen Sie die Desktopkonsole, klicken Sie auf Navigation, klicken Sie im Menü auf die erste Option unter Konfiguration, und klicken Sie dann auf Konfigurationseinstellungen. Suchen Sie dann nach der Einstellung im Ordner Chat. |
waitExpired |
Die Chatanfrage ist beim Warten auf einen Agent abgelaufen. Das geschieht, wenn die Wartezeit den Wert in der Einstellung USER_WAIT_QUEUE_TIMEOUT des Chatclients überschreitet.
|
Beispiel: Dialogablauf für Agent-Übertragung konfigurieren
In diesem Beispiel wird das Intent GetAgent
darauf trainiert, Hilferufe wie Helfen Sie mir bitte! zu verstehen.
intent:
component: "System.Intent"
properties:
variable: "iResult"
transitions:
actions:
OrderPizza: "resolvesize"
CancelPizza: "cancelorder"
GetAgent: "agentInitiation"
unresolvedIntent: "agentInitiation"
Grundlegende Schritte beim Konfigurieren des Dialogablaufs:
-
Starten Sie die Live-Agent-Übertragung:
-
Fügen Sie einen Status für die Komponente
System.AgentInitiation
hinzu. -
Setzen Sie die Eigenschaft
agentChannel
des Status auf den Namen des Agent-Integrationskanals, den Sie für das Live-Agent-System konfiguriert haben.
Nachdem der Agent-Integrationskanal eine Verbindung aufgebaut und Oracle B2C Service die Chatanfrage an seine Queue gesendet hat (d.h. nachdem ein Hilfeticket erstellt wurde), lässt die KomponenteSystem.AgentInitiation
den Übergang zum nächsten Status zu. Dieser ist typischerweise für die KomponenteSystem.AgentConversation
definiert (AgentConversation
im folgenden Beispiel).agentInitiation: component: "System.AgentInitiation" properties: agentChannel: "ServiceCloudIntegration" nlpResultVariable: "iResult" waitingMessage: "Waiting for an agent..." rejectedMessage: "Agents are not available right now." resumedMessage: "We're connecting you to an agent..." errorMessage: "Oops! We're having system issues. We're sorry, but we can't connect you with an agent right now." transitions: actions: accepted: "agentConversation" rejected: "tryAgain" error: "tryAgain" tryAgain: component: "System.Output" properties: text: "Please try again later." transitions: return: "tryAgain"
Tipp:
Kunden können wiederholt einen Livechat anfordern, auch wenn ihre Anforderungen bereits in der Agent-Chatkonsole in die Queue gestellt wurden. Fügen Sie dem StatusSystem.AgentInitiation
eine EigenschaftresumedMessage
hinzu, um zu verhindern, dass Kunden die irreführende Nachricht Wiederaufnahme des Chats mit dem Agent erhalten. -
-
Fügen Sie die Komponente
System.AgentConversation
hinzu, und konfigurieren Sie sie. Während sich die Dialog-Engine in dem für diese Komponente definierten Status befindet, übergibt der Skill Nachrichten zwischen Kunden und Agent. Der Skill überwacht die Kundeneingabe auf Beendigungsschlüsselwörter wieTschüss
. Wenn der Skill eines dieser Schlüsselwörter erkennt, beendet die KomponenteSystem.AgentConversation
die Livechatsession und löst den Übergangnext
aus.Beispiel:
agentConversation: component: "System.AgentConversation" properties: agentChannel: "ServiceCloudIntegration" nlpResultVariable: "iResult" errorMessage: "Oops, we lost connection with the agent. If you need further help, please call customer support." exitKeywords: "bye, exit, take care, goodbye, quit" expiryMessage: "Your chat with the agent timed out." conclusionMessage: "Your chat with the agent has ended." waitMessage: "You are number ${system.message.messagePayload.position} in the queue. Your waiting time is ${(system.message.messagePayload.waitTime>60)?then('${(system.message.messagePayload.waitTime/60)?int} mins','${system.message.messagePayload.waitTime} seconds')}." transitions: next: "endPrompt" actions: agentLeft: "endPrompt" expired: "endPrompt" error: "endPrompt" endPrompt: component: "System.Output" properties: text: "Returning you to your bot." transitions: return: "endPrompt"
Beispiel: Umfrageinformationen abrufen
Im folgenden Beispiel für das Standardformat gibt die Komponente AgentConversation
einen Umfragelink aus, nachdem die Agent-Unterhaltung beendet wurde. Der Link umfasst die Session- und Engagement-ID aus der Zuordnung, die mit der Eigenschaft chatResponseVariable
benannt wurde.
context:
variables:
agentSystemResponse: "map" # chat request response is stored in this variable.
...
states:
...
agentInitiation:
component: "System.AgentInitiation"
properties:
agentChannel: "B2CServiceIntegration"
nlpResultVariable: "iResult"
chatResponseVariable: "agentSystemResponse"
transitions:
actions:
accepted: "agentConversation"
rejected: "tryAgain"
error: "tryAgain"
agentConversation:
component: "System.AgentConversation"
properties:
agentChannel: "B2CServiceIntegration"
nlpResultVariable: "iResult"
exitKeywords: "bye, exit, take care, goodbye, quit"
expiryMessage: "Your chat with the agent timed out."
conclusionMessage: "Can you please fill out this survey: <PUT SURVEY URL HERE>?session=${agentSystemResponse.value.sessionId}&surveyid=${agentSystemResponse.value.engagementId}"
transitions:
next: "endPrompt"
actions:
agentLeft: "endPrompt"
expired: "sessionExpired"
error: "agentConversationError"
Beispiel: Chat an eine bestimmte Oracle B2C Service-Queue übertragen
-
Falls noch nicht geschehen, definieren Sie im Kontextknoten eine Zuordnungsvariable, die mit der Eigenschaft
customProperties
der KomponenteSystem.AgentInitiation
verwendet werden soll. Beispiel:context: variables: greeting: "string" name: "string" liveChatInfo: "map"
-
Definieren Sie die Felder für die Zuordnungsvariable.
Im Folgenden finden Sie ein Beispiel für das Standardformat für Agent-Integrationskanäle, die in Version 20.01 oder höher erstellt wurden und eine Verbindung zu Oracle B2C Service Version 19A oder höher herstellen.
setLiveChatInfo: component: "System.SetVariable" properties: variable: "liveChatInfo" value: customFields: - name: "c$frombot" type: "BOOLEAN" value: 1 transitions: next: "agentInitiation"
Im Folgenden finden Sie ein Beispiel für das Legacy-Format für Agent-Integrationskanäle, die vor Version 20.01 erstellt wurden oder die eine Verbindung zu einer Version vor Oracle B2C Service Version 19A herstellen.
setLiveChatInfo: component: "System.SetVariable" properties: variable: "liveChatInfo" value: customFields: - name: "c$frombot" dataType: "BOOLEAN" dataValue: booleanValue: true transitions: next: "agentInitiation"
-
Fügen Sie die Eigenschaft
customProperties
der KomponenteSystem.AgentInitiation
hinzu, und setzen Sie sie auf den Wert der Zuordnungsvariablen. Beispiel:agentInitiation: component: "System.AgentInitiation" properties: agentChannel: "B2CServiceIntegration" nlpResultVariable: "iResult" customProperties: "${liveChatInfo.value}" waitingMessage: "Waiting for an agent..." rejectedMessage: "Agents are not available right now." resumedMessage: "We're connecting you to an agent..." errorMessage: "Oops! We're having system issues. We're sorry, but we can't connect you with an agent right now." transitions: actions: accepted: "agentConversation" rejected: "tryAgain" error: "tryAgain" tryAgain: component: "System.Output" properties: text: "Please try again later." transitions: return: "tryAgain"
System.ResolveEntities
In diesem Thema wird die Verwendung dieser Komponente im YAML-Modus behandelt. Informationen zur Verwendung im Visual Flow Designer finden Sie unter Entity auflösen.
Iteriert durch alle Entityfelder in der Mischentity, unterhält sich mit dem Benutzer und löst alle Felder auf. Die Komponente wählt die für jede Entity angegebenen Prompts zufällig aus, während diese Entity aufgelöst wird.
Eigenschaft | Beschreibung | Erforderlich | |
---|---|---|---|
variable |
Bezieht sich auf die Kontextvariable der Mischentity, die von dieser Komponente aufgefüllt wird. Wenn alle untergeordneten Entitys der zusammengesetzten Entityvariable bereits einen Wert haben, geht der Dialogablauf in den nächsten Status über, ohne dass dem Benutzer eine Nachricht gesendet wird. | Ja | |
nlpResultVariable |
Füllt die Eigenschaft variable (die auf die Mischentityvariable verweist) mit den in der Kontextvariablen nlpresult gespeicherten Werten auf. Sie können diese Eigenschaft definieren, indem Sie die Variable nlpresult (normalerweise iResult ) benennen. Wenn das Framework eine einzelne untergeordnete Entity auflöst, wird die Eigenschaft variable nur mit diesem Entitywert aufgefüllt. Wenn die Variable nlpresult Werte für alle untergeordneten Entitys enthält, geht der Dialogablauf in den nächsten Status über. Sie können diese Eigenschaft anstelle der SetVariable -Status verwenden, die die untergeordneten Entitywerte auffüllen.
|
Nein | |
maxPrompts |
Gibt die Anzahl der dem Benutzer zugeteilten Versuche an, einen gültigen Wert einzugeben, der dem untergeordneten Entitytyp entspricht. Wenn die maximale Anzahl an Versuchen für die erste untergeordnete Entity überschritten wird, wird diese Eigenschaft auf 0 zurückgesetzt, und der Bot gibt den Prompt für die nächste untergeordnete Entity aus. Wie in Mischentity erstellen beschrieben, können einzelne Entitys in der Mischentity diese Einstellung außer Kraft setzen, wenn die Option Maximale Benutzereingabeversuche festgelegt ist. | Nein | |
autoNumberPostbackActions |
Wenn Sie dies auf true setzen, stellt diese Option den Optionen Zahlen voran. Selbst wenn Sie diese Option nicht auf true gesetzt haben, kann die automatische Nummerierung für Listenelemente erzwungen werden, wenn die Konfiguration Automatische Nummerierung bei Postback-Aktionen aktivieren des digitalen Assistenten auf true gesetzt ist. Kanalspezifische automatische Nummerierung kann auf alle bei einem digitalen Assistenten registrierten Skillbots angewendet werden:
|
Nein | |
useFullEntityMatches |
Wenn dieser Wert auf true gesetzt ist, werden benutzerdefinierte Entitywerte als JSON-Objekte gespeichert (ähnlich wie integrierte Entitywerte). Auf diese Weise können Sie Ausdrücke für den Zugriff auf Eigenschaften wie value , primaryLanguageValue und originalString erstellen. Diese sind besonders wichtig für Skills, die derzeit mehrsprachig sind oder das noch werden können.
|
||
footerText |
Erweitert die Ausgabe auf textbasierten Kanälen. Wie unter Footer beschrieben, können Sie FreeMarker-Ausdrücke verwenden, um den Footertext für Nur-Text-Kanäle bedingt zu formatieren. | Nein | |
headerText |
Eine Nachricht, die angezeigt wird, bevor die Komponente den Benutzer zur Eingabe des nächsten Elements in der Mischentity auffordert. Mit diesem Header können Sie Feedback zu den vorherigen Entitys in der Mischentity abgeben, die abgeglichen (oder aktualisiert) wurden.
|
Nein | |
transitionAfterMatch |
Ein boolescher Wert, der, wenn Sie ihn auf true setzen, einen temporären Übergang von der Entityübereinstimmung, die von dieser Komponente ausgeführt wird, zu einer benutzerdefinierten Komponente ermöglicht. Standardmäßig ist diese Einstellung false . Diese Eigenschaft wird ignoriert (und der match -Übergang wird nicht ausgelöst), wenn Sie einen Entityereignis-Handler registriert haben.
|
Nein | |
cancelPolicy |
Bestimmt den Zeitpunkt des cancel -Übergangs:
maxPromptsReached -Handler auf Element- oder Ereignisebene registriert haben. |
Nein |
Kalenderkomponenten
Verwenden Sie die folgenden Kalenderkomponenten, um mit Outlook- und Google-Kalendern zu interagieren:
-
System.CreateCalendarEvent: Ereignis erstellen
-
System.DeleteCalendarEvent: Ereignis absagen
-
System.GetCalendarEventDetails: Details zu einem Ereignis abrufen
-
System.ListCalendarEvents: Daten für ein gefiltertes Set von Ereignissen abrufen
-
System.SelectCalendarEvent: Ereignis aus einer gefilterten Liste auswählen
-
System.SendInviteResponse: Antwortstatus eines Ereignisses ändern
-
System.UpdateCalendarEvent: Ereignisse ändern
Kalenderautorisierung
Um die Interaktion zwischen einem Skill und einem Kalenderprovider zu ermöglichen, müssen Sie einen Service einrichten und den Skill und Dialogablauf ändern, damit der Benutzer sich über diesen Service bei seinem Kalender anmelden kann.
Bevor Sie eine Kalenderkomponente verwenden, müssen Sie eine Anwendung beim Kalenderprovider registrieren und einen Autorisierungscodeservice erstellen. In diesen Themen werden die jeweiligen Schritte beschrieben:
Verwenden Sie im Dialogablauf die Komponente System.OAuth2AccountLink
, um den Benutzer zur Anmeldung bei seinem Kalender über den von Ihnen erstellten Autorisierungscodeservice aufzufordern. Beachten Sie, dass Sie die Eigenschaft enableSingleSignOn
der Komponente nicht auf true
setzen können, wenn Sie die Komponente zur Kalenderkomponentenautorisierung verwenden.
Sie können das Feature "Autorisierung erforderlich" nutzen, um vor dem Aufrufen von Kalenderkomponenten automatisch sicherzustellen, dass sich der Benutzer angemeldet (einen Zugriffstoken erhalten) hat. Dieses Feature fordert den Benutzer nur dann zur Anmeldung auf, wenn er noch kein Zugriffstoken hat oder dieses abgelaufen ist und nicht aktualisiert werden kann. Sie können die Einstellung Autorisierung erforderlich des Skills verwenden, um den Standardwert für den gesamten Skill festzulegen. Verwenden Sie dann die Einstellung requiresAuthorization
auf Statusebene, um den Standardwert außer Kraft zu setzen. Das heißt, Sie verwenden die Skilleinstellung, um den Standardwert festzulegen, und nehmen dann die Einstellung requiresAuthorization
der Komponente nur in die Statusangaben auf, für die der Standardwert nicht gilt.
Um das Feature "Autorisierung erforderlich" zu verwenden, müssen Sie dem Knoten defaultTransitions
eine system.authorizeUser
-Aktion hinzufügen, um den Status zu benennen, der den Autorisierungsablauf startet. Beispiel:
defaultTransitions:
error: "globalErrorHandler"
actions:
system.authorizeUser: "userAuthN.performOAuth"
Bevor ein Skill in einen Status übergeht, für den eine Autorisierung erforderlich ist, wird geprüft, ob ein gültiges Zugriffstoken für den Kalenderservice vorhanden ist. Wenn nicht, werden folgende Aktionen ausgeführt:
-
Der Skill ruft den Status auf, den Sie für die
system.authorizedUser
-Aktion im KnotendefaultTransitions
definiert haben. -
Der Benutzer wird aufgefordert, sich anzumelden.
-
Der Skill wechselt zum Status, für den die Autorisierung erforderlich war (also der durch
${system.requestedState}
definierte Status).
Beispiel für einen Autorisierungsdialogablauf:
defaultTransitions:
error: "globalErrorHandler"
actions:
system.authorizeUser: "userAuthN.performOAuth"
...
############################
# Authenticate
############################
userAuthN.performOAuth:
component: "System.OAuth2AccountLink"
properties:
prompt: "User Authentication"
variable: "code"
linkLabel: "Sign into ${system.config.calendarProvider}"
authenticationService: "${system.config.authService}"
accessTokenVariableName: "user.accessToken"
authenticatedUserVariableName: "user.authenticatedUser"
enableSingleSignOn: false # SSO not supported for calendar components
transitions:
actions:
pass : "${system.requestedState}"
fail : "handleFailedLogin"
textReceived: "intent"
handleFailedLogin:
component: "System.Output"
requiresAuthorization: false
properties:
text: "Sorry, you aren't authorized to do that"
transitions:
return: "doneHandleFailedLogin"
Bei einem Skill, der sich hauptsächlich auf Kalenderkomponenten bezieht, sollten Sie die Konfiguration Autorisierung erforderlich des Skills auf true
setzen und dann den Wert nur für die Statusangaben auf "false" setzen, die keine Autorisierung erfordern. In diesem Beispiel kann jeder Benutzer die Status initTimezoneOffset
und intent
ausführen. Daher ist requiresAuthorization
für diese Status auf false
gesetzt. Die Status, die mit den Kalenderkomponenten verwendet werden, müssen nicht requiresAuthorization
enthalten, da der Standardwert true
ist.
initTimezoneOffset:
requiresAuthorization: false
component: "System.SetVariable"
properties:
variable: "timezoneOffset"
value: <#attempt>${profile.timezoneOffset}<#recover>0</#attempt>
transitions:
next: "intent"
intent:
component: "System.Intent"
requiresAuthorization: false
properties:
variable: "iResult"
transitions:
actions:
SetupMeeting: "setUpMeeting"
CancelMeeting: "cancelMeeting"
ListMeetings: "listMeetings"
UpdateMeeting: "updateMeeting"
ListInvites: "listInvites"
RespondInvites: "respondInvites"
LogoutUser: "logoutUser"
unresolvedIntent: "greeting"
...
cancelMeeting.performDelete:
component: "System.DeleteCalendarEvent"
properties:
eventId: "${eventId}"
provider: "${system.config.calendarProvider}"
calendarOwner: "${user.authenticatedUser}"
calendarId: "${user.authenticatedUser}"
credential: "${user.accessToken}"
transitions:
next: "cancelMeeting.printSuccessMessage"
cancelMeeting.printSuccessMessage:
component: "System.Output"
properties:
text: "I've cancelled the meeting"
transitions:
return: "doneCancel"
Mit Kalenderdatumsangaben und -zeiten arbeiten
Bei der Arbeit mit den Kalenderkomponenten müssen Sie sich mit dem Zusammenhang zwischen den Start- und Endzeiten des Kalenders, DATE- und TIME-Entitys und der lokalen Zeitzone vertraut machen.
Wenn Sie Ereignisse erstellen, aktualisieren oder abrufen, verwenden Sie den lokalen Datums-/Uhrzeitwert für die Werte start
und end
. Mit der Eigenschaft timezoneOffset
oder timezone
teilen Sie der Komponente mit, wie die Universalzeit (UTC) berechnet werden soll.
timezoneOffset
der Kalenderkomponenten unterscheidet sich von profile.timezoneOffset
. Bei Kalenderkomponenten ist timezoneOffset
der Wert, den die Komponente den Werten start
und end
hinzufügen muss, um die UTC abzurufen. Sie können den Eigenschaftswert timezoneOffset
einer Kalenderkomponente ableiten, indem Sie profile.timezoneOffset
mit -1 multiplizieren.
profile.timezoneOffset
ist möglicherweise nicht immer verfügbar. Das hängt davon ab, ob der Client den Offset bereitgestellt hat. Beispiel: Ein Benutzer kann eine Oracle-Web-App erstellen, die profile.timezoneOffset
nicht festlegt. Daher ist es empfehlenswert, eine Standardzeitzone für Fälle zu erstellen, in denen profile.timezoneOffset
nicht festgelegt wurde. Beispiel:
initTimezoneOffset:
requiresAuthorization: false
component: "System.SetVariable"
properties:
variable: "timezoneOffset"
value: <#attempt>${profile.timezoneOffset}<#recover>${system.config.defaultTimezoneOffset}</#attempt>
transitions:
next: "intent
Wenn Sie ein Ereignis abrufen, gibt die Komponente die Datums-/Uhrzeitwerte im UTC-Format zurück. Beispiel: 2021-04-15T22:00:00.000Z
. Der Skill muss den Wert in die Ortszeit konvertieren.
updateMeeting.printEventDetails:
component: "System.Output"
properties:
keepTurn: true
text: |
You selected:
${eventDetails.value.subject}
${(eventDetails.value.start?datetime.iso?long - timezoneOffset?number?long)?number_to_date?string['MMM d']}
${(eventDetails.value.start?datetime.iso?long - timezoneOffset?number?long)?number_to_date?string['hh:mm a']}-${(eventDetails.value.end?datetime.iso?long - timezoneOffset?number?long)?number_to_date?string['hh:mm a']}
Location: ${eventDetails.value.location}
Attendees: ${eventDetails.value.attendees?join(', ')}
transitions:
next: "updateMeeting.selectItemToChange"
Berücksichtigen Sie folgende Punkte bei Verwendung der Entitys DATE und TIME:
-
Wenn Sie eine Mischentity verwenden, die sowohl eine DATE- Entity als auch eine oder mehrere TIME-Entitys enthält, müssen Sie Out-of-Order-Extraktion deaktivieren. Wenn die Entitys aufgelöst werden, haben Sie andernfalls keine Kontrolle darüber, welche Werte als DATE-Entity und welche Werte als TIME-Entity (oder beides) aufgelöst werden. Beispiel: Wenn TIME aufgelöst wird, kann der Wert der DATE-Entity dadurch geändert werden.
-
Wenn eine Äußerung Text wie "gestern", "heute" oder "morgen" enthält, berücksichtigt der Parser die lokale Zeitzone nicht. Daher ist es möglich, dass am frühen Morgen und am späten Nachmittag das falsche Datum verwendet wird. Aus diesem Grund empfiehlt es sich, das aufgelöste Datum erneut anzuzeigen, damit der Benutzer es prüfen kann, bevor der Skill ein Ereignis hinzufügt oder die Start- oder Endzeit eines Ereignisses aktualisiert.
-
Um die Eigenschaftswerte
start
undend
eines Kalenders festzulegen, müssen Sie das Datum aus der DATE-Entity und die Uhrzeit aus der TIME-Entity verwenden. Beispiel:start: "${newEvent.value.date.date?number_to_date?string['yyyy-MM-dd']}T${newEvent.value.startTime.date?number_to_date?string['HH:mm:ss']}" end: "${newEvent.value.date.date?number_to_date?string['yyyy-MM-dd']}T${newEvent.value.endTime.date?number_to_date?string['HH:mm:ss']}"
Kalenderfehler verarbeiten
Der Kalenderprovider kann eine Ereignisanforderung ablehnen. Beispiel: Es kann ein Fehler zurückgegeben werden, wenn der Benutzer versucht, ein Ereignis zu erstellen, dessen Endzeit vor der Startzeit liegt. In den meisten Fällen gibt der Kalenderprovider einen 400-Fehler zurück, der wiederum den Skill an den globalen Error Handler überträgt.
Validieren Sie die Werte, um zu verhindern, dass diese Fehler auftreten. Beispiele für Validierungen von Mischentitys:
-
DATE-Entity: Validieren Sie bei neuen und aktualisierten Besprechungen, ob das Datum am oder nach dem aktuellen Datum liegt.
${(meetingSlot.value.date.date?number?long gte ((.now?date?long - timezoneOffset?number?long)?number_to_date?string['yyyy-MM-dd']+'T00:00:00')?datetime.iso?long)?then('true','false')}
-
TIME-Entity: Prüfen Sie bei neuen und aktualisierten Besprechungen, ob Datum und Startzeit am oder nach dem aktuellen Datums-/Uhrzeitwert liegen.
${(((meetingSlot.value.date.date?number_to_date?string['yyyy-MM-dd']+'T'+meetingSlot.value.startTime.date?number_to_date?string['HH:mm:ss'])?datetime.iso?long) gte (.now?date?long - timezoneOffset?number))?then('true','false')}
Prüfen Sie für alle Endzeiten, ob die Endzeit nach der Startzeit liegt.
${(newEvent.value.startTime.date?number_to_time < newEvent.value.endTime.date?number_to_time)?then('true','false')}
Um die Ablehnungen von Kalenderprovidern ordnungsgemäß zu verarbeiten, fügen Sie Ihren eigenen globalen Error Handler hinzu. Beispiel:
defaultTransitions:
error: "globalErrorHandler"
actions:
system.authorizeUser: "userAuthN.performOAuth"
...
globalErrorHandler:
requiresAuthorization: false
component: "System.Output"
properties:
text: "Sorry, we were unable to do the action that you requested."
transitions:
return: "done"
Alternativ dazu können Sie den Fehlerübergang verwenden, um Error Handler zu erstellen, die für jeden Fall geeignet sind:
setUpMeeting.performSchedule:
component: "System.CreateCalendarEvent"
properties:
start: "${newEvent.value.date.date?number_to_date?string['yyyy-MM-dd']}T${newEvent.value.startTime.date?number_to_date?string['HH:mm:ss']}"
end: "${newEvent.value.date.date?number_to_date?string['yyyy-MM-dd']}T${newEvent.value.endTime.date?number_to_date?string['HH:mm:ss']}"
subject: "${newEvent.value.subject}"
location: "${newEvent.value.location}"
attendees: "${newEvent.value.attendees}"
provider: "${system.config.calendarProvider}"
timezoneOffset: ${timezoneOffset?number * -1}
calendarOwner: "${user.authenticatedUser}"
calendarId: "${user.authenticatedUser}"
credential: "${user.accessToken}"
transitions:
next: "setUpMeeting.printResults"
error: "handleCreateEventError"
...
handleCreateEventError:
requiresAuthorization: false
component: "System.Output"
properties:
text: "Sorry, there's a problem with the event that you wanted to create."
transitions:
return: "done"
System.CreateCalendarEvent
Verwenden Sie diese Komponente, um ein Ereignis zu einem Outlook- oder Google-Kalender hinzuzufügen. Beachten Sie, dass Sie keine wiederkehrenden oder ganztägigen Ereignisse erstellen können.
Der Benutzer muss beim Kalenderprovider angemeldet sein, um auf diese Komponente zugreifen zu können. Sie können die Funktion "Autorisierung erforderlich" verwenden, um die Benutzeranmeldung zu verwalten, wie unter Kalenderautorisierung beschrieben.
Informationen zum Festlegen der Werte start
und end
finden Sie unter Mit Kalenderdaten und -zeiten arbeiten.
Nachfolgend finden Sie ein Beispiel für die Verwendung dieser Komponente. In diesem Beispiel wird eine Mischentity zum Abrufen von Datum, Start- und Endzeit, Betreff, Standort und Teilnehmern verwendet.
####################
# Create Meeting
####################
setUpMeeting:
component: "System.CommonResponse"
properties:
keepTurn: true
processUserMessage: true
variable: "newEvent"
nlpResultVariable: "iResult"
cancelPolicy: "immediate"
transitionAfterMatch: "false"
metadata:
responseItems:
- type: "text"
text: "${system.entityToResolve.value.prompt}"
actions:
- label: "${enumValue}"
type: "postback"
iteratorVariable: "system.entityToResolve.value.enumValues"
payload:
variables:
newEvent: "${enumValue}"
globalActions:
- label: "Cancel"
type: "postback"
visible:
onInvalidUserInput: false
payload:
action: "cancel"
transitions:
actions:
cancel: "allDone"
next: "setUpMeeting.askConfirm"
setUpMeeting.askConfirm:
component: "System.CommonResponse"
properties:
processUserMessage: true
metadata:
responseItems:
- type: "text"
text: |
Create ${newEvent.value.subject} meeting on ${newEvent.value.date.date?number_to_date?string['MMM d']}
from ${newEvent.value.startTime.date?number_to_date?string['hh:mm a']} to ${newEvent.value.endTime.date?number_to_date?string['hh:mm a']}
at ${newEvent.value.location} with ${newEvent.value.attendees}?
name: "confirmCreate"
separateBubbles: true
actions:
- label: "Yes"
type: "postback"
keyword: "yes"
payload:
action: "yes"
name: "Yes"
- label: "No"
keyword: "no"
type: "postback"
payload:
action: "no"
name: "No"
transitions:
next: "intent"
actions:
yes: "setUpMeeting.performSchedule"
no: "allDone"
textReceived: "intent"
setUpMeeting.performSchedule:
component: "System.CreateCalendarEvent"
properties:
start: "${newEvent.value.date.date?number_to_date?string['yyyy-MM-dd']}T${newEvent.value.startTime.date?number_to_date?string['HH:mm:ss']}"
end: "${newEvent.value.date.date?number_to_date?string['yyyy-MM-dd']}T${newEvent.value.endTime.date?number_to_date?string['HH:mm:ss']}"
subject: "${newEvent.value.subject}"
location: "${newEvent.value.location}"
attendees: "${newEvent.value.attendees}"
provider: "${system.config.calendarProvider}"
timezoneOffset: ${timezoneOffset?number * -1}
calendarOwner: "${user.authenticatedUser}"
calendarId: "${user.authenticatedUser}"
credential: "${user.accessToken}"
transitions:
next: "setUpMeeting.printResults"
error: "handleCreateCalendarError"
setUpMeeting.printResults:
component: "System.Output"
properties:
text: "The ${newEvent.value.date.date?number_to_date?string['MMM d']} meeting is now on your calendar."
keepTurn: true
transitions:
next: "setUpMeeting.getMeetings"
...
Diese Komponente wird in Oracle Digital Assistant Version 21.02 und höher unterstützt.
Eigenschaft | Beschreibung | Erforderlich? |
---|---|---|
provider |
Der Kalenderprovider. Die zulässigen Werte sind Google und Outlook .
|
Ja |
calendarOwner |
Die Benutzer-ID des Kalendereigentümers. Das muss eine gültige Account-ID für den Kalenderprovider sein, wie z.B. der Wert der Variable, die mit der Eigenschaft authenticatedUserVariable der Komponente System.OAuth2AccountLink identifiziert wird. Diese wird bei der Authentifizierung des Benutzers festgelegt.
|
Ja |
calendarId |
Der Name des Kalenders. Legen Sie diese Eigenschaft für den Standardkalender des Benutzers auf denselben Wert wie die Eigenschaft calendarOwner .
|
Ja |
credential |
Das Zugriffstoken des Providers. Das ist der Wert der Variable, die mit der Eigenschaft accessTokenVariableName der Komponente System.OAuth2AccountLink identifiziert wird. Diese wird bei der Authentifizierung des Benutzers festgelegt.
|
Ja |
start |
Startdatum und -uhrzeit der Besprechung im Format yyyy-MM-dd'T'HH:mm:ss . Beispiel: 2021-02-26T09:55:00 .
|
Ja |
end |
Enddatum und -uhrzeit der Besprechung im Format yyyy-MM-dd'T'HH:mm:ss . Beispiel: 2021-02-26T09:55:00 .
|
Ja |
subject |
Das Thema der Besprechung. | Ja |
attendees |
Eine durch Komma getrennte Liste mit Teilnehmern. Beachten Sie, dass der Kalenderprovider keine Benachrichtigung an einen Teilnehmer senden kann, wenn die ID keine gültige Account-ID für diesen Provider ist. | Ja |
timezoneOffset |
Die Zeit in Millisekunden, die der koordinierten Weltzeit (UTC) hinzugefügt werden muss, um die Normalzeit in der Zeitzone des Benutzers abzurufen. Beispiel: Wenn die lokale Zeitzone UTC-2 ist, lautet timezoneOffset -7200000 . Der Standardwert ist 0.
Hinweis
Sie können die Eigenschaft timezoneOffset für den aktuellen Benutzer basierend auf dem Wert der Benutzerkontextvariable profile.timezoneOffset ableiten. In diesem Fall müssen Sie jedoch profile.timezoneOffset mit -1 multiplizieren.
Sie können |
Nein |
timezone |
Die ID der lokalen Zeitzone gemäß https://www.iana.org/time-zones. Wird auch als TZ-Datenbankname bezeichnet. Beispiel: |
Nein |
System.DeleteCalendarEvent
Mit dieser Komponente können Sie ein Ereignis aus einem Outlook- oder Google-Kalender löschen. Beachten Sie, dass Sie keine wiederkehrenden oder ganztägigen Ereignisse löschen können.
Der Benutzer muss beim Kalenderprovider angemeldet sein, um auf diese Komponente zugreifen zu können. Sie können die Funktion "Autorisierung erforderlich" verwenden, um die Benutzeranmeldung zu verwalten, wie unter Kalenderautorisierung beschrieben.
Nachfolgend finden Sie ein Beispiel für die Verwendung dieser Komponente.
####################
# Cancel Meeting
####################
# Want to select from deletable meetings
cancelMeeting:
component: "System.SetVariable"
properties:
variable: "stateAfterList"
value: "cancelMeeting.confirmCancel"
transitions:
next: "cancelMeeting.setListType"
cancelMeeting.setListType:
component: "System.SetVariable"
properties:
variable: "listType"
# Only show deletable meetings
value: "DELETE"
transitions:
next: "cancelMeeting.setListPrompt"
cancelMeeting.setListPrompt:
component: "System.SetVariable"
properties:
variable: "listPrompt"
value: "to cancel"
transitions:
next: "listMeetings.commonEntryPoint"
# List meetings common code returns to this state
cancelMeeting.confirmCancel:
component: "System.ResetVariables"
properties:
variableList: "confirmAction"
transitions:
next: "cancelMeeting.askConfirm"
cancelMeeting.askConfirm:
component: "System.CommonResponse"
properties:
processUserMessage: true
metadata:
responseItems:
- type: "text"
text: "Are you sure you want to cancel this meeting?"
name: "confirmCcancel"
separateBubbles: true
actions:
- label: "Yes"
type: "postback"
keyword: "yes"
payload:
action: "yes"
name: "Yes"
- label: "No"
keyword: "no"
type: "postback"
payload:
action: "no"
name: "No"
transitions:
next: "intent"
actions:
yes: "cancelMeeting.performDelete"
no: "allDone"
textReceived: "intent"
cancelMeeting.performDelete:
component: "System.DeleteCalendarEvent"
properties:
eventId: "${eventId}"
provider: "${system.config.calendarProvider}"
calendarOwner: "${user.authenticatedUser}"
calendarId: "${user.authenticatedUser}"
credential: "${user.accessToken}"
transitions:
next: "cancelMeeting.printSuccessMessage"
cancelMeeting.printSuccessMessage:
component: "System.Output"
properties:
text: "I've cancelled the meeting"
transitions:
return: "doneCancel"
...
############################
# List Meetings Shared Code
############################
listMeetings.commonEntryPoint:
component: "System.SetVariable"
properties:
variable: "inputDate"
value: "${iResult.value.entityMatches['DATE'][0]}"
transitions:
next: "listMeetings.setDate"
listMeetings.setDate:
component: "System.SetVariable"
properties:
variable: "start"
value: "${inputDate.value?has_content?then(inputDate.value.date?number_to_date?string['yyyy-MM-dd'], (.now?date?long - timezoneOffset?number?long)?number_to_date?string['yyyy-MM-dd'])}T00:00:00"
transitions:
next: "listMeetings.clearInputDate"
listMeetings.clearInputDate:
component: "System.ResetVariables"
properties:
variableList: "inputDate"
transitions:
next: "listMeetings.filterByAttendees"
listMeetings.filterByAttendees:
component: "System.CommonResponse"
properties:
processUserMessage: true
metadata:
responseItems:
- type: "text"
text: "Do you want to list only meetings with a particular attendee?"
name: "confirmFilter"
separateBubbles: true
actions:
- label: "Yes"
type: "postback"
keyword: "yes"
payload:
action: "yes"
name: "Yes"
- label: "No"
keyword: "no"
type: "postback"
payload:
action: "no"
name: "No"
transitions:
next: "intent"
actions:
yes: "listMeetings.resolveAttendeesFilter"
no: "listMeetings.clearAttendeesFilter"
textReceived: "intent"
# clear filter
listMeetings.clearAttendeesFilter:
component: "System.ResetVariables"
properties:
variableList: "attendees"
transitions:
next: "listMeetings.performList"
# resolve filter
listMeetings.resolveAttendeesFilter:
component: "System.CommonResponse"
properties:
keepTurn: true
processUserMessage: true
variable: "attendees"
nlpResultVariable: "iResult"
metadata:
responseItems:
- type: "text"
text: "Who is the attendee?"
transitions:
next: "listMeetings.performAttendeesList"
actions:
textReceived: "listMeetings.performAttendeesList"
# perform attendees list
listMeetings.performAttendeesList:
component: "System.SelectCalendarEvent"
properties:
listType: "${listType}"
start: "${start}"
attendees: "${attendees}"
prompt: "Choose the ${start?datetime.iso?long?number_to_date?string['MMM d']} meeting ${listPrompt}:"
eventIdVariableName: "eventId"
provider: "${system.config.calendarProvider}"
timezoneOffset: ${timezoneOffset?number * -1}
calendarOwner: "${user.authenticatedUser}"
calendarId: "${user.authenticatedUser}"
credential: "${user.accessToken}"
transitions:
actions:
found: "${stateAfterList}"
notfound: "listMeetings.printNotFoundMessage"
next: "globalErrorHandler"
# perform list
listMeetings.performList:
component: "System.SelectCalendarEvent"
properties:
listType: "${listType}"
start: "${start}"
prompt: "Choose the ${start?datetime.iso?long?number_to_date?string['MMM d']} meeting ${listPrompt}:"
eventIdVariableName: "eventId"
provider: "${system.config.calendarProvider}"
timezoneOffset: ${timezoneOffset?number * -1}
calendarOwner: "${user.authenticatedUser}"
calendarId: "${user.authenticatedUser}"
credential: "${user.accessToken}"
transitions:
actions:
found: "${stateAfterList}"
notfound: "listMeetings.printNotFoundMessage"
next: "globalErrorHandler"
listMeetings.printNotFoundMessage:
component: "System.Output"
properties:
text: "There are no meetings on ${start?datetime.iso?long?number_to_date?string['MMM d']}"
transitions:
return: "doneListMeetings"
...
Diese Komponente wird in Oracle Digital Assistant Version 21.02 und höher unterstützt.
Eigenschaft | Beschreibung | Erforderlich? |
---|---|---|
provider |
Der Kalenderprovider. Die zulässigen Werte sind Google und Outlook .
|
Ja |
calendarOwner |
Die Benutzer-ID des Kalendereigentümers. Das muss eine gültige Account-ID für den Kalenderprovider sein, wie z.B. der Wert der Variable, die mit der Eigenschaft authenticatedUserVariable der Komponente System.OAuth2AccountLink identifiziert wird. Diese wird bei der Authentifizierung des Benutzers festgelegt.
|
Ja |
calendarId |
Der Name des Kalenders. Legen Sie diese Eigenschaft für den Standardkalender des Benutzers auf denselben Wert wie die Eigenschaft calendarOwner .
|
Ja |
credential |
Das Zugriffstoken des Providers. Das ist der Wert der Variable, die mit der Eigenschaft accessTokenVariableName der Komponente System.OAuth2AccountLink identifiziert wird. Diese wird bei der Authentifizierung des Benutzers festgelegt.
|
Ja |
eventId |
Die ID des zu löschenden Ereignisses. Sie können System.ListCalendarEvents oder System.SelectCalendarEvent verwenden, um eine eventId abzurufen.
|
Ja |
System.GetCalendarEventDetails
Mit dieser Komponente können Sie die Details eines Ereignisses aus einem Outlook- oder Google-Kalender abrufen.
Der Benutzer muss beim Kalenderprovider angemeldet sein, um auf diese Komponente zugreifen zu können. Sie können die Funktion "Autorisierung erforderlich" verwenden, um die Benutzeranmeldung zu verwalten, wie unter Kalenderautorisierung beschrieben.
Die Details werden in der Variable zurückgegeben, die von der Eigenschaft eventDetailsVariableName
im folgenden JSON-Format angegeben wird:
{
"isAllDay": boolean,
"subject": string,
"inviteResponse": string,
"attendees": [
"string",
...
],
"start": format yyyy-MM-dd'T'HH:mm:ss.SSSZ,
"end": format yyyy-MM-dd'T'HH:mm:ss.SSSZ,
"location": string,
"isRecurring": boolean,
"id": string
}
Die Eigenschaften start
und end
sind UTC-Werte. Informationen zum Konvertieren der Werte start
und end
in Ortszeit finden Sie unter Mit Kalenderdaten und -zeiten arbeiten.
Nachfolgend finden Sie ein Beispiel für die Verwendung dieser Komponente.
listMeetings.performGetDetails:
component: "System.GetCalendarEventDetails"
properties:
eventId: "${eventId}"
eventDetailsVariableName: "eventDetails"
provider: "${system.config.calendarProvider}"
calendarOwner: "${user.authenticatedUser}"
calendarId: "${user.authenticatedUser}"
credential: "${user.accessToken}"
transitions:
next: "listMeetings.checkIfResults"
# In case the eventId is no longer valid
listMeetings.checkIfResults:
component: "System.ConditionExists"
properties:
variable: "eventDetails"
transitions:
actions:
exists: "listMeetings.printEventDetails"
notexists: "globalErrorHandler"
listMeetings.printEventDetails:
component: "System.Output"
properties:
text: |
${eventDetails.value.subject}
${(eventDetails.value.start?datetime.iso?long - timezoneOffset?number?long)?number_to_date?string['MMM d']}
${(eventDetails.value.start?datetime.iso?long - timezoneOffset?number?long)?number_to_date?string['hh:mm a']}-${(eventDetails.value.end?datetime.iso?long - timezoneOffset?number?long)?number_to_date?string['hh:mm a']}
Location: ${eventDetails.value.location}
Attendees: ${eventDetails.value.attendees?join(', ')}
transitions:
return: "doneGetDetails"
Diese Komponente wird in Oracle Digital Assistant Version 21.02 und höher unterstützt.
Eigenschaft | Beschreibung | Erforderlich? |
---|---|---|
provider |
Der Kalenderprovider. Die zulässigen Werte sind Google und Outlook .
|
Ja |
calendarOwner |
Die Benutzer-ID des Kalendereigentümers. Das muss eine gültige Account-ID für den Kalenderprovider sein, wie z.B. der Wert der Variable, die mit der Eigenschaft authenticatedUserVariable der Komponente System.OAuth2AccountLink identifiziert wird. Diese wird bei der Authentifizierung des Benutzers festgelegt.
|
Ja |
calendarId |
Der Name des Kalenders. Legen Sie diese Eigenschaft für den Standardkalender des Benutzers auf denselben Wert wie die Eigenschaft calendarOwner .
|
Ja |
credential |
Das Zugriffstoken des Providers. Das ist der Wert der Variable, die mit der Eigenschaft accessTokenVariableName der Komponente System.OAuth2AccountLink identifiziert wird. Diese wird bei der Authentifizierung des Benutzers festgelegt.
|
Ja |
eventId |
Die ID des abzurufenden Ereignisses. Sie können System.ListCalendarEvents oder System.SelectCalendarEvent verwenden, um eine eventId abzurufen.
|
Ja |
eventDetailsVariableName |
Der Name der Kontextvariable, in der die Details gespeichert werden sollen. | Ja |
System.ListCalendarEvents
Mit dieser Komponente können Sie ein Array von Outlook- oder Google-Ereignissen für einen benannten Kalendereigentümer abrufen. Sie können die Liste nach folgenden Attributen filtern:
- Das Ereignis kann gelöscht werden.
- Das Ereignis kann aktualisiert werden.
- Der Benutzer wurde zum Ereignis eingeladen.
- Wie der Benutzer auf eine Einladung reagiert hat.
- Das Ereignis enthält mindestens einen benannten Teilnehmer.
- Die Besprechung beginnt nach einem Datum und einer Uhrzeit.
- Die Besprechung endet vor einem Datum und einer Uhrzeit.
Der Benutzer muss beim Kalenderprovider angemeldet sein, um auf diese Komponente zugreifen zu können. Sie können die Funktion "Autorisierung erforderlich" verwenden, um die Benutzeranmeldung zu verwalten, wie unter Kalenderautorisierung beschrieben.
Die Liste wird in der Variable zurückgegeben, die von der Eigenschaft eventListVariableName
im folgenden JSON-Format angegeben wird:
[{
"isAllDay": boolean,
"subject": string,
"inviteResponse": string,
"start": format yyyy-MM-dd'T'HH:mm:ss.SSSZ,
"end": format yyyy-MM-dd'T'HH:mm:ss.SSSZ,
"isRecurring": boolean,
"id": string
}, …]
Informationen zum Festlegen der Werte start
und end
finden Sie unter Mit Kalenderdaten und -zeiten arbeiten. In diesem Thema wird auch beschrieben, wie die Eigenschaftswerte JSON start
und end
in Ortszeit konvertiert werden.
Nachfolgend finden Sie ein Beispiel für die Verwendung dieser Komponente.
############################
# List Invites
############################
listInvites:
component: "System.ListCalendarEvents"
properties:
provider: "${system.config.calendarProvider}"
timezoneOffset: ${timezoneOffset?number * -1}
calendarOwner: "${user.authenticatedUser}"
calendarId: "${user.authenticatedUser}"
credential: "${user.accessToken}"
listType: "INVITED"
response: "PENDING,ACCEPTED,TENTATIVE,DECLINED"
eventListVariableName: "eventList"
start: "${(.now?date?long - timezoneOffset?number?long)?number_to_date?string['yyyy-MM-dd']}T00:00:00"
transitions:
next: "globalErrorHandler"
actions:
found: "listInvites.printMeetings"
notfound: "listInvites.notFound"
listInvites.printMeetings:
component: "System.CommonResponse"
properties:
keepTurn: true
metadata:
responseItems:
- type: "text"
# display the local time
text: |
${eventList.subject} [${eventList.inviteResponse}]
${(eventList.start?datetime.iso?long - timezoneOffset?number?long)?number_to_date?string['MMM d hh:mm a']} to ${(eventList.end?datetime.iso?long - timezoneOffset?number?long)?number_to_date?string['hh:mm a']}
name: "event"
separateBubbles: true
iteratorVariable: "eventList"
processUserMessage: false
transitions:
return: "listInvitesDone"
listInvites.notFound:
component: "System.Output"
properties:
keepTurn: true
text: "You don't have any invitations for the next 14 days"
transitions:
return: "listInvitesDone"
Diese Komponente wird in Oracle Digital Assistant Version 21.02 und höher unterstützt.
Eigenschaft | Beschreibung | Erforderlich? |
---|---|---|
provider |
Der Kalenderprovider. Die zulässigen Werte sind Google und Outlook .
|
Ja |
calendarOwner |
Die Benutzer-ID des Kalendereigentümers. Das muss eine gültige Account-ID für den Kalenderprovider sein, wie z.B. der Wert der Variable, die mit der Eigenschaft authenticatedUserVariable der Komponente System.OAuth2AccountLink identifiziert wird. Diese wird bei der Authentifizierung des Benutzers festgelegt.
|
Ja |
calendarId |
Der Name des Kalenders. Legen Sie diese Eigenschaft für den Standardkalender des Benutzers auf denselben Wert wie die Eigenschaft calendarOwner .
|
Ja |
credential |
Das Zugriffstoken des Providers. Das ist der Wert der Variable, die mit der Eigenschaft accessTokenVariableName der Komponente System.OAuth2AccountLink identifiziert wird. Diese wird bei der Authentifizierung des Benutzers festgelegt.
|
Ja |
listType |
Gibt den Typ der Liste an. Dieser muss einer der Folgenden sein:
|
Ja |
eventListVariableName |
Der Name der Kontextvariable, in der die Ereignisliste gespeichert werden soll. | Ja |
start |
Die früheste Datums-/Uhrzeitangabe, zu der Besprechungen in die Liste aufgenommen werden sollen (Format: yyyy-MM-dd'T'HH:mm:ss ). Beispiel: 2021-02-26T09:55:00 .
|
Ja |
end |
Die späteste Datums-/Uhrzeitangabe, zu der Besprechungen in die Liste aufgenommen werden sollen (Format: yyyy-MM-dd'T'HH:mm:ss ). Beispiel: 2021-02-26T09:55:00 .
Für den Listentyp |
Nein |
attendees |
Eine durch Komma getrennte Liste mit Zeichenfolgen (ohne Beachtung der Groß-/Kleinschreibung), mit denen die Liste nach Teilnehmern gefiltert werden soll. Nur Besprechungen, bei denen mindestens ein Teilnehmerwert mindestens eine Zeichenfolge in der Liste enthält, werden in die Ausgabe aufgenommen. | Nein |
response |
Eine durch Komma getrennte Liste mit Einladungsstatuswerten, nach denen die Liste gefiltert wird, wenn listType INVITED ist. Zulässige Statuswerte:
Der Standardwert ist |
Nein |
timezoneOffset |
Die Zeit in Millisekunden, die der koordinierten Weltzeit (UTC) hinzugefügt werden muss, um die Normalzeit in der Zeitzone des Benutzers abzurufen. Beispiel: Wenn die lokale Zeitzone UTC-2 ist, lautet timezoneOffset -7200000 . Der Standardwert ist 0.
Hinweis
Sie können die Eigenschaft timezoneOffset für den aktuellen Benutzer basierend auf dem Wert der Benutzerkontextvariable profile.timezoneOffset ableiten. In diesem Fall müssen Sie jedoch profile.timezoneOffset mit -1 multiplizieren.
Sie können |
Nein |
timezone |
Die ID der lokalen Zeitzone gemäß https://www.iana.org/time-zones. Wird auch als TZ-Datenbankname bezeichnet. Beispiel: America/Los_Angeles . Der Standardwert lautet UTC . Sie können timezoneOffset oder timezone angeben, aber nicht beides.
|
Nein |
Diese Komponente kann folgende Aktionen zurückgeben:
Aktion | Beschreibung |
---|---|
found |
Mindestens ein Ereignis wurde zurückgegeben. |
notfound |
Es sind keine übereinstimmenden Ereignisse vorhanden. |
System.SelectCalendarEvent
Mit dieser Komponente können Sie eine Liste von Outlook- oder Google-Ereignissen anzeigen, zwischen denen der Benutzer wählen kann. Die Komponente speichert die ID des ausgewählten Ereignisses in der Variable, die mit der Eigenschaft eventIdVariableName
angegeben wird.
Sie können die Liste für die Auswahl nach folgenden Attributen filtern:
- Das Ereignis kann gelöscht werden.
- Das Ereignis kann aktualisiert werden.
- Der Benutzer wurde zum Ereignis eingeladen.
- Wie der Benutzer auf eine Einladung reagiert hat.
- Das Ereignis enthält mindestens einen benannten Teilnehmer.
- Die Besprechung beginnt nach einem Datum und einer Uhrzeit.
- Die Besprechung endet vor einem Datum und einer Uhrzeit.
Der Benutzer muss beim Kalenderprovider angemeldet sein, um auf diese Komponente zugreifen zu können. Sie können die Funktion "Autorisierung erforderlich" verwenden, um die Benutzeranmeldung zu verwalten, wie unter Kalenderautorisierung beschrieben.
Informationen zum Festlegen der Werte start
und end
finden Sie unter Mit Kalenderdaten und -zeiten arbeiten.
Nachfolgend finden Sie ein Beispiel für die Verwendung dieser Komponente.
############################
# Respond Invites
############################
respondInvites.performList:
component: "System.SelectCalendarEvent"
properties:
listType: "INVITED"
response: "${inviteFilter}"
# Note: For list type INVITED the default end date is 14 days after the start date and time.
start: "${(.now?date?long - timezoneOffset?number?long)?number_to_date?string['yyyy-MM-dd']}T00:00:00"
prompt: "Select the invitation to send the response to:"
eventIdVariableName: "eventId"
provider: "${system.config.calendarProvider}"
timezoneOffset: ${timezoneOffset?number * -1}
calendarOwner: "${user.authenticatedUser}"
calendarId: "${user.authenticatedUser}"
credential: "${user.accessToken}"
transitions:
next: "globalErrorHandler"
actions:
found: "respondInvites.resolveInviteResponse"
notfound: "respondInvites.printNotFoundMessage"
respondInvites.printNotFoundMessage:
component: "System.Output"
properties:
text: "There are no meeting invites."
transitions:
return: "allDone"
...
Diese Komponente wird in Oracle Digital Assistant Version 21.02 und höher unterstützt.
Eigenschaft | Beschreibung | Erforderlich? |
---|---|---|
provider |
Der Kalenderprovider. Die zulässigen Werte sind Google und Outlook .
|
Ja |
calendarOwner |
Die Benutzer-ID des Kalendereigentümers. Das muss eine gültige Account-ID für den Kalenderprovider sein, wie z.B. der Wert der Variable, die mit der Eigenschaft authenticatedUserVariable der Komponente System.OAuth2AccountLink identifiziert wird. Diese wird bei der Authentifizierung des Benutzers festgelegt.
|
Ja |
calendarId |
Der Name des Kalenders. Legen Sie diese Eigenschaft für den Standardkalender des Benutzers auf denselben Wert wie die Eigenschaft calendarOwner .
|
Ja |
credential |
Das Zugriffstoken des Providers. Das ist der Wert der Variable, die mit der Eigenschaft accessTokenVariableName der Komponente System.OAuth2AccountLink identifiziert wird. Diese wird bei der Authentifizierung des Benutzers festgelegt.
|
Ja |
listType |
Gibt den Typ der Liste an. Dieser muss einer der Folgenden sein:
|
Ja |
eventIdVariableName |
Der Name der Kontextvariable, in der die Ereignis-ID gespeichert werden soll. | Ja |
start |
Die früheste Datums-/Uhrzeitangabe, zu der Besprechungen in die Liste aufgenommen werden sollen (Format: yyyy-MM-dd'T'HH:mm:ss ). Beispiel: 2021-02-26T09:55:00 .
|
Ja |
end |
Die späteste Datums-/Uhrzeitangabe, zu der Besprechungen in die Liste aufgenommen werden sollen (Format: yyyy-MM-dd'T'HH:mm:ss ). Beispiel: 2021-02-26T09:55:00 .
Für den Listentyp |
Nein |
attendees |
Eine durch Komma getrennte Liste mit Zeichenfolgen (ohne Beachtung der Groß-/Kleinschreibung), mit denen die Liste nach Teilnehmern gefiltert werden soll. Nur Besprechungen, bei denen mindestens ein Teilnehmerwert mindestens eine Zeichenfolge in der Liste enthält, werden in die Ausgabe aufgenommen. | Nein |
response |
Eine durch Komma getrennte Liste mit Einladungsstatuswerten, nach denen die Liste gefiltert wird, wenn listType INVITED ist. Zulässige Statuswerte:
Der Standardwert ist |
Nein |
prompt |
Der Text, der vor der Liste angezeigt wird. Der Standardwert ist You have the following meeting(s): Sie müssen diese Eigenschaft nur dann aufnehmen, wenn Sie den Standardwert außer Kraft setzen möchten.
Tipp: In Skills mit Plattformversion 21.04 und höher wird der Standardwert im Resource Bundle des Skills gespeichert. Um den Standardwert zu ändern, öffnen Sie die Seite Resource Bundle des Skills, klicken Sie auf![]() |
Nein |
allDayLabel |
Der Text zur Angabe ganztägiger Ereignisse. Der Standardwert ist All day .
|
Nein |
recurringLabel |
Der Text zur Angabe eines wiederkehrenden Ereignisses. Der Standardwert ist Recurring .
|
Nein |
acceptedLabel |
Der Text, der angibt, dass der Kalendereigentümer die Einladung angenommen hat. Der Standardwert ist Accepted .
|
Nein |
tentativeLabel |
Der Text, der angibt, dass der Kalendereigentümer die Einladung vorläufig angenommen hat. Der Standardwert ist Tentative .
|
Nein |
declinedLabel |
Der Text, der angibt, dass der Kalendereigentümer die Einladung abgelehnt hat. Der Standardwert ist Declined .
|
Nein |
pendingLabel |
Der Text, der angibt, dass der Kalendereigentümer nicht auf die Einladung reagiert hat. Der Standardwert ist Pending .
|
Nein |
timezoneOffset |
Die Zeit in Millisekunden, die der koordinierten Weltzeit (UTC) hinzugefügt werden muss, um die Normalzeit in der Zeitzone des Benutzers abzurufen. Beispiel: Wenn die lokale Zeitzone UTC-2 ist, lautet timezoneOffset -7200000 . Der Standardwert ist 0.
Hinweis
Sie können die Eigenschaft timezoneOffset für den aktuellen Benutzer basierend auf dem Wert der Benutzerkontextvariable profile.timezoneOffset ableiten. In diesem Fall müssen Sie jedoch profile.timezoneOffset mit -1 multiplizieren.
Sie können |
Nein |
timezone |
Die ID der lokalen Zeitzone gemäß https://www.iana.org/time-zones. Wird auch als TZ-Datenbankname bezeichnet. Beispiel: America/Los_Angeles . Der Standardwert lautet UTC . Sie können timezoneOffset oder timezone angeben, aber nicht beides.
|
Nein |
Diese Komponente kann folgende Aktionen zurückgeben:
Aktion | Beschreibung |
---|---|
found |
Mindestens ein Ereignis wurde zurückgegeben. |
notfound |
Es sind keine übereinstimmenden Ereignisse vorhanden. |
System.SendInviteResponse
Mit dieser Komponente können Sie eine Einladung für ein Outlook- oder Google-Kalenderereignis annehmen, vorläufig annehmen oder ablehnen.
Der Benutzer muss beim Kalenderprovider angemeldet sein, um auf diese Komponente zugreifen zu können. Sie können die Funktion "Autorisierung erforderlich" verwenden, um die Benutzeranmeldung zu verwalten, wie unter Kalenderautorisierung beschrieben.
Nachfolgend finden Sie ein Beispiel für die Verwendung dieser Komponente.
############################
# Respond Invites
############################
respondInvites:
component: "System.CommonResponse"
properties:
processUserMessage: true
metadata:
responseItems:
- type: "text"
text: "Which types of meeting invitations do you want to respond to?"
name: "getInviteFilter"
separateBubbles: true
actions:
- label: "Pending and tentatively accepted invitations"
type: "postback"
keyword: "PENDING,TENTATIVE"
payload:
variables:
inviteFilter: "PENDING,TENTATIVE"
- label: "All invitations"
keyword: "PENDING,ACCEPTED,TENTATIVE,DECLINED"
type: "postback"
payload:
variables:
inviteFilter: "PENDING,ACCEPTED,TENTATIVE,DECLINED"
- label: "Cancel"
keyword: "cancel"
type: "postback"
payload:
action: "allDone"
transitions:
actions:
allDone: "allDone"
textReceived: "intent"
next: "respondInvites.performList"
respondInvites.performList:
component: "System.SelectCalendarEvent"
properties:
listType: "INVITED"
response: "${inviteFilter}"
# Note: For list type INVITED the default end date is 14 days after the start date and time.
start: "${(.now?date?long - timezoneOffset?number?long)?number_to_date?string['yyyy-MM-dd']}T00:00:00"
prompt: "Select the invitation to send the response to:"
eventIdVariableName: "eventId"
provider: "${system.config.calendarProvider}"
timezoneOffset: ${timezoneOffset?number * -1}
calendarOwner: "${user.authenticatedUser}"
calendarId: "${user.authenticatedUser}"
credential: "${user.accessToken}"
transitions:
next: "globalErrorHandler"
actions:
found: "respondInvites.resolveInviteResponse"
notfound: "respondInvites.printNotFoundMessage"
respondInvites.printNotFoundMessage:
component: "System.Output"
properties:
text: "There are no meeting invites."
transitions:
return: "allDone"
############################
# Invite Response
############################
respondInvites.resolveInviteResponse:
component: "System.CommonResponse"
properties:
processUserMessage: true
metadata:
responseItems:
- type: "text"
text: "Choose a response:"
name: "getInviteResponse"
separateBubbles: true
actions:
- label: "Accept"
type: "postback"
keyword: "ACCEPTED"
payload:
variables:
inviteResponse: "ACCEPTED"
- label: "Tentatively accept"
keyword: "TENTATIVE"
type: "postback"
payload:
variables:
inviteResponse: "TENTATIVE"
- label: "Decline"
keyword: "DECLINED"
type: "postback"
payload:
variables:
inviteResponse: "DECLINED"
- label: "Don't send a response"
keyword: "CANCEL"
type: "postback"
payload:
action: "allDone"
transitions:
actions:
allDone: "allDone"
textReceived: "intent"
next: "respondInvites.performRespond"
respondInvites.performRespond:
component: "System.SendInviteResponse"
properties:
eventId: "${eventId}"
response: "${inviteResponse}"
provider: "${system.config.calendarProvider}"
calendarOwner: "${user.authenticatedUser}"
calendarId: "${user.authenticatedUser}"
credential: "${user.accessToken}"
transitions:
next: "respondInvites.printSuccessMessage"
respondInvites.printSuccessMessage:
component: "System.Output"
properties:
text: "I've sent the meeting invitation response"
transitions:
return: "doneSendInviteResponse"
Diese Komponente wird in Oracle Digital Assistant Version 21.02 und höher unterstützt.
Eigenschaft | Beschreibung | Erforderlich? |
---|---|---|
provider |
Der Kalenderprovider. Die zulässigen Werte sind Google und Outlook .
|
Ja |
calendarOwner |
Die Benutzer-ID des Kalendereigentümers. Das muss eine gültige Account-ID für den Kalenderprovider sein, wie z.B. der Wert der Variable, die mit der Eigenschaft authenticatedUserVariable der Komponente System.OAuth2AccountLink identifiziert wird. Diese wird bei der Authentifizierung des Benutzers festgelegt.
|
Ja |
calendarId |
Der Name des Kalenders. Legen Sie diese Eigenschaft für den Standardkalender des Benutzers auf denselben Wert wie die Eigenschaft calendarOwner .
|
Ja |
credential |
Das Zugriffstoken des Providers. Das ist der Wert der Variable, die mit der Eigenschaft accessTokenVariableName der Komponente System.OAuth2AccountLink identifiziert wird. Diese wird bei der Authentifizierung des Benutzers festgelegt.
|
Ja |
eventId |
Die ID des Ereignisses, an das die Antwort gesendet werden soll. Mit System.ListCalendarEvents oder System.SelectCalendarEvent können Sie die ID der Kalenderereignisse abrufen, zu denen der Kalendereigentümer eingeladen wurde.
|
Ja |
response |
Die zu sendende Antwort. Zulässige Antworten:
|
Ja |
System.UpdateCalendarEvent
Verwenden Sie diese Komponente, um Änderungen an einem Outlook- oder Google-Kalenderereignis vorzunehmen. Beachten Sie, dass Sie keine wiederkehrenden oder ganztägigen Ereignisse aktualisieren können.
Der Benutzer muss beim Kalenderprovider angemeldet sein, um auf diese Komponente zugreifen zu können. Sie können die Funktion "Autorisierung erforderlich" verwenden, um die Benutzeranmeldung zu verwalten, wie unter Kalenderautorisierung beschrieben.
Informationen zum Festlegen der Werte start
und end
finden Sie unter Mit Kalenderdaten und -zeiten arbeiten.
Nachfolgend finden Sie ein Beispiel für die Verwendung dieser Komponente. In diesem Beispiel wird eine Mischentity zum Abrufen des Datums, der Startzeit und der Endzeit verwendet.
####################
# Update Meeting
####################
updateMeeting:
component: "System.SetVariable"
properties:
variable: "stateAfterList"
value: "updateMeeting.performGetDetails"
transitions:
next: "updateMeeting.setListType"
updateMeeting.setListType:
component: "System.SetVariable"
properties:
variable: "listType"
# Only show updateable meetings
value: "UPDATE"
transitions:
next: "updateMeeting.setListPrompt"
updateMeeting.setListPrompt:
component: "System.SetVariable"
properties:
variable: "listPrompt"
value: "to update"
transitions:
next: "listMeetings.commonEntryPoint"
# List meetings common code returns to this state
updateMeeting.performGetDetails:
component: "System.GetCalendarEventDetails"
properties:
eventId: "${eventId}"
eventDetailsVariableName: "eventDetails"
provider: "${system.config.calendarProvider}"
calendarOwner: "${user.authenticatedUser}"
calendarId: "${user.authenticatedUser}"
credential: "${user.accessToken}"
transitions:
next: "updateMeeting.checkIfResults"
updateMeeting.checkIfResults:
component: "System.ConditionExists"
properties:
variable: "eventDetails"
transitions:
actions:
exists: "updateMeeting.printEventDetails"
notexists: "globalErrorHandler"
updateMeeting.printEventDetails:
component: "System.Output"
properties:
keepTurn: true
text: |
You selected:
${eventDetails.value.subject}
${(eventDetails.value.start?datetime.iso?long - timezoneOffset?number?long)?number_to_date?string['MMM d']}
${(eventDetails.value.start?datetime.iso?long - timezoneOffset?number?long)?number_to_date?string['hh:mm a']}-${(eventDetails.value.end?datetime.iso?long - timezoneOffset?number?long)?number_to_date?string['hh:mm a']}
Location: ${eventDetails.value.location}
Attendees: ${eventDetails.value.attendees?join(', ')}
transitions:
next: "updateMeeting.updateTime"
# Change meeting time
updateMeeting.updateTime:
component: "System.ResolveEntities"
properties:
variable: "meetingSlot"
nlpResultVariable: "iResult"
maxPrompts: 5
cancelPolicy: "immediate"
transitions:
actions:
cancel: "allDone"
next: "updateMeeting.setStart"
updateMeeting.setStart:
component: "System.SetVariable"
properties:
variable: "start"
value: "${meetingSlot.value.date.date?number_to_date?string['yyyy-MM-dd']}T${meetingSlot.value.startTime.date?number_to_date?string['HH:mm:ss']}"
transitions:
next: "updateMeeting.setEnd"
updateMeeting.setEnd:
component: "System.SetVariable"
properties:
variable: "end"
value: "${meetingSlot.value.date.date?number_to_date?string['yyyy-MM-dd']}T${meetingSlot.value.endTime.date?number_to_date?string['HH:mm:ss']}"
transitions:
next: "updateMeeting.updateTime.performUpdate"
updateMeeting.updateTime.performUpdate:
component: "System.UpdateCalendarEvent"
properties:
eventId: "${eventId}"
start: "${start}"
end: "${end}"
provider: "${system.config.calendarProvider}"
#timezone: "${system.config.timezoneID}"
timezoneOffset: ${timezoneOffset?number * -1}
calendarOwner: "${user.authenticatedUser}"
calendarId: "${user.authenticatedUser}"
credential: "${user.accessToken}"
transitions:
next: "updateMeeting.printSuccessMessage"
error: "handleUpdateCalendarError"
...
############################
# List Meetings Shared Code
############################
listMeetings.commonEntryPoint:
component: "System.SetVariable"
properties:
variable: "inputDate"
value: "${iResult.value.entityMatches['DATE'][0]}"
transitions:
next: "listMeetings.setDate"
listMeetings.setDate:
component: "System.SetVariable"
properties:
variable: "start"
value: "${inputDate.value?has_content?then(inputDate.value.date?number_to_date?string['yyyy-MM-dd'], (.now?date?long - timezoneOffset?number?long)?number_to_date?string['yyyy-MM-dd'])}T00:00:00"
transitions:
next: "listMeetings.clearInputDate"
listMeetings.clearInputDate:
component: "System.ResetVariables"
properties:
variableList: "inputDate"
transitions:
next: "listMeetings.filterByAttendees"
listMeetings.filterByAttendees:
component: "System.CommonResponse"
properties:
processUserMessage: true
metadata:
responseItems:
- type: "text"
text: "Do you want to list only meetings with a particular attendee?"
name: "confirmFilter"
separateBubbles: true
actions:
- label: "Yes"
type: "postback"
keyword: "yes"
payload:
action: "yes"
name: "Yes"
- label: "No"
keyword: "no"
type: "postback"
payload:
action: "no"
name: "No"
transitions:
next: "intent"
actions:
yes: "listMeetings.resolveAttendeesFilter"
no: "listMeetings.clearAttendeesFilter"
textReceived: "intent"
# clear filter
listMeetings.clearAttendeesFilter:
component: "System.ResetVariables"
properties:
variableList: "attendees"
transitions:
next: "listMeetings.performList"
# resolve filter
listMeetings.resolveAttendeesFilter:
component: "System.CommonResponse"
properties:
keepTurn: true
processUserMessage: true
variable: "attendees"
nlpResultVariable: "iResult"
metadata:
responseItems:
- type: "text"
text: "Who is the attendee?"
transitions:
next: "listMeetings.performAttendeesList"
actions:
textReceived: "listMeetings.performAttendeesList"
# perform attendees list
listMeetings.performAttendeesList:
component: "System.SelectCalendarEvent"
properties:
listType: "${listType}"
start: "${start}"
attendees: "${attendees}"
prompt: "Choose the ${start?datetime.iso?long?number_to_date?string['MMM d']} meeting ${listPrompt}:"
eventIdVariableName: "eventId"
provider: "${system.config.calendarProvider}"
timezoneOffset: ${timezoneOffset?number * -1}
calendarOwner: "${user.authenticatedUser}"
calendarId: "${user.authenticatedUser}"
credential: "${user.accessToken}"
transitions:
actions:
found: "${stateAfterList}"
notfound: "listMeetings.printNotFoundMessage"
next: "globalErrorHandler"
# perform list
listMeetings.performList:
component: "System.SelectCalendarEvent"
properties:
listType: "${listType}"
start: "${start}"
prompt: "Choose the ${start?datetime.iso?long?number_to_date?string['MMM d']} meeting ${listPrompt}:"
eventIdVariableName: "eventId"
provider: "${system.config.calendarProvider}"
timezoneOffset: ${timezoneOffset?number * -1}
calendarOwner: "${user.authenticatedUser}"
calendarId: "${user.authenticatedUser}"
credential: "${user.accessToken}"
transitions:
actions:
found: "${stateAfterList}"
notfound: "listMeetings.printNotFoundMessage"
next: "globalErrorHandler"
listMeetings.printNotFoundMessage:
component: "System.Output"
properties:
text: "There are no meetings on ${start?datetime.iso?long?number_to_date?string['MMM d']}"
transitions:
return: "doneListMeetings"
...
Diese Komponente wird in Oracle Digital Assistant Version 21.02 und höher unterstützt.
Eigenschaft | Beschreibung | Erforderlich? |
---|---|---|
provider |
Der Kalenderprovider. Die zulässigen Werte sind Google und Outlook .
|
Ja |
calendarOwner |
Die Benutzer-ID des Kalendereigentümers. Das muss eine gültige Account-ID für den Kalenderprovider sein, wie z.B. der Wert der Variable, die mit der Eigenschaft authenticatedUserVariable der Komponente System.OAuth2AccountLink identifiziert wird. Diese wird bei der Authentifizierung des Benutzers festgelegt.
|
Ja |
calendarId |
Der Name des Kalenders. Legen Sie diese Eigenschaft für den Standardkalender des Benutzers auf denselben Wert wie die Eigenschaft calendarOwner .
|
Ja |
credential |
Das Zugriffstoken des Providers. Das ist der Wert der Variable, die mit der Eigenschaft accessTokenVariableName der Komponente System.OAuth2AccountLink identifiziert wird. Diese wird bei der Authentifizierung des Benutzers festgelegt.
|
Ja |
eventId |
Die ID des zu aktualisierenden Ereignisses. Sie können System.ListCalendarEvents oder System.SelectCalendarEvent verwenden, um eine eventId abzurufen.
|
Ja |
start |
Das neue Startdatum und die neue Startzeit im Format yyyy-MM-dd'T'HH:mm:ss . Beispiel: 2021-02-26T09:55:00 .
|
Nein |
end |
Das neue Enddatum und die neue Endzeit im Format yyyy-MM-dd'T'HH:mm:ss . Beispiel: 2021-02-26T09:55:00 .
|
Nein |
subject |
Das neue Thema der Besprechung. | Ja |
attendees |
Eine durch Komma getrennte Liste mit Teilnehmern. Diese Liste ersetzt die vorherige Liste. Beachten Sie, dass der Kalenderprovider keine Benachrichtigung an einen Teilnehmer senden kann, wenn die ID keine gültige Account-ID für diesen Provider ist. | Ja |
timezoneOffset |
Die Zeit in Millisekunden, die der koordinierten Weltzeit (UTC) hinzugefügt werden muss, um die Normalzeit in der Zeitzone des Benutzers abzurufen. Beispiel: Wenn die lokale Zeitzone UTC-2 ist, lautet timezoneOffset -7200000 . Der Standardwert ist 0.
Hinweis
Sie können die Eigenschaft timezoneOffset für den aktuellen Benutzer basierend auf dem Wert der Benutzerkontextvariable profile.timezoneOffset ableiten. In diesem Fall müssen Sie jedoch profile.timezoneOffset mit -1 multiplizieren.
Sie können |
Nein |
timezone |
Die ID der lokalen Zeitzone gemäß https://www.iana.org/time-zones. Wird auch als TZ-Datenbankname bezeichnet. Beispiel: America/Los_Angeles . Der Standardwert lautet UTC . Sie können timezoneOffset oder timezone angeben, aber nicht beides.
|
Nein |
Footer

Dieser Footer wird in allen Kanälen angezeigt, auch wenn Schaltflächen unterstützt werden, wie z.B. bei Facebook. Sie können jedoch eine kanalspezifische Anzeige für den Footer konfigurieren. Gehen Sie dazu wie folgt vor:
-
Definieren Sie die Variable
autoNumberPostbackActions
mit dem Ausdrucksystem.message
.setAutoNumbering: component: "System.SetVariable" properties: variable: "autoNumberPostbackActions" value: "${(system.channelType=='facebook')?then('true','false')}"
-
Definieren Sie
footerText
mit einer Apache FreeMarker-Anweisungif
, um den Footer basierend auf dem Kanaltyp anzuzeigen oder auszublenden.footerText: <#if autoNumberPostbackActions.value>"Make your choice by entering the menu option number."</#if>
Bei Facebook rendert System.CommonResponse den Footertext in einer eigenen Textsprechblase, die direkt vor den globalen Aktionen (den Schnellantworten) angezeigt wird. Nach diesen Aktionen kann der Footer nicht mehr angezeigt werden, da dies eine zweite Footertextblase erfordert, die dazu führt, dass die Aktionen nicht mehr angezeigt werden.
Die Translate-Eigenschaft
translate
, die die Einstellung der Variablen autoTranslate
überschreibt:
-
Wenn Sie die Variable
autoTranslate
auffalse
(Standard) setzen, erfolgt keine automatische Übersetzung für die Komponente, es sei denn, Sie setzen die Eigenschafttranslate
auftrue
. -
Wenn Sie die Variable
autoTranslate
auftrue
setzen, wird die Eigenschafttranslate
ebenfalls auftrue
gesetzt. Dies bedeutet, dass Label, Titel, Beschreibung, Prompt und Textzeichenfolgen übersetzt werden.
autotranslate
aktiviert haben, indem Sie es auf true
setzen, werden Prompts, Titel, Beschreibungen, Label und Textzeichenfolgen der Komponente aus der Übersetzung ausgeschlossen, wenn deren Eigenschaft translate
auf false
gesetzt ist. Wenn Sie hingegen autotranslate
nicht aktivieren, die Eigenschaft translate
einer Komponente jedoch auf true
setzen, werden Prompts, Titel, Beschreibungen, Label und Textzeichenfolgen der Komponente anhand des konfigurierten Übersetzungsservice in die ermittelte Benutzersprache übersetzt. (Eingabekomponenten übersetzen die Benutzereingabe ins Englische.)
Einstellung von "autoTranslate" | Einstellung der Komponenteneigenschaft "translate" | Benutzereingabe, Prompt, Label, Text, Titel und Beschreibung werden übersetzt |
---|---|---|
true |
nicht festgelegt | ja |
true |
true |
ja |
true |
false |
nein |
false |
nicht festgelegt | nein |
false |
false |
nein |
false |
true |
ja |
Abläufe, die mit dem Visual Flow Designer entworfen wurden, haben nicht die Eigenschaft
translate
oder die Kontextvariable autoTranslate
. Um die Übersetzung für diese Skills zu konfigurieren, verwenden Sie die Eigenschaften Benutzereingabemeldung übersetzen und Botantwortnachricht übersetzen.
System.Feedback
In diesem Thema wird die Verwendung dieser Komponente im YAML-Modus behandelt. Informationen zur Verwendung im Visual Flow Designer finden Sie unter Benutzerfeedback.
Mit der Komponente System.Feedback
können Sie Feedbackdaten für Insights erfassen, indem Sie Benutzern eine Bewertungsskala anzeigen, nachdem sie einen Transaktionsablauf abgeschlossen haben. Wenn Sie das SDK 21.10 oder höher verwenden, gibt diese Komponente ein horizontales Sternenbewertungssystem aus. Wenn Sie ein früheres SDK verwenden, gibt die Komponente diese Bewertungsskala als einfache Liste aus, mit der Benutzer auf die Schaltfläche tippen können, die ihrer Bewertung entspricht.
Während Sie das Verhalten dieser Komponente mit den Komponenteneigenschaften ändern können, können Sie ihr Look-and-Feel ändern, wenn Sie das SDK (Version 21.10 oder höher) verwenden. Beispiel: Sie können die Standardsternsymbole für die Feedbackschaltflächen durch ein anderes Symbol ersetzen.
System.Feedback-Komponenteneigenschaften
Eigenschaft | Beschreibung |
---|---|
maxRating |
Die maximale Bewertung, die ein Benutzer weiterleiten kann. Standardmäßig ist der Höchstwert 5 . Sie können diesen Wert nach unten anpassen.
|
enableTextFeedback |
Ein boolescher Wert, der, wenn er auf true gesetzt ist, es dem Benutzer ermöglicht, Textfeedback weiterzuleiten, wenn die Bewertung kleiner oder gleich dem Wert threshold ist. Diese Eigenschaft ist standardmäßig auf false (kein Feedback aktiviert) gesetzt.
|
threshold |
Der Wert für die Auswertung des Übergangs zwischen den Aktionen above und below . Standardmäßig wird der Schwellenwert zwischen positivem und negativem Feedback als 2 für den Standardwert maxRating festgelegt, der 5 ist.
|
footerText |
Der Text, der unten im Feedbackdialogfeld angezeigt wird. |
System.Feedback-Komponentenübergänge
return: "done"
-Übergang beendet.
Aktion | Beschreibung |
---|---|
above |
Legen Sie fest, wenn die Benutzereingabe ein gültiger Wert über dem Wert threshold ist.
|
below |
Legen Sie fest, wenn die Benutzereingabe ein gültiger Wert ist, der dem Wert threshold oder darunter entspricht. ).
|
cancel |
Legen Sie fest, wann Benutzer die Bewertung ablehnen, indem Sie auf Überspringen klicken. |
system.userFeedbackRating
- Gibt die Bewertung des Benutzers zurück.system.userFeedbackText
: WennenableTextFeedback
auftrue
gesetzt ist, kann Ihr Skill zur Eingabe von Feedback auffordern, wenn die Bewertungen den Wertthreshold
unterschreiten.system.userFeedbackText
gibt die Benutzereingabe (${system.userFeedbackText.value}
) zurück.
...
getUserFeedback:
component: "System.Feedback"
properties:
threshold: 2
maxRating: 5
enableTextFeedback: true
transitions:
actions:
above: "positiveFeedback"
below: "negativeFeedback"
cancel: "cancelFeedback"
positiveFeedback:
component: "System.Output"
properties:
text: "Thank you for your rating of ${system.userFeedbackRating.value}."
transitions:
return: "done"
negativeFeedback:
component: "System.Output"
properties:
text: "You gave us a score of ${system.userFeedbackRating.value} and entered ${system.userFeedbackText.value}. We appreciate your feedback."
transitions:
return: "done"
cancelFeedback:
component: "System.Output"
properties:
text: "Feedback canceled."
transitions:
return: "done"
...
System.Text
Diese Komponente ist veraltet, und es ist keine Vorlage mehr verfügbar. Stattdessen können Sie eine der vielen Vorlagen basierend auf der Komponente "Allgemeine Antwort" verwenden, die im Abschnitt User Messaging des Dialogfelds Komponente hinzufügen angeboten wird.
Mit der Komponente System.Text
kann Ihr Bot einen Kontext oder eine Benutzervariable festlegen, indem er den Benutzer auffordert, Text einzugeben.
System.Text
wechselt, fordert sie den Benutzer auf, Text einzugeben. Wenn der Benutzer einen Wert eingibt, kehrt die Dialog-Engine zu diesem Status zurück. Die Komponente verarbeitet die Benutzerantwort und speichert den Wert in der Variablen, wenn die Benutzereingabe in den Variablentyp konvertiert werden kann. Die Dialog-Engine wechselt in einen anderen Status, wenn diese Variable einen Wert hat.
Die Dialog-Engine überspringt den Status
System.Text
, wenn die Variable bereits einen Wert enthält.
Eigenschaft | Beschreibung | Erforderlich? |
---|---|---|
prompt |
Eine Textzeichenfolge, die die vom Benutzer erforderliche Eingabe beschreibt. Sie können ihr mit einem Wertausdruck dynamisch Werte hinzufügen. Beispiel: Hallo ${profile.firstName}, wie viele Pizzas möchten Sie? |
Ja |
variable |
Der Name der Variablen. Dabei kann es sich um eine Benutzervariable oder eine der im Knoten context deklarierten Variablen handeln.
|
Ja |
nlpResultVariable |
Legt die Eigenschaft variable mit einem Entitywert fest (wenn dieser Entitywert noch nicht für die referenzierte Variable festgelegt wurde). Sie können nlpResultVariable aktivieren, um einen Wert zurückzugeben, wenn Sie ihn mit einer Variablen definieren, die die NLP-Ergebnisse enthält (wie iresult: "nlpresult" in den Beispielbots). In diesem Fall kann die Eigenschaft nlpResultVariable den Wert bei Null dennoch auffüllen, wenn sie eine aufgelöste Entity findet, die mit der von der Variablen referenzierten Entity übereinstimmt. Der Dialog geht in den nächsten Status über, wenn nlpResultVariable den Wert festlegt. Sie können diese Eigenschaft anstelle der Komponente System.SetVariable verwenden.
|
Nein |
maxPrompts |
Gibt an, wie oft die Komponente den Benutzer zur Eingabe auffordert, wenn die letzte Eingabe ungültig war. Siehe Anzahl der Eingabeaufforderungen einschränken. | Nein |
translate |
Mit dieser Eigenschaft können Sie den booleschen Wert außer Kraft setzen, den Sie für die Kontextvariable autotranslate festgelegt haben. Wenn Sie diese Variable nicht festgelegt oder auf false gesetzt haben, können Sie diese Eigenschaft auf true setzen, um die automatische Übersetzung nur für diese Komponente zu aktivieren. Wenn die Variable autotranslation auf true gesetzt ist, können Sie diese Eigenschaft auf false setzen, um diese Komponente von der automatischen Übersetzung auszuschließen. Siehe Übersetzungsservices in Skills.
|
Nein |
Die vordefinierten Aktionstypen, die Sie mit dieser Komponente verwenden können, finden Sie unter Übergänge für gemeinsame Antwortkomponenten.
Wie verwende ich die Komponente "System.Text"?
In diesem Beispiel enthält die Variable type
die Werte, die von der Entity PizzaType
erwartet werden, wie Käse
, Veggie Lover
und Hawaii
. Wenn diese Informationen in der Benutzereingabe fehlen, kann der Bot sie dennoch abrufen, weil der Dialogablauf in den Status type
übergeht, dessen Komponente System.Text
den Benutzer dazu auffordert, den gewünschten Status explizit anzugeben. Beachten Sie, dass die Benutzereingabe dennoch als PizzaType
-Entity aufgelöst werden muss, um in den nächsten Status zu wechseln.
main: true
name: "PizzaBot"
parameters:
age: 18
context:
variables:
size: "PizzaSize"
type: "PizzaType"
crust: "PizzaCrust"
iResult: "nlpresult"
...
type:
component: "System.Text"
properties:
prompt: "What Type of Pizza do you want?"
variable: "type"
transitions:
...
System.List
Diese Komponente ist veraltet, und es ist keine Vorlage mehr verfügbar. Stattdessen können Sie eine der vielen Vorlagen basierend auf der Komponente "Allgemeine Antwort" verwenden, die im Abschnitt User Messaging des Dialogfelds Komponente hinzufügen angeboten wird.
Die Komponente System.List
dient zur Ausgabe einer Liste von Optionen. Je nachdem, ob ein Variablenwert festgelegt (oder sogar für diese Komponente definiert) wurde, kann die Navigation von der Komponente durch die Benutzerauswahl oder durch den für den Benutzer oder die Kontextvariable festgelegten Wert ausgelöst werden.
Eigenschaft | Beschreibung | Erforderlich? |
---|---|---|
options |
Sie können options mit durch Komma getrennten Textzeichenfolgen, Apache FreeMarker-Ausdrücken und als Liste mit Zuordnungen angeben. Die Eigenschaft "options" und Aktionslisten enthalten beide Beispiele für den zweiten Ansatz.
|
Ja |
prompt |
Die Textzeichenfolge der Eingabeaufforderung. | Ja |
variable |
Der Name der Variablen, deren Wert von der Benutzereingabe gefüllt wird. Die Dialog-Engine überspringt diesen Status, wenn der Variablenwert bereits festgelegt wurde, und gibt keine Listenoptionen für den Benutzer aus. | Nein |
nlpResultVariable |
Legt die Eigenschaft variable mit einem Entitywert fest (wenn dieser Entitywert noch nicht für die referenzierte Variable festgelegt wurde). Sie können nlpResultVariable aktivieren, um einen Wert zurückzugeben, wenn Sie diesen mit der Variable definieren, die die NLP-Ergebnisse enthält (wie iResult: "nlpresult" in den Beispielskills). In diesem Fall kann die Eigenschaft nlpResultVariable den Wert bei Null dennoch auffüllen, wenn sie eine aufgelöste Entity findet, die mit der von der Variablen referenzierten Entity übereinstimmt. Der Dialog geht in den nächsten Status über, wenn nlpResultVariable den Wert festlegt. Sie können diese Eigenschaft anstelle der Komponente System.SetVariable verwenden. In Aktionslisten wird beschrieben, wie Sie die Eigenschaften variable und nlpResultVariable verwenden können, um das Listenanzeigeverhalten zu ändern.
|
Nein - Verwenden Sie diese Eigenschaft, wenn die Variable eine Entitytyp-Variable benennt. |
maxPrompts |
Gibt an, wie oft die Komponente den Benutzer zur Eingabe auffordert, wenn die letzte Eingabe ungültig war. Siehe Anzahl der Eingabeaufforderungen einschränken. | Nein |
translate |
Mit dieser Eigenschaft können Sie den booleschen Wert außer Kraft setzen, den Sie für die Kontextvariable autotranslate festgelegt haben. Wenn Sie diese Variable nicht festgelegt oder auf false gesetzt haben, können Sie diese Eigenschaft auf true setzen, um die automatische Übersetzung nur für diese Komponente zu aktivieren. Wenn die Variable autotranslation auf true gesetzt ist, können Sie diese Eigenschaft auf false setzen, um diese Komponente von der automatischen Übersetzung auszuschließen. Siehe Übersetzungsservices in Skills.
|
Nein |
autoNumberPostbackActions |
Wenn dies auf true gesetzt ist, stellt diese Option den Optionen Zahlen voran. Selbst wenn Sie diese Option nicht auf true gesetzt haben, kann die automatische Nummerierung für Listenelemente erzwungen werden, wenn die Konfiguration Automatische Nummerierung bei Postback-Aktionen aktivieren des digitalen Assistenten auf true gesetzt ist. Kanalspezifische automatische Nummerierung kann auf jeden Skill angewendet werden, der bei einem digitalen Assistenten registriert ist: ${(system.channelType=='twilio')?then('true','false')} |
Nein |
footerText |
Erweitert die Ausgabe auf textbasierten Kanälen. Wie unter Footer beschrieben, können Sie FreeMarker-Ausdrücke verwenden, um den Footertext für Nur-Text-Kanäle bedingt zu formatieren. | Nein |
Werteliste
Mit der Komponente System.List
können Sie einen Wert zurückgeben, der einer Kontextvariablen entspricht, die als Primitive (wie greeting: "string"
in der Dialogablaufvorlage) oder als Entity definiert ist, wie im folgenden Snippet dargestellt. In diesem Dialogablauf gibt die Definition options: "Dick,Dünn,Gefüllt,Pan"
einen Wert zurück, der mit der Variablen crust
übereinstimmt. Die für die Größe definierte Eigenschaft options
ist ein Wertausdruck (${size.type.enumValues}
), der die Listenwerte "Groß", "Mittel", "Klein" und "Persönlich" als Optionen zurückgibt. Siehe Apache FreeMarker Template Language-Syntax.
iResult
der Eigenschaft nlpResultVariable
die Komponente die Entitywerte für die Eigenschaften variable
für die Status crust
und size
festlegen kann, wenn diese Werte zuvor nicht festgelegt wurden. Wie die Komponente Text
erfordert auch die Komponente System.List
keine Übergänge.
main: true
name: "PizzaBot"
...
context:
variables:
size: "PizzaSize"
crust: "PizzaCrust"
iResult: "nlpresult"
...
states:
...
crust:
component: "System.List"
properties:
options: "Thick,Thin,Stuffed,Pan"
prompt: "What crust do you want for your pizza?"
variable: "crust"
main: true
name: "PizzaBot"
...
context:
variables:
size: "PizzaSize"
crust: "PizzaCrust"
iResult: "nlpresult"
...
states:
...
crust:
component: "System.List"
properties:
options: "Thick,Thin,Stuffed,Pan"
prompt: "What crust do you want for your pizza?"
variable: "crust"
nlpResultVariable: "iresult"
transitions:
next: "size"
size:
component: "System.List"
properties:
options: "${size.type.enumValues}"
prompt: "What size Pizza do you want?"
variable: "size"
nlpResultVariable: "iresult"
transitions:
...

Benutzer sind nicht auf die in der Liste angezeigten Optionen eingeschränkt. Sie können die Entity auflösen, indem sie ein Wort eingeben, das die Entity erkennt, wie ein Synonym. Anstatt eine Option für die Pizzagrößen in der Liste auszuwählen, können Benutzer z.B. stattdessen jumbo eingeben, ein Synonym, das für die Option Groß der Entity
PizzaSize
definiert ist. Siehe Benutzerdefinierte Entitys.
Die Optionseigenschaft
options
wie folgt festlegen:
-
Eine Liste von Zuordnungen - Sie können die Eigenschaft
options
als Textzeichenfolge oder Wertausdruck festlegen, aber auch als Liste von Zuordnungen konfigurieren. Jede Zuordnung verfügt über eine Eigenschaftlabel
, eine Eigenschaftvalue
und eine optionale Eigenschaftkeyword
. Sie können die Listenoptionen nach diesem Ansatz lokalisieren, da Sie wie im folgenden Beispiel angegeben auf ein Resource Bundle verweisen können. Weitere Informationen zur Verwendung der Punktnotation finden Sie unter Resource Bundles für Skills. Wenn Benutzer einen Wert eingeben, der mit einem der Werte übereinstimmt, die in der Eigenschaftkeyword
angegeben werden, reagiert der Bot genau so, wie wenn ein Benutzer die Listenoption selbst antippt.askPizzaSize: component: "System.List" properties: prompt: What size do you want?" options: - value: "small" label: "${rb.pizza_size_small}" keyword: "1" - value: "medium" label: "${rb.pizza_size_medium}" keyword: "2" - value: "large" label: "${rb.pizza_size_large}" keyword: "3" variable: "pizzaSize"
-
Eine Textzeichenfolge mit durch Komma getrennten Optionen, wie
"klein, mittel, groß"
im folgenden Snippet. Sie können die Eigenschaftenlabel
undvalue
nicht hinzufügen, wenn Sieoptions
als Zeichenfolge definieren.askPizzaSize: component: "System.List" properties: prompt: "What size do you want?" options: "small, medium, large" variable: "pizzaSize"
-
Ein Apache FreeMarker-Wertausdruck, der entweder eine Zeichenfolgenliste oder eine Liste von Zuordnungen durchläuft, wobei jede Zuordnung sowohl die Eigenschaften
label
als auchvalue
sowie optional eine Eigenschaftkeyword
enthalten muss.askPizzaSize: component: "System.List" properties: prompt: "What size do you want?" options: "${pizzaSize.value.enumValues}" variable: "pizzaSize"
Aktionslisten
System.Switch
für die bedingte Navigation zu verwenden, können Sie Aktionslisten einsetzen. Mit den optionalen Eigenschaften variable
und nlpResultVariable
von System.List
werden das Listenanzeigeverhalten und der nachfolgende Übergang basierend auf der Benutzereingabe festgelegt.
- Wenn Sie diese Eigenschaften nicht konfigurieren, basiert die Übergangsaktion auf der vom Skillbenutzer ausgewählten Option:
showMenu: component: "System.List" properties: prompt: "Hello, this is our menu today" options: - value: "pasta" label: "Pasta" - value: "pizza" label: "Pizza" transitions: actions: pasta: "orderPasta" pizza: "orderPizza"
- Wenn Sie die Eigenschaften
variable
undnlpResultVariable
hinzufügen, wird die Listenanzeige umgangen, wenn die Eingabe des Benutzers übereinstimmt. Im folgenden Snippet wird die Liste mit Optionen umgangen, wennnlpResultVariable
die Variablesize
aus der Benutzereingabe festlegt, wie Ich möchte eine große Pizza bestellen. Der Übergang, der dem Wert entspricht, wird dann ausgelöst.getPizzaSize: component: "System.List" properties: prompt: "What size of pizza" variable: "size" nlpResultVariable: "iResult" options: - label: "Small" value: "Small" - label: "Large" value: "Large" transitions: actions: Large: "Large" Small: "Small"
System.Output
System.Output
können Sie eine Nachricht ausgeben, die keine Benutzerantwort oder keine Verarbeitung der Benutzerantwort durch den Skill erfordert.
Diese Komponente ist veraltet, und es ist keine Vorlage mehr verfügbar. Stattdessen können Sie eine der vielen Vorlagen basierend auf der
System.CommonResponse
verwenden, die im Abschnitt User Messaging des Dialogfelds Komponente hinzufügen angeboten werden.
Eigenschaft | Beschreibung | Erforderlich? |
---|---|---|
text |
Eine Textzeichenfolge | Ja. Für dieses Feld ist ein Wert erforderlich. |
keepTurn |
Ein boolescher Wert zum Aufgeben (false ) oder Beibehalten (true ) der Kontrolle des Skills über den Dialogablauf. Verwenden Sie keepTurn: true , wenn Sie eine ununterbrochene Sequenz von Skillnachrichten ausgeben möchten, in denen keine Einwürfe vom Benutzer akzeptiert werden.
|
Nein |
translate |
Mit dieser Eigenschaft können Sie den booleschen Wert außer Kraft setzen, den Sie für die Kontextvariable autotranslate festgelegt haben. Wenn Sie diese Variable nicht festgelegt oder auf false gesetzt haben, können Sie diese Eigenschaft auf true setzen, um die automatische Übersetzung nur für diese Komponente zu aktivieren. Wenn Sie die Variable autotranslation auf true setzen, können Sie diese Eigenschaft auf false setzen, um diese Komponente von der automatischen Übersetzung auszuschließen. Siehe Übersetzungsservices in Skills.
|
Nein |
Wie verwende ich die Komponente "System.Output"?
System.Output
erfordert die Zeichenfolgendefinition für die Eigenschaft text
. Wie im folgenden Beispiel einer Bestätigungsnachricht dargestellt, können Sie dieser Zeichenfolge Wertausdrücke hinzufügen.done:
component: "System.Output"
properties:
text: "Your ${size.value}, ${type.value} pizza with ${crust.value} crust is on its way. Thank you for your order."
Standardmäßig wartet die Dialog-Engine auf Benutzereingaben, nachdem eine Anweisung von Ihrem Skill ausgegeben wurde. Wenn Sie dieses Verhalten außer Kraft setzen, fügen Sie die optionale Eigenschaft keepTurn
hinzu, und setzen Sie sie auf true
, um die Dialog-Engine zum nächsten Status weiterzuleiten, der durch die Eigenschaft transitions
definiert wird. Wenn kein Übergang definiert wurde, wechselt die Dialog-Engine zum nächsten Status in der Abfolge.
wait:
component: "System.Output"
properties:
text: "Please wait, we're reviewing your order"
keepTurn: true
transitions:
next: "ready"
waitmore:
component: "System.Output"
properties:
text: "Almost done..."
keepTurn: true
transitions:
next: "done"
done:
component: "System.Output"
properties:
text: "Your ${size.value}, ${type.value} pizza with ${crust.value} crust is on its way. Thank you for your order."
transitions:
return: "done"
Wertausdrücke für die Komponente "System.Output" definieren
text
definieren. Beispiel: Das folgende Snippet verwendet verschiedene Ausdrücke, um den Text zur Bestellbestätigung auszugeben (Pizzagröße und Pizzatyp).confirmation:
component: "System.Output"
properties:
text: "Your ${size.value} ${type.value} pizza is on its way."
transitions:
return: "done"
Jeder Ausdruck muss immer einen Wert zurückgeben. Wenn auch nur ein Ausdruck einen Nullwert zurückgibt, gibt der Skill Raw-Text für jeden Ausdruck in der Zeichenfolge aus. Dadurch erhalten Ihre Benutzer eine Ausgabe wie die Folgende: Your ${size.value} ${type.value} is on its way.
Alles oder Nichts. Um sicherzustellen, dass Ihr Skill immer Text ausgibt, den die Benutzer verstehen können, ersetzen Sie einen Nullwert durch einen Standardwert, mit dem Apache FreeMarker-Standardwertoperator: ${size.value!\”piping\”} ${type.value!\”hot\”}
. Die doppelten Anführungszeichen geben an, dass der Standardwert kein Variablenverweis ist, sondern der konstante Wert, den der Operator erwartet. Beispiel:text: "Your ${size.value!\"piping\"} ${type.value!\"hot\"} pizza is on its way."
Maskieren Sie immer die Anführungszeichen (
\"...\"
), die den Standardwert einschließen, wenn Sie den FreeMarker-Operator verwenden. Die OBotML-Syntax des Dialogablaufs ist nur gültig, wenn Sie diese Escapesequenz bei der Definition eines Standardwertvorgangs verwenden oder den Ausgabetext mit doppelten Anführungszeichen absetzen. Beispiel: Mit der folgenden System.Output
-Komponentendefinition können Benutzer die Nachricht wie folgt lesen: Sie haben gesagt: "Diese Bestellung stornieren".confirmCancel:
component: "System.Output"
properties:
text: "You said, \"Cancel this order.\""
transitions:
return: "cancelOrder"
Ausgabetext übersetzen
translate
können Sie den automatisch übersetzten Text der Komponente System.Output
pro Komponente unterdrücken oder aktivieren. Wenn Sie den Wert auf false
setzen, wie im folgenden Snippet, gibt die Komponente den Text unverändert ohne Übersetzung aus. Wenn Sie diese Eigenschaft auf true
setzen, können Sie die automatische Übersetzung aktivieren, wenn die Variable autoTranslate
auf false
gesetzt oder nicht definiert ist. Siehe Übersetzungsservices in Skills.
In der Regel sollten Sie die Variable
autoTranslate
nicht auf true
setzen, wenn Sie Text mit Resource Bundles übersetzen. Diese Vorgehensweise wird nicht empfohlen.
setAutoTranslate:
component: "System.SetVariable"
properties:
variable: "autoTranslate"
value: "true"
transitions:
...
...
pizzaType:
component: "System.Output"
properties:
text: "What type of pizza do you want?"
translate: false
transitions:
...