Composants d'interface utilisateur
Il s'agit des composants disponibles dans la catégorie Interface utilisateur de l'éditeur de flux de dialogue basé sur YAML.
-
System.CommonResponse : génère des messages riches en contenu.
-
System.Webview : intègre votre bot avec une application Web.
-
System.IncidentCreation : crée un incident pour Oracle B2C Service ou Oracle Fusion Service.
-
System.IntelligentAdvisor : intègre la brique à une enquête Oracle Intelligent Advisor.
-
System.KnowledgeSearch : recherche des informations sur un sujet dans un service de base de connaissances.
-
System.AgentTransfer : permet à une brique d'assistant numérique en tant qu'agent de transférer une conversation vers Oracle B2C Service ou Oracle Fusion Service.
-
System.AgentTransferCondition : permet de vérifier si des agents sont disponibles et d'obtenir le temps d'attente attendu.
-
System.AgentInitiation et System.AgentConversation : permettent de transférer une conversation vers un agent physique Oracle B2C Service.
-
System.ResolveEntities : résout les valeurs des entités de membre d'une entité de conteneur composite.
- System.Feedback : sort un composant d'évaluation du retour.
System.CommonResponse
Le composant System.CommonResponse
vous permet de créer des messages avec des fonctionnalités d'interface utilisateur enrichies telles que des carrousels de cartes avec des images et des boutons d'action, ou des formulaires avec des tables et des champs d'entrée.
Cette rubrique traite de l'utilisation de ce composant en mode YAML. Pour plus d'informations sur son utilisation dans le concepteur de flux visuel, voir Modèles de composant de réponse communs.
Les modèles pour System.CommonResponse
sont disponibles dans la section Messagerie utilisateur de la boîte de dialogue Ajouter un composant.
System.CommonResponse
dans CrcPizzaBot : l'un des exemples de bots. Dans cette présentation de PizzaBot, vous pouvez afficher un menu riche en images avec les boutons d'action rapide Commander maintenant.
Dans le contexte du composant System.CommonResponse
, les différents types de message sont appelés types de réponse. CrcPizzaBot vous montre, entre autres, comment les utilisateurs de bot peuvent répondre aux invites à l'aide des boutons d'action et comment afficher le menu de pizza en tant que cascade des éléments de carte.
Dans le menu Ajouter un composant, vous pouvez sélectionner différents modèles System.CommonResponse
pour les réponses de carte, de texte et de pièce jointe et les entités de conteneur composite (illustrées par CbPizzaBot). Ces modèles incluent des propriétés communes à toutes ces propriétés de type de réponse et propres à chaque type de réponse. Alors que le menu Ajouter un composant ajoute des états distincts pour chaque type de réponse, vous pouvez combiner des types de réponse en un seul état. CrcPizzaBot affiche des exemples des deux cas dans l'état ShowMenu
(réponse de texte) et dans l'état OrderPizza
(réponses de texte et de carte).
Vous devez tester chaque brique dans vos canaux cible au début du cycle de développement afin de vous assurer que les composants s'affichent comme souhaité.
Propriétés de composant
La configuration des composants System.CommonResponse
implique la définition de propriétés qui dirigent le moteur de dialogue avec des propriétés de métadonnées qui décrivent non seulement la façon dont le composant livre les messages (comme les invites de texte, les cartes ou les pièces jointes), mais également la définition du contenu et du comportement pour les messages eux-mêmes.
Nom | Description | Requis ? |
---|---|---|
metadata |
La réponse à la discussion créée par ce composant est orientée par le contenu de la propriété metadata . Reportez-vous à Propriété Metadata dans Composants de réponse communs.
|
Oui |
processUserMessage |
Définissez cette propriété sur true pour que le moteur de dialogue revienne à l'état après que l'utilisateur saisit du texte ou appuie sur un bouton. Définissez cette propriété sur false si aucune entrée utilisateur n'est requise (ou attendue).
Définissez cette propriété sur |
Oui |
autoNumberPostbackActions |
Cette propriété est utilisée pour les conteneurs composites, les réponses de texte et les réponses de carte. Lorsqu'elle est définie sur true , cette option ajoute des nombres en tant que préfixes à des options. Même si vous n'avez pas défini cette option sur true , la numérotation automatique peut être appliquée aux éléments de carte lorsque la configuration Activer la numérotation automatique sur les actions de postback de l'assistant numérique est définie sur true . Comme démontré par sa configuration par défaut, la numérotation automatique propre au canal peut être appliquée à tout bot de brique inscrit dans un assistant numérique (${(system.channelType=='twilio')?then('true','false')} ) :
|
Non |
variable |
Cette variable contient le nom du contexte ou de la variable utilisateur rempli lorsqu'un utilisateur répond en entrant du texte libre au lieu d'appuyer sur un bouton. Cette propriété est ignorée lorsqu'un utilisateur appuie sur un bouton, car la charge utile du bouton détermine les valeurs des variables à définir. Si la propriété de variable a déjà été définie lorsque le moteur de dialogue entre dans cet état, l'état est ignoré. Pour les entités de conteneur composite, référencez la variable d'entité de conteneur composite. Les utilisateurs sont invités à saisir les différentes valeurs d'entité dans le conteneur. Lorsque toutes les valeurs d'entité sont définies, le composant passe à l'état suivant. |
Non |
nlpResultVariable |
Définit la propriété variable avec une valeur d'entité (si cette valeur d'entité n'a pas encore été définie pour la variable référencée). Vous pouvez activer la fonction nlpResultVariable pour renvoyer une valeur lorsque vous la définissez à l'aide d'une variable contenant les résultats du traitement du langage naturel (par exemple, iResult: "nlpresult" qui est utilisé dans nos exemples de bots). Ainsi, la propriété nlpResultVariable peut toujours remplir la valeur lorsqu'elle est NULL si elle trouve une entité résolue correspondant à celle référencée par la variable. La boîte de dialogue passe à l'état suivant lorsque nlpResultVariable définit la valeur. Vous pouvez utiliser cette propriété à la place du composant System.SetVariable.
|
Non |
useFullEntityMatches |
Lorsque cette propriété est définie sur true , les valeurs d'entité personnalisée sont stockées en tant qu'objets JSON (comme les valeurs d'entité intégrée). Vous pouvez ainsi créer des expressions pour accéder aux propriétés telles que value , primaryLanguageValue et originalString , qui sont particulièrement importantes pour les briques actuellement multilingues ou susceptibles de le devenir.
|
Non |
maxPrompts |
Pour que le composant System.CommonResponse puisse remplir la valeur de variable que vous avez indiquée pour la propriété variable à partir du texte saisi par l'utilisateur, il valide la valeur par rapport au type de variable. Il peut s'agir d'une validation de type d'entité ou, dans le cas d'un type primitif, d'une valeur qui peut être contrainte au type primitif.
Lorsque le composant ne peut pas valider la valeur, le moteur de dialogue renvoie le texte du message et les options. (Vous pouvez modifier ce message pour refléter l'échec de la validation.) Pour éviter une boucle infinie résultant de l'incapacité de l'utilisateur à entrer une valeur valide, utilisez cette propriété afin de définir une limite sur le nombre de tentatives accordé à l'utilisateur. Lorsque l'utilisateur dépasse ce nombre, le composant Comme décrit dans Création d'une entité de conteneur composite, des entités dans le conteneur composite peuvent remplacer ce paramètre lorsque l'option Nombre maximal de tentatives de saisie utilisateur est définie. |
Non |
keepTurn |
La propriété keepTurn s'applique uniquement lorsque vous définissez la propriété processUserMessage sur false . Pour savoir comment définir cette propriété, reportez-vous à System.Output.
|
Non |
translate |
Utilisez cette propriété afin de remplacer la valeur booléenne que vous avez définie pour la variable de contexte autotranslate . Si vous n'avez pas défini cette variable ou si vous l'avez définie sur false , vous pouvez définir cette propriété sur true afin d'activer la traduction automatique pour ce composant uniquement. Si vous définissez la variable autotranslation sur true , vous pouvez définir cette propriété sur false pour exclure ce composant de la traduction automatique. Reportez-vous à Services de traduction dans les briques.
|
Non |
footerText |
Améliore la sortie sur les canaux de texte uniquement. Comme décrit dans Pieds de page, vous pouvez utiliser des expressions FreeMarker afin d'appliquer des conditions au texte de pied de page pour les canaux de texte uniquement. | Non |
transitionAfterMatch (obsolète)
|
Valeur booléenne qui, lorsque vous la définissez sur true , permet une transition temporaire de la correspondance d'entité effectuée par ce composant vers un autre état. Cette propriété n'est plus prise en charge. Pour obtenir cette fonctionnalité, utilisez un gestionnaire d'événements d'entité. |
Non |
cancelPolicy |
Détermine le moment de la transition cancel :
maxPromptsReached de niveau élément ou de niveau événement. |
Non |
Voici le YAML pour un exemple d'état basé sur le composant 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"
Conseil :
La propriététext
dans ce fragment de code est définie à l'aide du langage FTL (FreeMarker Template Language) Apache. Pour savoir comment ajouter des expressions FTL et utiliser les opérations intégrées FreeMarker afin de transformer les valeurs de variable, reportez-vous à Syntaxe de langage FTL Apache.
Transitions pour le composant System.CommonResponse
Transition | Description |
---|---|
cancel |
Déclenché lorsqu'un utilisateur dépasse le nombre de tentatives allouées défini par la propriété maxAttempts ou redirige le flux.
|
textReceived |
Déclenché lorsqu'un utilisateur envoie du texte ou des emojis au lieu d'appuyer sur un bouton d'action ou un lien. |
attachmentReceived |
Déclenché lorsqu'un utilisateur envoie une image, un fichier audio, une vidéo ou une pièce jointe. |
locationReceived |
Déclenché lorsque l'utilisateur envoie un emplacement. |
system.outOfOrderMessage |
Cette option est définie pour contourner le comportement inattendu de l'utilisateur. Plus précisément, lorsqu'un utilisateur n'appuie sur aucun élément d'action dans le message actuel, mais qu'il appuie sur une action appartenant à un ancien message dans la session de discussion. |
Transitions de conteneur composite dans le composant System.CommonResponse
System.CommonResponse
déclenchent les actions match
et cancel
en fonction des valeurs mises en correspondance à partir de la saisie utilisateur et de la configuration de la propriété cancelPolicy
.
Action | Description | Requis ? |
---|---|---|
match |
Le composant déclenche cette action pour accéder à l'état spécifié lorsqu'au moins une entité du conteneur correspond à la saisie utilisateur. | Non |
cancel |
Le composant déclenche cette action pour accéder à l'état spécifié en fonction des paramètres de la propriété cancelPolicy .
|
Non |
System.Webview
Cette rubrique traite de l'utilisation de ce composant en mode YAML. Pour plus d'informations sur son utilisation dans le concepteur visuel de flux, reportez-vous à Composant de vue Web.
Le composant System.Webview
ouvre une vue Web dans votre brique ou dans un onglet de navigateur pour des briques qui s'exécutent dans un canal Web.
Propriétés du composant System.WebView
Propriété | Description | Requis ? |
---|---|---|
sourceVariableList |
Liste des noms de variable utilisateur ou de contexte séparés par des virgules. Ces noms de variable sont les paramètres envoyés à la vue Web ; il s'agit des paramètres d'entrée de votre bot. Vous pouvez définir chaque variable en ajoutant une série d'états System.SetVariable avant l'état System.Webview .
|
Oui |
variable |
Nom de la variable (valeur de chaîne) identifiant la charge utile de vue Web renvoyée au bot une fois que l'utilisateur a terminé ses interactions dans la vue Web.
La charge utile étant stockée dans cette variable, vous pouvez y accéder ultérieurement dans la définition du flux de dialogue. Vous pouvez par exemple y faire référence dans un composant de sortie. |
Oui |
prompt |
Chaîne de texte comme "Tap to continue". | Non |
service |
Nom du service du composant de vue Web. | Non |
imageUrl |
URL de l'image qui accompagne une invite. | Non |
linkLabel |
Libellé du bouton qui appelle l'application Web. | Non |
cancelLabel |
Libellé du bouton Annuler qui permet aux utilisateurs de quitter l'état sans appeler l'application Web. | Non |
autoNumberPostbackActions |
Autorise la saisie utilisateur dans les canaux SMS, qui ne prennent pas en charge les boutons, en ajoutant des équivalents numériques aux éléments d'interface utilisateur.
|
Non |
translate |
Utilisez cette propriété afin de remplacer la valeur booléenne que vous avez définie pour la variable de contexte autotranslate . Si vous n'avez pas défini cette variable ou si vous l'avez définie sur false , vous pouvez définir cette propriété sur true afin d'activer la traduction automatique pour ce composant uniquement. Si vous définissez la variable autotranslation sur true , vous pouvez définir cette propriété sur false pour exclure ce composant de la traduction automatique. Reportez-vous à Services de traduction dans les briques.
|
Non |
Transitions pour le composant System.Webview
Transitions | Description |
---|---|
next |
Nomme l'état suivant dans le flux de dialogue une fois le callback effectué à partir de l'application Web. |
return |
Quitte la conversation une fois le callback effectué dans l'application Web. |
error |
Nomme l'état qui gère les erreurs. |
actions |
|
System.IncidentCreation
Vous pouvez utiliser le composant System.IncidentCreation
pour créer un incident sur un site de service client. Pour pouvoir utiliser ce composant dans votre instance, vous devez créer une intégration de service client à partir de la page Paramètres > Services supplémentaires > Intégration de service client.
Cette rubrique traite de l'utilisation de ce composant en mode YAML. Pour plus d'informations sur son utilisation dans le concepteur visuel de flux, reportez-vous à Création d'incident.
Voici un exemple d'utilisation de ce composant pour renvoyer la conversation à un site Oracle B2C Service.
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"
Voici un exemple pour 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"
Propriété | Description | Requis ? | |
---|---|---|---|
serviceName |
Nom de l'intégration tel que configuré dans Paramètres > Services supplémentaires > Intégration du service client. | Oui | |
subject |
Texte de l'objet de l'incident. | Oui | |
attachmentUrl |
URL d'un document ou d'une image lié à l'incident. Notez que l'ajout de pièces jointes n'est pas pris en charge pour les briques DA en tant qu'agent. | Non | |
agentReportFilter |
(Pour les incidents Oracle Fusion Service), texte permettant de filtrer les incidents. La valeur par défaut est ODA .
|
Non | |
addChatTranscript |
(Pour les incidents Oracle Fusion Service uniquement.) Lorsque la valeur est définie sur Vrai, la transcription de la discussion est ajoutée à l'incident. Valeur par défaut : False.
Les analyses doivent être activées pour la brique afin que la transcription de discussion soit disponible. Une transcription ne peut être ajoutée à l'incident que si vous utilisez un DA en tant qu'intégration d'agent en combinaison avec des incrustations Web Chat for Service ou Oracle Inlay Toolkit. |
Non | |
customFields |
Carte contenant description et, éventuellement, contactInfo , qui peut contenir des détails supplémentaires sur l'incident.
La carte est transmise non validée en tant que version texte de l'objet et insérée dans le message d'incident en tant que note privée. |
Non | |
contactProperties |
Carte de paires nom/valeur contenant les informations requises pour rechercher ou créer des informations de contact du service client. Il doit contenir email et peut éventuellement contenir firstName et lastName .
Si |
Uniquement pour Oracle B2C Service | |
incidentNumberVariable |
Nom de la variable de contexte de chaîne dans laquelle stocker le numéro d'incident. | Non |
System.IntelligentAdvisor
Utilisez ce composant pour accéder à une enquête Oracle Intelligent Advisor à partir d'une brique.
Cette rubrique traite de l'utilisation de ce composant en mode YAML. Pour plus d'informations sur son utilisation dans le concepteur de flux visuel, voir Intelligent Advisor.
Vous devez créer une intégration de service Intelligent Advisor pour pouvoir utiliser ce composant. Reportez-vous à Ajout d'un service Intelligent Advisor. Par ailleurs, l'enquête doit avoir été déployée vers Intelligent Advisor Hub et activée sur le canal du service de discussion. L'enquête doit être destinée aux utilisateurs anonymes. Vous ne pouvez pas accéder aux enquêtes pour les utilisateurs de portail ou les utilisateurs d'agent.
Vous pouvez utiliser les propriétés du composant pour spécifier les paramètres d'enquête suivants :
- Affichage ou non des titres et de l'explication
- Libellés des boutons des options oui, non et incertain
- Chaînes saisies par l'utilisateur pour réinitialiser l'enquête, revenir à la question précédente (annulation) et quitter l'enquête
- Texte à afficher à la fin de l'enquête
- Formulation de la question concernant l'affichage ou non de l'explication
- Chaîne saisie par l'utilisateur pour indiquer qu'il a terminé le téléchargement des fichiers
- Valeurs d'attribut et paramètres de connecteur à transmettre à l'enquête
- Paramètres régionaux du projet à utiliser
Voici un exemple :
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"
Reportez-vous à Utilisation du composant Intelligent Advisor dans votre brique pour obtenir un exemple d'utilisation du composant dans un flux de dialogue.
Conseil :
Les valeurs par défaut de toutes les propriétés de libellé sont stockées dans le groupe de ressources de la brique. Pour modifier une valeur par défaut, ouvrez la page Groupe de ressources de la brique, cliquez sur
Le groupe de ressources de configuration permet également de modifier les messages IntelligentAdvisor - defaultValue, IntelligentAdvisor - doneHelp, IntelligentAdvisor - maskLabel, IntelligentAdvisor - outOfOrderMessage, IntelligentAdvisor - resumeSessionPrompt, IntelligentAdvisor - numberMinMax, IntelligentAdvisor - outOfOrderMessage, IntelligentAdvisor - resumeSessionPrompt et IntelligentAdvisor - yesNoMessage. Par exemple, le message IntelligentAdvisor - doneHelp apparaît pour les champs de pièce jointe et prend par défaut la valeur When you are done with the upload, say {0}.
Vous pouvez le remplacer par Say {0} to let me know that you are done uploading.
Propriété | Description | Requis ? |
---|---|---|
currency |
Code devise ISO-4217 pour la devise utilisée dans l'enquête. Lorsque ce code est spécifié, l'utilisateur peut uniquement saisir des valeurs de devise dans les formats autorisés pour cette devise. Vous pouvez définir cette propriété sur vide ou l'exclure si l'enquête ne demande pas de montants en devise ou ne s'attend pas à une certaine devise. | Non |
deployment |
Nom du projet de déploiement actif dans Intelligent Advisor Hub. | Oui |
doneLabel |
Texte que les utilisateurs saisissent pour indiquer qu'ils ont terminé le téléchargement d'un fichier.
La valeur par défaut est |
Non |
endLabel |
Texte à afficher dans la discussion à la fin de l'enquête.
La valeur par défaut est |
Non |
exitLabel |
Texte que les utilisateurs saisissent pour indiquer qu'ils veulent quitter l'enquête.
La valeur par défaut est |
Non |
explanationAskLabel |
Question à poser lorsque la propriété showExplanation est définie sur ask .
La valeur par défaut est |
Non |
hideScreenTitle |
Indique si tous les titres d'écran de l'enquête doivent être masqués.
La valeur par défaut est |
Non |
intelligentAdvisorService |
Nom du service Intelligent Advisor configuré dans Paramètres > Services supplémentaires. | Oui |
interviewAttributes |
Nom d'une variable de contexte de type chaîne dans laquelle stocker les valeurs d'attribut de l'enquête. Les valeurs d'attribut sont stockées sous la forme d'un tableau de paires clé/valeur. | Non |
locale |
Cette propriété affecte à la fois l'entretien cible et la résolution de date et de nombre. Le composant lance la version de l'enquête nommée (déploiement) associée à la langue indiquée par la propriété Pour l'entrée de DATE et de nombre, les valeurs sont résolues en fonction des paramètres d'entité DATE et NUMBER. Lorsque l'option Consider l'environnement linguistique de l'utilisateur final est activée pour l'entité, la valeur est résolue pour l'environnement linguistique spécifié par cette propriété (ou la valeur par défaut si elle n'est pas spécifiée). Reportez-vous à Résolution d'entité basée sur les paramètres régionaux. Cette propriété est définie par défaut sur la valeur |
Non |
noLabel |
Libellé à utiliser pour représenter les valeurs FALSE booléennes.
La valeur par défaut est |
Non |
params |
Correspondance des paramètres de connexion clé-valeur à transmettre au début de l'enquête. Cela est généralement nécessaire pour les enquêtes avec intégration de données externes. | Non |
removeHtml |
Indique si le balisage HTML doit être enlevé du texte. La valeur par défaut est false .
|
Non |
resetLabel |
Texte que les utilisateurs saisissent pour indiquer qu'ils veulent revenir à la première question.
La valeur par défaut est |
Non |
seedData |
Correspondance des noms et des valeurs d'attribut Intelligent Advisor à transmettre à l'enquête. Pour les attributs de date et d'heure, utilisez les formats Intelligent Advisor standard. Par exemple : start_date: "2010-01-31" .
L'option Prédéfinir à partir d'un paramètre d'URL doit être activée dans Policy Modeling pour l'attribut auquel vous transmettez la valeur. |
Non |
showExplanation |
Indique si l'explication Intelligent Advisor doit être affichée. Les valeurs autorisées sont never , always et ask .
Si vous définissez la valeur La valeur par défaut est |
Non |
uncertainLabel |
Libellé que l'utilisateur peut saisir s'il ne connaît pas la valeur. Ce libellé apparaît pour les boutons radio booléens facultatifs.
La valeur par défaut est |
Non |
undoLabel |
Texte que les utilisateurs saisissent pour indiquer qu'ils veulent revenir à la question précédente.
La valeur par défaut est |
Non |
yesLabel |
Libellé à utiliser pour représenter les valeurs TRUE booléennes.
La valeur par défaut est |
Non |
Exemple : utilisation du composant Intelligent Advisor dans votre brique
####################
# 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"
...
Exemple : Accéder aux attributs d'enquête
Voici un exemple simple d'accès aux valeurs d'attribut d'une enquête :
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
Cette rubrique traite de l'utilisation de ce composant en mode YAML. Pour plus d'informations sur son utilisation dans le concepteur visuel de flux, reportez-vous à Recherche dans la base de connaissances.
Utilisez ce composant pour rechercher des informations sur un terme de recherche donné dans Oracle B2C Service Knowledge Foundation ou Oracle Fusion Service Knowledge Management et afficher les résultats.
Pour Oracle B2C Service, les résultats renvoyés par le service dépendent du caractère public des réponses et des paramètres de niveau d'accès, de produit ou de catégorie.
Vous devez créer un service de recherche dans la base de connaissances pour pouvoir utiliser ce composant. Reportez-vous à Ajout d'un service de recherche dans la base de connaissances.
Voici un exemple d'utilisation de ce composant. Il recherche dans un service de gestion des connaissances toutes les informations relatives à la dernière variation de l'utilisateur. Pour plus d'exemples, reportez-vous à Utilisation du composant de recherche dans la base de connaissances.
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"
Conseil :
Les valeurs par défaut des propriétésdefaultAttachmentLabel
, noResultText
et resultLinkLabel
sont stockées dans le groupe de ressources de la brique. Pour modifier une valeur par défaut, ouvrez la page Groupe de ressources de la brique, cliquez sur 
Propriété | Description | Requis ? |
---|---|---|
cardLayout |
Indique si les cartes de résultat doivent être affichées verticalement ou horizontalement. La valeur par défaut est horizontal .
|
Non |
customFilters |
Liste des filtres de résultats de recherche présentés sous forme de paires nom-valeur. Les noms de filtre autorisés sont product et category . Chacun d'eux autorise une seule déclaration de filtre. Reportez-vous à la section Filtrage des résultats par produit et catégorie.
|
Non |
customProperties |
Oracle B2C Service uniquement : correspondance de paires clé/valeur à envoyer au service de recherche. Actuellement, cette propriété prend uniquement en charge la clé word_connector . Utilisez la propriété word_connector définie sur AND pour ajouter au début de chaque mot du terme de recherche + .
|
Non |
defaultAttachmentLabel |
Libellé par défaut à utiliser pour l'action d'URL de la carte de résultat liée à une pièce jointe si aucun nom d'affichage n'est configuré pour cette pièce jointe. Lorsqu'il est utilisé, un numéro d'index y est ajouté. Par exemple, si la deuxième pièce jointe ne possède pas de nom d'affichage, le chiffre La valeur par défaut est |
Non |
locale |
La valeur par défaut est la valeur de la variable profile.locale .
Pour les services d'intégration des connaissances à plusieurs interfaces d'Oracle B2C Service, code d'environnement linguistique ISO ou BCP à cinq caractères indiquant l'interface à utiliser pour effectuer la recherche (exemple : en_GB). Si aucune interface ne prend en charge les paramètres régionaux, l'interface par défaut est utilisée. Reportez-vous à Implémenter la recherche multilingue dans la base de connaissances. Pour Oracle Fusion Service, il extrait les articles associés aux paramètres régionaux spécifiés. Si les articles correspondants n'existent pas pour les paramètres régionaux, il renvoie |
Non |
noResultText |
Texte à afficher lorsqu'aucun résultat de recherche n'est disponible. La valeur par défaut est le texte de l'entrée de regroupement de ressources KnowledgeSearch - noResultText. |
Non |
resultLinkLabel |
Libellé à utiliser pour l'action d'URL (bouton) de la carte de résultat qui renvoie à la version Web des informations. La valeur par défaut est le texte de l'entrée de regroupement de ressources KnowledgeSearch - resultLinkLabel. Si vous définissez cette propriété sur |
Non |
resultSizeLimit |
Nombre maximal de résultats à afficher. Valeur par défaut : |
Non |
resultVersion |
Oracle B2C Service uniquement : version préférée à renvoyer lorsqu'il existe plusieurs versions d'un résultat. Vous pouvez définir cette propriété sur Vous pouvez vous appuyer sur les réponses spéciales afin d'afficher une sortie spécialement conçue pour les discussions et non pour les pages Web. Valeur par défaut : |
Non |
resultVersionExclusive |
Oracle B2C Service uniquement : indique si seuls les résultats disponibles dans la version préférée doivent être affichés. Si la propriété est définie sur La valeur par défaut est |
Non |
searchLinkLabel |
Oracle B2C Service : libellé à utiliser pour l'action de charge utile de message de carte liée à la page Web avec la liste complète des résultats de recherche. Oracle Fusion Service : Libellé à utiliser pour l'action de charge utile de message de carte liée à la page de recherche d'accueil. Si cette propriété n'est pas définie, la charge utile de message de carte n'affiche pas l'action. |
Non |
searchPrelude |
Texte à présenter avant l'affichage du résultat de recherche. Si cette propriété n'est pas définie, le texte de l'entrée de regroupement de ressources KnowledgeSearch - searchPrelude s'affiche en sortie. Si vous ne voulez pas que le prélude de recherche soit affiché, définissez cette propriété sur |
Non |
searchServiceName |
Nom de l'intégration de recherche dans la base de connaissances tel que configuré dans Paramètres. | Oui |
searchTerm |
Texte à utiliser comme terme de recherche pour l'appel de la recherche dans la base de connaissances. Un terme de recherche est requis pour Oracle Fusion Service Knowledge Management. Pour Oracle B2C Service Knowledge Foundation, il renvoie les articles les plus populaires si aucun terme de recherche n'est fourni.
Pour les techniques de terme de recherche, voir Utiliser le composant Recherche dans la base de connaissances. |
Oui |
System.KnowledgeSearchTransitions
Action | Description |
---|---|
resultSent |
La recherche a renvoyé au moins un résultat. |
noResult |
Aucun résultat n'est associé au terme de recherche. |
serverError |
Une erreur s'est produite sur le serveur du service de recherche dans la base de connaissances lors de l'appel, par exemple une erreur de serveur ou une erreur inattendue.
Lorsque cette erreur survient, le message d'erreur est stocké dans |
Exemple : Association de questions connexes à un terme de recherche dans un flux de dialogue YAML
Le diagramme suivant illustre l'implémentation de la méthode à un seul état si votre flux de dialogue est créé en mode YAML. 1) Vous utilisez une variable de contexte de correspondance pour associer les intentions de connaissances aux termes de recherche. 2) Vous définissez chaque intention de connaissances action dans l'état Intent
pour passer à un flux de données qui utilise la correspondance afin de définir la variable de contexte searchTerm
sur le terme de recherche de l'intention. 3) Vous passez ensuite à un état qui recherche la valeur searchTerm
dans la base de connaissances.
description de l'illustration kf-assoc-intent-term.png,
Voici un exemple de flux de dialogue dans lequel il existe des intentions individuelles pour chaque réponse de la base de connaissances.
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"
Exemple : utiliser la variation utilisateur comme terme de recherche
L'exemple suivant montre comment définir searchTerm
sur la variation de l'utilisateur dans une brique de boîte de dialogue YAML. Pour une brique de dialogue visuelle, utilisez plutôt ${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
Utilisez le composant System.AgentTransfer
dans les assistants numériques en tant qu'agents pour renvoyer la conversation au service de discussion. La conversation sera acheminée vers un agent physique selon les règles de discussion qui ont été configurées dans le service de discussion.
Cette rubrique traite de l'utilisation de ce composant en mode YAML. Pour plus d'informations sur son utilisation dans le concepteur visuel de flux, reportez-vous à Transfert d'agent.
Ce composant est destiné aux conversations provenant d'un service de discussion, tel que décrit dans La structure d'assistant numérique en tant qu'agent en action. Pour les conversations qui proviennent de la brique, utilisez plutôt System.AgentConversation.
Voici un exemple d'utilisation de ce composant pour renvoyer la conversation au service de discussion.
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"
Conseil :
Dans les briques avec les versions 21.04 et ultérieures de la plate-forme, les valeurs par défaut des propriétésacceptedMessage
, errorMessage
, rejectedMessage
et waitingMessage
sont stockées dans le groupe de ressources de la brique. Pour modifier une valeur par défaut, ouvrez la page Groupe de ressources de la brique, cliquez sur 
Propriété | Description | Requis ? | |
---|---|---|---|
agentStatusVariable |
Nom de la variable de contexte de type correspondance à utiliser pour stocker les informations de statut de disponibilité de l'agent. Aucune information n'est stockée si la propriété n'est pas indiquée. Pour référencer une variable de correspondance, utilisez une expression de valeur comme suit : ${<mapVariableName>.value.<key>} . Par exemple, agentStatus.value.expectedWaitMinutes .
Pour en savoir plus sur les valeurs renvoyées dans cette variable, reportez-vous à System.AgentTransferCondition. |
Non | |
allowTransferIf |
Spécifie les conditions dans lesquelles la brique doit transférer la session de discussion.
Si les conditions spécifiées ne sont pas remplies, l'action |
Non | |
customProperties |
Correspondance contenant les informations à transmettre au service. Reportez-vous à Transmission d'informations au service. | Non | |
errorMessage |
Message présenté à l'utilisateur lorsqu'une erreur système se produit lors du transfert de la session de discussion vers un agent. La valeur par défaut est We were unable to transfer you because there was a system error . Vous pouvez définir la propriété sur une chaîne vide ou vide pour supprimer la sortie du message.
|
Non | |
maxEngagementsInQueue |
Nombre maximal autorisé d'interactions dans la file d'attente de destination. Lorsque la demande de discussion est envoyée, le service de discussion répond avec le nombre actuel d'interactions dans la file d'attente. Si cette valeur dépasse maxEngagementsInQueue , l'action rejected se produit. La valeur par défaut est -1 , ce qui signifie qu'il n'existe aucune limite sur les interactions.
Notez que pour Oracle Fusion Service Chat, la réponse est toujours 0. Cette propriété n'a donc aucune valeur pour Oracle Fusion Service. |
Non | |
maxWaitSeconds |
Nombre maximal de secondes d'attente estimées autorisées. Lorsque le service de discussion reçoit la demande de transfert, il répond avec le temps d'attente estimé. Si cette valeur dépasse maxWaitSeconds , l'action rejected se produit. La valeur par défaut de cette propriété est -1 , ce qui signifie qu'il n'existe aucun temps d'attente maximal. Lorsque cette propriété est définie sur -1 , l'assistant numérique transfère l'utilisateur vers un agent humain quel que soit le temps d'attente estimé.
L'action |
Non | |
rejectedMessage |
Message présenté aux utilisateurs lorsque l'un des événements suivants survient :
Agent rejected . Vous pouvez définir la propriété sur une chaîne vide ou vide pour supprimer la sortie du message.
|
Non | |
waitingMessage |
Message présenté aux utilisateurs lorsqu'ils sont transférés vers une file d'attente. La valeur par défaut est Agent chat session established. Waiting for agent to join . Vous pouvez définir la propriété sur une chaîne vide ou vide pour supprimer la sortie du message.
|
Non |
Ce composant peut renvoyer les actions suivantes :
Action | Description |
---|---|
accepted |
La transition accepted est définie lorsque la discussion est transférée vers une file d'attente.
Une fois qu'une demande de discussion est acceptée, la conversation doit se terminer par l'instruction
|
rejected |
La transition rejected est définie lorsque l'une des situations suivantes se produit :
|
error |
La transition error est définie lorsqu'une erreur système empêche le transfert vers un agent humain.
|
Exemple : transfert à un agent humain
Voici un exemple de flux de dialogue qui effectue un transfert vers un agent lorsque le client demande à parler à un agent:
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"
Exemple : transmission d'informations au service
Lorsque vous transférez une conversation d'un assistant numérique vers un agent physique, vous pouvez utiliser des propriétés personnalisées dans le composant System.AgentTransfer
pour transmettre ces informations.
Voici la structure pour Oracle B2C Service :
customProperties:
- name:
value:
type:
La propriété type
est requise pour les champs personnalisés. Sinon, elle est facultative.
Voici la structure d'Oracle Fusion Service :
customProperties:
- name:
value:
Voici un exemple de paramètre customProperties
pour 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"
Conseil :
Pour Oracle Fusion Service, l'évaluation des règles s'arrête à la première règle remplissant toutes les conditions. Lorsque vous configurez vos règles, assurez-vous que la conversation transférée n'est pas réacheminée vers l'agent de l'assistant numérique. Dans l'exempledoTransfer
, la propriété personnalisée TriagedByODA_c
est définie sur Y
, et les règles peuvent utiliser cette propriété personnalisée pour faire en sorte que, lorsqu'elle est définie sur Y
, la conversation ne soit pas acheminée vers l'agent d'assistant numérique. (Pour Oracle B2C Service, la configuration Etat de transition et arrêt détermine l'acheminement.)
System.AgentTransferCondition
Vous pouvez utiliser le composant System.AgentTransferCondition
dans les assistants numériques DA-as-agent pour déterminer si des agents sont disponibles et, le cas échéant, le temps d'attente attendu.
Cette rubrique traite de l'utilisation de ce composant en mode YAML. Pour plus d'informations sur son utilisation dans le concepteur visuel de flux, reportez-vous à Condition de transfert d'agent.
Vous utilisez les propriétés du composant pour spécifier les conditions de transfert et il renvoie une action indiquant si les conditions ont été remplies. En outre, il définit les valeurs de la variable de correspondance de contexte nommée comme suit :
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.
Voici un exemple d'utilisation de ce composant pour savoir si des agents sont disponibles, signaler le temps d'attente et permettre aux utilisateurs d'annuler la demande de transfert s'ils ne veulent pas attendre aussi longtemps.
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"
Conseil :
Voici une définition de regroupement de ressources suggérée que vous pouvez utiliser pour afficher le temps d'attente attendu :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?
Propriété | Description | Requis ? | |
---|---|---|---|
agentStatusVariable |
Nom de la variable de contexte de type correspondance à utiliser pour stocker les informations de statut de disponibilité de l'agent. Aucune information n'est stockée si la propriété n'est pas indiquée. Pour référencer une variable de correspondance, utilisez une expression de valeur comme suit : ${<mapVariableName>.value.<key>} . Par exemple, agentStatus.value.expectedWaitMinutes .
|
Non | |
allowTransferIf |
Spécifie l'ensemble de conditions de base qui doit être rempli.
Si les conditions spécifiées ne sont pas remplies, l'action |
Non | |
customProperties |
Correspondance contenant les informations à transmettre au service. Reportez-vous à Transmission d'informations au service. Cette propriété est prise en charge dans les versions 21.04 et ultérieures. | Non | |
errorMessage |
Message affiché à l'utilisateur lorsque Digital Assistant rencontre des problèmes avec le service de discussion de l'agent. La valeur par défaut est We were unable to check the agent transfer conditions because there was a system error. Cette chaîne par défaut est stockée dans le regroupement de ressources de configuration sous la clé systemComponent_AgentTransferCondition_errorMessage. Vous pouvez définir la propriété sur une chaîne vide ou vide pour supprimer la sortie du message.
|
Non | |
maxEngagementsInQueue |
Nombre maximal autorisé d'interactions dans la file d'attente de destination. Lorsque la demande est envoyée, le service de discussion répond avec le nombre actuel d'interactions dans la file d'attente. Si cette valeur dépasse maxEngagementsInQueue , l'action conditionsNotMet se produit. La valeur par défaut est -1 , ce qui signifie qu'il n'existe aucune limite sur les interactions.
|
Non | |
maxWaitSeconds |
Nombre maximal de secondes d'attente estimées autorisées. Lorsque le service de discussion reçoit la demande, il répond avec le temps d'attente estimé. Si cette valeur dépasse maxWaitSeconds , l'action conditionsNotMet se produit. La valeur par défaut de cette propriété est -1 , ce qui signifie qu'il n'existe aucun temps d'attente maximal.
L'action |
Non |
Ce composant peut renvoyer les actions suivantes :
Action | Description |
---|---|
conditionsMet |
La transition conditionsMet est définie lorsqu'elle se trouve dans les heures de bureau et que les conditions maxWaitSeconds , maxEngagementsInQueue et allowTransferIf sont remplies.
|
conditionsNotMet |
La transition conditionsNotMet est définie lorsque l'une des situations suivantes se produit :
|
error |
La transition error est définie en cas de problème de connexion au service de discussion d'agent lors de la vérification des conditions de l'agent.
|
Exemple : Obtenir la disponibilité de l'agent et le temps d'attente
Voici un exemple de flux de dialogue qui appelle le composant, affiche le temps d'attente et donne à l'utilisateur la possibilité d'annuler sa demande de transfert.
############################
# 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"
L'état askIfWillWait
utilise une entrée de groupe de ressources pour former le message de temps d'attente de sorte que le message indique si le temps est supérieur ou inférieur à une minute et si un nombre est égal à 0, un ou plusieurs.
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?
Notez que cet exemple utilise System.SetCustomMetrics pour suivre si des agents étaient disponibles et, le cas échéant, combien d'utilisateurs ont choisi d'attendre et combien ont annulé la demande de transfert.
Composants de transfert vers un agent physique
System.AgentInitiation
Si vous souhaitez transférer une conversation de la brique à un agent Oracle B2C Service, ajoutez ce composant au flux de dialogue afin de lancer l'établissement de liaison avec le canal d'intégration d'agent indiqué par la propriété agentChannel
. Vous devez appeler ce composant avant d'appeler le composant System.AgentConversation
.
Ce composant est destiné aux conversations qui proviennent de la brique. N'utilisez pas ce composant pour les conversations qui proviennent de la discussion Oracle B2C Service, comme décrit dans La structure d'assistant numérique en tant qu'agent en action.
Voici un exemple d'utilisation de ce composant pour lancer l'établissement de liaison avec l'instance Oracle B2C Service définie par le canal d'intégration d'agent nommé ServiceCloudIntegration
.
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"
Conseil :
Dans les briques avec les versions 21.04 et ultérieures de la plate-forme, les valeurs par défaut des propriétésagentActionsMessage
, errorMessage
, rejectedMessage
, resumedMessage
et waitingMessage
sont stockées dans le groupe de ressources de la brique. Pour modifier une valeur par défaut, ouvrez la page Groupe de ressources de la brique, cliquez sur 
Propriété | Description | Requis ? | |
---|---|---|---|
agentActions |
Liste des actions que l'agent peut déclencher afin de mettre fin à la discussion et de déplacer le flux vers l'état défini pour l'action de transition. Dans la console du représentant du service client, ces actions s'affichent sous forme de commandes avec barres obliques lorsque la conversation de l'agent est lancée, comme illustré dans l'exemple suivant :
Les noms d'action doivent correspondre aux propriétés
Vous pouvez définir les éléments de liste
|
Non | |
agentActionsMessage |
Si la propriété agentActions est définie, la console de l'agent affiche cette valeur à la place du message par défaut. Par exemple :
|
Non | |
agentChannel |
Nomme le canal d'intégration d'agent. Cette valeur, le nom du canal d'intégration d'agent et la propriété agentChannel définis pour le composant System.AgentConversation doivent tous correspondre.
|
Oui | |
allowTransferIf |
Spécifie les conditions dans lesquelles la brique doit transférer la session de discussion. Le composant utilise la valeur queueId pour identifier la file d'attente à partir de laquelle obtenir les statistiques. Vérifiez que les règles de discussion transfèrent bien la conversation vers la file d'attente identifiée, et non vers une autre file d'attente.
Si la condition spécifiée n'est pas remplie, le composant renvoie Lorsque vous incluez cette propriété, vous devez également inclure la propriété Cette propriété est disponible uniquement dans les instances d'Oracle Digital Assistant qui ont été provisionnées sur Oracle Cloud Infrastructure (parfois appelée infrastructure cloud Generation 2). |
Non | |
chatResponseVariable |
Nomme la variable de correspondance contenant les informations de réponse de l'agent. Une fois que le composant System.AgentInitiation est connecté, la correspondance contient les propriétés suivantes :
|
Non | |
customProperties |
Correspondance contenant l'ID d'incident, l'interface, le contact ou les champs personnalisés (ou une combinaison de ces éléments) à transmettre au service. Pour référencer une variable de correspondance, utilisez une expression de valeur comme suit : ${mapVariableName.value} . Reportez-vous à Transmission d'informations client à une discussion en direct.
|
Non | |
errorMessage |
Message à afficher en cas de problème lors de l'établissement de la connexion à Oracle B2C Service. Par exemple, le mot de passe dans le canal d'intégration d'agent n'est plus valide ou le serveur rencontre un problème. | Non | |
nlpResultVariable |
Variable qui stocke le message de requête du client. | Non | |
rejectedMessage |
Message indiquant si l'établissement de liaison AgentInitiation a été rejeté (s'il se trouve en dehors des heures d'ouverture configurées, par exemple). Par exemple :
|
Non | |
resumedMessage |
Message (par exemple, Patientez quelques minutes... Nous vous mettons en contact avec un agent.) qui s'affiche lorsque la discussion du client avec le représentant du service client reprend. L'ajout de cette propriété empêche les clients dont les demandes ont déjà été mises en file d'attente de recevoir un message de reprise de discussion avec un agent trompeur lorsqu'ils demandent une discussion en direct de manière répétée. | Non | |
subject |
Ligne d'objet qui s'affiche sur la console de l'agent après le transfert à la plate-forme de l'agent. Par défaut, il s'agit du dernier message du client stocké dans la propriété nlpResultVariable , mais vous pouvez également la définir à l'aide d'une variable que vous avez définie plus tôt dans la définition de flux de dialogue. Par exemple, vous pouvez définir une variable de contexte de type string dont la valeur a été définie antérieurement par rapport au composant System.AgentInitiation :
|
Non | |
queueId |
ID de la file d'attente que le composant doit utiliser pour déterminer si la condition allowTransferIf spécifiée est remplie. Il doit s'agir de l'ID de la file d'attente vers laquelle les règles de discussion Oracle B2C Service acheminent cette conversation.
Cette propriété est ignorée si la propriété |
Requise lorsque la propriété allowTransferIf est présente.
|
|
transcriptDateTimeFormat |
Format de la date et de l'heure dans les messages de transcription de conversation transmis à l'agent. Reportez-vous à la classe Java DateTimeFormatter pour connaître les modèles valides. Exemple : dd/MM/yyyy HH:mm . La valeur par défaut est yyyy-mmm-ddThh:mm:ssZ .
|
Non | |
transcriptTimezoneName |
Nom IANA (Internet Assigned Numbers Authority) du fuseau horaire à utiliser pour formater la transcription de conversation à l'aide de la propriété transcriptDateTimeFormat . Exemple : America/Sao_Paulo . La valeur par défaut est Europe/London . Si vous n'incluez pas la propriété transcriptDateTimeFormat , cette propriété est ignorée.
|
Non | |
waitingMessage |
Message qui s'affiche pendant que les clients attendent d'entrer en communication avec un agent. Par exemple :
|
Non |
System.AgentInitiation Transitions
System.AgentInitiation
renvoie les actions accepted
, rejected
et error
. Ces actions peuvent pointer vers un état différent. L'action accepted
nomme généralement l'état du composant System.AgentConversation
: agentInitiation:
component: "System.AgentInitiation"
properties:
agentChannel: "ServiceCloudIntegration"
...
transitions:
actions:
accepted: "agentConversation"
rejected: "noAgentsAvailable"
error: "handshakeError"
Action | Description |
---|---|
accepted |
L'établissement de liaison a abouti. L'état peut passer à l'état du composant System.AgentConversation .
|
error |
Un problème survient lors de l'établissement de la connexion à Oracle B2C Service. Par exemple, le mot de passe dans le canal d'intégration d'agent n'est plus valide ou le serveur Service Cloud rencontre un problème. |
rejected |
Oracle B2C Service a rejeté la demande de connexion. Voici quelques-unes des raisons du rejet d'une demande de connexion :
Si vous ne définissez pas |
Exemple : gestion du rejet d'initialisation d'agent et des erreurs système
Voici un exemple de gestion des erreurs système et des actions error
et rejected
.
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"
Exemple : propriété 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}"
Exemple : objet customerInformation standard
Cet exemple définit contactID
.
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}"
Exemple : objet customerInformation hérité
L'exemple suivant définit interfaceID
et contactID
.
Conseil :
Le WSDL indique queinterfaceID
est de type NamedID
. Vous pouvez donc utiliser name: "myInterfaceName"
au lieu de id: id: "${interfaceId}"
.
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}"
Exemple : objet customFields standard
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}"
Exemple : objet customFields hérité
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}"
Exemple : assemblage de l'objet Propriétés personnalisées
Ces étapes décrivent comment déclarer l'objet customProperties
et définir ses différentes valeurs.
Etape 1 : déclaration de la variable des propriétés personnalisées
customProperties
du composant System.AgentInitiation
. Il s'agit d'un objet JSON qui peut contenir les informations sur le client de la discussion, ainsi que les valeurs de champ personnalisé. Dans l'exemple suivant, cette variable est déclarée en tant que liveChatInfo
:context:
variables:
size: "PizzaSize"
type: "PizzaType"
crust: "PizzaCrust"
iResult: "nlpresult"
interfaceId: "string"
categoryId: "string"
skillType: "string"
liveChatInfo: "map"
Etape 2 : définition des valeurs de la variable de correspondance customProperties
customProperties
du composant System.AgentInitiation
. Il s'agit d'un objet JSON qui peut contenir les informations sur le client de la discussion, ainsi que les valeurs de champ personnalisé. Dans l'exemple suivant, cette variable est déclarée en tant que liveChatInfo
:context:
variables:
size: "PizzaSize"
type: "PizzaType"
crust: "PizzaCrust"
iResult: "nlpresult"
interfaceId: "string"
categoryId: "string"
skillType: "string"
liveChatInfo: "map"
Etape 3 : définition des champs de la variable de correspondance customProperties
setLiveChatInfo:
component: "System.SetVariable"
properties:
variable: "liveChatInfo"
value:
customerInformation:
categoryID:
id: "${categoryId}"
customFields:
- name: "c$skilltype"
type: "STRING"
value: "${skillType}"
transitions:
next: "agentInitiation"
Etape 4 : ajout de customProperties au composant System.AgentInitiation
customProperties
au composant System.AgentInitiation
et définissez-la à l'aide d'une expression qui accède à la valeur de variable de correspondance. 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
Ce composant permet de transférer la conversation d'une brique à un agent physique Oracle B2C Service et de gérer l'échange entre la brique et l'agent. Vous devez appeler le composant System.AgentInitiation
pour pouvoir utiliser ce composant.
System.AgentConversation
est destiné aux conversations qui proviennent de la brique. N'utilisez pas ce composant pour les conversations qui proviennent de la discussion Oracle B2C Service, comme décrit dans La structure d'assistant numérique en tant qu'agent en action.
Voici un exemple d'utilisation de ce composant pour transférer la conversation à l'instance Oracle B2C Service définie par le canal d'intégration d'agent nommé ServiceCloudIntegration
.
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"
Propriété | Description | Requis ? |
---|---|---|
agentChannel |
Nomme le canal d'intégration d'agent. Cette valeur, le nom du canal d'intégration d'agent et la propriété agentChannel définis pour le composant System.AgentInitiation doivent tous correspondre.
|
Oui |
conclusionMessage |
Message automatisé envoyé au client lorsque l'utilisateur entre un mot-clé de sortie, que l'action agentLeft est déclenchée ou que l'agent met fin à la conversation sans envoyer l'une des actions agentActions . Par exemple, Your chat with the agent has ended .
|
Non |
errorMessage |
Message affiché par la discussion en cas de problème de connexion à Oracle B2C Service.
Le message par défaut est Cette propriété fonctionne uniquement avec les instances d'Oracle Digital Assistant qui ont été provisionnées sur Oracle Cloud Infrastructure (parfois appelée infrastructure cloud Generation 2). |
Non |
exitKeywords |
Liste des mots de sortie standard séparés par des virgules utilisés par un client pour terminer la conversation avec l'agent physique. Par exemple :
La valeur par défaut de la propriété est |
Non |
expiryMessage |
Message affiché lorsque l'action expired est déclenchée. Le message par défaut est Chat session expired. Thanks for chatting with us .
Le message d'expiration n'est pas généré lorsque la conversation est terminée car la valeur |
Non |
nlpResultVariable |
Variable nlpResultVariable qui contient le message de requête du client.
|
Non |
waitExpiryMessage |
Message affiché à l'utilisateur lorsque la discussion expire pendant l'attente d'un agent. Le message par défaut est The request for live chat expired while waiting for an agent. |
Non |
waitMessage |
Par défaut, une fois le transfert de conversation lancé, la brique affiche le message d'attente que le service de discussion en direct lui envoie, comme la position dans la file d'attente et le temps d'attente. Utilisez cette propriété pour personnaliser le message. Par exemple :
|
Non |
System.AgentConversationTransitions
System.AgentConversation
peut déclencher l'action expired
, agentLeft
, error
ou waitExpired
. En outre, il peut déclencher une action à partir de la propriété agentActions
du composant System.AgentInitiation
. Vous devez également ajouter une transition next
car un client peut saisir l'un des exitKeywords
pour quitter la discussion afin que l'une de ces actions puisse être déclenchée.
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"
...
Action | Description |
---|---|
agentActions |
Si le composant System.AgentInitiation possède une propriété agentActions , ce composant doit comporter une action de transition pour toutes les actions prises en charge indiquées par agentActions .
|
agentLeft |
L'agent a mis fin à la session sans utiliser d'action avec une barre oblique (par exemple, /Order). Sinon, la session s'est terminée car aucune activité n'a eu lieu pendant la période indiquée par la configuration CS_IDLE_TIMEOUT d'Oracle B2C Service et cette configuration est inférieure au paramètre Expiration de la session du canal d'intégration d'agent. Pour plus d'informations, reportez-vous à l'action expired .
Cette action n'est pas renvoyée lorsque l'utilisateur quitte la conversation en saisissant un mot-clé de sortie. Dans ce cas, le flux passe à l'état nommé par la transition |
error |
Un problème de connexion au service d'agent physique est survenu. Cette action fonctionne uniquement avec les instances d'Oracle Digital Assistant qui ont été provisionnées sur Oracle Cloud Infrastructure (parfois appelée infrastructure cloud Generation 2). |
expired |
Si le paramètre Par défaut, la valeur de L'action Pour afficher ou modifier les paramètres de votre instance Oracle B2C Service, ouvrez la console de bureau, cliquez sur Navigation, sur la première option Configuration du menu, puis sur Paramètres de configuration. Recherchez ensuite le paramètre dans le dossier Discussion. |
waitExpired |
La demande de discussion a expiré lors de l'attente d'un agent. Cela se produit lorsque le temps d'attente dépasse la valeur du paramètre USER_WAIT_QUEUE_TIMEOUT du client de discussion.
|
Exemple : configuration du flux de dialogue de transfert à l'agent
Dans cet exemple, l'intention GetAgent
est entraînée à comprendre les appels de détresse comme aidez-moi s'il vous plait !
intent:
component: "System.Intent"
properties:
variable: "iResult"
transitions:
actions:
OrderPizza: "resolvesize"
CancelPizza: "cancelorder"
GetAgent: "agentInitiation"
unresolvedIntent: "agentInitiation"
Voici les étapes de base pour configurer le flux de dialogue :
-
Lancez le transfert à l'agent physique.
-
Ajoutez un état pour le composant
System.AgentInitiation
. -
Définissez la propriété
agentChannel
de l'état sur le nom du canal d'intégration d'agent que vous avez configuré pour le système d'agent physique.
Une fois que le canal d'intégration d'agent a établi une connexion et qu'Oracle B2C Service a envoyé la demande de discussion à la file d'attente (c'est-à-dire, une fois qu'il a créé un ticket d'aide), le composantSystem.AgentInitiation
permet la transition vers l'état suivant, qui est généralement défini pour le composantSystem.AgentConversation
(agentConversation
dans l'exemple suivant).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"
Conseil :
Les clients peuvent demander plusieurs fois à discuter avec un agent physique même lorsque leurs demandes ont déjà été mises dans la file d'attente de la console de discussion de l'agent. Ajoutez une propriétéresumedMessage
à l'étatSystem.AgentInitiation
pour empêcher ces clients de recevoir un message Reprise de la discussion avec un agent qui pourrait les induire en erreur. -
-
Ajoutez et configurez le composant
System.AgentConversation
. Tant que le moteur de dialogue se trouve dans l'état défini pour ce composant, la brique transmet les messages entre le client et l'agent. La brique écoute les mots-clés de sortie dans l'entrée client, commeau revoir
. Lorsque la brique détecte l'un de ces mots-clés, le composantSystem.AgentConversation
met fin à la session en cours et déclenche la transitionnext
.Voici un exemple :
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"
Exemple : obtenir des informations d'enquête
Dans l'exemple suivant utilisant le format standard, le composant AgentConversation
génère un lien d'enquête après la fin de la conversation avec l'agent. Le lien inclut les ID de session et d'interaction de la correspondance nommée par la propriété chatResponseVariable
.
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"
Exemple : transfert de la discussion vers une file d'attente Oracle B2C Service spécifique
-
Si vous ne l'avez pas encore fait, dans le noeud de contexte, définissez une variable de correspondance à utiliser avec la propriété
customProperties
du composantSystem.AgentInitiation
. Par exemple :context: variables: greeting: "string" name: "string" liveChatInfo: "map"
-
Définissez les champs de la variable de correspondance.
Voici un exemple de format standard pour les canaux d'intégration d'agent créés dans la version 20.01 ou version ultérieure et connectés à Oracle B2C Service version 19A ou ultérieure.
setLiveChatInfo: component: "System.SetVariable" properties: variable: "liveChatInfo" value: customFields: - name: "c$frombot" type: "BOOLEAN" value: 1 transitions: next: "agentInitiation"
Voici un exemple de format hérité pour les canaux d'intégration d'agent créés avant la version 20.01 ou qui se connectent à une version antérieure à Oracle B2C Service version 19A.
setLiveChatInfo: component: "System.SetVariable" properties: variable: "liveChatInfo" value: customFields: - name: "c$frombot" dataType: "BOOLEAN" dataValue: booleanValue: true transitions: next: "agentInitiation"
-
Ajoutez la propriété
customProperties
au composantSystem.AgentInitiation
et définissez-la sur la valeur de votre variable de correspondance. Par exemple :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
Cette rubrique traite de l'utilisation de ce composant en mode YAML. Pour plus d'informations sur son utilisation dans le concepteur de flux visuel, reportez-vous à Résoudre l'entité.
Ce composant effectue une itération sur tous les champs d'entité dans le conteneur composite, communique avec l'utilisateur et résout tous les champs. Le composant choisit au hasard les invites à fournir à chaque entité lors de la résolution de cette dernière.
Propriété | Description | Requis | |
---|---|---|---|
variable |
Fait référence à la variable de contexte d'entité de conteneur composite remplie par ce composant. Si toutes les entités enfant de la variable d'entité composite ont déjà une valeur, le flux de dialogue passe à l'état suivant sans envoyer de message à l'utilisateur. | Oui | |
nlpResultVariable |
Remplit la propriété variable (qui fait référence à la variable d'entité de conteneur composite) à l'aide des valeurs stockées dans la variable de contexte nlpresult . Vous pouvez définir cette propriété en nommant la variable nlpresult (généralement, iResult ). Lorsque la structure résout une entité enfant unique, la propriété variable est remplie avec cette valeur uniquement. Lorsque la variable nlpresult contient des valeurs pour toutes les entités enfant, le flux de dialogue passe à l'état suivant. Vous pouvez utiliser cette propriété à la place des états SetVariable qui remplissent les valeurs de l'entité enfant.
|
Non | |
maxPrompts |
Spécifie le nombre de tentatives alloué à l'utilisateur pour saisir une valeur valide qui correspond au type d'entité enfant. Si le nombre maximal de tentatives est dépassé pour la première entité enfant, cette propriété est réinitialisée sur 0 et le bot génère l'invite pour l'entité enfant suivante. Comme décrit dans Création d'une entité de conteneur composite, des entités dans le conteneur composite peuvent remplacer ce paramètre lorsque l'option Nombre maximal de tentatives de saisie utilisateur est définie. | Non | |
autoNumberPostbackActions |
Lorsque vous définissez cette option sur true , elle ajoute des nombres en tant que préfixes à des options. Même si vous n'avez pas défini cette option sur true , la numérotation automatique peut être appliquée aux éléments de liste lorsque la configuration Activer la numérotation automatique sur les actions de postback de l'assistant numérique est définie sur true . La numérotation automatique propre au canal peut être appliquée à tous les bots de brique enregistrés dans un assistant numérique :
|
Non | |
useFullEntityMatches |
Lorsque cette propriété est définie sur true , les valeurs d'entité personnalisée sont stockées en tant qu'objets JSON (comme les valeurs d'entité intégrée). Vous pouvez ainsi créer des expressions pour accéder aux propriétés telles que value , primaryLanguageValue et originalString , qui sont particulièrement importantes pour les briques actuellement multilingues ou susceptibles de le devenir.
|
||
footerText |
Améliore la sortie sur les canaux de texte uniquement. Comme décrit dans Pieds de page, vous pouvez utiliser des expressions FreeMarker afin d'appliquer des conditions au texte de pied de page pour les canaux de texte uniquement. | Non | |
headerText |
Message qui s'affiche avant que le composant demande à l'utilisateur d'indiquer l'élément suivant dans le conteneur. Vous pouvez utiliser cet en-tête pour fournir des informations en retour sur les entités précédentes du conteneur ayant été mises en correspondance (ou mises à jour).
|
Non | |
transitionAfterMatch |
Valeur booléenne qui, lorsque vous la définissez sur true , permet une transition temporaire de la correspondance d'entité effectuée par ce composant vers un composant personnalisé. Par défaut, la valeur est false . Cette propriété est ignorée (et la transition match n'est pas déclenchée) si vous avez inscrit un gestionnaire d'événements d'entité.
|
Non | |
cancelPolicy |
Détermine le moment de la transition cancel :
maxPromptsReached de niveau élément ou de niveau événement. |
Non |
Composants de calendrier
Utilisez les composants de calendrier suivants pour interagir avec les calendriers Outlook et Google :
-
System.CreateCalendarEvent : créer un événement
-
System.DeleteCalendarEvent : annuler un événement
-
System.GetCalendarEventDetails : obtenir des détails sur un événement
-
System.ListCalendarEvents : obtenir des données pour un ensemble filtré d'événements
-
System.SelectCalendarEvent : sélectionner un événement dans une liste filtrée
-
System.SendInviteResponse : modifier le statut de réponse d'un événement
-
System.UpdateCalendarEvent : modifier un événement
Autorisation de calendrier
Pour activer l'interaction entre une brique et un fournisseur de calendrier, vous devez configurer un service, et modifier la brique et le flux de dialogue afin de permettre à l'utilisateur de se connecter à son calendrier via ce service.
Avant d'utiliser un composant de calendrier, vous devez inscrire une application auprès du fournisseur de calendrier et créer un service de code d'autorisation. Pour obtenir les procédures, reportez-vous aux rubriques suivantes :
-
Inscription d'une application pour autorisation auprès de Google OAuth2
-
Inscription d'une application auprès de la plate-forme d'identité Microsoft
Dans votre flux de dialogue, vous utilisez le composant System.OAuth2AccountLink
pour inviter l'utilisateur à se connecter à son calendrier via le service de code d'autorisation que vous avez créé. Vous ne pouvez pas définir la propriété enableSingleSignOn
du composant sur true
lorsque vous utilisez le composant pour l'autorisation de composant de calendrier.
Vous pouvez utiliser la fonctionnalité Autorisation requise pour vérifier automatiquement que l'utilisateur s'est connecté (a obtenu un jeton d'accès) avant d'appeler des composants de calendrier. Cette fonctionnalité demande uniquement à l'utilisateur de se connecter s'il ne dispose pas encore d'un jeton d'accès, ou si celui-ci a expiré et ne peut pas être actualisé. Vous pouvez utiliser la configuration Autorisation requise de la brique afin de définir la valeur par défaut pour l'ensemble de la brique, puis appliquer le paramètre requiresAuthorization
au niveau de l'état pour remplacer la valeur par défaut. Autrement dit, vous utilisez le paramètre de la brique pour définir la valeur par défaut, puis incluez uniquement le paramètre requiresAuthorization
du composant dans les états pour lesquels la valeur par défaut ne s'applique pas.
Pour utiliser la fonctionnalité Autorisation requise, vous devez ajouter une action system.authorizeUser
au noeud defaultTransitions
afin de nommer l'état qui démarre le flux d'autorisation. Par exemple :
defaultTransitions:
error: "globalErrorHandler"
actions:
system.authorizeUser: "userAuthN.performOAuth"
Avant qu'une brique passe à un état avec autorisation requise, elle vérifie s'il existe un jeton d'accès valide pour le service de calendrier. Si le jeton est absent, elle effectue les actions suivantes :
-
Elle appelle l'état que vous avez défini pour l'action
system.authorizedUser
dans le noeuddefaultTransitions
. -
Elle demande à l'utilisateur de se connecter.
-
Elle passe à l'état nécessitant une autorisation (c'est-à-dire l'état défini par
${system.requestedState}
).
Voici un exemple de flux de dialogue d'autorisation :
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"
Pour une brique principalement axée sur les composants de calendrier, envisagez de définir la configuration Autorisation requise de la brique sur true
, puis définissez la valeur sur False uniquement pour les états qui ne nécessitent pas d'autorisation. Dans cet exemple, n'importe quel utilisateur peut exécuter les états initTimezoneOffset
et intent
. Par conséquent, le paramètre requiresAuthorization
est défini sur false
pour ces états. Les états qui utilisent les composants de calendrier n'ont pas besoin d'inclure requiresAuthorization
car la valeur par défaut est true
.
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"
Utilisation des dates et heures du calendrier
Lorsque vous utilisez les composants de calendrier, il est important de comprendre la relation entre les heures de début et de fin du calendrier, les entités DATE et TIME, et le fuseau horaire local.
Lorsque vous créez, mettez à jour ou extrayez des événements, vous utilisez la date et l'heure locales pour les valeurs start
et end
, et soit timezoneOffset
, soit timezone
pour indiquer au composant comment calculer le temps universel (UTC).
La valeur timezoneOffset
des composants de calendrier est différente de profile.timezoneOffset
. Pour les composants de calendrier, timezoneOffset
est la valeur que le composant doit ajouter aux valeurs start
et end
pour obtenir l'heure UTC. Vous pouvez déduire la valeur de propriété timezoneOffset
d'un composant de calendrier en multipliant profile.timezoneOffset
par -1.
Il est possible que profile.timezoneOffset
ne soit pas toujours disponible. Tout dépend de la fourniture ou non du décalage par le client. Par exemple, quelqu'un peut créer une application Web Oracle qui ne définit pas profile.timezoneOffset
. Par conséquent, il est recommandé de créer un fuseau horaire par défaut pour les cas où le paramètre profile.timezoneOffset
n'a pas été défini. Par exemple :
initTimezoneOffset:
requiresAuthorization: false
component: "System.SetVariable"
properties:
variable: "timezoneOffset"
value: <#attempt>${profile.timezoneOffset}<#recover>${system.config.defaultTimezoneOffset}</#attempt>
transitions:
next: "intent
Lorsque vous récupérez un événement, le composant renvoie les valeurs de date/d'heure au format UTC. Par exemple : 2021-04-15T22:00:00.000Z
. Votre brique doit convertir la valeur à l'heure locale.
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"
Lorsque vous utilisez les entités DATE et TIME, voici quelques points à prendre en compte :
-
Si vous utilisez un conteneur composite comportant à la fois une entité DATE et des entités TIME, vous devez désactiver l'option Extraction dans le désordre. Sinon, lorsque les entités sont résolues, vous n'avez pas le contrôle sur les valeurs résolues en entité DATE et les valeurs résolues en entité TIME (ou les deux). Par exemple, lorsque l'entité TIME est résolue, elle peut modifier la valeur de l'entité DATE.
-
Lorsqu'une variation contient du texte tel que "hier", "aujourd'hui" ou "demain", l'analyseur ne prend pas en compte le fuseau horaire local. Il est donc possible que, tôt le matin et tard l'après-midi, la mauvaise date soit utilisée. C'est pourquoi il est recommandé de renvoyer la date résolue afin que l'utilisateur puisse la vérifier avant que la brique n'ajoute un événement, ou ne mette à jour l'heure de début ou de fin d'un événement.
-
Pour définir les valeurs des propriétés
start
etend
d'un calendrier, vous devez utiliser la date de l'entité DATE et l'heure de l'entité TIME. Par exemple :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']}"
Gestion des erreurs de calendrier
Le fournisseur de calendrier peut rejeter une demande d'événement. Par exemple, il peut renvoyer une erreur si l'utilisateur tente de créer un événement dont l'heure de fin est antérieure à l'heure de début. Dans la plupart des cas, le fournisseur de calendrier renvoie une erreur 400 qui, à son tour, transmet la brique au gestionnaire d'erreurs global.
Envisagez de valider les valeurs afin d'éviter que ces erreurs ne se produisent. Voici des exemples de validation d'entité de conteneur composite :
-
Entité DATE : pour les réunions nouvelles et mises à jour, vérifiez que la date est identique ou postérieure à la date du jour.
${(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')}
-
Entité TIME : pour les réunions nouvelles et mises à jour, vérifiez que la date et l'heure de début sont identiques ou postérieures à la date et à l'heure en cours.
${(((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')}
Pour toutes les heures de fin, vérifiez que l'heure de fin est postérieure à l'heure de début.
${(newEvent.value.startTime.date?number_to_time < newEvent.value.endTime.date?number_to_time)?then('true','false')}
Pour gérer sans erreur les rejets de fournisseur de calendrier, ajoutez votre propre gestionnaire d'erreurs global. Par exemple :
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"
Vous pouvez également utiliser la transition des erreurs pour créer des gestionnaires d'erreurs adaptés à chaque cas :
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
Utilisez ce composant pour ajouter un événement à un calendrier Outlook ou Google. Vous ne pouvez pas créer d'événements récurrents ou d'une journée entière.
L'utilisateur doit être connecté au fournisseur de calendrier pour accéder à ce composant. Vous pouvez utiliser la fonctionnalitéAutorisation requise pour gérer la connexion utilisateur, comme décrit dans Autorisation de calendrier.
Pour découvrir comment définir les valeurs start
et end
, reportez-vous à Utilisation des dates et heures du calendrier.
Voici un exemple d'utilisation de ce composant. Dans cet exemple, une entité de conteneur composite est utilisée pour obtenir la date, les heures de début et de fin, l'objet, le lieu et les participants.
####################
# 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"
...
Ce composant est pris en charge dans Oracle Digital Assistant version 21.02 et versions ultérieures.
Propriété | Description | Requis ? |
---|---|---|
provider |
Fournisseur de calendrier. Valeurs autorisées : Google et Outlook .
|
Oui |
calendarOwner |
ID utilisateur du propriétaire du calendrier. Il doit s'agir d'un ID de compte valide pour le fournisseur de calendrier, tel que la valeur de la variable identifiée par la propriété authenticatedUserVariable du composant System.OAuth2AccountLink , définie lors de l'authentification de l'utilisateur.
|
Oui |
calendarId |
Nom du calendrier. Pour le calendrier par défaut de l'utilisateur, définissez la même valeur que pour la propriété calendarOwner .
|
Oui |
credential |
Jeton d'accès du fournisseur. Il s'agit de la valeur de la variable identifiée par la propriété accessTokenVariableName du composant System.OAuth2AccountLink , définie lors de l'authentification de l'utilisateur.
|
Oui |
start |
Date et heure de début de la réunion au format yyyy-MM-dd'T'HH:mm:ss . Par exemple, 2021-02-26T09:55:00 .
|
Oui |
end |
Date et heure de fin de la réunion au format yyyy-MM-dd'T'HH:mm:ss . Par exemple, 2021-02-26T09:55:00 .
|
Oui |
subject |
Objet de la réunion. | Oui |
attendees |
Liste des participants, séparés par des virgules. Le fournisseur de calendrier ne peut pas envoyer de notification à un participant si l'ID n'est pas un ID de compte valide pour ce fournisseur. | Oui |
timezoneOffset |
Durée en millisecondes à ajouter au temps universel (UTC) pour obtenir l'heure standard dans le fuseau horaire de l'utilisateur. Par exemple, si le fuseau horaire local est UTC-2, timezoneOffset est -7200000 . La valeur par défaut est 0.
Remarque
Vous pouvez déduire la propriété timezoneOffset pour l'utilisateur en cours en fonction de la valeur de la variable de contexte utilisateur profile.timezoneOffset . Toutefois, dans ce cas, vous devez multiplier profile.timezoneOffset par -1.
Vous pouvez indiquer |
Non |
timezone |
ID du fuseau horaire local identifié par https://www.iana.org/time-zones. Egalement appelé nom tz database. Par exemple : |
Non |
System.DeleteCalendarEvent
Utilisez ce composant pour supprimer un événement d'un calendrier Outlook ou Google. Vous ne pouvez pas supprimer des événements récurrents ou d'une journée entière.
L'utilisateur doit être connecté au fournisseur de calendrier pour accéder à ce composant. Vous pouvez utiliser la fonctionnalitéAutorisation requise pour gérer la connexion utilisateur, comme décrit dans Autorisation de calendrier.
Voici un exemple d'utilisation de ce composant.
####################
# 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"
...
Ce composant est pris en charge dans Oracle Digital Assistant version 21.02 et versions ultérieures.
Propriété | Description | Requis ? |
---|---|---|
provider |
Fournisseur de calendrier. Valeurs autorisées : Google et Outlook .
|
Oui |
calendarOwner |
ID utilisateur du propriétaire du calendrier. Il doit s'agir d'un ID de compte valide pour le fournisseur de calendrier, tel que la valeur de la variable identifiée par la propriété authenticatedUserVariable du composant System.OAuth2AccountLink , définie lors de l'authentification de l'utilisateur.
|
Oui |
calendarId |
Nom du calendrier. Pour le calendrier par défaut de l'utilisateur, définissez la même valeur que pour la propriété calendarOwner .
|
Oui |
credential |
Jeton d'accès du fournisseur. Il s'agit de la valeur de la variable identifiée par la propriété accessTokenVariableName du composant System.OAuth2AccountLink , définie lors de l'authentification de l'utilisateur.
|
Oui |
eventId |
ID de l'événement à supprimer. Vous pouvez utiliser System.ListCalendarEvents ou System.SelectCalendarEvent pour obtenir eventId .
|
Oui |
System.GetCalendarEventDetails
Utilisez ce composant pour obtenir les détails d'un événement à partir d'un calendrier Outlook ou Google.
L'utilisateur doit être connecté au fournisseur de calendrier pour accéder à ce composant. Vous pouvez utiliser la fonctionnalitéAutorisation requise pour gérer la connexion utilisateur, comme décrit dans Autorisation de calendrier.
Les détails sont renvoyés dans la variable spécifiée par la propriété eventDetailsVariableName
au format JSON suivant :
{
"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
}
Les propriétés start
et end
sont des valeurs UTC. Pour découvrir comment convertir les valeurs start
et end
à l'heure locale, reportez-vous à Utilisation des dates et heures du calendrier.
Voici un exemple d'utilisation de ce composant.
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"
Ce composant est pris en charge dans Oracle Digital Assistant version 21.02 et versions ultérieures.
Propriété | Description | Requis ? |
---|---|---|
provider |
Fournisseur de calendrier. Valeurs autorisées : Google et Outlook .
|
Oui |
calendarOwner |
ID utilisateur du propriétaire du calendrier. Il doit s'agir d'un ID de compte valide pour le fournisseur de calendrier, tel que la valeur de la variable identifiée par la propriété authenticatedUserVariable du composant System.OAuth2AccountLink , définie lors de l'authentification de l'utilisateur.
|
Oui |
calendarId |
Nom du calendrier. Pour le calendrier par défaut de l'utilisateur, définissez la même valeur que pour la propriété calendarOwner .
|
Oui |
credential |
Jeton d'accès du fournisseur. Il s'agit de la valeur de la variable identifiée par la propriété accessTokenVariableName du composant System.OAuth2AccountLink , définie lors de l'authentification de l'utilisateur.
|
Oui |
eventId |
ID de l'événement à extraire. Vous pouvez utiliser System.ListCalendarEvents ou System.SelectCalendarEvent pour obtenir eventId .
|
Oui |
eventDetailsVariableName |
Nom de la variable de contexte dans laquelle stocker les détails. | Oui |
System.ListCalendarEvents
Utilisez ce composant afin d'obtenir un tableau des événements Outlook ou Google pour un propriétaire de calendrier nommé. Vous pouvez filtrer la liste sur les attributs suivants :
- L'événement peut être supprimé
- L'événement peut être mis à jour
- L'utilisateur a été invité à l'événement
- Réponse de l'utilisateur à une invitation
- L'événement inclut des participants nommés
- La réunion commence après une date et une heure données
- La réunion se termine avant une date et une heure données
L'utilisateur doit être connecté au fournisseur de calendrier pour accéder à ce composant. Vous pouvez utiliser la fonctionnalitéAutorisation requise pour gérer la connexion utilisateur, comme décrit dans Autorisation de calendrier.
La liste est renvoyée dans la variable spécifiée par la propriété eventListVariableName
au format JSON suivant :
[{
"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
}, …]
Pour découvrir comment définir les valeurs start
et end
, reportez-vous à Utilisation des dates et heures du calendrier. Cette rubrique explique également comment convertir les valeurs des propriétés JSON start
et end
à l'heure locale.
Voici un exemple d'utilisation de ce composant.
############################
# 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"
Ce composant est pris en charge dans Oracle Digital Assistant version 21.02 et versions ultérieures.
Propriété | Description | Requis ? |
---|---|---|
provider |
Fournisseur de calendrier. Valeurs autorisées : Google et Outlook .
|
Oui |
calendarOwner |
ID utilisateur du propriétaire du calendrier. Il doit s'agir d'un ID de compte valide pour le fournisseur de calendrier, tel que la valeur de la variable identifiée par la propriété authenticatedUserVariable du composant System.OAuth2AccountLink , définie lors de l'authentification de l'utilisateur.
|
Oui |
calendarId |
Nom du calendrier. Pour le calendrier par défaut de l'utilisateur, définissez la même valeur que pour la propriété calendarOwner .
|
Oui |
credential |
Jeton d'accès du fournisseur. Il s'agit de la valeur de la variable identifiée par la propriété accessTokenVariableName du composant System.OAuth2AccountLink , définie lors de l'authentification de l'utilisateur.
|
Oui |
listType |
Indique le type de liste. Il doit s'agir de l'un des suivants :
|
Oui |
eventListVariableName |
Nom de la variable de contexte dans laquelle stocker la liste des événements. | Oui |
start |
Date et heure les plus anciennes pour lesquelles les réunions doivent être incluses dans la liste (format : yyyy-MM-dd'T'HH:mm:ss ). Par exemple, 2021-02-26T09:55:00 .
|
Oui |
end |
Date et heure les plus récentes pour lesquelles les réunions doivent être incluses dans la liste (format : yyyy-MM-dd'T'HH:mm:ss ). Par exemple, 2021-02-26T09:55:00 .
Pour le type de liste |
Non |
attendees |
Liste des chaînes, séparées par des virgules et sans distinction entre les majuscules et les minuscules, à utiliser pour filtrer la liste sur les participants. Seules les réunions pour lesquelles des valeurs de participant contiennent des chaînes de la liste sont incluses dans la sortie. | Non |
response |
Liste des statuts d'invitation, séparés par des virgules, sur lesquels filtrer la liste lorsque listType a la valeur INVITED . Les statuts possibles sont les suivants :
La valeur par défaut est |
Non |
timezoneOffset |
Durée en millisecondes à ajouter au temps universel (UTC) pour obtenir l'heure standard dans le fuseau horaire de l'utilisateur. Par exemple, si le fuseau horaire local est UTC-2, timezoneOffset est -7200000 . La valeur par défaut est 0.
Remarque
Vous pouvez déduire la propriété timezoneOffset pour l'utilisateur en cours en fonction de la valeur de la variable de contexte utilisateur profile.timezoneOffset . Toutefois, dans ce cas, vous devez multiplier profile.timezoneOffset par -1.
Vous pouvez indiquer |
Non |
timezone |
ID du fuseau horaire local identifié par https://www.iana.org/time-zones. Egalement appelé nom tz database. Par exemple : America/Los_Angeles . La valeur par défaut est UTC . Vous pouvez indiquer timezoneOffset ou timezone , mais pas les deux.
|
Non |
Ce composant peut renvoyer les actions suivantes :
Action | Description |
---|---|
found |
Des événements ont été renvoyés. |
notfound |
Aucun événement correspondant. |
System.SelectCalendarEvent
Utilisez ce composant pour afficher la liste des événements Outlook ou Google que l'utilisateur peut sélectionner. Le composant enregistre l'ID de l'événement sélectionné dans la variable spécifiée par la propriété eventIdVariableName
.
Vous pouvez filtrer la liste de sélection sur les attributs suivants :
- L'événement peut être supprimé
- L'événement peut être mis à jour
- L'utilisateur a été invité à l'événement
- Réponse de l'utilisateur à une invitation
- L'événement inclut des participants nommés
- La réunion commence après une date et une heure données
- La réunion se termine avant une date et une heure données
L'utilisateur doit être connecté au fournisseur de calendrier pour accéder à ce composant. Vous pouvez utiliser la fonctionnalitéAutorisation requise pour gérer la connexion utilisateur, comme décrit dans Autorisation de calendrier.
Pour découvrir comment définir les valeurs start
et end
, reportez-vous à Utilisation des dates et heures du calendrier.
Voici un exemple d'utilisation de ce composant.
############################
# 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"
...
Ce composant est pris en charge dans Oracle Digital Assistant version 21.02 et versions ultérieures.
Propriété | Description | Requis ? |
---|---|---|
provider |
Fournisseur de calendrier. Valeurs autorisées : Google et Outlook .
|
Oui |
calendarOwner |
ID utilisateur du propriétaire du calendrier. Il doit s'agir d'un ID de compte valide pour le fournisseur de calendrier, tel que la valeur de la variable identifiée par la propriété authenticatedUserVariable du composant System.OAuth2AccountLink , définie lors de l'authentification de l'utilisateur.
|
Oui |
calendarId |
Nom du calendrier. Pour le calendrier par défaut de l'utilisateur, définissez la même valeur que pour la propriété calendarOwner .
|
Oui |
credential |
Jeton d'accès du fournisseur. Il s'agit de la valeur de la variable identifiée par la propriété accessTokenVariableName du composant System.OAuth2AccountLink , définie lors de l'authentification de l'utilisateur.
|
Oui |
listType |
Indique le type de liste. Il doit s'agir de l'un des suivants :
|
Oui |
eventIdVariableName |
Nom de la variable de contexte dans laquelle stocker l'ID de l'événement. | Oui |
start |
Date et heure les plus anciennes pour lesquelles les réunions doivent être incluses dans la liste (format : yyyy-MM-dd'T'HH:mm:ss ). Par exemple, 2021-02-26T09:55:00 .
|
Oui |
end |
Date et heure les plus récentes pour lesquelles les réunions doivent être incluses dans la liste (format : yyyy-MM-dd'T'HH:mm:ss ). Par exemple, 2021-02-26T09:55:00 .
Pour le type de liste |
Non |
attendees |
Liste des chaînes, séparées par des virgules et sans distinction entre les majuscules et les minuscules, à utiliser pour filtrer la liste sur les participants. Seules les réunions pour lesquelles des valeurs de participant contiennent des chaînes de la liste sont incluses dans la sortie. | Non |
response |
Liste des statuts d'invitation, séparés par des virgules, sur lesquels filtrer la liste lorsque listType a la valeur INVITED . Les statuts possibles sont les suivants :
La valeur par défaut est |
Non |
prompt |
Texte qui apparaît avant la liste. La valeur par défaut est You have the following meeting(s): . Vous n'avez pas besoin d'inclure cette propriété, sauf si vous voulez remplacer la valeur par défaut.
Conseil : Dans les briques avec les versions 21.04 et ultérieures de la plate-forme, la valeur par défaut est stockée dans le groupe de ressources de la brique. Pour modifier la valeur par défaut, ouvrez la page Groupe de ressources de la brique, cliquez sur![]() |
Non |
allDayLabel |
Texte indiquant les événements d'une journée entière. La valeur par défaut est All day .
|
Non |
recurringLabel |
Texte indiquant un événement récurrent. La valeur par défaut est Recurring .
|
Non |
acceptedLabel |
Texte indiquant que le propriétaire du calendrier a accepté l'invitation. La valeur par défaut est Accepted .
|
Non |
tentativeLabel |
Texte indiquant que le propriétaire du calendrier a accepté l'invitation provisoirement. La valeur par défaut est Tentative .
|
Non |
declinedLabel |
Texte indiquant que le propriétaire du calendrier a refusé l'invitation. La valeur par défaut est Declined .
|
Non |
pendingLabel |
Texte indiquant que le propriétaire du calendrier n'a pas encore répondu à l'invitation. La valeur par défaut est Pending .
|
Non |
timezoneOffset |
Durée en millisecondes à ajouter au temps universel (UTC) pour obtenir l'heure standard dans le fuseau horaire de l'utilisateur. Par exemple, si le fuseau horaire local est UTC-2, timezoneOffset est -7200000 . La valeur par défaut est 0.
Remarque
Vous pouvez déduire la propriété timezoneOffset pour l'utilisateur en cours en fonction de la valeur de la variable de contexte utilisateur profile.timezoneOffset . Toutefois, dans ce cas, vous devez multiplier profile.timezoneOffset par -1.
Vous pouvez indiquer |
Non |
timezone |
ID du fuseau horaire local identifié par https://www.iana.org/time-zones. Egalement appelé nom tz database. Par exemple : America/Los_Angeles . La valeur par défaut est UTC . Vous pouvez indiquer timezoneOffset ou timezone , mais pas les deux.
|
Non |
Ce composant peut renvoyer les actions suivantes :
Action | Description |
---|---|
found |
Des événements ont été renvoyés. |
notfound |
Aucun événement correspondant. |
System.SendInviteResponse
Utilisez ce composant pour accepter, accepter provisoirement ou refuser une invitation à un événement de calendrier Outlook ou Google.
L'utilisateur doit être connecté au fournisseur de calendrier pour accéder à ce composant. Vous pouvez utiliser la fonctionnalitéAutorisation requise pour gérer la connexion utilisateur, comme décrit dans Autorisation de calendrier.
Voici un exemple d'utilisation de ce composant.
############################
# 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"
Ce composant est pris en charge dans Oracle Digital Assistant version 21.02 et versions ultérieures.
Propriété | Description | Requis ? |
---|---|---|
provider |
Fournisseur de calendrier. Valeurs autorisées : Google et Outlook .
|
Oui |
calendarOwner |
ID utilisateur du propriétaire du calendrier. Il doit s'agir d'un ID de compte valide pour le fournisseur de calendrier, tel que la valeur de la variable identifiée par la propriété authenticatedUserVariable du composant System.OAuth2AccountLink , définie lors de l'authentification de l'utilisateur.
|
Oui |
calendarId |
Nom du calendrier. Pour le calendrier par défaut de l'utilisateur, définissez la même valeur que pour la propriété calendarOwner .
|
Oui |
credential |
Jeton d'accès du fournisseur. Il s'agit de la valeur de la variable identifiée par la propriété accessTokenVariableName du composant System.OAuth2AccountLink , définie lors de l'authentification de l'utilisateur.
|
Oui |
eventId |
ID de l'événement auquel envoyer la réponse. Vous pouvez utiliser System.ListCalendarEvents ou System.SelectCalendarEvent pour obtenir l'ID des événements de calendrier auxquels le propriétaire du calendrier a été invité.
|
Oui |
response |
Réponse à envoyer. Les réponses possibles sont les suivantes :
|
Oui |
System.UpdateCalendarEvent
Utilisez ce composant pour apporter des modifications à un événement de calendrier Outlook ou Google. Vous ne pouvez pas mettre à jour des événements récurrents ou d'une journée entière.
L'utilisateur doit être connecté au fournisseur de calendrier pour accéder à ce composant. Vous pouvez utiliser la fonctionnalitéAutorisation requise pour gérer la connexion utilisateur, comme décrit dans Autorisation de calendrier.
Pour découvrir comment définir les valeurs start
et end
, reportez-vous à Utilisation des dates et heures du calendrier.
Voici un exemple d'utilisation de ce composant. Dans cet exemple, une entité de conteneur composite est utilisée pour obtenir la date, l'heure de début et l'heure de fin.
####################
# 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"
...
Ce composant est pris en charge dans Oracle Digital Assistant version 21.02 et versions ultérieures.
Propriété | Description | Requis ? |
---|---|---|
provider |
Fournisseur de calendrier. Valeurs autorisées : Google et Outlook .
|
Oui |
calendarOwner |
ID utilisateur du propriétaire du calendrier. Il doit s'agir d'un ID de compte valide pour le fournisseur de calendrier, tel que la valeur de la variable identifiée par la propriété authenticatedUserVariable du composant System.OAuth2AccountLink , définie lors de l'authentification de l'utilisateur.
|
Oui |
calendarId |
Nom du calendrier. Pour le calendrier par défaut de l'utilisateur, définissez la même valeur que pour la propriété calendarOwner .
|
Oui |
credential |
Jeton d'accès du fournisseur. Il s'agit de la valeur de la variable identifiée par la propriété accessTokenVariableName du composant System.OAuth2AccountLink , définie lors de l'authentification de l'utilisateur.
|
Oui |
eventId |
ID de l'événement à mettre à jour. Vous pouvez utiliser System.ListCalendarEvents ou System.SelectCalendarEvent pour obtenir eventId .
|
Oui |
start |
Nouvelles date et heure de début au format yyyy-MM-dd'T'HH:mm:ss . Par exemple, 2021-02-26T09:55:00 .
|
Non |
end |
Nouvelles date et heure de fin au format yyyy-MM-dd'T'HH:mm:ss . Par exemple, 2021-02-26T09:55:00 .
|
Non |
subject |
Nouvel objet de la réunion. | Oui |
attendees |
Liste des participants, séparés par des virgules. Cette liste remplace la liste précédente. Le fournisseur de calendrier ne peut pas envoyer de notification à un participant si l'ID n'est pas un ID de compte valide pour ce fournisseur. | Oui |
timezoneOffset |
Durée en millisecondes à ajouter au temps universel (UTC) pour obtenir l'heure standard dans le fuseau horaire de l'utilisateur. Par exemple, si le fuseau horaire local est UTC-2, timezoneOffset est -7200000 . La valeur par défaut est 0.
Remarque
Vous pouvez déduire la propriété timezoneOffset pour l'utilisateur en cours en fonction de la valeur de la variable de contexte utilisateur profile.timezoneOffset . Toutefois, dans ce cas, vous devez multiplier profile.timezoneOffset par -1.
Vous pouvez indiquer |
Non |
timezone |
ID du fuseau horaire local identifié par https://www.iana.org/time-zones. Egalement appelé nom tz database. Par exemple : America/Los_Angeles . La valeur par défaut est UTC . Vous pouvez indiquer timezoneOffset ou timezone , mais pas les deux.
|
Non |
Bas de page

Ce pied de page apparaît sur tous les canaux, y compris ceux qui prennent en charge les boutons tels que Facebook. Toutefois, vous pouvez configurer un affichage propre au canal pour le pied de page. La procédure est la suivante :
-
Définissez la variable
autoNumberPostbackActions
à l'aide de l'expressionsystem.message
.setAutoNumbering: component: "System.SetVariable" properties: variable: "autoNumberPostbackActions" value: "${(system.channelType=='facebook')?then('true','false')}"
-
Définissez la définition
footerText
avec une directive Apache FreeMarkerif
pour afficher ou masquer le pied de page en fonction du type de canal.footerText: <#if autoNumberPostbackActions.value>"Make your choice by entering the menu option number."</#if>
Sur Facebook, System.CommonResponse affiche le texte de pied de page dans sa propre bulle de texte qui apparaît juste avant les actions globales (réponses rapides). Le pied de page ne peut pas s'afficher après ces actions, car cela nécessite une deuxième bulle de texte de pied de page qui entraîne la disparition des actions.
Propriété translate
translate
qui remplace le paramètre de variable autoTranslate
global :
-
Si vous définissez la variable
autoTranslate
surfalse
(valeur par défaut), aucune traduction automatique n'est effectuée sur le composant, sauf si vous définissez la propriététranslate
surtrue
. -
Si vous définissez la variable
autoTranslate
surtrue
, la propriététranslate
est également définie surtrue
de manière implicite, ce qui signifie que les chaînes de libellé, de titre, de description, d'invite et de texte seront traduites.
autotranslate
en la définissant sur true
, la définition de la propriété translate
d'un composant sur false
exclut ses chaînes d'invite, de titre, de description, de libellé et de texte de la traduction. A l'inverse, si vous n'activez pas autotranslate
mais que la propriété translate
d'un composant est définie sur true
, les chaînes d'invite, de titre, de description, de libellé et de texte du composant sont traduites dans la langue utilisateur détectée à l'aide du service de traduction configuré. (Les composants d'entrée traduisent la saisie utilisateur en anglais.)
La valeur autoTranslate est définie sur... | ...et la propriété translate du composant est définie sur... | ...donc la saisie utilisateur, l'invite, le libellé, le texte, le titre et la description sont traduits |
---|---|---|
true |
non défini | oui |
true |
true |
oui |
true |
false |
non |
false |
non défini | non |
false |
false |
non |
false |
true |
oui |
Les flux conçus avec le concepteur de flux visuel ne disposent pas de la propriété
translate
ou de la variable de contexte autoTranslate
. Pour configurer la traduction de ces briques, utilisez les propriétés Traduire le message d'entrée utilisateur et Traduire le message de réponse de bot.
System.Feedback
Cette rubrique traite de l'utilisation de ce composant en mode YAML. Pour plus d'informations sur son utilisation dans le concepteur de flux visuel, reportez-vous à Commentaires utilisateur.
Le composant System.Feedback
vous permet de collecter des données de retour pour Insights en présentant aux utilisateurs une échelle de notation une fois qu'ils ont terminé un flux transactionnel. Si vous utilisez le SDK 21.10 ou une version ultérieure, ce composant génère un système de classement horizontal par étoiles. Si vous utilisez un SDK antérieur, le composant affiche cette échelle de notation sous la forme d'une liste simple qui permet aux utilisateurs d'appuyer sur le bouton correspondant à leur évaluation.
Bien que vous puissiez modifier le comportement de ce composant à l'aide des propriétés du composant, vous pouvez modifier son apparence lorsque vous utilisez le SDK (version 21.10 ou ultérieure). Par exemple, vous pouvez remplacer les icônes en étoile par défaut utilisées pour les boutons de retour par une autre icône.
System.Feedback Propriétés de composant
Propriété | Description |
---|---|
maxRating |
Notation maximale qu'un utilisateur peut soumettre. La valeur maximale est 5 . Vous pouvez ajuster cette valeur vers le bas.
|
enableTextFeedback |
Une valeur booléenne, qui, si elle est définie sur true , permet à l'utilisateur de soumettre un retour au format texte si la notation est inférieure ou égale à la valeur threshold . La valeur par défaut de cette propriété est false (aucun retour n'est activé).
|
threshold |
Valeur permettant d'évaluer la transition entre les actions above et below . Par défaut, le seuil entre les retours positifs et négatifs est défini sur 2 pour la valeur maxRating par défaut, à savoir 5 .
|
footerText |
Texte affiché en bas de la boîte de dialogue de retour. |
System.FeedbackTransitions de composant
return: "done"
.
Action | Description |
---|---|
above |
Défini lorsque l'entrée utilisateur est une valeur valide supérieure à la valeur threshold .
|
below |
Définie lorsque l'entrée utilisateur est une valeur valide égale ou inférieure à la valeur threshold . ).
|
cancel |
Définissez le moment où les utilisateurs refusent l'évaluation en cliquant sur Ignorer. |
system.userFeedbackRating
: renvoie la note de l'utilisateur.system.userFeedbackText
: lorsqueenableTextFeedback
est défini surtrue
, votre brique peut demander un retour lorsque les notations sont inférieures à la valeurthreshold
.system.userFeedbackText
renvoie l'entrée de l'utilisateur (${system.userFeedbackText.value}
).
...
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
Ce composant est en phase d'abandon et il n'existe plus de modèle disponible. Au lieu de cela, vous pouvez utiliser l'un des nombreux modèles basés sur le composant de réponse commune proposé dans la section Messagerie utilisateur de la boîte de dialogue Ajouter un composant.
Le composant System.Text
permet à votre bot de définir un contexte ou une variable utilisateur en demandant à l'utilisateur de saisir du texte.
System.Text
pour la première fois, il invite l'utilisateur à saisir du texte. Lorsque l'utilisateur saisit une valeur, le moteur de dialogue revient à cet état. Le composant traite la réponse de l'utilisateur et, s'il peut convertir la saisie utilisateur dans le type de variable, il stocke la valeur dans la variable. Le moteur de dialogue passe à un autre état lorsque cette variable a une valeur.
Le moteur de dialogue ignore l'état
System.Text
de la variable ayant déjà une valeur.
Propriété | Description | Requis ? |
---|---|---|
prompt |
Chaîne de texte décrivant l'entrée requise par l'utilisateur. Vous pouvez lui ajouter des valeurs dynamiquement à l'aide d'une expression de valeur. Par exemple : Hello ${profile.firstName}, how many pizzas do you want? |
Oui |
variable |
Nom de la variable, qui peut être une variable utilisateur ou l'une des variables déclarées dans le noeud context .
|
Oui |
nlpResultVariable |
Définit la propriété variable avec une valeur d'entité (si cette valeur d'entité n'a pas encore été définie pour la variable référencée). Vous pouvez permettre à nlpResultVariable de renvoyer une valeur lorsque vous la définissez à l'aide d'une variable contenant les résultats du traitement du langage naturel (par exemple, iresult: "nlpresult" qui est utilisé dans nos exemples de bots). Ainsi, la propriété nlpResultVariable peut toujours remplir la valeur lorsqu'elle est NULL si elle trouve une entité résolue correspondant à celle référencée par la variable. La boîte de dialogue passe à l'état suivant lorsque nlpResultVariable définit la valeur. Vous pouvez utiliser cette propriété à la place du composant System.SetVariable.
|
Non |
maxPrompts |
Nombre de fois où le composant invite l'utilisateur à saisir une entrée valide. Reportez-vous à Limitation du nombre d'invites utilisateur. | Non |
translate |
Utilisez cette propriété afin de remplacer la valeur booléenne que vous avez définie pour la variable de contexte autotranslate . Si vous n'avez pas défini cette variable ou si vous l'avez définie sur false , vous pouvez définir cette propriété sur true afin d'activer la traduction automatique pour ce composant uniquement. Si vous définissez la variable autotranslation sur true , vous pouvez définir cette propriété sur false pour exclure ce composant de la traduction automatique. Reportez-vous à Services de traduction dans les briques.
|
Non |
Reportez-vous à Transitions pour les composants de réponse communs pour connaître les types d'action prédéfinis que vous pouvez utiliser avec ce composant.
Comment utiliser le composant System.Text ?
Dans cet exemple, la variable type
contient les valeurs attendues par l'entité PizzaType
, comme cheese
, Veggie Lover
et Hawaiian
. Lorsque cette information est manquante dans la saisie utilisateur, le bot peut tout de même l'obtenir, car son flux de dialogue passe à l'état type
, dont le composant System.Text
invite l'utilisateur à indiquer explicitement ce qu'il veut. Gardez à l'esprit que même à ce stade, la saisie utilisateur doit quand même être résolue en entité PizzaType
pour passer à l'état suivant.
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
Ce composant est en phase d'abandon et il n'existe plus de modèle disponible. Au lieu de cela, vous pouvez utiliser l'un des nombreux modèles basés sur le composant de réponse commune proposé dans la section Messagerie utilisateur de la boîte de dialogue Ajouter un composant.
Le composant System.List
est conçu pour générer une liste d'options. Selon qu'une valeur de variable a été définie (ou définie pour ce composant), la navigation à partir du composant peut être déclenchée par l'utilisateur, ou par la valeur définie pour la variable utilisateur ou de contexte
Propriété | Description | Requis ? |
---|---|---|
options |
Vous pouvez indiquer options en utilisant des chaînes de texte séparées par des virgules, des expressions Apache FreeMarker et une liste de correspondances. Les options Propriété et Listes d'actions fournissent des exemples de la dernière approche.
|
Oui |
prompt |
Chaîne de texte invitant l'utilisateur à effectuer une action. | Oui |
variable |
Nom de la variable dont la valeur est remplie par la saisie utilisateur. Le moteur de dialogue ignore cet état si la valeur de la variable a déjà été définie et ne génère pas les options de liste pour l'utilisateur. | Non |
nlpResultVariable |
Définit la propriété variable avec une valeur d'entité (si cette valeur d'entité n'a pas encore été définie pour la variable référencée). Vous pouvez activer la fonction nlpResultVariable pour renvoyer une valeur lorsque vous la définissez à l'aide de la variable contenant les résultats du traitement du langage naturel (par exemple, iResult: "nlpresult" qui est utilisé dans nos exemples de briques). Ainsi, la propriété nlpResultVariable peut toujours remplir la valeur lorsqu'elle est NULL si elle trouve une entité résolue correspondant à celle référencée par la variable. La boîte de dialogue passe à l'état suivant lorsque nlpResultVariable définit la valeur. Vous pouvez utiliser cette propriété à la place du composant System.SetVariable. L'option Listes d'actions décrit la façon dont vous pouvez utiliser les propriétés variable et nlpResultVariable pour modifier le comportement d'affichage de la liste.
|
Non : utilisez cette propriété lorsque la propriété de variable nomme une variable de type entité. |
maxPrompts |
Nombre de fois où le composant invite l'utilisateur à saisir une entrée valide. Reportez-vous à Limitation du nombre d'invites utilisateur. | Non |
translate |
Utilisez cette propriété afin de remplacer la valeur booléenne que vous avez définie pour la variable de contexte autotranslate . Si vous n'avez pas défini cette variable ou si vous l'avez définie sur false , vous pouvez définir cette propriété sur true afin d'activer la traduction automatique pour ce composant uniquement. Si vous définissez la variable autotranslation sur true , vous pouvez définir cette propriété sur false pour exclure ce composant de la traduction automatique. Reportez-vous à Services de traduction dans les briques.
|
Non |
autoNumberPostbackActions |
Lorsqu'elle est définie sur true , cette option ajoute des nombres en tant que préfixes à des options. Même si vous n'avez pas défini cette option sur true , la numérotation automatique peut être appliquée aux éléments de liste lorsque la configuration Activer la numérotation automatique sur les actions de postback de l'assistant numérique est définie sur true . La numérotation automatique propre au canal peut être appliquée à toute brique inscrite dans un assistant numérique : ${(system.channelType=='twilio')?then('true','false')} |
Non |
footerText |
Améliore la sortie sur les canaux de texte uniquement. Comme décrit dans Pieds de page, vous pouvez utiliser des expressions FreeMarker afin d'appliquer des conditions au texte de pied de page pour les canaux de texte uniquement. | Non |
Listes de valeurs
Vous pouvez utiliser le composant System.List
pour renvoyer une valeur qui remplit une variable de contexte définie comme primitive (comme greeting: "string"
dans le modèle de flux de dialogue) ou comme entité, comme indiqué dans le fragment de code suivant. Dans ce flux de dialogue, la définition options: "Thick,Thin,Stuffed,Pan"
renvoie une valeur qui correspond à la variable crust
. La propriété options
définie pour size est une expression de valeur (${size.type.enumValues}
) qui renvoie les valeurs de liste Large, Medium, Small et Personal en tant qu'options. Reportez-vous à Syntaxe de langage de modèle Apache FreeMarker.
iResult
de la propriété nlpResultVariable
permet au composant de définir les valeurs d'entité des propriétés variable
pour les états crust
et size
lorsque ces valeurs n'ont pas été définies. Comme pour le composant Text
, le composant System.List
ne requiert aucune transition.
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:
...

Les utilisateurs ne sont pas limités aux options affichées dans la liste. Ils peuvent résoudre l'entité en saisissant un mot que l'entité reconnaît, comme un synonyme. Au lieu de choisir parmi les options de taille de pizza dans la liste, par exemple, les utilisateurs peuvent entrer big, un synonyme défini pour l'option Large de l'entité
PizzaSize
. Reportez-vous à Entités personnalisées.
Propriété options
options
à l'aide de l'une des méthodes suivantes :
-
Liste de correspondances : bien que vous puissiez définir la propriété options en tant qu'expression de chaîne de texte ou de valeur, vous pouvez également configurer la propriété
options
en tant que liste de correspondances. Chacune d'entre elles possède une propriétélabel
, une propriétévalue
et une propriétékeyword
facultative. Vous pouvez localiser vos options de liste lorsque vous suivez cette approche car, comme indiqué dans l'exemple suivant, vous pouvez référencer un groupe de ressources. Pour plus d'informations sur l'utilisation de la syntaxe par points, reportez-vous à Groupes de ressources pour les briques. Lorsque les utilisateurs saisissent une valeur qui correspond à l'une des valeurs spécifiées dans la propriétékeyword
, le bot réagit de la même façon que si l'utilisateur avait touché l'option de liste elle-même.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"
-
Chaîne de texte comprenant des options séparées par des virgules, comme
"small, medium, large"
dans le fragment de code suivant. Vous ne pouvez pas ajouter les propriétéslabel
etvalue
lorsque vous définissezoptions
en tant que chaîne.askPizzaSize: component: "System.List" properties: prompt: "What size do you want?" options: "small, medium, large" variable: "pizzaSize"
-
Expression de valeur Apache FreeMarker qui s'exécute en boucle sur une liste de chaînes ou une liste de correspondances, dans laquelle chaque correspondance doit contenir les propriétés
label
etvalue
et éventuellement une propriétékeyword
.askPizzaSize: component: "System.List" properties: prompt: "What size do you want?" options: "${pizzaSize.value.enumValues}" variable: "pizzaSize"
Liste d'actions
System.Switch
pour la navigation conditionnelle, vous pouvez utiliser des listes d'actions. Les propriétés facultatives variable
et nlpResultVariable
de System.List
définissent le comportement d'affichage de la liste et la transition suivante en fonction de l'entrée utilisateur.
- Si vous ne configurez pas ces propriétés, l'action de transition repose sur l'option sélectionnée par l'utilisateur de la brique :
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"
- Lorsque vous ajoutez les propriétés
variable
etnlpResultVariable
, l'affichage de la liste est contourné en cas de correspondance de l'entrée utilisateur. Dans le fragment de code suivant, la liste d'options est contournée lorsquenlpResultVariable
définit la variablesize
de l'entrée utilisateur comme I want to order a large pizza. La transition appropriée à la valeur est alors déclenchée.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
pour générer un message n'exigeant aucune réponse de l'utilisateur ou n'exigeant pas que votre brique traite la réponse de l'utilisateur.
Ce composant est en phase d'abandon et il n'existe plus de modèle disponible. Au lieu de cela, vous pouvez utiliser l'un des nombreux modèles basés sur
System.CommonResponse
proposés dans la section Messagerie utilisateur de la boîte de dialogue Ajouter un composant.
Propriété | Description | Requis ? |
---|---|---|
text |
Chaîne de texte | Oui. Ce champ requiert une valeur. |
keepTurn |
Valeur booléenne permettant d'abandonner (false ) ou de conserver le contrôle de la brique du flux de dialogue (true ). Utilisez keepTurn: true lorsque vous voulez générer une séquence ininterrompue de messages de brique dans laquelle aucun message de l'utilisateur n'est accepté.
|
Non |
translate |
Utilisez cette propriété afin de remplacer la valeur booléenne que vous avez définie pour la variable de contexte autotranslate . Si vous n'avez pas défini cette variable ou que vous l'avez définie sur false , vous pouvez définir cette propriété sur true afin d'activer la traduction automatique pour ce composant uniquement. Si vous définissez la variable autotranslation sur true , vous pouvez définir cette propriété sur false pour exclure ce composant de la traduction automatique. Reportez-vous à Services de traduction dans les briques.
|
Non |
Utilisation du composant System.Output
System.Output
requiert la définition de chaîne pour la propriété text
. Comme illustré dans l'exemple de message de confirmation suivant, vous pouvez ajouter des expressions de valeur à cette chaîne.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."
Par défaut, le moteur de dialogue attend la saisie utilisateur après avoir généré une instruction à partir de votre brique. Si vous remplacez ce comportement, ajoutez la propriété facultative keepTurn
et définissez-la sur true
pour que le moteur de dialogue passe à l'état suivant défini par la propriététransitions
. Si aucune transition n'est définie, le moteur de dialogue passe à l'état suivant dans la séquence.
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"
Définition des expressions de valeur pour le composant System.Output
text
. Par exemple, le fragment de code suivant utilise différentes expressions pour générer le texte dans le cadre d'une confirmation de commande (taille et type de pizza).confirmation:
component: "System.Output"
properties:
text: "Your ${size.value} ${type.value} pizza is on its way."
transitions:
return: "done"
Chaque expression doit toujours renvoyer une valeur. Si une expression renvoie une valeur NULL, la brique génère un texte brut pour chaque expression dans la chaîne. Vos utilisateurs obtiennent donc la sortie suivante : Your ${size.value} ${type.value} is on its way.
C'est tout ou rien. Pour que votre brique génère toujours du texte que vos utilisateurs comprennent, remplacez la valeur par défaut par une valeur NULL à l'aide de l'opérateur de valeur par défaut Apache FreeMarker : ${size.value!\”piping\”} ${type.value!\”hot\”}
. Les guillemets indiquent que la valeur par défaut n'est pas une référence de variable, mais qu'il s'agit à la place de la valeur constante attendue par l'opérateur. Par exemple :text: "Your ${size.value!\"piping\"} ${type.value!\"hot\"} pizza is on its way."
Ajoutez toujours des caractères d'échappement aux guillemets (
\"...\"
) qui entourent la valeur par défaut lorsque vous utilisez l'opérateur FreeMarker. La syntaxe OBotML de votre flux de dialogue ne sera pas valide, sauf si vous utilisez cette séquence d'échappement chaque fois que vous définissez une opération de valeur par défaut ou que vous désactivez du texte de sortie avec des guillemets. Par exemple, la définition de composant System.Output
suivante permet aux utilisateurs de lire le message suivant : You said, “Cancel this order.”confirmCancel:
component: "System.Output"
properties:
text: "You said, \"Cancel this order.\""
transitions:
return: "cancelOrder"
Traduction du texte généré
System.Output
selon le composant à l'aide de la propriété translate
. Si vous la définissez sur false
, comme dans le fragment de code suivant, les composants génèrent le texte tel quel, sans traduction. En définissant cette propriété sur true
, vous pouvez activer la traduction automatique lorsque la variable autoTranslate
est définie sur false
ou n'est pas définie. Reportez-vous à Services de traduction dans les briques.
En général, vous ne devez pas définir la variable
autoTranslate
sur true
si vous traduisez du texte avec des groupes de ressources. Nous ne recommandons pas cette approche.
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:
...