Starting with Oracle Digital Assistant 21.06, the use of resource bundle strings in custom component messages has been greatly simplified through the introduction of the context.translate() method to the conversation context within the Bot SDK. This article explains how you can leverage this new feature in your custom components and your entity event handler.
Starting with Oracle Digital Assistant 21.06, the use of resource bundle strings in custom component messages has been greatly simplified through the introduction of the context.translate() method to...
Composite bag entities in Oracle Digital Assistant are a domain object driven approach to designing bot conversations. With composite bag entities, conversation design is modeled as domain objects which then intelligently get resolved using the System.ResolveEntities and the System.CommonResponse component. This article explains how you can implement an intelligent cancel or exit option to your composite bag entity dialogs that allow users to discontinue a started conversation.
Composite bag entities in Oracle Digital Assistant are a domain object driven approach to designing bot conversations. With composite bag entities, conversation design is modeled as domain objects...
In this article, I provide a sample skill that uses two composite bag entities and two entity event handlers to help users submit an expense report. I am sharing this sample not because I think this is how expense reporting should work but to provide you with entity event handler sample code that you can use to learn from.
In this article, I provide a sample skill that uses two composite bag entities and two entity event handlers to help users submit an expense report. I am sharing this sample not because I think...
Below are 3 examples for use cases that benefit from structured data entry in a chatbot conversation. 1. Sensitive information such as credit card numbers that should not be displayed in the messenger's conversation history. 2. For users to enter or edit a large amount of information that otherwise would result in very long chatbot conversations 3. When the messenger does not provide convenient user interface to guide users (e.g. a calendar picker or dependent list-of-values) Oracle Digital Assistant supports locally and remotely deployed web forms. For the Oracle Web SDK (Oracle web messenger), the web view can be displayed in a separate browser tab or integrated into the messenger so that users are not taken out of context. In this article I explain how you display web forms in the web messenger and also provide a sample that displays a Oracle JET10 based login form.
Below are 3 examples for use cases that benefit from structured data entry in a chatbot conversation. 1. Sensitive information such as credit card numbers that should not be displayed in the...
Most messengers used with chatbots do not support multi-select lists as a widget for building user interface. In a previous Oracle TechExchange article, I discussed how, using Oracle Digital Assistant, you can still implement multi-select lists for data stored in value list entities . In this article, I will explain how you can do the same for values that are not entity based but queried from a backend service.
Most messengers used with chatbots do not support multi-select lists as a widget for building user interface. In a previous Oracle TechExchange article, I discussed how, using Oracle...
The concept of convention over configuration as a paradigm in framework development to facilitate the decisions developers must make, can be implemented in Oracle Digital Assistant to build skills that answer frequently asked questions. This article explains how to create frequently asked question chatbots (skills) without coding by following a set of naming convention rules. The starting point of this approach is a skill template sample that I provide at the end of this article. The skill contains all of the dialog flow coding required to make this work.
The concept of convention over configuration as a paradigm in framework development to facilitate the decisions developers must make, can be implemented in Oracle Digital Assistant to build skills...
I mentioned in a previous article that the trinity of Composite Bag Entities (CBE), Entity Event Handler (EEH), and the System.ResolveEntities (RE) component will soon become the standard (aka go-to technique) for building model-driven conversations in Oracle Digital Assistant. Entity event handlers can be developed using an external IDE such as Microsoft Visual Studio Code or using the browser-based editor in Oracle Digital Assistant. In both cases, EEH are deployed tothe embedded node container in Oracle Digital Assistant skills. However, there is also the option to deploy and configure EEH component services as a remote service which can then be used to debug EEH. This article explains how to start your EEH development in the browser, then export the handler for debugging with an external IDE.
I mentioned in a previous article that the trinity of Composite Bag Entities (CBE), Entity Event Handler (EEH), and the System.ResolveEntities (RE) component will soon become the standard (aka go-to...
Entity Event Handler (EEH) is a new feature in Oracle Digital Assistant since version 21.02 that allows you to execute JavaScript in the context of resolving a composite bag entity. EEH gives digital assistant developer more control over how a composite bag entity resolves and also help reducing the amount of BotML code to write in dialog flows. The trinity of composite bag entities, entity event handlers and the System.ResolveEntities component will soon become the new "normal" when developing dialog processes in the Oracle Digital Assistant. This is reason enough to highlight another entity event handler feature, which is the ability to query or write to REST services at any time while resolving a composite bag entity. This article is a quick tutorial on access REST services from a composite bag entity.
Entity Event Handler (EEH) is a new feature in Oracle Digital Assistant since version 21.02 that allows you to execute JavaScript in the context of resolving a composite bag entity. EEH gives digital...
article by Anshuman Panda, April 2021 Oracle Content and Experience is a cloud-based content hub to drive omni-channel content management and accelerate experience delivery. With Oracle Content and Experience, you can rapidly collaborate internally and externally on any device to approve content and create contextualized experiences. This article explains how to upload file content from Oracle Digital Assistant to Oracle Content Experience and Experience cloud. Sample code is provided with the article on Oracle TechExchange.
article by Anshuman Panda, April 2021 Oracle Content and Experience is a cloud-based content hub to drive omni-channel content management and accelerate experience delivery. With Oracle Content and...
A key feature of Oracle Digital Assistant is the ability to construct your digital assistant from multiple skills. This concept of splitting software into more functionally manageable, or reusable, building blocks is a common technique in software development, whether it’s database tables, PL/SQL packages or Java classes. However, even though the general concept is understood, the question as to what is the best approach for partitioning a digital assistant comes up frequently in a number of different guises: “How should I partition my digital assistant into skills”, “How many skills should I have”, or “Should I combine these two skills into one”. Alas, there is no magic formula for calculating the answer, and more often the answer is “it depends”, but there are some key consideration to be aware of when making the decision. This article explains how to how to partition your digital assistant projects into skills and how to make those decisions
A key feature of Oracle Digital Assistant is the ability to construct your digital assistant from multiple skills. This concept of splitting software into more functionally manageable, or reusable,...
This document will guide you through the steps to set up single sign-on (SSO) authentication for an Oracle digital assistant that is exposed through a Microsoft Teams channel The MS Teams SSO feature is primarily intended to support customers who want to access Oracle Fusion Applications from MS Teams without prompting users for authentication. The token you receive from the MS Teams SSO endpoint is an “exchange” token and cannot be used directly to invoke graph APIs, therefore cannot be used to access Graph API’s or Oracle Digital Assistant’s Calendar system components This document will guide you through the steps to set up single sign-on (SSO) authentication for an Oracle digital assistant that is exposed through a Microsoft Teams channel
This document will guide you through the steps to set up single sign-on (SSO) authentication for an Oracle digital assistant that is exposed through a Microsoft Teams channel The MS Teams SSO feature...
This article explains how you can export and import entity event handler that you created in Oracle Digital Assistant for editing in an external IDE, debugging or to add custom or 3rd party Node.js modules.
This article explains how you can export and import entity event handler that you created in Oracle Digital Assistant for editing in an external IDE, debugging or to add custom or 3rd party...
Most if not all messengers support attachments for users to share documents with a chatbot. Unfortunately, chatbots don't control the messenger and therefore users could send attachments to a point in time where the bot does not expect an attachment to be sent. While you cannot prevent users from sending attachments, you can handle the gracefully. This article explains how you can suppress attachments in Oracle Digital Assistant skills.
Most if not all messengers support attachments for users to share documents with a chatbot. Unfortunately, chatbots don't control the messenger and therefore users could send attachments to a point...
Bot message pagination shows a limited set of data at a time, with the option for users to navigate to a next set of records or a previous set of record. As you know, messengers differ in the number of list items or cards they display at a time, so pagination is often the only way for skill developers to display all content of a result set to users. The System.CommonResponse component makes it easy to implement pagination for cards and lists, especially if the data is saved in value list entities. With the System.CommonResponse component, pagination can also be used for text messages. A use case for this feature would be a user request to which the bot responds with multi-step instructions, e.g. to reset a password. This article and sample shows how to implement pagination of text messages in Oracle Digital Assistant.
Bot message pagination shows a limited set of data at a time, with the option for users to navigate to a next set of records or a previous set of record. As you know, messengers differ in the number...
Event handler is a new feature in Oracle Digital Assistant 21.02 and later that provides an event driven mechanism to execute custom logic in the context of resolving a composite bag entity. The custom logic you implement may include custom validations, customized prompts and disambiguation messages, or access to remote REST services for querying and updating data. Very soon we will publish two new tutorials about entity event handlers on our product documentation page. Until then, this article will get you started. What you will learn following the instructions in this article is how to create an event handler and how to use the custom component SDK to render prompts as card layouts. You will also notice how using event handlers, you can add advanced functionality to the ResolveEntities component.
Event handler is a new feature in Oracle Digital Assistant 21.02 and later that provides an event driven mechanism to execute custom logic in the context of resolving a composite bag entity....
Oracle Digital Assistant 20.12 introduced not only a multilingual NLU, but also a new extended message format for creating resource bundle strings. Beside others, the new ICU (International Components for Unicode) message format allows you to print messages and prompts based on a condition like the messenger channel being used and to detect plural vs. singular cases requiring different bot responses. In preparation to recording a digital assistant design camp session about using resource bundles and the new ICU message format in Oracle Digital Assistant, I created a sample skill that I am now sharing with you in this article.
Oracle Digital Assistant 20.12 introduced not only a multilingual NLU, but also a new extended message format for creating resource bundle strings. Beside others, the new ICU (International Components...
The concept of convention over configuration as a paradigm in framework development to facilitate the decisions developers must make, can be implemented in Oracle Digital Assistant to build skills that answer frequently asked questions. This article explains how to create frequently asked question chatbots (skills) without coding by following a set of naming convention rules. The starting point of this approach is a skill template sample that I provide at the end of this article. The skill contains all of the dialog flow coding required to make this work.
The concept of convention over configuration as a paradigm in framework development to facilitate the decisions developers must make, can be implemented in Oracle Digital Assistant to build skills...
Read-only messages are bot responses that provide a confirmation or an acknowledgement to the user. The component in Oracle Digital Assistant that 99.5 % of all Oracle Digital Assistant developers use for read-only messages is the System.Output component and there is nothing wrong with it. However, did you know that the System.CommonResponse component too can be configured to display read-only messages? This article explains this option and outlines use cases and benefits.
Read-only messages are bot responses that provide a confirmation or an acknowledgement to the user. The component in Oracle Digital Assistant that 99.5 % of all Oracle Digital Assistant developers...
I don't know anyone who would decide today to spend their vacation in the same place for the rest of their life. But I know enough people who code their bots and their digital assistants to work on just one messenger. In this article I show you how you can implement channel specific messages and formatting without locking your bot in.
I don't know anyone who would decide today to spend their vacation in the same place for the rest of their life. But I know enough people who code their bots and their digital assistants to work...
How do you curate your utterances and message bundles? Well, I use Microsoft Excel, which could cause a problem though. The problem described in this article does not appear to be reproducible on all operating systems and on all versions of Microsoft (MSFT) Excel. However, it does occur on my MAC so I thought it would be best to document it in case anyone else is having this problem.
How do you curate your utterances and message bundles? Well, I use Microsoft Excel, which could cause a problem though. The problem described in this article does not appear to be reproducible on...
A key feature of Oracle Digital Assistant is the ability to construct your digital assistant from multiple skills. This concept of splitting software into more functionally manageable, or reusable, building blocks is a common technique in software development, whether it’s database tables, PL/SQL packages or Java classes. However, even though the general concept is understood, the question as to what is the best approach for partitioning a digital assistant comes up frequently in a number of different guises: “How should I partition my digital assistant into skills”, “How many skills should I have”, or “Should I combine these two skills into one”. Alas, there is no magic formula for calculating the answer, and more often the answer is “it depends”, but there are some key consideration to be aware of when making the decision. This article explains how to how to partition your digital assistant projects into skills and how to make those decisions
A key feature of Oracle Digital Assistant is the ability to construct your digital assistant from multiple skills. This concept of splitting software into more functionally manageable, or reusable,...
I’m excited to announce that the Oracle Digital Assistant Platform Version 20.12 is now being rolled out across all our OCI data centers. Unified Multi-lingual NLU 20.12 represents a fundamental shift not only for the ODA Platform but for the Conversational AI space in general. With 20.12, we introduced a unified multi-lingual NLU model for key languages in Europe and Middle East. This means customers no longer have to build a separate digital assistant for each language nor do they have to rely on a translation service to power their Intent Classification and Entity Recognition. While multi-lingual language embeddings have become mainstream in the past couple of years, ODA is the first Conversational AI platform to introduce active cross-lingual usage with Few-Shot and Zero-Shot NLU training models for both intents and entities. Few Shot training means that if you want to add Arabic support to your digital assistant, you do not have to recreate all your training data in Arabic — you may be able to add only a fraction of the training data in Arabic to the same digital assistant, and get reasonable accuracy. Actually, you may even get your digital assistant to recognize some Arabic utterances without adding any training data — that’s the Zero Shot training model. As always, please assess your accuracy goals for each use-case and test thoroughly to determine how much more training data you need for your intents and entities. To support this unified multi-lingual NLU, we have introduced other features across the platform such as built-in language detection, multi-lingual retraining in Insights, multi-lingual testing, and ICU resource bundles for complex multi-lingual outputs. Enhanced Speech Speech recognition has been an integral part of the ODA Platform ever since we introduced Oracle Voice in Dec 2019. The base Speech Models are already fine-tuned for enterprise usage to recognize terms such as EBITDA, GAAP, and KAD (Key Account Director in Oracle). These models use context and statistical inference to correctly resolve ambiguous utterances (e.g. when the user said 'Gap' vs. 'GAAP'). With 20.12, we are introducing Enhanced Speech models which make Speech customized for your digital assistant. These models get transparently trained in the background when you train your digital assistant — there’s no extra Speech recording or adding lists of phonemes. Enhanced Speech picks up all your static and dynamic entities (that means you can inject new entity values on-the-fly into the Speech and NLU models for your digital assistant). With Enhanced Speech, your digital assistant will now automatically recognize custom product/org names (e.g. NeuraLink) and hard-to-master words (e.g. my last name!) Data Manufacturing with Active Learning Deep learning models typically require a lot of diverse training data. While our core ML models often help you generalize with less effort, we understand that there’s no substitute for sourcing good training data, especially if you are creating a highly domain-specific digital assistant. Data manufacturing and crowd-sourcing platforms currently enable developers to gather some training data, but that exercise often feels disjointed and hard to synchronize. With 20.12 we are introducing an integrated data manufacturing capability within the ODA Platform. Now you can quickly select a few intents within your skill and kick off a paraphrasing job within your organization. More importantly if you have a ton of chat transcripts you can kick off an annotation job that leverages Active Learning to suggest potential intents from your skill for a given chat utterance — the crowd worker simply has to pick one of the suggestions or suggest a new one, and that choice is propagated back into the Active Learning model. Additionally, 20.12 comes packed with other cool features such as Group Chat support (yes, multiple users can continue a single conversation thread with the digital assistant), Intelligent Advisor integration, DA Retraining, custom OCI Functions, and more. We hope you upgrade your skills to 20.12 soon! We look forward to all your feedback!
I’m excited to announce that the Oracle Digital Assistant Platform Version 20.12 is now being rolled out across all our OCI data centers. Unified Multi-lingual NLU 20.12 represents a fundamental shift...
Composite bag entities model real world objects like "order", "person", "car", "account" etc. Each attribute in such an object is referred to as a bag item. Bag items usually reference other entities (built-in or custom). The System.CommonResponse component and the System.ResolveEntities component can be used to generate dialogs at runtime for users to be prompted to provide input for each bag item. A common use case for objects is that some of their attributes (bag items) are treated as optional. This means that the item will be prompted but the user can choose not to provide any information. In this article I explain by an example how you achieve the same behavior with composite bag entities.
Composite bag entities model real world objects like "order", "person", "car", "account" etc. Each attribute in such an object is referred to as a bag item. Bag items usually reference other entities...
In In this article I explain how you can use the Apache FreeMarker Online Tester to debug and test expressions in Oracle Digital Assistant
In In this article I explain how you can use the Apache FreeMarker Online Tester to debug and test expressions in Oracle Digital Assistant
This article explains how you can determine the value (which could be a synonym) that resolved an entity using Oracle Digital Assistant 20.09 or later.
This article explains how you can determine the value (which could be a synonym) that resolved an entity using Oracle Digital Assistant 20.09 or later.
Messenger behave different when it comes to the number of buttons or select items they can render. To address limitations you can configure the data items that are displayed at a time on composite bag entity bag items. For the users to be able to browse all data values, you then use buttons exposed on the System.CommonResponse component or the System.ResolveEntities component. What happens when a user tabs on a button is that the component navigates to a next or previous page range. There may be a time where you need to know what the current page range is. In composite bag entities, the page range is identified by the range start index, which, of course, is different for each bag item. In this article I explain how you can access the current page range for a bag item in a composite bag entity at runtime using an Apache FreeMarker expression.
Messenger behave different when it comes to the number of buttons or select items they can render. To address limitations you can configure the data items that are displayed at a time on composite bag...
While chatbots shouldn't pretend to be human, they shouldn't behave robotic either. A bot that has a single prompt for interacting with a human can only display that single prompt, which sounds like a broken record if the prompt needs to be displayed again. In this article, I'm going to show you how to create alternating prompts using the prompt property that "escalate" problems after users provide invalid data entries by displaying additional information that guide users or suggest an alternative
While chatbots shouldn't pretend to be human, they shouldn't behave robotic either. A bot that has a single prompt for interacting with a human can only display that single prompt, which sounds like...
The attachment type is a useful feature of the System.CommonResponse component, especially when the messenger is rendering images as part of a conversation. A feature I was looking for is the ability to add a title string or a header text. So far I helped myself by adding a text response before rendering the attachment response. Well, I've done that so far.
The attachment type is a useful feature of the System.CommonResponse component, especially when the messenger is rendering images as part of a conversation. A feature I was looking for is the ability...
Oracle Digital Assistant allows a single Digital Assistant to be accessible on a wide variety of channels such as Web, MS Teams and Slack . All without any code change. It also allows you to selectively customize and take advantage of features specific to the channel. This can be done without compromising the compatibility and reusability. This article shows some examples of what can be done on the web.
Oracle Digital Assistant allows a single Digital Assistant to be accessible on a wide variety of channels such as Web, MS Teams and Slack . All without any code change. It also allows you...
Chatbots should be confident when it comes to resolving intent and extracting entities. However, high confidence also means that the bot may sometimes not resolve information if the user makes mistakes while entering it. This article shows how you can add unsharpness to entity extraction using the Fuzzy Match option on an entity to allow users spelling mistakes or providing values that don't perfectly match a known entity value or synonym.
Chatbots should be confident when it comes to resolving intent and extracting entities. However, high confidence also means that the bot may sometimes not resolve information if the user...
Parent-child relationships are a common pattern in software development. The relationship usually describes a one-to-many dependency between two sets of data, one of which (the child) depends on the choice of the other (the parent). For example, a chatbot that handles expenses may prompt a user for providing the type of an expense, which could be accommodation, transportation, parking fees, office supplies and many others. Then, if a user selects transportation as the type of expense, the system may prompts with a dependent list of options, that may include flight, rental car, train, taxi, bus, others as selectable values. This article explains how to define parent-child relationships in Oracle Digital Assistant using the System.CommonResponse component and a composite bag entity.
Parent-child relationships are a common pattern in software development. The relationship usually describes a one-to-many dependency between two sets of data, one of which (the child) depends on the...
Identity providers authenticate users and return an authorization code for an application to access protected resources. With identity providers from Google and Microsoft, Oracle Digital Assistant 20.08 and later support two additional identity providers. This article explains how to configure Microsoft and Google as identity providers and how to use the OAUTH2 components of the Oracle Digital Assistant dialog flow with them.
Identity providers authenticate users and return an authorization code for an application to access protected resources. With identity providers from Google and Microsoft, Oracle Digital Assistant...
article by Grant Ronald, November 2020 In a digital assistant skill the intent component returns confidence score when resolving the user input. Typically this is measured against a threshold to decide if the skill understands the user utterance or not. However there is a great conversational technique for when an intent is above the threshold but you choose to vary the response based on the confidence score. img src: pixabay.com This article explains how to implement varying bot responses based on intent confidence. A sample skill is provided for download as a starting point for using this practice in your own Oracle Digital Assistant implementations. READ FULL ARTICLE (PDF) Download Sample Sample Skill (ZIP) Related Content TechExchange: Displaying Multiple Answers For Frequently Asked Questions Using Regular Intents and NLP TechExchange: Building A Production Quality FAQ In An Hour With Oracle Digital Assistant TechExchange: All 2-Minutes Oracle Digital Assistant Tech Tip Videos on YouTube TechExchange: Use Entities To Build Powerful, Robust And Speech-Ready Action Menus
article by Grant Ronald, November 2020 In a digital assistant skill the intent component returns confidence score when resolving the user input. Typically this is measured against a threshold to...
Join Oracle’s Joe Huang and ComEd’s David Crone for a live webcast, as they discuss chatbot development and showcase demos to help automate engagement and provide seamless workflows between bots and humans.
Join Oracle’s Joe Huang and ComEd’s David Crone for a live webcast, as they discuss chatbot development and showcase demos to help automate engagement and provide seamless workflows between bots...
Messaging channels are limited in the number of action items that can be displayed as buttons or values in a select list or on cards. To address these limitations, you can implement pagination so that the user can browse larger lists of values in pre-defined chunks. This article explains how to implement pagination for card layouts and lists that are based on entity lists and array variables.
Messaging channels are limited in the number of action items that can be displayed as buttons or values in a select list or on cards. To address these limitations, you can implement pagination so...
Learn six ways the AI-powered Oracle Digital Assistant with pre-built app skills and the ability to customize can drive efficiency and productivity, improve customer and employee experience, and support digital transformation.
Learn six ways the AI-powered Oracle Digital Assistant with pre-built app skills and the ability to customize can drive efficiency and productivity, improve customer and employee experience, and...
On mobile devices in particular, scanning QR codes is a quick and easy way to navigate to a URL. When Oracle Digital Assistant runs on the web as a messenger using the Oracle Web SDK, users can scan a QR code to display a launch option or to save the information contained in a code. This article explains how to integrate QR code scanning using the on-device camera (or the camera attached to a device) from Oracle Digital Assistant.
On mobile devices in particular, scanning QR codes is a quick and easy way to navigate to a URL. When Oracle Digital Assistant runs on the web as a messenger using the Oracle Web SDK, users can scan a...
To do anything useful with a chatbot, you need to be able to access backend services from within a conversation. However, this is easier said than done if the service to access is deployed on-premise, if access is protected by a firewall or authentication code is required such that it cannot be accessed directly by a custom component in Oracle Digital Assistant. The Oracle API Gateway and Oracle Identity Cloud Service (IDCS) product in Oracle Cloud Infrastructure (OCI) are your way out of this without cutting corners or violating your backend service security requirements.
To do anything useful with a chatbot, you need to be able to access backend services from within a conversation. However, this is easier said than done if the service to access is deployed on-premise,...
Some functions in a digital assistant are typically required by many skills. An example of such functionality is user authentication, which should be performed once for a digital assistant, but must be triggered by all skills of a digital assistant. You could duplicate the code it takes to perform user authentication into each skill or look for a way to modularize the problem. A feature to modularize the problem is to have a skill calling a skill, which is a feature built-in to Oracle Digital Assistant. This article discusses the options and techniques skill developers have available and the practices to follow to implement shared functionality in a separate skill. It is important to mention that the intention of this article is not to say "you must use skill-to-skill conversation" all the time because often a custom component can also be used to wrap and share common functionality. Even copying shared code into several skills sometimes doesn't pose a burden or overhead. This article introduces skill-to-skill calls as a way to share functionality through modularization. Its one more tool in your tool box.
Some functions in a digital assistant are typically required by many skills. An example of such functionality is user authentication, which should be performed once for a digital assistant, but must...
Answer intent uses machine learning to understand a user question and return a single answer. The QnA framework used earlier used elastic search instead, which didn't offer the same level of confidence as NLP. For this reason, the QnA framework always showed several possible question / answer pairs that would match a user message. Although the answer to a question that is returned by answer intents has a high confidence, some customers have expressed their preference for the "old" user interface, which lists multiple question-answer pairs if the runner-up answers resolve in a configurable range of confidence. This article explains how to use NLP and regular intents to resolve answers the "new way" while displaying it the "old way". The target audience for this article are Oracle Digital Assistant developers who used the QnA feature available in 19.x version of Oracle Digital Assistant and who now move to using answer intents in Oracle Digital Assistant on Oracle Cloud Infrastructure (ODA 20.x and later).
Answer intent uses machine learning to understand a user question and return a single answer. The QnA framework used earlier used elastic search instead, which didn't offer the same level...
In this article I explain the concept of model-driven conversations using entities in Oracle Digital Assistant and provide a sample to proof the concept.
In this article I explain the concept of model-driven conversations using entities in Oracle Digital Assistant and provide a sample to proof the concept.
Kotlin, which was originally developed by JetBrains, is an open source programming language compatible with Java and therefore the Android Java SDK. This article explain how you build Android mobile applications that integrate Oracle Digital Assistant chatbots using Android Studio and Kotlin.
Kotlin, which was originally developed by JetBrains, is an open source programming language compatible with Java and therefore the Android Java SDK. This article explain how you build Android mobile...
article by Frank Nimphius, September 2020 In an earlier article on Oracle TechExchange, I explained how to implement a feedback feature for answers to frequently asked questions. In the article I used a custom component that actually handled the feedback interaction with a user. In this article I explain the same use case using BotML for handling the feedback conversation (or any other follow-up conversation needed). A benefit of the approach explained in the article is that it is easier to implement for developers that are new to Oracle Digital Assistant and custom components. Where the previous solution required a complex - though interesting - custom component to be developed, this solution goes with pure BotML. As with many article on Oracle techExchange, there are a couple of things you will learn Formatting messages using an Apache FreeMarker array Defining answers as regular intents Adding icons to Common Response component actions Using a delegate object on the Oracle Web SDK Using CSS to customize the Oracle Web SDK rendering The images below show the final product of this article. As an example I used frequently asked questions about Oracle Digital Assistant. The "thumb up" and "thumb down" icons are actions that a user can use to provide feedback. If the user does not want to provide feedback, then she could continue the conversation with a next message. The design goal of this implementation is to not be annoying by forcing the user to provide feedback. Providing feedback is made optional. Disclaimer: Dependent on when you read this articles, the answers to questions in the screenshots may have changed or been updated. The user is free to choose whether she wants to provide feedback or not. If she wants, then she would press one of the provided icons (which you choose how they look). Otherwise she would simply send another message that will be passed to the intent engine. The image above shows a conversation the user continued without providing feedback. The conversation below then had the user clicking the thumbs-up button. The sample for this article prints a message in response to the user selected action button. In your production bot, the selected action should lead to a custom component call that then logs the user feedback so you can improve your chatbot. The BotML (YAML) Code All code in this sample is in BotML. Shown in the image below is the System.Intent component state. The System.Intent component state has an actions transition defined for all intents that are regular intents that start a conversation and no answers to a question. The example only has the unresolvedIntent defined for this. All other regular intents that get resolved are considered an answer to a question being asked by a user. Those intents follow the next transition to the prepareAnswerAndFeedback state. For an explanation of what answer intents are and when to use them compared to when to use regular intents for answering questions, see this article. The state shown in the image below defines an array using Apache FreeMarker expressions. The array is saved in the answerWithFeedback variable and contains items with text added and blank items. The blank items mark the end of a paragraph. So basically I am formatting a message into paragraphs without using markup or encoded line-break characters, The answer to a question is displayed by a System.CommonResponse component. The System.CommonResponse component iterates over the array that got created in the previous dialog flow step to print the message. For this it has the iteratorVariable pointing to the answerWithFeedback variable and its separateBubbles property set to false. This way multiple lines of the array get printed in a single speech bubble. Two actions Ok and Bad are used for the user to provide feedback. The action items use resource bundle strings for their labels. Notice how the labels are printed as a single blank character for when the message channel is the Oracle Web SDK (websdk). This way the label is used by all messengers that e.g. don't support icons on action items and buttons. If you use a messenger that does support icons, for which you don't want the labels to show, you could add the messenger channel to the expression that checks whether or not the label should be printed as a blank character. In the image below, I use a reference to pixabay.com for the thuumb-up and thumb-down icons. In your production environment you should use your own images that you store on an Internet facing server or a content delivery network (CDN). Notice the three actions transitions defined for the System.CommonResponse component state. negativeFeedback - the transition is followed when the user presses the "thumb-down" action positiveFeedback - the transition is followed when the user presses the "thumb-up" action textReceived - the transition followed when the user doesn't select one of the buttons but types a new test message The dialog flow state shown in the image below handle the three transition types. For the feedback options you replace the System.Output components with custom components that report the user feedback to a backend system for you to improve the answers if needed. The handleTextReceived dialog flow state prints a confirmation message to then direct the flow to the System.Intent component state to pass it to the intent engine. Intents and Resource Bundles The answers to print response to a question are saved in resource bundles, which means they can be translated if needed. The intent names are unique and can be used as the key name for a resource bundle string. The image below shows a resource bundle definition. Note that the resource bundle strings are created in the User-Defined tab. The answer for an intent is accessed when creating the array for the formatted message. To access the resource bundle content for an intent you use ${rb(iResult.value.intentMatches.summary[0].intent)}. Note: "rb" is the name of the variable of type "resourcebundle" that you need to define in your dialog flow. "iResult" is the name of the "nlpresult" variable and is also referenced from the System.Intent component. Oracle Web SDK client configuration Two settings are required for the Oracle Web SDK to work as shown in the initial set of screenshots. settings.js The settings.js file that holds the web SDK configurations in the sample provided with the Oracle Web SDK download needs a delegate object that responds to the postback message. The postback message is sent when a user presses the thumb-up and thumb-down buttons. The beforePostbackSend function highlighted in the image below allows you to modify postback messages. In this example, it looks for answers that have a single blank character. If so, the function does not send the message to the server but re-routes it to Bots.sendMessage() as a hidden message. Note: What the delegate object function in the image above does is to hide a blank message bubble. The blank message bubble would otherwise displayed when a user selects the thumb-up or thumb-down button. The function suppresses this empty bubble by sending a hidden user message. This function is not needed if you wanted to display a label and an icon. (see: "Alternative solution" later in this article) index.html settings You could run the sample without changing the index.html file. All changes that are required are those in the settings.js file. Without the changes in the index.html file, the buttons with the thumb-up and thumb-down actions will be rendered in a vertical orientation. The style information show below change the icons so they can be laid out next to each other as shown in the image at the beginning of the article. Alternative solution Alternative to displaying buttons just with a label you can display the buttons with an icon and a label. In this case you don't use the Apache FreeMarker expression in the showAnswer state to conditionally set the label to a blank character. Instead you always add the label as read from the resource bundle. Also, the beforePostbackSend() function in the settings.js file can be left empty because no special handling is required. Last, but not least, the index.html does not require any styling as you would need the buttons to be vertically aligned to allow the label to be placed next to the icon Downloads Sample Skill Import the skill Train the model Run the sample in the integrated conversation tester. Start by "what is an API call" and then "tell me about pricing" Configure your settings.js and (optional) index.html file of the web SDK implementation (sample) as explained in this article Run sample in web messenger Related Content Oracle Native Client SDK References & Downloads Oracle Web SDK product documentation (all you need to know) TechExchange: Use font awesome and a custom component to create an icon menu for the Oracle Web SDK TechExchange: Oracle Digital Assistant Web SDK customization and programming examples TechExchange: How to respond to user inactivity using the Oracle Web SDK messenger. An implementation strategy TechExchange: What Is Best for Frequently Asked Questions In Oracle Digital Assistant? Regular or Answer Intents?
article by Frank Nimphius, September 2020 In an earlier article on Oracle TechExchange, I explained how to implement a feedback feature for answers to frequently asked questions. In the article I used...
The Oracle Bots Node SDK provides a complete environment for creating custom components. In this article I explain the use of nodemon to automate the restart of the Oracle Bots Node SDK integrated Node server during debugging and local testing.
The Oracle Bots Node SDK provides a complete environment for creating custom components. In this article I explain the use of nodemon to automate the restart of the Oracle Bots Node SDK integrated...
Sometimes small nuggets turn out to be more valuable than the bigger ones. Hope this is one of those little tips that you will enjoy and use. So in this quick tip I explain how you can add character shortcuts to values lists in Oracle Digital Assistant.
Sometimes small nuggets turn out to be more valuable than the bigger ones. Hope this is one of those little tips that you will enjoy and use. So in this quick tip I explain how you can add character...
Oracle Digital Assistant lives in the cloud where it uses universal time (UTC) for all data operations. Dependent to where you live in this world, the timezone offset of your local time compared to UTC varies. For Germany, where I am based in, the timezone offset is 2 hours that Germany is ahead of UTC (or 7200000 ms). UTC is a common date and time reference used in many applications and software products. However, the user local time is often needed, for example if there are deadlines like opening hours to enforce and check. This article explains how you can obtain the local time in Oracle Digital Assistant using the Oracle Web SDK.
Oracle Digital Assistant lives in the cloud where it uses universal time (UTC) for all data operations. Dependent to where you live in this world, the timezone offset of your local time compared to...
Answer intent in Oracle Digital Assistant uses Trainer Tm, a machine learning model, to understand how users ask for a particular answer. Unlike other systems that map an answer to one or more questions in order to retrieve the answer, the machine learning based system learns from examples (utterances) allowing it to produce answer with high confidence. Also, by using Trainer Tm as the machine learning model in Oracle Digital Assistant, answer intents use the same optimized algorithm as regular intents, which leads to the question of what is better to use for FAQ, answer intents or regular intents. Before going into any details, let me share the answer ...
Answer intent in Oracle Digital Assistant uses Trainer Tm, a machine learning model, to understand how users ask for a particular answer. Unlike other systems that map an answer to one or more...
Value-list entities in Oracle Digital Assistant are limited in the number of values they can hold even if they are created as dynamic entities. Reality is that customers look for a way to extract entities from a large set of data values that easily may be in the hundreds of thousand records. In this article we explain how this requirement can be achieved with the Oracle database and Oracle Data Rest Services (ORDS).
Value-list entities in Oracle Digital Assistant are limited in the number of values they can hold even if they are created as dynamic entities. Reality is that customers look for a way to...
Answer intents in Oracle Digital Assistant skills integrate frequently asked questions to a user – bot conversation. Frequently asked questions is neither a new concept nor is it a chatbot specific concept, which means that many resources exist on the web for chatbot developers to use as a starting point. In this article we will show how you can use Node.js to scrape existing frequently asked questions from a website and save it in a format that you then can import as answer intents to an Oracle Digital Assistant skill
Answer intents in Oracle Digital Assistant skills integrate frequently asked questions to a user – bot conversation. Frequently asked questions is neither a new concept nor is it a chatbot specific...
This article explains how you can display a calendar widget for an input text prompt using the Oracle Web SDK. The solution uses a resource bundle entry to return HTML markup for the calendar. The Oracle Web SDK JavaScript API is used to send the selected date information back to the skill to update the underlying variable.
This article explains how you can display a calendar widget for an input text prompt using the Oracle Web SDK. The solution uses a resource bundle entry to return HTML markup for the calendar....
New conversational AI capabilities enable customers to interact via channel of their of choice across the enterprise By Suhas Uliyar, Vice President, AI and Digital Assistant, Oracle Call them chatbots, virtual assistants, or simply bots. Whatever the name, AI-powered conversational interfaces are becoming mainstream staples for consumers and enterprise alike. In fact, leading analyst firm Gartner believes that “by 2022, 70 percent of white collar workers will interact with conversational platforms on a daily basis.”1 When Oracle unveiled its chatbot platform at OpenWorld 2016, it helped set the pace for automation in the enterprise. Automation is a means for increasing scale and efficiency and accelerating efforts to digital – and considering that recent global events and challenges have forced a restructuring of how we work, AI and digital assistants are fundamental to that transformation. Oracle Digital Assistant has been solving the needs of the enterprise since 2016, and analyst firm Omdia recently noted, “By offering full integration with its software as a service (SaaS) applications, Oracle made it exponentially easier for end users to command and control the capabilities of these applications.”2 Today we are announcing a new set of updates to enhance the multilingual capabilities of Oracle Digital Assistant. These features are helping customers such as Loyola University of Chicago and communications startup Yokeru provide their users with the information they need through the channel of their choice. The new features include: New Deep Learning Models: Customers can leverage the power of Oracle Cloud Infrastructure’s native GPU and CPU architecture to improve the ability to distinguish nuances in customer queries, such as: Similar vs. Unrelated phrases: “Can I get some flatbread?” vs. “Can I get some flowers?” Additional context within long sentences: “I have a large party later this afternoon, and I have several guests coming over. I’d like to order some large pizzas.” Closely related sentences: “I want to cancel my order” vs. “Why was my order cancelled?” Distinguishing names that sound like locations: “When will Devon Arlington come to Stratford-upon-Avon?” or “Find Paris Hilton from the Paris office” Distinguishing number vs. currency: “Lunch with 3 for 60 bucks” Colloquial terms: “I have a budget for 20M bucks” (colloquial usage) Currency formats: “Please add a tip for 2,50 €” (different currency formats) Versatile Data Shapes: Customers can use both large as well as small datasets to train their skills without concern that an imbalance would impact the NLU performance. Custom Domain Vocabulary: Customers can expand the assistants understanding to their own custom domain vocabulary. Data Manufacturing Pipeline: Data is critical to achieving high accuracy in deep learning models. The data manufacturing pipeline provides a cohesive set of tools providing all stakeholders, from technical to line-of-business, the ability to generate, refine, curate, and evaluate conversational data. Combining human sourced intelligence with advanced machine learning delivers better, more nuanced results that only humans can offer. Native Multilingual: With Native Multilingual NLU, customers can add training data in different languages, eliminating the need for external translation services to understand users who do not speak English – and customers can provide multilingual outputs directly using resource bundles. Key Phrase word clouds and Multilingual retrainer: Digital Assistant now features intent and key phrase clouds to help business analysts quickly understand common themes of engagements. The business analyst can quickly drill down into the details of a specific phrase. Since its introduction, Oracle Digital Assistant has offered valuable features and capabilities, including: Digital assistants for FAQs: When considering B2C call centers and B2E help desk, it’s easy to see how a bot can field common incoming questions and requests, providing customers the satisfaction of an instant response 24/7, while offloading staffing resources to work on other tasks. Automated bot-to-agent transfer: Oracle Digital Assistant offers prebuilt integration to Oracle Service Cloud, offering a seamless experience for customers during handoff to a live agent, while providing agents historical information about the recent customer engagement. Enterprise assistant skills: From cloud applications such as Oracle Cloud ERP, Oracle Cloud HCM, and Oracle Cloud CX to on-premises applications like PeopleSoft and JD Edwards, Oracle teams have developed prebuilt assistant skills and templates to meet customer demand. Popular conversational channels: With support for well-known smart speakers to popular text-based channels including SMS, WhatsApp, WeChat, Facebook Messenger – plus collaboration tools like Slack and Teams – Oracle Digital Assistant is ready. Oracle Voice: Oracle invested in its own AI-powered voice capabilities bringing together an end-to-end, secure, and private solution (GDPR, PII), while providing a customizable framework to support terminology that is unique to different industries and businesses. One digital assistant: Oracle Digital Assistant can unify all assistant skills into one digital assistant, making it easy for users to interact with multiple systems from one conversation. Conversations are contextual and personalized to individual users and roles. Chatbots and conversational AI are quickly becoming integral tools for enterprise communication and information sharing, in addition to automating traditionally manual tasks. With the new updates to Oracle Digital Assistant, we are delivering the innovative features users are seeking – such as multilingual capabilities – to further weave digital assistants into the fabric of the enterprise. As a result, customers are able to offer automation across their entire organization, using a highly secure AI-powered voice assistant that stores their business’ sensitive data in Oracle’s second generation cloud infrastructure. Customer Quotes Loyola University of Chicago “With more than 17,000 students demanding more timely, more modern engagement, we established a five year plan to advance the Loyola Digital Experience (LDE) strategy. The Transformational Theme of LDE includes leveraging artificial intelligence (AI) and deployment of ‘LUie,’ an AI digital assistant running on the Oracle Digital Assistant with automation and integration from IntraSee,” said Susan M. Malisch, VP & CIO, Loyola University of Chicago. “LUie currently provides hundreds of answers to common questions. Early results have been great with initial accuracy rates of 86%. Feedback has been encouraging with 91% positive comments and we are now looking to broaden LUie to handle even more questions for more audiences. We’re excited about LUie’s future potential.” Yokeru “Throughout the COVID-19 pandemic, millions self-isolated to protect their health and the wellbeing of the community – but for many, the extended period of self-isolation resulted in negative impacts on mental and physical health. In response, Yokeru developed an AI-enabled call centre to contact and identify vulnerable members of the community using the phone line,” said Monty Alexander, CEO, Yokeru. “Through Oracle Digital Assistant and Oracle Autonomous Database, we were able to rapidly develop this system to enable the London Borough of Hammersmith and Fulham to monitor 9,000 Shielded households – resulting in the elimination of over 100 working days of traditional call centre time. The flexibility of Oracle's software on the underlying Oracle Cloud Infrastructure is incredible, and we’re looking forward to understanding how we can develop this technology to support our community in the future.” State of Oklahoma “In eight days Oracle built and delivered two applications,” said Jerry Moore, CIO, State of Oklahoma. “Not only was this an impressive feat, but showed Oracle’s commitment to helping us and our communities run more smoothly in this difficult time.” To learn more, check out What's New in the Oracle Digital Assistant documentation. 1Smarter with Gartner, “Chatbots Will Appeal to Modern Workers,” 31 July 2019, https://www.gartner.com/smarterwithgartner/chatbots-will-appeal-to-modern-workers/ 2Omdia, “Analyst Commentary: Oracle Digital Assistant democratizing Oracle apps,” Mark Beccue, Q3 2020, https://tractica.omdia.com/research/analyst-commentary-oracle-digital-assistant-democratizing-oracle-apps/
New conversational AI capabilities enable customers to interact via channel of their of choice across the enterprise By Suhas Uliyar, Vice President, AI and Digital Assistant, Oracle Call them...
According to the Merriam Webster, democratize means to “To make (something) available to all people” and that’s exactly what Oracle Digital Assistant is about – making applications more accessible all people, conversationally easy. I’ve borrowed this blog’s title from the Omdia analyst, Mark Beccue’s commentary “Oracle Digital Assistant democratizing Oracle apps” and as you will see, it’s apropos. Historically, the internet came about commercially in the late 90s, and made the world’s information available to anyone w/ a PC. In 2007, Apple introduced the iPhone and effectively put a computer in all our modern-day pockets. More recently, cheap compute power, and effectively infinite cloud storage brought about breakthroughs in artificial intelligence, and thus, the advent of sophisticated conversational AI. Now we don’t have to navigate to a website, or download, install and figure out a mobile app; more and more commonly, we simply ask, to get what we need. To quote from the analyst’s commentary: “By offering full integration with its software as a service (SaaS) applications, Oracle made it exponentially easier for end users to command and control the capabilities of these applications.” This doesn't mean that we will no longer need the full power of the web or mobile apps that SaaS apps offer. No, we’re far from that. But for the non-power or infrequent users, conversational interfaces are more approachable. And even power users can benefit from ready access and simplicity of a conversational interface. Do most people need or want to learn a procurement system to order a new computer? Relearn the HR system’s benefits procedures to update a small change to the family’s health plan? Or become a digital marketing expert to check on the success/status of a campaign? Probably not, or at least, we can admit that having to do so creates frictions for employee productivity. Conversational interfaces are here today. More and more, you’ll simply ask your personal digital assistant and carry on with your day. That’s the topic of the Omdia analyst commentary: “Oracle Digital Assistant democratizing Oracle apps,” and if you’re interested, I’d courage you to check it out here. To learn more about Oracle Digital Assistant, start here. FYI: For the latest on Oracle Digital Assistant, watch our webcast live/replay: “Innovations update for Oracle Digital Assistant, conversational-AI for 2020 and beyond” hosted by Suhas Uliyar, Vice President, Digital Assistant, Cognitive AI and Integration Cloud, Oracle and Serdar Canbek, Senior Manager, Operations reporting and Analytics, Office Depot, as they discuss the latest innovation, and real-world customer results that Oracle Digital Assistant offers.
According to the Merriam Webster, democratize means to “To make (something) available to all people” and that’s exactly what Oracle Digital Assistant is about – making applications more accessible...
#outlook a { padding: 0; } body { width: 100% !important; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; margin: 20px 0px 0px 0px; padding: 0; background-color: #FFFFFF; -webkit-font-smoothing: antialiased; } img { outline: none; text-decoration: none; border: none; -ms-interpolation-mode: bicubic; } a img { border: none; } a.anchorCls { color: #00758F !important; text-decoration: underline !important; font-family: Arial, Helvetica, sans-serif; } table td { border-collapse: collapse; } a:link, span.MsoHyperlink, span.MsoHyperlinkFollowed { color: inherit; text-decoration: none; } .line-sp a, .line-sp a:link, .line-sp a:visited { color: inherit; text-decoration: none; } td a, td a:link, td a:visited { color: inherit; text-decoration: none; } @media only screen and (max-width: 540px) { .vb-fullwidth { width: 100% !important; height: auto !important; } .devicewidthinner { text-align: center!important; padding-right: 0px !important; width: 100% !important; padding-left: 0px !important; } .devicewidth { text-align: center!important; padding-right: 0px !important; width: 100% !important; padding-left: 0px !important; } .fs22 { font-size: 22px !important; } .fs14 { font-size: 14px !important; } .pad-bsp20 { padding-bottom: 20px !important; } .pad-bsp30 { padding-bottom: 30px !important; } .pad-bsp15 { padding-bottom: 15px !important; } .pad-bsp10 { padding-bottom: 10px !important; } .pad-bsp0 { padding-bottom: 0px !important; } .no-bdr { border: none !important; } .pad-lr10 { padding-left: 10px !important; padding-right: 10px !important; } .pad-tb30 { padding-top: 30px !important; padding-bottom: 30px !important; } .pad-tb20 { padding-top: 20px !important; padding-bottom: 20px !important; } .pad-tsp20 { padding-top: 20px !important; } .pad-tsp10 { padding-top: 10px !important; } .pad-tsp15 { padding-top: 15px !important; } .pad-tsp0 { padding-top: 0px !important; } .mb10 { margin-bottom: 10px !important; } .mar-b20 { margin-bottom: 20px !important; } .mar-b30 { margin-bottom: 30px !important; } .mar-b15 { margin-bottom: 15px !important; } .mar-b10 { margin-bottom: 10px !important; } .mar-t20 { margin-top: 20px !important; } .mar-t30 { margin-top: 30px !important; } .mar-t15 { margin-top: 15px !important; } .mar-t10 { margin-top: 10px !important; } .box-cta-arrow { width: 20px !important; height: auto !important; } .box-cta-txt { font-size: 12px !important; padding-right: 8px !important; } .box-cta { padding-top: 9px !important; padding-bottom: 9px !important; padding-right: 16px !important; padding-left: 15px !important; width: auto !important; } .text-cta { font-size: 14px !important; padding-right: 8px !important; } .bdr-cta { padding-top: 9px !important; padding-bottom: 9px !important; padding-right: 14px !important; padding-left: 14px !important; width: auto !important; } .cb-btn-left { text-align: left !important; margin: auto !important; } .cb-hide { display: none !important; } .cb-r-sp { padding-right: 0px !important; } .cb-oracle-logo { width: 120px !important; height: auto !important; } .cb-logo-space { padding-left: 10px; padding-right: 10px; } .prd-logo { width: 145px !important; } .ico30 { width: 30px !important; height: 30px !important; } .icon55 { width: 55px !important; height: 55px !important; } .ct-img-tbl { float: left; width: 55px!important; } .ct-text-tbl { float: left; width: 117px!important; margin-left: 30px!important; } .chat-text-sp { vertical-align: middle !important; text-align: left !important; } .cb-middle { margin: 0 auto !important; } .cb-center { padding-right: 0px !important; text-align: center !important; } .cb-btn-ctr { text-align: center !important; margin: auto !important; } .cb-autoheight { height: auto !important; } .txt-top { display: none; } .img-top { display: block !important; max-height: none !important; } .cb-signature { width: 55% !important; height: auto !important; } .float-l { float: left !important; } .height0 { height: 0px !important; } .c-left { text-align: left !important; } .ftr-devicewidth { text-align: center!important; padding-right: 0px !important; width: 100% !important; padding-left: 0px !important; } .rs-ftr { margin: 0px !important; padding-left: 0px !important; width: 100% !important; padding-top: 0px !important; } .rs-ftr td { font-size: 12px !important; } .rs-ftr-logo { width: 260px; height: auto; } .rs-ftr-lr { padding-left: 15px !important; padding-right: 15px !important; } .line-sp { line-height: 20px; } .tech-logo { width: 120px !important; height: auto !important; } .ar-cb-btn-left { text-align: right !important; float: right; } .ar-c-left { text-align: right !important; } .ar-cb-center { padding-left: 0px !important; text-align: center !important; } .ar-cb-r-sp { padding-left: 0px !important; } .section-ctr { text-align: center !important; margin: auto !important; } } // akam-sw.js install script version 1.3.3 "serviceWorker"in navigator&&"find"in[]&&function(){var e=new Promise(function(e){"complete"===document.readyState||!1?e():(window.addEventListener("load",function(){e()}),setTimeout(function(){"complete"!==document.readyState&&e()},1e4))}),n=window.akamServiceWorkerInvoked,r="1.3.3";if(n)aka3pmLog("akam-setup already invoked");else{window.akamServiceWorkerInvoked=!0,window.aka3pmLog=function(){window.akamServiceWorkerDebug&&console.log.apply(console,arguments)};function o(e){(window.BOOMR_mq=window.BOOMR_mq||[]).push(["addVar",{"sm.sw.s":e,"sm.sw.v":r}])}var i="/akam-sw.js",a=new Map;navigator.serviceWorker.addEventListener("message",function(e){var n,r,o=e.data;if(o.isAka3pm)if(o.command){var i=(n=o.command,(r=a.get(n))&&r.length>0?r.shift():null);i&&i(e.data.response)}else if(o.commandToClient)switch(o.commandToClient){case"enableDebug":window.akamServiceWorkerDebug||(window.akamServiceWorkerDebug=!0,aka3pmLog("Setup script debug enabled via service worker message"),p());break;case"boomerangMQ":o.payload&&(window.BOOMR_mq=window.BOOMR_mq||[]).push(o.payload)}aka3pmLog("akam-sw message: "+JSON.stringify(e.data))});var t=function(e){return new Promise(function(n){var r,o;r=e.command,o=n,a.has(r)||a.set(r,[]),a.get(r).push(o),navigator.serviceWorker.controller&&(e.isAka3pm=!0,navigator.serviceWorker.controller.postMessage(e))})},c=function(e){return t({command:"navTiming",navTiming:e})},s=null,m={},d=function(){var e=i;return s&&(e+="?othersw="+encodeURIComponent(s)),function(e,n){return new Promise(function(r,i){aka3pmLog("Registering service worker with URL: "+e),navigator.serviceWorker.register(e,n).then(function(e){aka3pmLog("ServiceWorker registration successful with scope: ",e.scope),r(e),o(1)}).catch(function(e){aka3pmLog("ServiceWorker registration failed: ",e),o(0),i(e)})})}(e,m)},g=ServiceWorkerContainer.prototype.register;if(ServiceWorkerContainer.prototype.register=function(n,r){return n.includes(i)?g.call(this,n,r):(aka3pmLog("Overriding registration of service worker for: "+n),s=new URL(n,window.location.href),m=r,navigator.serviceWorker.controller?new Promise(function(n,r){var o=navigator.serviceWorker.controller.scriptURL;if(o.includes(i)){var a=encodeURIComponent(s);o.includes(a)?(aka3pmLog("Cancelling registration as we already integrate other SW: "+s),navigator.serviceWorker.getRegistration().then(function(e){n(e)})):e.then(function(){aka3pmLog("Unregistering existing 3pm service worker"),navigator.serviceWorker.getRegistration().then(function(e){e.unregister().then(function(){return d()}).then(function(e){n(e)}).catch(function(e){r(e)})})})}else aka3pmLog("Cancelling registration as we already have akam-sw.js installed"),navigator.serviceWorker.getRegistration().then(function(e){n(e)})}):g.call(this,n,r))},navigator.serviceWorker.controller){var u=navigator.serviceWorker.controller.scriptURL;u.includes("/akam-sw.js")||u.includes("/akam-sw-preprod.js")||u.includes("/threepm-sw.js")||(aka3pmLog("Detected existing service worker. Removing and re-adding inside akam-sw.js"),s=new URL(u,window.location.href),e.then(function(){navigator.serviceWorker.getRegistration().then(function(e){m={scope:e.scope},e.unregister(),d()})}))}else e.then(function(){window.akamServiceWorkerPreprod&&(i="/akam-sw-preprod.js"),d()});if(window.performance){var w=window.performance.timing,l=w.responseEnd-w.responseStart;c(l)}e.then(function(){t({command:"pageLoad"})});var k=!1;function p(){window.akamServiceWorkerDebug&&!k&&(k=!0,aka3pmLog("Initializing debug functions at window scope"),window.aka3pmInjectSwPolicy=function(e){return t({command:"updatePolicy",policy:e})},window.aka3pmDisableInjectedPolicy=function(){return t({command:"disableInjectedPolicy"})},window.aka3pmDeleteInjectedPolicy=function(){return t({command:"deleteInjectedPolicy"})},window.aka3pmGetStateAsync=function(){return t({command:"getState"})},window.aka3pmDumpState=function(){aka3pmGetStateAsync().then(function(e){aka3pmLog(JSON.stringify(e,null,"\t"))})},window.aka3pmInjectTiming=function(e){return c(e)},window.aka3pmUpdatePolicyFromNetwork=function(){return t({command:"pullPolicyFromNetwork"})})}p()}}();(window.BOOMR_mq=window.BOOMR_mq||[]).push(["addVar",{"rua.upush":"false","rua.cpush":"false","rua.upre":"false","rua.cpre":"false","rua.uprl":"false","rua.cprl":"false","rua.cprf":"false","rua.trans":"SJ-c90634b4-7282-4691-958a-4dee947c3be5","rua.cook":"true","rua.ims":"false","rua.ufprl":"false","rua.cfprl":"true"}]);!function(e){var n="https://s.go-mpulse.net/boomerang/";if("False"=="True")e.BOOMR_config=e.BOOMR_config||{},e.BOOMR_config.PageParams=e.BOOMR_config.PageParams||{},e.BOOMR_config.PageParams.pci=!0,n="https://s2.go-mpulse.net/boomerang/";if(window.BOOMR_API_key="DXNLE-YBWWY-AR74T-WMD99-77VRA",function(){function e(){if(!o){var e=document.createElement("script");e.id="boomr-scr-as",e.src=window.BOOMR.url,e.async=!0,i.parentNode.appendChild(e),o=!0}}function t(e){o=!0;var n,t,a,r,d=document,O=window;if(window.BOOMR.snippetMethod=e?"if":"i",t=function(e,n){var t=d.createElement("script");t.id=n||"boomr-if-as",t.src=window.BOOMR.url,BOOMR_lstart=(new Date).getTime(),e=e||d.body,e.appendChild(t)},!window.addEventListener&&window.attachEvent&&navigator.userAgent.match(/MSIE [67]\./))return window.BOOMR.snippetMethod="s",void t(i.parentNode,"boomr-async");a=document.createElement("IFRAME"),a.src="about:blank",a.title="",a.role="presentation",a.loading="eager",r=(a.frameElement||a).style,r.width=0,r.height=0,r.border=0,r.display="none",i.parentNode.appendChild(a);try{O=a.contentWindow,d=O.document.open()}catch(c){n=document.domain,a.src="javascript:var d=document.open();d.domain='"+n+"';void(0);",O=a.contentWindow,d=O.document.open()}if(n)d._boomrl=function(){this.domain=n,t()},d.write("");else if(O._boomrl=function(){t()},O.addEventListener)O.addEventListener("load",O._boomrl,!1);else if(O.attachEvent)O.attachEvent("onload",O._boomrl);d.close()}function a(e){window.BOOMR_onload=e&&e.timeStamp||(new Date).getTime()}if(!window.BOOMR||!window.BOOMR.version&&!window.BOOMR.snippetExecuted){window.BOOMR=window.BOOMR||{},window.BOOMR.snippetStart=(new Date).getTime(),window.BOOMR.snippetExecuted=!0,window.BOOMR.snippetVersion=12,window.BOOMR.url=n+"DXNLE-YBWWY-AR74T-WMD99-77VRA";var i=document.currentScript||document.getElementsByTagName("script")[0],o=!1,r=document.createElement("link");if(r.relList&&"function"==typeof r.relList.supports&&r.relList.supports("preload")&&"as"in r)window.BOOMR.snippetMethod="p",r.href=window.BOOMR.url,r.rel="preload",r.as="script",r.addEventListener("load",e),r.addEventListener("error",function(){t(!0)}),setTimeout(function(){if(!o)t(!0)},3e3),BOOMR_lstart=(new Date).getTime(),i.parentNode.appendChild(r);else t(!1);if(window.addEventListener)window.addEventListener("load",a,!1);else if(window.attachEvent)window.attachEvent("onload",a)}}(),"".length>0)if(e&&"performance"in e&&e.performance&&"function"==typeof e.performance.setResourceTimingBufferSize)e.performance.setResourceTimingBufferSize();!function(){if(BOOMR=e.BOOMR||{},BOOMR.plugins=BOOMR.plugins||{},!BOOMR.plugins.AK){var n="true"=="true"?1:0,t="cookiepresent",a="vu7tgtqxftmvyxyxa6ya-f-b1f57e8d1-clientnsv4-s.akamaihd.net",i={"ak.v":"27","ak.cp":"82485","ak.ai":parseInt("604074",10),"ak.ol":"0","ak.cr":7,"ak.ipv":4,"ak.proto":"h2","ak.rid":"ba7b0f0","ak.r":36216,"ak.a2":n,"ak.m":"dscx","ak.n":"essl","ak.bpcip":"173.63.51.0","ak.cport":52761,"ak.gh":"23.59.250.132","ak.quicv":"","ak.tlsv":"tls1.3","ak.0rtt":"","ak.csrc":"-","ak.acc":"","ak.t":"1595344816","ak.ak":"hOBiQwZUYzCg5VSAfCLimQ==zd0IMQmj6JT8HRjuHs+TFFiXBwDhGsfa3Sk20ZcobgHB9G3RWm5GqgUUA89M6rSoS/4Mt9HIhaZoFYAHcpA5Mr5hUVlCfj7u0fq9S00WKg1W2j29EujJccYX4NpbYpNUl7F50lIC+b32em6rZSqbS6KVyTHOPUJ53sZBwDg1+eLCG/zPB7CJkNvgBxQIeHswwBW11FeSox3tuA3VcR6UBF+F7MroZgWvB3JPrsqvmc2QZSe3Ly2k866IpCXu150CTWlPHXOhz/72j5+9LxNdj0L61u449Bu/ym9uk4KHBs2+hZTgr2OJLigpMeGHKu50ksXgBA9OaDZ4v87l08l+zniJoymWC1Y/HOYs4CR11O7ux9GrUnM3qCVpFZZa3UgUCgbFpT9v2sKiPTjf3pzd5dS5W4vstnEvtPEMF+CTu6k=","ak.pv":"102"};if(""!==t)i["ak.ruds"]=t;var o={i:!1,av:function(n){var t="http.initiator";if(n&&(!n[t]||"spa_hard"===n[t]))i["ak.feo"]=void 0!==e.aFeoApplied?1:0,BOOMR.addVar(i)},rv:function(){var e=["ak.bpcip","ak.cport","ak.cr","ak.csrc","ak.gh","ak.ipv","ak.m","ak.n","ak.ol","ak.proto","ak.quicv","ak.tlsv","ak.0rtt","ak.r","ak.acc","ak.t"];BOOMR.removeVar(e)}};BOOMR.plugins.AK={akVars:i,akDNSPreFetchDomain:a,init:function(){if(!o.i){var e=BOOMR.subscribe;e("before_beacon",o.av,null,null),e("onbeacon",o.rv,null,null),o.i=!0}return this},is_complete:function(){return!0}}}}()}(window); Innovations update for Oracle Digital Assistant The conversational-AI for 2020 and beyond July 28, 2020 10 a.m. PT/1 p.m. ET Register Now Office Depot elevates customer service with Oracle Digital Assistant In these unprecedented times, organizations are looking for ways to maintain communication and engagement with their customers, employees and citizens, while maintaining business continuity. Intelligent digital assistants can support scale and broaden reach for IT helpdesk and customer service while providing easy to use conversational access to key self-serve functionality. Join this webcast to learn how the latest innovations in Oracle Digital Assistant enable further democratization of information, securely and intelligently. Hear directly from Oracle executives and see first-hand Office Depot’s digital assistant in action as it elevates customer service and drives convenience and personalized engagement for their e-commerce customers. Register Now Featured Speakers Suhas Uliyar Vice President, Digital Assistant, Cognitive AI and Integration Cloud, Oracle Serdar Canbek Senior Manager, Operations reporting and Analytics, Office Depot Terms of Use and Privacy | Subscriptions | Unsubscribe | Contact Us | Copyright © 2020, Oracle and/or its affiliates. All rights reserved. Oracle Corporation - Worldwide Headquarters, 500 Oracle Parkway, OPL - E-mail Services, Redwood Shores, CA 94065, United States
Innovations update for Oracle Digital AssistantThe conversational-AI for 2020 and beyond July 28, 202010 a.m. PT/1 p.m. ET Register Now Office Depot elevates customer service with Oracle Digital...
The Oracle Web SDK provides extensive configuration and customization options using properties, event handlers, and delegates. This article introduces the features built into the Oracle Web SDK and provides examples of customizations to demonstrate the extensibility features of Oracle Web Messenger and Channel. This article also includes instructions for customers migrating from the previous, now outdated version of the SDK to the new Oracle Web SDK 20.6.1.
The Oracle Web SDK provides extensive configuration and customization options using properties, event handlers, and delegates. This article introduces the features built into the Oracle Web SDK and...
Even with the best intentions in the world, synthetic utterances can introduce bias, often because we all have our own myopic view of the world. It is also fair to ask the question “what makes a good utterances or training corpus?” So how might you kick-start training your NLP model? Read on.
Even with the best intentions in the world, synthetic utterances can introduce bias, often because we all have our own myopic view of the world. It is also fair to ask the question “what makes a good...
GIT is a free open source version control system available at https://git-scm.com/about/free-and-open-source. This article does not explain GIT but shows how you can use GIT to version control Oracle Digital Assistant custom component service projects. In this article I propose a GIT repository structure that has directories built for each skill requiring custom components. This proposal is for custom components that should be deployed to the local component container in a skill. You would probably use a different code organization if components will be deployed to a remote repository.
GIT is a free open source version control system available at https://git-scm.com/about/free-and-open-source. This article does not explain GIT but shows how you can use GIT to version control Oracle...
Especially when Oracle Digital Assistant is made available on websites or web applications, developers look for a web-type look and feel and behavior of bot responses to seamlessly integrate the bot into the surrounding web environment. Because Oracle Digital Assistant can be exposed through multiple messenger channels as well as by voice, it is important that the goal of better web integration does not tie a bot to a single channel. In this article I explain how you use font awesome and a custom component to render menus as iconic buttons on the web and as action lists on other channels.
Especially when Oracle Digital Assistant is made available on websites or web applications, developers look for a web-type look and feel and behavior of bot responses to seamlessly integrate the bot...
Menus look much better when icons are displayed for the selected items. Often, a well-chosen icon even improves usability because people recognize patterns so much better than reading labels. In this article I explain how to create icon references for list items in action and value-list menus created with the System.CommonResponse component
Menus look much better when icons are displayed for the selected items. Often, a well-chosen icon even improves usability because people recognize patterns so much better than reading labels. In this...
When the COVID-19 pandemic hit, Oklahoma, like every other state, had to figure out a way for its mostly office-based government employees to work from home. Oracle was there to help. Within eight days of receiving a call for help, the local team and members of Oracle’s Austin-based Cloud Solutions Hub were able to design and deploy a chatbot to help Oklahoma’s newly home-based workers get productive as quickly as possible. Office workers unfamiliar with configuring IT gear without hands-on support invariably have questions, and that can lead to bottlenecks. Before COVID-19, the Oklahoma Office of Management and Enterprise IT desk fielded about 500 support calls a month. Overnight, that number spiked to more than 1,500 calls per day, says Jerry Moore, CIO, State of Oklahoma. To eliminate the resulting backlog of IT support calls, the Oracle Cloud Hub engineers built a chatbot that lets users ask basic questions, such as how to reset a password, how to set up a VPN, or how to download workplace applications. The chatbot was instrumental in reducing the volume of calls to the IT helpdesk and getting approximately 30,000 state employees up and running from home so they could keep providing vital constituent services. During that same period, Oracle also built a mobile app for the state’s Department of Human Services that tracks time and purchases related to COVID-19 work. “If an employee buys 12 cases of hand sanitizer, they can take a picture of the purchase and upload it to the app that tracks all activities specific to the pandemic,” Moore says. “Overall, in eight days Oracle built and delivered two applications.” And those applications ensure that Oklahoma government workers can keep providing important services despite having to shelter in place. Find out more about Oracle’s state and local government solutions. Learn more about Oklahoma and other public sector agencies who are leading in crisis.
When the COVID-19 pandemic hit, Oklahoma, like every other state, had to figure out a way for its mostly office-based government employees to work from home. Oracle was there to help. Within eight days...
It is a facility we are all familiar with: IT help and operations (ITOps) – the ability to self-serve a password reset, log a request or research a problem you might be having with you PC. However, the next generation of ITOps is aiming to provide those same self-service capabilities through natural, human conversation. Consider the benefits of being able to converse as you would with an IT specialist but with the scale of an automated system. This article discussed the key design consideration and demonstrates through a reference implementation how this can be quickly developed using Oracle Digital Assistant
It is a facility we are all familiar with: IT help and operations (ITOps) – the ability to self-serve a password reset, log a request or research a problem you might be having with you PC. However,...
article by Frank Nimphius, June 2020 In addition to natural language processing (NLP), menus are a popular means of navigation in a chatbot conversation. Action menus are typically used either as fallback when the NLP engine does not resolve a user message with predefined confidence (threshold), or when a resolved user intent has subcategories into which a conversation can be branched. To build action menus you have a choice: You can build action menus manually using the System.CommonResponse component and BotML. You can build action menus based on value-list entities that you render using the System.CommonResponse component In this article I will try to convince you to use the latter approach to use entity based menus (or model driven, as I like to refer to this). Behavior of manually built action menus The action menu below has been built manually in BotML. Unlike list-of-values, which set a value to a variable when a user selects an item from the list, action menus trigger a navigation to a specific dialog flow state. With this behavior, action menus are like menus in web and mobile applications. The sample for this article is very simple: when a user selects an item from the action list, navigation goes to a dialog flow state that confirms the user selection. If the user enters a text message that cannot be resolved to an item label or a keyword defined for the select items, then a textReceived action is triggered. Text received actions are usually directed to the NLP engine (System.Intent component) to resolve the user intent. The image below shows a choice of three action items, one of which is "Order Pizza". Humans are humans, and because they are, they behave like humans. So if a user instead pf pressing a button (select item) or typing "Order Pizza", types "I want pizza", then the menu does not recognize the user intent to select the Order Pizza item. If the text received action was linked to the System.Intent component state, then the NLP engine probably would get it right and get the user what she wants. But what if the user types in nonsense or a cat walked over the user's keyboard? In this case, shown in the image below, the intent engine would be challenged fro e.g. "grrmpf". Assuming the intent engine does not resolve "grrmpf", the user is actually taken off the track by this. If the bot is run with voice in the Oracle Digital Assistant Web SDK, how would you press a select button? Probably you would try reading the button label, or more likely fallback to human conversation saying something like "I want to order pizza". This however would have the same effect as "grrmpf" in that your message would be directed to the intent engine. Behavior of entity driven action menus Action menus you create based on an entity (where a value list entity would be used a metadata for the menu) inherit powerful features if entities Ability to display multiple prompts at random to appear less robotic Validate user input against values and synonyms of the entity Ability to extract values and synonyms (keywords) from free text Ability to detect user input failures and display a help message in the prompt Disambiguate user messages: E.g "I like to cancel order pizza" The image below shows how "gimme pizza" got resolved to that the user wants to order pizza. This did not include an intent but purely got resolved through the use of an entity with the menu. Getting back to the "cat walks keyboard" use case: The image below shows the outcome of "grmpf". The menu shows a message that "grmpf" is not an allowed selection. The maxPrompts setting of the menu defines how many failed user input attempts are allowed before the menu follows a cancel action. So lets try "order cancel pizza", which meets two select items in the action menu. As shown in the image below, the entity detects the ambiguity and resolves it with a dialog it displays for the user to select from. Even the case of a user message doesn't matter using entities How to build entity-driven action menus As mentioned earlier, entities you build for menus are of type "value list". I suggest to mark entities as menu entities in their names to make your code readable. For each option in the action menu, you create a value entry in the list: order, cancel, openingHrs. The synonyms catch options how users could order or cancel pizza or how they would ask for opening hours. Note that synonyms don't need to anticipate the full user sentence. "gimme" that I defined for "order" would work with "gimme a pizza" as well as "could you gimme a pizza". The error message defined on the entity is displayed whenever a user fails to provide a valid input. In the image below, the message is read from a resource bundle (which I recommend you always use for message strings) that gets the user entered string passed as an input parameter: system.message.messagePayload.text. Notice the Prompt for Disambiguation setting in the image above. If validation of the user message results into multiple action values, then a dialog with the defined prompt will be shown. Again, the prompt uses a message bundle. Finally, you can specify as many different prompts as you like. Each prompt will be displayed in random order dependent how many failed attempts a user has in providing a valid input. To generate the action menu, a System.CommonResponse component is used. I explain the component properties in a table below the next image. Property Comment variable The "variable" property of the System.CommonResponse component references a variable of the entity type (PizzaActionMenu) in the sample. This ensures that user messages that don't match a label or keyword defined for a select item are validated. autoNumberPostbackAction Setting this property to true adds a numeric value in front of each item. Typing the value as a message will then select the action. In the sample, I used a different implementation of the same so I set this property to false. text The "text" property of the response item displays the prompt. The expression associated with the property references system.entityToResolve.value.prompt to read the prompt from the entity (which then gets it from the resource bundle) actions : label The label of an action is set to a lowercase character (a, b or c) as a shortcut plus a string read from a resource bundle. The resource bundle key is <action>_label (e.g. order_label) so it can be dynamically resolved actions : keyword Keyword defines a comma separated list of short cuts that select (or virtually press) a select item. The sample creates four keywords - order, 1, a, A - for the Order Pizza select item and - cancel, 2, b, B - for the Cancel Pizza item. actions : payload : action The action of each select item is set to the value of the entity: order, cancel and openingHrs actions : iteratorVariable References system.entityToResolve.value.enumValues to obtain a sequence of entity values. For as long a there are values in the sequence, a select item is being created. transitions : actions An action mapping to a dialog flow state is created for each value in the entity: order, cancel, openingHrs. This way when the user selects a select item, navigation will be to this state. next Very important!. When a user types text that does not match a keyword or label of a select item, but that can be validated by the entity value or synonyms, then the next transition is followed. To make sure the navigation follows to the same dialog flow states as when the user selects a button, an Apache FreeMarker "switch" expression is used. Downloads Download the sample skill and import it to your Oracle Digital Assistant instance. Then open it and run the conversation tester. Type "hi" to get the menu displayed. Download the entity driven action menu skill Related articles TechExchange Quick-Tip: How to Intelligently Cancel Composite Bag Entity Driven User Dialog Flows TechExchange: How-to Use the System.ResolveEntities Component in Oracle Digital Assistant TechExchange: Building Model Driven Questionnaire Conversations Using Composite Bag Entities in Oracle Digital Assistant TechExchange Quick-Tip: Understanding Oracle Digital Assistant Skill Entity Properties - Or, What Does "Fuzzy Match" Do?
article by Frank Nimphius, June 2020 In addition to natural language processing (NLP), menus are a popular means of navigation in a chatbot conversation. Action menus are typically used either as...
Ovum, a leading analyst firm and part of the global technology research organization, Omdia, has recognized Oracle Digital Assistant as a leader in the market in its latest research report, "Ovum Decision Matrix: Selecting an Intelligent Virtual Assistant Solution, 2020–21." The report analyzes the evolution of virtual intelligent assistants, the increasing scope of use cases, and the market landscape, and evaluates 10 niche and large technology vendors to determine Oracle Digital Assistant as one of the leaders in this market. Oracle Digital Assistant is a comprehensive, AI-powered conversational interface for business applications. Oracle Digital Assistant interprets the user’s intent so it can automate processes and deliver contextual responses to their voice or text commands to enrich the user experience, eliminate helpdesk and support overhead, and enable scale for communications and engagement. The Ovum report specifically highlights Oracle Digital Assistant as an easy-to-build solution, thanks to its no code, design-by-example, Conversational Design Interface that is intended to be used by non-developers to build, train, test, deploy, and monitor AI-powered digital assistant on channels of choice. Ovum also noted Oracle Digital Assistant’s advanced linguistic and deep learning-based natural language processing (NLP) models as a key strength that enables the Digital Assistant to better understand domain specific vocabulary, and respond with contextual information and best next step actions accordingly. Oracle Digital Assistant also received kudos in the report for providing an “enterprise-ready” solution. Organizations leveraging Oracle Digital Assistant know that their data is their own, stored securely in Oracle Cloud or via Cloud@Customer for organizations wanting to keep their data within their own boundaries. Furthermore, because it is a comprehensive platform, Oracle Digital Assistant can integrate with existing processes, routing rules, and contact center agents to support enterprises’ unique business needs. In fact, Ovum noted that “A differentiator for ODA [Oracle Digital Assistant] is that a business process engine sits beneath it and is tightly integrated to perform tasks emerging from the conversation. For example, when an end user informs the ODA of a change of address, several relevant processes kick in. Oracle's ODA and business process management R&D teams are also tightly integrated because of the overlap in functions.” Oracle also offers out-of-the-box chatbot skills for Oracle Cloud HCM, Cloud ERP, and Cloud CX, as well as integration with Oracle CX Service to speed up deployment and provide seamless engagement for Oracle Cloud Applications customers – a point that was noted as a strength in the Ovum report. With no apps to download and no training needed to use Oracle Digital Assistant, the use of intelligent assistants has picked up quite significantly in the industry. Over the past years more and more organizations – both public sector and commercial – have come to rely on Oracle Digital Assistant for their needs. Common use cases include enabling easy and 24x7 access to employee HR self-service functions and employee expense and finance functions, offering customer or employee FAQs and information lookup. This enables Oracle Digital Assistant to be the first line of customer/employee helpdesk and drive seamless bot-agent handoff only where needed, and more. These use cases present massive sales and ROI opportunities, freeing up human resources to take on the more complex challenges while at the same time improving the user experience. Oracle’s leadership position in the Ovum report is a testament to the significant R&D investments in AI and NLP-powered Cloud service over these recent years. For more information on how your organization can leverage Oracle Digital Assistant, please visit our website. And to download the full report, click here.
Ovum, a leading analyst firm and part of the global technology research organization, Omdia, has recognized Oracle Digital Assistant as a leader in the market in its latest research report, "Ovum...
Like built-in components, custom components may have an interaction with a users that spans multiple turns. To have a conversation with a user, components needs to maintain state to tell the UI to render and the behavior to execute. In this article I explain two options you can use to manage and maintain state in custom components.
Like built-in components, custom components may have an interaction with a users that spans multiple turns. To have a conversation with a user, components needs to maintain state to tell the UI to...
This article explains how you can add a search engine API into your Oracle Digital Assistant Skill. This functionality is useful when you want to add public knowledge, FAQs, documentation and general information from a specific site or domain to your skill. Search engine API integration can serve as a fallback when your skill otherwise will not be able to provide an answer.
This article explains how you can add a search engine API into your Oracle Digital Assistant Skill. This functionality is useful when you want to add public knowledge, FAQs, documentation and...
Oracle Digital Assistant skills provide resource bundles as a feature for skill developers to build multi language bot responses, or just for them to keep label and prompts in a single place for ease of administration and management. Custom components that are uploaded to a skill don't have access to resource bundle, which also has to do with how custom components communicate with a skill. The options skill developers have at current to provide translatable label strings and prompts in a custom component are - to create a custom message bundle functionality for custom components. This way custom components get deployed with their message translations and all a skill developer needs to do is to pass the detected or desired language code for the component to pick the correct language strings - pass resources bundle strings to be used as labels and prompts from a skill to a custom component, for which developers create input parameters. The first option, to create a custom message bundle functionality in a custom component, is a less popular choice among skill developers. Instead the intention is to find a way to pass resource bundle strings for a specific language into the custom component. In this article I explain a strategy to pass resource bundle strings into a custom component without creating a strong dependency between the skill and the custom component. The implementation introduced in this article also allows developers to pass translations of a language string that matches a detected user language.
Oracle Digital Assistant skills provide resource bundles as a feature for skill developers to build multi language bot responses, or just for them to keep label and prompts in a single place for ease...
The current version of Oracle Web SDK (oda-native-client-sdk-js-20.5.1) introduced an important forward-looking change in the structure of the message object passed to the delegate object that developers can optionally implement to intercept and modify user- and bot messages. The applied changes may have a negative impact to Oracle TechExchange articles and samples that use the delegate object functionality with the previous message object structure. The change required to the samples and article is minor and can be corrected by changing change all references to the delegate function argument to .messagePayload.
The current version of Oracle Web SDK (oda-native-client-sdk-js-20.5.1) introduced an important forward-looking change in the structure of the message object passed to the delegate object that...
Sometimes a question is what it is; a question. In this case, it makes little sense for a bot to start a long conversation with the user. Instead, the bot should give a direct answer to the question. Answer intents are a recent addition to Oracle Digital Assistant and use the same machine learning model to understand the user question as regular intents do. With answer intents, Oracle Digital Assistant provides a very reliable and successful implementation of the question-answer user case. A common feature of web-based FAQ pages is that at the end of an answer the user has the opportunity to evaluate the quality of the answer and to provide feedback. Just recently, teams working with answer intents started requesting documentation for a similar implementation pattern for questions answered by Oracle Digital Assistant. In this article I provide a channel independent sample implementation that behaves like answer intents in Oracle Digital Assistant but that allows extension to be added for users to provide feedback and for the answer response itself to optionally add channel specific properties.
Sometimes a question is what it is; a question. In this case, it makes little sense for a bot to start a long conversation with the user. Instead, the bot should give a direct answer to the...
Frequently asked questions (FAQs) are a common feature of most businesses and institutions. However in recent times the demand to get up-to-date official information from government departments (such as Health, Welfare or Education) or your place of work (homeworking policy, remote IT access etc.) have become a critical factor for many. Digital Assistants allow these official FAQs to be quickly surfaced through all manner of channels (text, voice, social), and done so in way where users don’t have to first of all find the FAQ document then use the correct search terms. A conversational Digital Assistant can be trained to understand the natural language request from the user and deliver the right answer regardless of how the user might phrase their question. This article explains 6 short steps, including a starter template, to deliver a production quality FAQ digital assistant which also encompasses conversation best-practices, resilience and guidelines for an engaging user experience; all of which can built in less than 60 minutes.
Frequently asked questions (FAQs) are a common feature of most businesses and institutions. However in recent times the demand to get up-to-date official information from government departments (such...
Displaying a tip of the day was a very popular feature in client-server applications and on the web. The goal of such tips was to provide easily digestible information that could be fun or help you better understand a program or technology. For some time now I am observing that chatbot developers implement web application functions such as font formatting, dropdown menus, etc. in their web messenger (Oracle Web SDK). So I thought that a tip-of-the-day feature would be cool and engaging for bot users.
Displaying a tip of the day was a very popular feature in client-server applications and on the web. The goal of such tips was to provide easily digestible information that could be fun or help you...
This article explains how composite bag entity items that are based on complex entities like DATE, NUMBER or CURRENCY can have their values set using a custom component. The use case for this is e.g. to set a DATE item to a current date or set an item to a derived value. A sample skill and sample code can be downloaded.
This article explains how composite bag entity items that are based on complex entities like DATE, NUMBER or CURRENCY can have their values set using a custom component. The use case for this is...
This article explains how users of an Oracle Digital Assistant chatbot conversation can upload images and documents through the Oracle Web SDK.
This article explains how users of an Oracle Digital Assistant chatbot conversation can upload images and documents through the Oracle Web SDK.
Using a bot on a website or web application often requires to apply web design patterns to the messenger to better integrate and to meet user expectations. Good to know in this context is that customizing the web messenger user interface has become easy in the new Oracle Web SDK. This article explains how you can create a drop down menu for bot users to start a specific conversation. The idea of a drop down menu is to provide a fixed option as a short cut for users to get to the information or conversation they need.
Using a bot on a website or web application often requires to apply web design patterns to the messenger to better integrate and to meet user expectations. Good to know in this context is...
External application that trigger application initiated conversations (AIC) in Oracle Digital Assistant send a specific payload for messengers like Twilio SMS, Slack or MS Teams. This article explains how you can access the payload properties, which, for example, also includes the user ID, from BotML for the purpose of debugging or similar use cases.
External application that trigger application initiated conversations (AIC) in Oracle Digital Assistant send a specific payload for messengers like Twilio SMS, Slack or MS Teams. This article explains...
A common requirement for chatbot is to have the bot reaching out to the user for a conversation. Use cases include reminders for an appointment or the renewal of a subscription, a data event, like a stock exceeding a specific value and many more. Using application-initiated conversations (AIC) in Oracle Digital Assistant, external applications can "trigger" the start of a conversation between a chatbot and a user. This article explains how to setup application-initiated conversations for the MS Teams channel.
A common requirement for chatbot is to have the bot reaching out to the user for a conversation. Use cases include reminders for an appointment or the renewal of a subscription, a data event, like...
By Suhas Uliyar, Vice President, AI and Digital Assistant As the COVID-19 situation continues to unfold, if you are in the human resources or IT/operations division of your organization, you are likely being pushed to the forefront during this extraordinary time. Your division may be actively leading efforts to communicate with your workforce or users as they adjust to a new environment such as remote work, while also complying with ever-shifting policies and guidelines. Given the significant upheaval in the way organizations have to operate these days, there are some common questions that many IT and HR leads are trying to address, including: How can our organization scale and make it as easy as possible for our ecosystem as everyone learns to cope with the new normal? How can we best provide access to policies, guidelines, FAQs, transactions, and data when information is so dynamic? How can we deliver information in real-time without employing more resources? While the more complex communication challenges will still need to be tackled by humans, a digital assistant may offer relief in some areas. For example, organizations may need to automate responses to most basic queries so human minds can be freed up to deal those more complex challenges. Enterprises and organizations may also need to enable more processes and transactions online and offer them in an easy-to-use medium – one that is easily accessible and intuitive. Meanwhile, organizations are having to reconfigure how they engage with their customers, contractors, and employees – and in the case of public sector organizations and educational institutions, citizens and students, respectively. These various touch points include providing real-time, reliable information on health and safety guidelines; offering assistance in setting up a remote working environment; communicating up-to-date changes in policies; and enabling online self-service functions or access to relevant insights, information, and processes from within the organization’s systems. Before COVID-19, AI-based chatbots or digital assistants were already changing the way we interact with our ecosystem – customers, employees, partners, citizens, and students. Enterprises had started to use digital assistants to provide 24x7 assistance to their stakeholders with self-service assistants for customer support; employee self-service across HR, ERP, CRM, and business intelligence systems; and vendors and partners for ERP self-service for quotes and invoice management. A digital assistant can provide a consistent channel of communication and engagement in natural language text or voice, so users don’t have to learn an enterprise’s systems to interact or access information they need. Other benefits delivered by digital assistants include: Providing a 24x7 virtual assistant that is always there for stakeholders Offering users access to information on channels of choice like Slack, Microsoft Teams, Messenger, and more Streamlining employee queries, since there’s no waiting in line for the next available representative or help desk agent Freeing up employees to focus on the more complex challenges and queries that only human minds can solve Providing a natural way to access information and transactions across different backend systems, which promotes adoption of and adherence to processes and policies Proactively notifying users of changes in data so they can remain informed Eliminating data searches, since a digital assistant powered by AI can be adapted to dynamic data changes so users don’t have to search for data Reducing costs associated with support operations via self-service and automation As a result, digital assistants can help support the current need of a remote workforce and concerned citizens, students, and customers while creating long-term efficiencies for your organization. For a more in-depth look into how your organization can derive quick value from a digital assistant in these uncertain times and the longer term, please contact us here.
By Suhas Uliyar, Vice President, AI and Digital Assistant As the COVID-19 situation continues to unfold, if you are in the human resources or IT/operations division of your organization, you are...
Twilio’s voice API extends applications with flexible call center features, soft phones, call tracking, interactive voice response (IVR) menus and more. This article explains how you can use Twilio voice APIs to expose Oracle Digital Assistant to telephony.
Twilio’s voice API extends applications with flexible call center features, soft phones, call tracking, interactive voice response (IVR) menus and more. This article explains how you can use...
By Suhas Uliyar, Vice President, AI and Digital Assistant AI-based chatbots or digital assistants stand to change the way we interact with business applications, not just consumer ones. The main benefit is the ability to get immediate responses to queries via natural local language, without having to download apps or get training. While we have the freedom to engage in user-friendly experiences in our personal lives – such as Alexa and Siri – there have been few options for people in their professional lives. But that’s changing. As Steve Miranda, Oracle’s executive vice president of application development, remarked, “In HR, every common question or transaction has lent itself nicely to digital assistants. Within the next year, we will be calling HTML our ‘old UI.’ Every transaction you have will be through a digital assistant UI.” Work-at-home requirements associated with the spread of COVID-19 have made it all the more important to give employees easy access to ever-changing information – on company policies, insurance coverage, and public health guidance, in addition to the usual cadence of questions on vacation balances, status of expenses, and IT workarounds. Here are a few key ways in which chatbots and digital assistants can help. An assistant for every employee Finding answers to simple questions can be a frustrating experience if there is no easy way to do so. Take, for example, basic questions like “how many vacation days do I have left?” or “what do I do if I have a change in marital status?” In some cases, employees need to log into their VPN to find the policy document or a web page, or the application – which they then need to further navigate to find answers to these straightforward questions. With a digital assistant, employees can simply speak the question out loud in a natural way or simply input the text, instead of having to navigate multiple screens or interfaces, and they will receive an immediate response. Not only that, the digital assistant can further help them by recommending or taking action as a follow-up to their original interaction and be a true assistant for the employees. For example, rather than just informing the employee on what to do to change their marital status, the digital assistant can actually trigger the change process by gathering the necessary information and then updating the relevant systems with that information. Answering general policy questions With rapidly evolving governmental directives such as sheltering-in-place and social distancing, most organizations are quickly adapting their HR policies and guidelines. At the same time, employees need help and answers from their organizations more than ever. Questions may range widely from policies on employment, travel guidelines, and health and safety instructions, as well as guidelines on dealing with and working during the pandemic. In some cases, the information is very dynamic and changes by the minute. Digital assistants give employees a consistent channel, which is available 24x7, to ask their questions so they can get an immediate response – while freeing up the HR and IT/support teams to manage the more complex challenges they are facing today. In fact, you can also use digital assistants to send proactive alerts and notifications like changes in policies, so that employees don’t need to keep checking or search for the latest information time and again. Supporting employee health and safety Practicing social distancing has also had an impact on recruitment, onboarding, and training processes for organizations. In effect, these processes provide resources and support that most organizations may seriously need in these uncertain times. Using a digital assistant, businesses can drive candidates’ pre-screening and interview scheduling online, across any messaging channel. You can drive virtual onboarding by enabling easy remote online access to relevant trainings, policies, and materials all via a digital assistant. Data can also be safely recorded to keep track of employee health status based on the organization’s health policy and guidelines. A digital assistant can also save the employee from the time-consuming task of completing forms or reporting on any health-related issues at work. Employee self-service Whether working remotely or on-site as needed, employees may need access to both information and processes beyond just the HR systems. From submitting expenses to filing IT support tickets to making changes to travel plans, we touch a number of systems or applications as employees. Some processes even span across multiple systems, like role- or location-based expense reimbursement policies, where the system requires role information from the HR system before interacting with the finance/ERP system for reimbursement. A digital assistant is one common interaction point for employees, contractors, or partners across multiple applications and can provide a quick, consistent, and concise response. Leading an organization through this unprecedented time has put an increased demand on the HR function. As a result, organizations would be wise to leverage AI-powered technologies such as digital assistants to scale their functions, create online connection and engagement, and provide dynamic updates on policies and safety guidance without bogging down human communication channels – which need to be available for essential tasks. A digital assistant can support an organization by providing benefits such as: Lowering operational costs via online self-service & automation Expanding HR availability 24x7 across different channels Enabling easy access to information and processes delivered via text or natural language Delivering consistent information and maintaining employee engagement Enabling proactive HR outreach Digital assistants can support the functions employees may need now while creating efficiencies for the long term. For more information or to discuss how a digital assistant can support your needs, email us here. Stay well, and be safe.
By Suhas Uliyar, Vice President, AI and Digital Assistant AI-based chatbots or digital assistants stand to change the way we interact with business applications, not just consumer ones. The...
During a bot conversation, users can be distracted for a short time and become inactive. With the Oracle Web SDK, your skills can remind users after a certain idle time or even cancel the conversation. This behavior however does not come out-of-the box but requires you to design your dialog flow conversation for it. This article explains an implementation strategy that allows bot to remind users of the conversation they started and also to close a conversation that sat idle for too long. Using this implementation you can also avoid users from staying idle beyond the time configured as the channel session expiry time.
During a bot conversation, users can be distracted for a short time and become inactive. With the Oracle Web SDK, your skills can remind users after a certain idle time or even cancel...
The answer intent feature has been introduced to recent versions of Oracle Digital Assistant (ODA) and is available in ODA 19.4.1 and for Oracle Digital Assistant versions executing on the Oracle Cloud Infrastructure (OCI). Improvements to Oracle's intent resolution engine made it possible to provide questions and answers as intents. In this setup, utterances added to an intent are used to train the model so that the model is able to display the answer with the highest confidence it has. Questions and answers defined for the Q&A framework differ from answer intents in the format of the imported CSV documents and, of course, the configuration for tuning the understanding the model has. But there are similarities as well, like questions that also could have alternative questions associated to an answer. This article provides instructions and a utility to convert Q&A modules to answer intents.
The answer intent feature has been introduced to recent versions of Oracle Digital Assistant (ODA) and is available in ODA 19.4.1 and for Oracle Digital Assistant versions executing on the Oracle...
Composite bag entities group related entities and items of type string, location and attachment to a single entity that represents a real world object like an order, a booking, a reservation, an incident report and many more. The value for each item in a composite bag entity can be resolved through natural language processing (nlp) or by the user when prompted to enter a value. A quality of composite bag entities is that they can be resolved without developers to write dialog flow states for each of the contained bag items. Using the System.CommonResponse component or the System.ResolveEntities component, user prompts are automatically generated until the user cancels or completed providing required information. This article outlines an approach for building model-driven questionnaires using composite bag entities, the common response built-in component and resource bundles. The example use case is a course evaluation skill that students use at the end of a training class to provide feedback about the instructor and the training material and content.
Composite bag entities group related entities and items of type string, location and attachment to a single entity that represents a real world object like an order, a booking, a reservation,...
A good practice for messages in a bot conversation is to keep them short. Messenger have a limited area for displaying messages, so longer text responses cause the user to scroll as they read. Often also the full message is not needed for a user to understand and continue. This article explains how you can optimize longer bot messages displayed in the Oracle Web Messenger client to only show the message in full if the user clicks on a link or button.
A good practice for messages in a bot conversation is to keep them short. Messenger have a limited area for displaying messages, so longer text responses cause the user to scroll as they read....
Messengers differ in the components and layouts of the user interface that they support. An extreme example of this difference is the comparison of SMS as messenger with Facebook Messenger. While Facebook Messenger offers extensive user interface components such as cards, lists, images and attachments, SMS is just text. Differences however also exist between messengers that support rich user interfaces components. Slack, for example, does not have support for horizontal card layouts, whereas Microsoft Teams supports adaptive cards, a proprietary layouts format that allows bot designers to build their own card layouts. As a developer of chatbots, it's not just about finding the lowest common denominator for the design of the user interface for bots that can be reached via different channels. It's also about presenting the best possible user interface for each channel (image below). The implementation to represent the best possible user interface for a channel is what I call adaptive bot design.
Messengers differ in the components and layouts of the user interface that they support. An extreme example of this difference is the comparison of SMS as messenger with Facebook Messenger. While...
Composite bag entities in Oracle Digital Assistant are a domain object driven approach to designing bot conversations. With composite bag entities, conversation design is modeled as domain objects which then intelligently get resolved using the System.ResolveEntities and the System.CommonResponse component. This article explains how you can implement an intelligent cancel or exit option to your composite bag entity dialogs that allow users to discontinue a started conversation.
Composite bag entities in Oracle Digital Assistant are a domain object driven approach to designing bot conversations. With composite bag entities, conversation design is modeled as domain objects...
You use custom components in Oracle Digital Assistant to access REST services for querying or updating data. Because custom components are developed in Node.js, you use Node modules to handle the REST service access. In this article I explain how you use the Node https module to query data and how to write data back to an Oracle Digital Assistant skill.
You use custom components in Oracle Digital Assistant to access REST services for querying or updating data. Because custom components are developed in Node.js, you use Node modules to handle the REST...
In a previous TechExchange article I explained how to generate JWT tokens using a remote service. Generating JWT tokens remotely and not as part of the Oracle Web SDK is the recommended and secure way of creating tokens. However, for development and testing you may look for a fast and easy option to create tokens, in which case generating JWT tokens locally becomes handy. In this article I explain how you can create JWT tokens locally.
In a previous TechExchange article I explained how to generate JWT tokens using a remote service. Generating JWT tokens remotely and not as part of the Oracle Web SDK is the recommended and secure...
Using the Oracle iOS SDK for Oracle Digital Assistant, you can integrate your digital assistant with iOS apps. The SDK connects to the Oracle Chat Server, the intermediary between the Oracle iOS channel configured in Oracle Digital Assistant and the client. The chat server then passes messages to the skill for processing and delivers the skill's response to the client. This article is a quick-start guide and tutorial that guides you through creating and testing an iOS application that hosts the Oracle Digital Assistant Messenger for iOS.
Using the Oracle iOS SDK for Oracle Digital Assistant, you can integrate your digital assistant with iOS apps. The SDK connects to the Oracle Chat Server, the intermediary between the Oracle...
The Oracle Digital Assistant Web Messenger (Oracle Web SDK) can be configured to read bot responses to a user. The language and tone of a bot is usually to match an organization or brand. Likewise, the voice and accent of the text-to-speech (TTS) audio also should match the organization or brand.
The Oracle Digital Assistant Web Messenger (Oracle Web SDK) can be configured to read bot responses to a user. The language and tone of a bot is usually to match an organization or brand....
This article explains how you can extend the Oracle Web SDK's delegate feature to execute code asynchronously. For example, when triggering navigation on the website or web application hosting the web messenger, there is no need to wait for navigation to complete to continue with the conversation.
This article explains how you can extend the Oracle Web SDK's delegate feature to execute code asynchronously. For example, when triggering navigation on the website or web application hosting the web...
article by Frank Nimphius, February 2020 Bot conversations in Oracle Digital Assistant are not sequential, or in other words, many paths lead to the same result. The image below shows examples of user input and the expected outcome. Notice that "Please show me the menu", "I like to order pasta". I like to order a pasta with bacon" and "I like to order a pasta with bacon and garlic" lead to the same outcome, which is the confirmation of an order. Where the different user messages differ is in the number of states that are visited in the context of the conversation. To throughly test a skill in Oracle Digital Assistant, all possible conversation paths must be tried, and this for every change you apply to the dialog flow or any version or clone of a skills. Good news is that Oracle Digital Assistant introduced the first implementation of a test suite that allows you, on a skill level, to record a conversation in the embedded conversation tester, which then can be repeatedly run whenever needed. With this you can say that a conversation is the unit of testing in Oracle Digital Assistant skills. “Tell me and I will forget, show me and I may remember; involve me and I will understand.” ― Confucius This article provides a starter skill, as well as simple steps you can follow to explore the test suite feature and learn how to use it. To follow along, please download download the starter skill and ensure you have Oracle Digital Assistant 20.01 or later available. In Oracle Digital Assistant, import and open the started skill (if you don't see the import, use the search field and type "Alfredo". Before You Start The test suite feature is not enabled by default. To enable it, in Oracle Digital Assistant. select the "burger" menu item and choose the Feature Management option in the Setting menu section. Change the profile list to Enable all and apply the changes. Exploring the Test Suite Navigate to the Pasta Alfredo skill and open it. Press the conversation tester to launch the embedded skill tester. Notice (see image below) that the tester header contains links to access test cases and test results, as well as a link to create test cases by saving a conversation. Start by typing I like to order pasta into the Message field and press the enter-key on your keyboard. You can navigate the card layout to see the pasta menu. To continue, type I want bacon pasta into the Message field and press the enter-key. It doesn't matter what the message text is for as long as it contains bacon pasta (the magic of entity extraction). Note: Don't press the buy button. by the time of writing, due to a know issue, using a postback action results in an invalid test case that wont be saved. Next, type Cheese and garlic and press the enter-key. In the order confirmation, notice the the date and time information. This will become relevant later when you test the conversation. Next, click the Save as Test Case button. Provide a name like shown in the image below and press the Save Conversation button. Reset the conversation by clicking on the Reset link in the header. Next, type I like to order bacon pasta and beef ragout. Notice in the image below that this user message displays a disambiguation dialog alerting the user that only one pasta can be ordered at a time. This dialog wasn't displayed in the first conversation. You can navigate the cards and notice that the card layout only contains two cards. Next, type Okay. If I can only have one, then beef ragout please. This message has "beef ragout" as a valid entity value in it (which is all that matters) Next, type I like cheese and oil into the Message window and press the enter-key. After the confirmation is displayed, click the Save as Text Case link and save the conversation as shown in the image below. Important Note: Test case don't need to be complete conversations that end with a return statement (transition). You can, for example, stop the conversation in the tester at any time and save the test case. The last message displayed by the bot will then be the outcome the test case will determine success or failure with. Next, select the Test Cases link. Notice that there are 4 test cases. Two of the test cases is what you created when following the instructions in this article. Two test cases were part of the starter skill you imported. What you learn with this is that test cases you create belong to a skill and will be exported and imported with the skill. This also means that when you version or clone a skill, that those skills will have contain the test cases too. Note: Test cases can also be exported for a skill without exporting the whole skill. For this, you would exit the skill (navigating to the skill dashboard) and then use the menu icon in the right bottom of the skill tile. This way you can export test cases to import into other skills. Notice that the conversation recorded for each skill is saved as a JSON payload. You may want to compare the payload of one of the test cases you created with the SMS test case already provided. You will notice differences in the component rendering expressed in the payload. So for a test case it also matters which channel simulation was used when recording the conversation. Next, press the Run All Test Cases button to execute the tests. You can change the name of the job if you want. For this article, just keep it and press Submit. Give it a few minutes to process. Then, click the Test Run Results link. Notice in the image below (and un your test run) that two test cases out of 4 failed. Expand one of the failed test cases to learn about the problem. The problem in this case is the date and time information printed within the order confirmation (told you that this will become a problem). Reality is that you cannot exclude that content in a bot message changes. If it wasn't the date and time, it could be a generated order ID that changes between bot test runs. One option to fix the problem would be to press the Apply Actual button to modify the test case. While this helps for infrequent changes, it does not for the date and time in the example. To solve this problem, and to fix the test case forever, click on the test case name link. The link navigates the UI to the test case definition. Scroll the Conversation field content to the bottom. Find the CONFIRMATION entry with the date and time information. Replace the date and time information with a place holder. The image below uses ${DATE} as a placeholder. You can however choose whatever name you want for the placeholder. Notice that when you move the cursor out of the Conversation field, the DATE placeholder is shown as a variable. Next (inportant!), do the same for the other test case that failed, The test case too contains the date and time information. When you rerun the test cases with the applied changes, then all tests succeed. When you switch to the test case results and you see tests still in progress, refresh the browser page frequently until you see the final test results. Summary This article provided a brief overview of the test suite in Oracle Digital Assistant that you can use to record and replay conversations. The test cases are exported, versioned and cloned with the skills. You run the test cases from the conversation tester, or from anywhere in the skill editor using the Run Tests button. Note that a test case stops at the first difference in a conversation. If there are 3 user interactions in a conversation and the first one fails, then the test case stops here and does not continue testing the other two interactions. If you want to test different parts of a conversation it is recommended to create multiple shorter test cases and e.g. use entity slotting to skip some states in between the conversation. Download Pasta Alfredo Starter Skill Related Content TechExchange Quick-Tip: How-to Test Apache FreeMarker Expressions in Oracle Digital Assistant All 2-Minute Oracle Digital Assistant TechTip Videos on YouTube TechExchange Quick-Tip: Understanding Oracle Digital Assistant Skill Entity Properties - Or, What Does "Fuzzy Match" Do?
article by Frank Nimphius, February 2020 Bot conversations in Oracle Digital Assistant are not sequential, or in other words, many paths lead to the same result. The image below shows examples of user...
Entities in Oracle Digital Assistant extract information from user messages based on patterns or values they represent. Users can have a natural conversation with a chatbot as they will only be prompted for information they have not yet provided. "I like a scoop of strawberry ice cream " implies the intent (to buy ice cream), the flavor (strawberry) and the size (a scoop). The only prompt to display for this example would be "how would you like to pay?". By various examples, this article explores and explains properties you can set on custom properties.
Entities in Oracle Digital Assistant extract information from user messages based on patterns or values they represent. Users can have a natural conversation with a chatbot as they will only be...
Its a busted myth that people don't scroll or read. However, long blocks of text are not very appealing and often result in users only scanning the text and not reading it. This is especially true for displays with reduced sizes as they exists as messengers. A design principle for creating user interfaces for conversations is to adapt to the target messenger and, if necessary, shorten text blocks to appropriate sizes. Using Oracle Digital Assistant, one way of breaking up long text into smaller chunks is to use a custom component. This article explains a custom component solution that breaks up text into text blocks that are displayed with a configurable delay.
Its a busted myth that people don't scroll or read. However, long blocks of text are not very appealing and often result in users only scanning the text and not reading it. This is especially true for...
A common requirement for videos is to show them in place within a messenger. Not all messengers however support embedded videos and other media. The new Oracle Web SDK does render videos embedded in the conversation. In this article I explain how you embed YouTube videos to your chatbot conversations.
A common requirement for videos is to show them in place within a messenger. Not all messengers however support embedded videos and other media. The new Oracle Web SDK does render videos embedded...
The Oracle Web SDK is a new SDK and web messenger available in the OCI versions of Oracle Digital Assistant (version 19.10 and later). The messenger is written in JavaScript and can be added to your website and web applications. It exposes events that you can use to intercept bot responses before they are displayed, and a headless model that lets you write your own messenger web client. In both cases, you may want additional metadata information to be added to the bot response, which is exactly what you can use the customChannelProperties of the System.CommonResponse component for. This article explains how to add custom channel properties to a bot response, how to restrict the information to be added only to responses that are passed to the web messenger and how to deal with the information in a web application.
The Oracle Web SDK is a new SDK and web messenger available in the OCI versions of Oracle Digital Assistant (version 19.10 and later). The messenger is written in JavaScript and can be added to your...
The Oracle Web SDK is a JavaScript library that you can use to integrate Oracle Digital Assistant into your website or web application. The library provides a customizable messenger that communicates with the Oracle Digital Assistant web channel via the Oracle Digital Assistant message server. The Oracle JavaScript Extension Toolset (JET) is a development and runtime environment for single page (SPA) web and mobile applications. Oracle JET also is the underlying technology used in Oracle Visual Builder. This article explains how to configure and integrate the Oracle Web SDK messenger in Oracle JET web applications.
The Oracle Web SDK is a JavaScript library that you can use to integrate Oracle Digital Assistant into your website or web application. The library provides a customizable messenger that communicates...
Oracle Digital Assistant is the Oracle cloud based platform for creating intelligent chatbots. If you subscribe to Oracle Digital Assistant beyond a trial period, you should know how to protect Oracle Digital Assistant instances for read and write access and how to restrict access to specific users. Oracle Digital Assistant uses Oracle Cloud Infrastructure (OCI) Identity and Access Management (IAM) for design time and platform API security. You use the IAM console to create and manage accounts for bot developers, business users, analytic users and administrators. This article explains and illustrates how you create users and how you associate them to user groups and policies that control access to Oracle Digital Assistant OCI.
Oracle Digital Assistant is the Oracle cloud based platform for creating intelligent chatbots. If you subscribe to Oracle Digital Assistant beyond a trial period, you should know how to protect Oracle...