X

The Mobile & Intelligent Bots Blog covers the latest in mobile and chatbot development, multi-channel engagement, and...

Recent Posts

Intelligent Bot Development

Conversational Interfaces: From Chatbots to Digital Assistants

Authored by Suhas Uliyar, Oracle Vice President - AI, Bots & Mobile   The meteoric rise of chatbots, and proof in the last year that this rise is not a fad, has given end users a natural way to engage with business via a conversational user interface and has given brands new purpose in providing better customer service. As the brand-customer relationship has grown and has become even more intertwined, enterprises are beginning to see success with the deployment of these bots. For example, Bank of America released Erica – a chatbot for consumer banking in early March, 2018 that had an adoption of 1 million users in the first 3 months of going live.  Mutua Madrid Open, an Oracle customer, became the first ATP World Tour Masters 1000 and Premier WTA tournament to incorporate an AI-equipped chatbot to improve communication with tennis fans. Implemented with Oracle Cloud Platform, the chatbot, named “MatchBot,” used AI to maintain natural conversations that provided fans with information on the event, players, and results, as well as details on hospitality services, discounts on merchandise, ticket sales, access, and parking. The University of Adelaide, another Oracle customer, created a chatbot on Oracle’s cloud platform to ease students’ pain during the university application process. On just the first day the bot was live, prospective students conducted an estimated 2,100 unique conversations with the chatbot, which led to a 40 percent reduction in calls to the University’s customer service line – and more impressively, a 47 percent drop in calls during the critical first three hours.  In turn, this reduced the wait time for queries made via telephone – from an average of 40 minutes down to about 90 seconds, and 60% of student users rated their experience as “awesome.”. These are just several such examples of successful business implementations using first generation, AI-powered, conversational interfaces.   So what’s next? The next generation of conversational interaction is Conversational Intelligence. Today’s conversational interactions are either user-initiated conversations or notifications about pre-programed actions (e.g. Alexa notifying you that your order has been delivered or Siri waking you up in the morning because you have pre-set an alarm.) Conversational Intelligence, however, is the ability for an interface to “know” a user, learn and understand their moments, actions, behaviors and preferences, and recommend, predict or act on behalf of the user – essentially functioning as your own digital assistant. To put this in more simple terms, let’s draw an analogy to part of my job, which includes traveling to meet customers. In my role as VP for Product Management, I have the pleasure of meeting our global customers and partners, and that's by far the best part of my travel experience. The reason, of course, is that the logistics associated with business travel can be difficult and time-consuming so any help is good. When my admin started several years ago, she didn’t know any of my travel preferences and I often had to initiate a conversation with her to book my travel. She would ask me my preferred airline, hotel, check on any personal commitments I had, schedule prep calls with local sales teams, make sure I had the correct customer briefing documents, and then would book my travel. On the day I left, I would ask her to book Lyft to the airport and so on. These conversations occurred a few times, but soon enough, she knew what to look for in my emails, which schedules to check (personal and business) and which flights and hotels to book based on my preferences, leaving me only to confirm her choices. As more time passed she did not even need me to confirm her selections as they were pretty perfect. In this example, my admin learned to take actions on my behalf by observing my traits, behaviors, and habits, which she learned first by talking to me, and then by incorporating both her knowledge of our conversations and my validations of her actions into an overall understanding of my preferences that was accurate enough for both of us to trust each other when making travel decisions. Today, end users are having similar conversations with bots that may seem simple, but these conversational interactions are creating important data. Over time the incorporated AI built into these bots will learn from these data-heavy interactions, from aggregated data across, and from outside of, the enterprise will use this accumulated “knowledge” to become a functioning “digital” assistant. This is the future of where AI-powered chatbots are headed; a Digital Assistant for every consumer and every employee of a company. What is needed to have a Digital Assistant for every consumer / employee?   Naturally Conversational: Language is incredibly complex and the assistant needs to understand user goals/intentions in every part of the conversation – real meaning, contextual, personalized & human like. Knowledge, Memory & Reasoning – Users expect the assistant to behave like humans. The assistant’s "brain" needs to have semantic understanding of various knowledge domains, needs to understand events, needs to have long/short term memory, and needs to be able to make decisions and execute/orchestrate actions. The Assistant is for THE User – It needs to know users really well, their roles, behaviors, traits, preferences, their interactions and activities across various apps/channels. The assistant also needs to know how and when it should communicate with the user, and recommend actions based on their real-time needs. Proactive – The assistant should watch out for things the user cares about and either take actions autonomously or communicate with the user. Oracle's platform will provide capabilities to enable an assistant’s skills to be truly intelligent and proactive. Act as True Agents– The assistant should know how to get things done with minimal help – e.g. create a plan dynamically based on current situation/context, reason with data to decide and execute actions. Multi-Channel - The assistant needs to work seamlessly across various channels. This includes the ability to identify the same user in multiple channels, maintain state across channels and have a conversation with a user using multiple channels at the same time (e.g. for voice use cases where the medium itself is limited/constrained.) Digital Assistant Platform for Skills Development – Skill developers are a critical part of the ecosystem to make the assistant successful. We need developers to be able to develop skills that are intelligent, can detect complex situations, retrieve context from the assistant and be proactive in nature.   In my next blog, we will explore in detail how the Oracle Digital Assistant delivers on these requirements.  First however, please go and listen to my podcast on the topic of Digital Assistants, which will be released on Wednesday, October 10th, here.  It's short, easily digestible, and gives further context on Digital Assistants and where AI is going in the Enterprise.

Authored by Suhas Uliyar, Oracle Vice President - AI, Bots & Mobile   The meteoric rise of chatbots, and proof in the last year that this rise is not a fad, has given end users a natural way to engage...

TechExchange

TechExchange Quick-Tip: How-to Validate User Input For Non-Entity Variables

article by Frank Nimphius, October 2018 In Oracle Digital Assistant (formerly known as Oracle Intelligent Bots), user input can be validated in two forms Based on variables that are based on entities manually for variables that are not entity bound In this article I explain how to use Apache FreeMarker template expressions to validate user input. As an example I use a length validation use-case for "quote of the day" type of user input. The image below shows the runtime view of a bot in the embedded tester for a successful quote, 'Carpe Diem' The next image shows the same runtime in case of a failed validation. For this I used one of my all time favorite quotes by Wayne Gretzky: "I skate to where the puck is going to be, not where it has been." Again, length validation is only one type of validation Apache FreeMarker is capable of doing in the context of Oracle Digital Assistant. Below is the BotML code of the dialog flow that is used by the bot shown in the images above p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 20.0px; font: 13.0px Helvetica; color: #262626} p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 20.0px; font: 13.0px Helvetica; color: #262626; min-height: 16.0px} context:   variables:     quoteOfDay: "string" states:     #here is where the user input is provided and saved into a string variable   getQuoteInput:     component: "System.Text"     properties:      prompt: "Please give me your favorite quote. But make sure it does not exceed 50 characters"      variable: "quoteOfDay"     transitions:       next: "validateInputString"   #the variable is evaluated for the length of the provided string. If it exceeds   #50 characters then the value "lengthExceeded" is returned. "lengthOk" is   #returned otherwise.The returned value is then mapped to a state in the dialog   #flow   validateInputString:     component: "System.Switch"     properties:       source: "${(quoteOfDay.value?length > 50)?then('lengthExceeded','lengthOk')}"       values:       - "lengthExceeded"       - "lengthOk"     transitions:       actions:         lengthExceeded: "correctQuote"         lengthOk: "printQuote"         NONE: "printQuote"   #to ensure the user is given a chance to correct the input you i) let her   #know, and ii) reset the variable before redirecting the conversation to   #the getQuoteInput state   correctQuote:     component: "System.Output"     properties:       text: "With ${quoteOfDay.value?length} characters, your quote exceeds the 50 character length mark."       keepTurn: true     transitions:       next: "resetVariables"   #reset the variable state   resetVariables:     component: "System.ResetVariables"     properties:       variableList: "quoteOfDay"     transitions:       next: "getQuoteInput"        #this is the state the dialog flow is navigated to in the case of a valid length   #of the quote   printQuote:     component: "System.Output"     properties:       text: "The quote you shared is: ${quoteOfDay.value} [${quoteOfDay.value?length} characters]"       keepTurn: false     transitions:       return: "done" You can easily see, how the code could be changed to e.g. evaluate the user input for string only or numeric only input, or to detect whether a specific keyword is contained. Just have a look at the Apache FreeMarker built-in and experiment with it: https://freemarker.apache.org/docs/ref_builtins.html   Related Articles: TechExchange - Using Apache Freemarker Expression in Oracle Intelligent Bots TechExchange Quick-Tip: How to tell whether a specific entity value is contained in a user sentence? TechExchange Quick-Tip: Accessing Attribute Names and Values of a Data Object TechExchange: How to Ensure Valid User Date Entries in Oracle Intelligent Bots using BotML and a Custom Component  

article by Frank Nimphius, October 2018 In Oracle Digital Assistant (formerly known as Oracle Intelligent Bots), user input can be validated in two forms Based on variables that are based on entities manu...

TechExchange

TechExchange Quick-Tip: Creating an Default Error Handler in Oracle Digital Assistant

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 20.0px; font: 13.0px Helvetica; color: #262626} article by Frank Nimphius, September 2018 Note: Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit cloud.oracle.com/digital-assistant Oracle Digital Assistant allows you to define error handlers on individual dialog flow states in a conversation, or globally, as a default transition in the dialog flow header. In this article I'll show you how you can get the best of two worlds: A global error handler that allows you to handle local state errors.  Errors Handled by the System Error Handler "error" is a transition in the dialog flow. This means that, to handle errors locally, you can define a transitions element to a dialog flow state. For example   mynlpState:   component: "System.Intent"   properties:     ...   transitions:    error: "gotoHandleIntentErrorState"   The errors handled on a dialog flow state are usually exceptions thrown by a component or the platform. For the System.Intent component example, an error is thrown if the component variable property is not set.   Without defining a "error" transition on a state, errors are handled by the system error handler, which really should be seen as a last resort. The message printed by the system error handler is nothing you want your users to experience at runtime. Would you agree? Well, I hope you agree. The error message below is created by a custom error handler navigated to by the "error transition", that, dependent on the state it is defined, can decide whether or not an error can be recovered from.   In the example shown in the image below, the bot apparently doesn't know how to recover from failure. At least however, it provides the user with an option of how to unlock the situation. Well, as good as it sounds to be able to define an error handlers on individual states, very soon it might become cumbersome to manage. So, a better option would be if an error handler could be defined on a global level with the ability to still handle errors based on the state they occur. And this, as you may have guessed is possible in Oracle Digital Assistant. Setting up a Global Error Handler A global error handler is an "error" transition defined as a defaultTransition in the dialog flow header. The benefit of a global error handler is that all your error handling code could be in a single location, e.g at the end of the dialog flow, providing a much better way of organizing your code.   Note: You find an article written about default transitions here:  TechExchange Quick-Tip: Adding Default Transitions to Dialog Flows   Globally Handling Local (State) Errors The error message below is displayed for a multi-language bot for which the translation service is not available. An error is thrown when the system detects that the translation service is unavailable. However, in this case there is an option to recover from the situation, which is to continue the conversation in the base language of the bot (English in this case).   So when the error occurs in a state that detects the user language, then a resource bundle is used to print a message to the user in the user's language (determined by the user locale)   The German message in the image above actually says that the bot does have a problem with languages. Instead the bot asks if it is okay to continue the conversation in English.   Then, continuing the conversation in English allows the user to run the bot and get - in this case - flowers delivered. Of course, the bot should also offer an option for users that don't feel  comfortable running the bot in English. Here, a button to connect with a human agent, or a phone number to call, could be provided.  The image below shows, how the sample above works. First of all, a defaultTransitions element is added to the dialog flow header. The "defaultTransitions" element aligns with the "states:" element. In here you can define the "error" transition, as well as any other dialog flow transition, like actions or the "next" transition.   In the image below, all "error" transitions are handled by the globalErrorHandler, a state defined in the dialog flow.       As the row number indicates, the error handler state is put towards the end of the bot dialog flow. The state uses a System.Switch component to determine whether the error is a local error that it can recover from, or a global error that it can't recover from. For this, the System.Switch component uses a system variable, system.errorState. The system.errorState contains the name of the state that triggered the error transition to occur. Based on the state name you can now handle errors individual.   For the sample in this article, all language errors are handled by a state called "prepareTranslationServiceErrorHandling". Other error states are passed to the "unrecoverableErrorHandler" state.   The System.Switch component allows you to handle as many state specific errors as you want. Thus the solution explained in this article gives you the best of two worlds: local and global error handling in a single implementation.        Below is the state that handles the misconfiguration in the translation service. For users with a locale set to English ("en"), it is assumed that the language used by the user is English. This means, that the error can be suppressed and instead the user entry is passed to the System.Intent state.   For other locales, the navigation proceeds to a state that displays a user message (e.g. asking of the conversation can be continued in English) or that dispatches users to a human agent.   Related Articles TechExchange Quick-Tip: Why You Should Always Define a "next" Transition on Dialog Flow States TechExchange Quick-Tip: Adding Default Transitions to Dialog Flows      

article by Frank Nimphius, September 2018 Note: Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit c...

TechExchange

TechExchange: Oracle Bots Node.js SDK: Building Webhook Clients for Oracle Intelligent Bots Made Easy

article by Frank Nimphius, September 2018 A webhook is a programming interfaces implemented by a system on the web for other programs subscribe and to receive automated notification in case anything of interest happens. One such system is chatbot. Users "register" for a chatbot through a messenger client and by sending messages to the bot. The bot then resolves the request, processes it and returns a response that the original sender receives. Webhook clients are like adapters that dispatch and manage conversation between a user and a remote system. In Oracle Intelligent Bots, channels allow bot designers to expose the bot functionality to a specific type messenger client. Underneath channels are webhooks. Channels, like Facebook, Web, iOS, Android and more that are in development, are referred to as "native channels" Native channels are webhook implementations that exist and that you, as the bot designer, don't have to code for. For integrating messengers that Oracle Intelligent Bots doesn't have a native channel for, you use the generic Webhook channel. The Webhook channel in Oracle Intelligent Bots opens up the Oracle bots platform for any messengers client. All you need to do is to write the webhook implementation. In this article, I explain the basic steps of creating a webhook client using the Oracle Bots Node.js SDK available on GitHub and npmjs. In future articles I will use this article as a starting point for explaining how to integrate Oracle Intelligent Bots with Messenger services like Alexa and Google Hangouts. Update note: Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit cloud.oracle.com/digital-assistant  p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 20.0px; font: 13.0px Helvetica; color: #262626} READ FULL ARTICLE (PDF) Related Content TechExchange Quick-Tip: How-to Write And Read User Profile Information Using the Web Client-SDK Oracle Bots Node.js SDK: Building Custom Component Services with Node Express Made Easy for Any Node Container    

article by Frank Nimphius, September 2018 A webhook is a programming interfaces implemented by a system on the web for other programs subscribe and to receive automated notification in case anything of...

TechExchange

TechExchange Quick-Tip: Why You Should Always Define a "next" Transition on Dialog Flow States

article by Frank Nimphius, September 2018 Update: Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit cloud.oracle.com/digital-assistant Transitions in Oracle Intelligent bots are directives for the dialog flow engine of how to continue navigation. The type of transitions include  empty transition  action return next error Transitions are defined either on the dialog flow state level for local navigation instructions  ... ... or as a default transition in the dialog flow header for global navigation instructions (a screen shot further below shows an example of where to define the default transition) About Empty Transitions Only on dialog flow states, you have the option to define an empty transition by not adding a transitions element at all or by using the following configuration: transitions:{}. With empty transitions, the navigation happens from a current state to the state defined below in the dialog flow.  Here is an example of the two configurations. First an example with no transitions element defined of state1 ... ..., next an example that has the empty configuration set Running the dialog flow for both examples, prints the following result ... So, What is the Problem? The problem with empty transitions is that they are not explicit and therefore difficult to trace in case a dialog flow does not behave as expected. Let me give you an example. In the image below, the state1 has been changed to use a Common Response component that renders a list. The list either navigates to state 2 or state 3, depending on what button is pressed. Looking at the OBotML code for the component in state 1, notice that an action transition is only defined for gotoState2, but not for gotoState3. Forgetting to map an action returned by system or custom components happens easily and more often that you think. So what happens of the user selects the "go to state 3" list element?  Selecting the "go to state 3" items leads to the following result. Ouch. If state 2 was to cancel a selected flight and state 3 was to check the flight status, then you may be in trouble. Would you agree? So, what has happened?  The Common Response component state has an action transition defined to go to state 2. Since go to state 3 was selected, the dialog flow did not find a mapping in the actions transition setting. It then looked if an action mapping is defined as a default transition, and if not, follows the empty transition defined on state 1. And yes, you don't see the empty transition as it is not explicit!  Note: A very common problem we see is that the last state in a dialog flow (the one at the very bottom oft the OBotML document) has an empty transition set. When a conversation reaches this state then the bot throws an error as the dialog engine has no clue what to do next. If the navigation to this state is a rare corner case in your bot conversation, then the error appears to be random and will cost you hours to research and fix.  The Solution: Always Use a next Transition So, how to avoid bugs in your dialog flow through unintended navigation? The solution is to always set a "next:" transition. The "next:" transitions does what it says: it defines the name of the state to transition to if neither the action transition nor the error transition handles navigation. Here is a revised version of the CR component sample. Now, running the bot again and selecting "go to state 3" does result in ... Of course, in a real bot implementation the "next:" transition is not meant to say sorry but to guide the user. Often its not that the bot designer forgets to map an action, but that the user provides an input you don't anticipate. In this case you may have the "next:" transition pointing to a state that prints some help text before it navigates back to the state (state1 in this case) Thus, my recommendation to you is to always use a next: transition Always and on any state! Always adding a "next:" transition requires discipline, but makes your dialog flow better readable. If you work in a team, then other bot designers may add a needed state somewhere in the flow, in which case, allowing empty transitions, your conversation may enter the added state though it makes no sense. Human conversations, and thus bot interactions are never linear or top-down. The go back and forth and up and down. The best way to stay in control really is to always have a "next:" transition defined even if in 99.9999999999999999% of all cases an action transition would handle the user input. Its the 0.0000000000000001% of the cases that you want to avoid.  How to Ensure That All States Have a "next:" Transition Set? So, as a bot designer, how do you know if all states have a "next:" transition set? As usual, this is through testing and reading the dialog flow code. A trick to use is the following. As from now on, you rule out any use of empty transition (except for quick-and-dirty functionality testing), you can define a next transition as a default transition. The image below has state 1 reset to no have a "next:" transition added. This time however it has a a default transition defined for it. The default transition is called when an action transition on a state does not handle an action and if the state does not have a "next:" transition defined. Before the empty transition is followed, the dialog flow checks for a default transition either for the action or the "next:" transition. If found, it happily follows that path ... Running the sample and pressing the "go to state 3" option now prints To find the state in which the empty navigation was used (after all, your bot may have many and very long conversations with a lots of states involved) go to the embedded tester and expand the JSON switch at the bottom. Scroll down until the bottom of the message, where you will find (in case of this sample) Notice the executedStates entry. The last state is "headsUpMyFriend", which basically means that state1 is the trouble maker. This way, while testing in the embedded tester you find it easy to find the state that does not have a "next:" transition set How to Find the 0.0000000000000001% Chance Problem? Not all problems can be found at design time and there is always something overlooked that shows at runtime first. In this case, instead of the "headsUpMyFriend" state to print a message, you could use a custom component, that reports the problem either through logging or other means for alerting. Below sample code shows a simple custom component that logs the problem as a warning: Conclusion Avoid empty navigation by always specifying a "next:" navigation for a state. Use empty navigation only for testing. Following the hints in this article ensures that - assuming you stay disciplined - you stay in control of you bot conversation flow no matter what the user does.  So, revisiting the initial example in which the two states together print "Hello World", this should be coded using an explicit "next" transition on state1, as shown in the image below Related Content TechExchange Quick-Tip: Adding Default Transitions to Dialog Flows Oracle Bots Node.js SDK: Building Custom Component Services in and for Oracle Autonomous Mobile Cloud Made Easy Oracle Bots Node.js SDK: Building Custom Component Services with Node Express Made Easy for Any Node Container  

article by Frank Nimphius, September 2018 Update: Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit ...

TechExchange

Oracle Bots Node.js SDK: Building Custom Component Services in and for Oracle Autonomous Mobile Cloud Made Easy

article by Frank Nimphius, August 2018 (Oracle Autonomous Mobile Cloud version for deployment to Oracle Mobile Cloud) Most, if not all, bots built with Oracle Intelligent Bots uses custom components. Custom components allow developers to integrate custom logic, custom bot user interface responses and remote data (CRUD) to a dialog flow, and therefore to the user-bot conversation. The new Oracle Bots Node.js SDK published on GitHub makes building custom component easy for components to be deployed to Node Express containers or Oracle Autonomous Mobile Cloud. Beside of providing the Oracle Bots custom component SDK, a set of JavaScript classes that enable custom component developers to interact with the message payloads exchanged between the bot and a custom component, the new Oracle Bots Node.js SDK also provides middleware that handles the routing of bot requests and component responses. By example of creating and running a hello world type of component, in this article I explain how to use the new Oracle Bots Node.js SDK available on GitHub (https://github.com/oracle/bots-node-sdk) to build custom component services for deployment to Oracle Autonomous Mobile Cloud. Note: A related article explaining how to deploy Oracle bots custom component to Node.js Express containers like Oracle Application Container Cloud Server (ACCS) is available at the Oracle TechExchange blog -  Oracle Bots Node.js SDK: Building Custom Component Services with Node Express Made Easy for Any Node Container   Update note:   Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit cloud.oracle.com/digital-assistant READ THE FULL ARTICLE Related Articles: Hint: Most articles below use the static configuration of Oracle Intelligent Bots custom component service SDK. The component code itself however works with custom component services developed using Oracle Bots Node.js. SDK as well.  Oracle Bots Node.js SDK: Building Custom Component Services with Node Express Made Easy for Any Node Container TechExchange - Custom Component Development in OMCe – Getting Up and Running Immediately TechExchange: Running and Debugging Custom Components Locally  TechExchange: How to Ensure Valid User Date Entries in Oracle Intelligent Bots using BotML and a Custom Component TechExchange: How-to Build Card Layout Responses from Custom Components

article by Frank Nimphius, August 2018 (Oracle Autonomous Mobile Cloud version for deployment to Oracle Mobile Cloud) Most, if not all, bots built with Oracle Intelligent Bots uses custom components....

TechExchange

Oracle Bots Node.js SDK: Building Custom Component Services with Node Express Made Easy for Any Node Container

article by Frank Nimphius, August 2018 (Node Express version for deployment to any Node container) Most, if not all, bots built with Oracle Intelligent Bots uses custom components. Custom components allow developers to integrate custom logic, custom bot user interface responses and remote data (CRUD) to a dialog flow, and therefore to the user-bot conversation. The new Oracle Bots Node.js SDK published on GitHub makes building custom component easy for components to be deployed to Node Express containers or Oracle Autonomous Mobile Cloud. Beside of providing the Oracle Bots custom component SDK, a set of JavaScript classes that enable custom component developers to interact with the message payloads exchanged between the bot and a custom component, the new Oracle Bots Node.js SDK also provides middleware that handles the routing of bot requests and component responses. By example of creating and running a hello world type of component, in this article I explain how to use the new Oracle Bots Node.js SDK available on GitHub (https://github.com/oracle/bots-node-sdk) to build custom component services for deployment to Node.js Express containers like Oracle Application Container Cloud Service (ACCS). Note: A related article explaining how to develop and deploy Oracle bots custom component for Oracle Autonomous Mobile Cloud is available at the Oracle TechExchange blog -  Oracle Bots Node.js SDK: Building Custom Component Services in and for Oracle Autonomous Mobile Cloud Made Easy   Update note:   Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit cloud.oracle.com/digital-assistant READ FULL ARTICLE Related Articles: Hint: The articles below use the static configuration of Oracle Intelligent Bots custom component service SDK. The component code itself however works with custom component services developed using Oracle Bots Node.js. SDK as well.  TechExchange - Custom Component Development in OMCe – Getting Up and Running Immediately TechExchange: Running and Debugging Custom Components Locally TechExchange: How to Ensure Valid User Date Entries in Oracle Intelligent Bots using BotML and a Custom Component TechExchange: How-to Build Card Layout Responses from Custom Components Oracle Bots Node.js SDK: Building Custom Component Services in and for Oracle Autonomous Mobile Cloud Made Easy  

article by Frank Nimphius, August 2018 (Node Express version for deployment to any Node container) Most, if not all, bots built with Oracle Intelligent Bots uses custom components. Custom components...

TechExchange

TechExchange Quick-Tip: Dynamically and Conditionally Reduce the Number of Items Displayed in a List

article by Frank Nimphius, August 2018 Update: Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit cloud.oracle.com/digital-assistant If you ever submitted a paper for a conference, then you probably know the type of registration question in which a list of categories is displayed for you to first choose the primary topic of your talk, then the secondary and finally the third. By selecting a topic from the list, the items on the list are reduced by the one selected for the next display.  The same UI can be achieved for a bot conversation in Oracle Intelligent Bots. Below screen shots shows a conversation in a fictitious bot to submit papers for Oracle Open World.  The first list shows all the options to select from The second list then shows the same choice minus the previously selected one Eventually, the third list shows the remaining list items minus the two previously selected items Note: The selected values could have been from anywhere in the list. Its coincidentally that the values on top were selected in the sample The above lists are created from an array of data saved in a context variable. The array could be statically defined in BotML (as in this sample) or populated dynamically from a custom component (querying a remote service).  The reduction of the list, from one question to the next, however is implemented using Apache Freemarker expressions. So no custom component that needs to be involved for this.  The image above shows the CR component, which is used to build the list, with the visible attribute set to an expression that compares each list elements with the value selected value saved in a context variable. Notice the use of the Apache FreeMarker matches built-in expression to compare the list item value with the context variable value.  The expression ensures that a previous selected value is hidden from the CR component response. Note that the CR component list dynamically reads the content saved in the "categories" array. The second list then checks for the content saved in two context variables Bottom line is that the selected values are not removed from the list but hidden in the CR component rendering. Related articles TechExchange - Using Apache Freemarker Expression in Oracle Intelligent Bots TechExchange: How-to make System.Switch case insensitive with Apache FreeMarker

article by Frank Nimphius, August 2018 Update: Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit clo...

TechExchange

TechExchange: How-to Embed Remote Websites in Instant Apps and How to Handle Callbacks

article by Frank Nimphius, August 2018   Oracle Intelligent Bots allows you to build micro apps that can be integrated into chatbot conversations while executing in a web view. Instant Apps, to name the product feature, allow users to provide structured data input easily instead of going back-and-forth in a bot conversation, just to get multi-line information in. A feature of Instant Apps is the ability to embed remote websites, for the website to receive information from and to write information back to an Instant App. This article explains how developers setup the remote web application to call back into and Instant App and what they need to do to receive and handle information sent from the embedded website. Update note:   Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit cloud.oracle.com/digital-assistant READ THE FULL ARTICLE (PDF)   Resources: Sample Instant Apps application Sample Bot JET sample script file   Related Content TechExchange: How-to Populate Radio Groups, Checkboxes and Lists in Instant Apps with Data Collected in Oracle Intelligent Bots 10 Tips for Chatbot Success  

article by Frank Nimphius, August 2018   Oracle Intelligent Bots allows you to build micro apps that can be integrated into chatbot conversations while executing in a web view. Instant Apps, to name the...

Oracle Hat-Trick

  A hat-trick in cricket is when a bowler dismisses three batsmen consecutively.  In futbol (aka soccer), as well as hockey, it’s when an individual player scores three goals in a game. Other sports have similar versions, but my point is, a hat-trick is not easily achieved.    I’d like to add my own version, from an Oracle perspective, that our own Mobile and Chatbots product team has garnered its own hat-trick for 2018. Oracle Mobile Cloud is being recognized as a leader for mobile development platforms by well know, highly respected analysts - Ovum, Forrester, and most recently, Gartner. Woot! It is an honor, and I am very proud of the hard work by the team led by Suhas Uliyar, Oracle VP Product Management, for their ongoing efforts.         You can details in the press releases and analysts reports below:   Press releases: Gartner, Forrester and Ovum Download analyst reports: Gartner, Forrester and Ovum     A few teaser excerpts from the releases & report:   “Smartphone adoption continues to grow and mobile apps, while key to engaging customers, are beginning to give way to new technologies like conversational interfaces,” said Suhas Uliyar, vice president, product management, Oracle. “The addition of services like Oracle’s intelligent bots, which can readily build chatbots for customers, will be instrumental for digital transformation as businesses engage with audiences on new and emerging platforms.” Download the Gartner report here.   The author of The Forrester Wave™, Michael Facemire wrote: “Oracle has seen great adoption of its Mobile Cloud Enterprise platform since building it from the ground up in 2014. Oracle has added to this cloud-first platform with front-end tooling around web, chat, and low-code options. A unified programming model has allowed Oracle to build solid tooling (Visual Builder Cloud Service) to expose these components to a larger audience without going down the proprietary path where other vendors have stumbled in the past.” Get the Forrester report here   Ovum: Oracle performed as a worthy leader in the ODM, with above average scoring in all three categories of technology, execution, and market impact.  Get the Ovum report here.     Oracle hat-trick - now you know. You can access all three reports and more at oracle.com/mobile and oracle.com/bots.    Artificial Intelligence (AI) is just the beginning. Mobile is the vehicle for many AI applications that span Oracle's portfolio of products and solutions. Check out CEO Mark Hurd's recent blog on how AI is bringing innovation to HR.  

  A hat-trick in cricket is when a bowler dismisses three batsmen consecutively.  In futbol (aka soccer), as well as hockey, it’s when an individual player scores three goals in a game. Other sports...

TechExchange

TechExchange: How-to Populate Radio Groups, Checkboxes and Lists in Instant Apps with Data Collected in Oracle Intelligent Bots

article by Frank Nimphius, July 2018 Instant apps are micro applications that you call from a bot and that open in a web view on the mobile device or a tab on a browser.  Technically, instant apps are server side applications that are called from Oracle Intelligent Bots in the context of a bot conversation and that can receive parameters from a bot and return parameters back to it. What's really cool about instant apps in the context of a bot conversation is that they provide functionality consistently across messengers  that otherwise may not even be available in specific messengers.  For example, instant app features provide you options to render charts, upload photos, capture signatures, embed and communicate with remote websites, integrate YouTube and social buttons, display PDF documents and many more. In this article I explain how data information can be passed from a bot in Oracle Intelligent Bots to an instant app and how this data can be used to render a list, a group of radio groups in my example, for the user to select from. The selected value is then passed back to the bot.  Update note:   Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit cloud.oracle.com/digital-assistant READ THE FULL ARTICLE DOWNLOAD SAMPLE BOT & INSTANT APP   Related Documentation Oracle's Product Documentation for Instant Apps https://docs.oracle.com/en/cloud/paas/mobile-autonomous-cloud/use-chatbot/instant-apps.html#GUID-FD89D2F1-CEA4-4AB5-BFFF-77E5294ABCB4 Oracle TechExchange Blog https://blogs.oracle.com/mobile/tech-exchange TechExchange - Using Apache Freemarker Expression in Oracle Intelligent Bots  

article by Frank Nimphius, July 2018 Instant apps are micro applications that you call from a bot and that open in a web view on the mobile device or a tab on a browser.  Technically, instant apps are...

Intelligent Bot Development

Forrester Wave: Oracle Named a Leader in Digital Experience Development

The Q2 2018 Forrester Wave Report for Digital Experience Development Platforms has been released, and Oracle has been named a leader for both its strong current offering and its strong, forward-looking strategy!  Due to the explosive growth and adoption of emerging, interactive channels such as chatbots, Forrester has changed its evaluating criteria when composing its Wave Report, incorporating these new capabilities under the title of “Digital Experience Development,” as opposed to simply “Mobile App Development.”  With Oracle’s strong mobile and chatbot development capabilities as a part of Oracle Autonomous Mobile Cloud Enterprise, Oracle being named a leader is validation of its position in the marketplace. Below are a few choice quotes from the report: "Oracle has seen great adoption of its Mobile Cloud Enterprise platform since building it from the ground up in 2014." "A unified programming model has allowed Oracle to build solid tooling (Visual Builder Cloud Service) to expose these components to a larger audience without going down the proprietary path where other vendors have stumbled in the past." "Oracle is a good fit for companies invested in any number of the existing Oracle clouds as well as those building net-new applications on any of the emerging technology parts of their digital portfolio, such as chat, voice, and even augmented reality." Download the report here, and sign up free trial at cloud.oracle.com to try out Oracle Autonomous Mobile Cloud Enterprise for yourself.

The Q2 2018 Forrester Wave Report for Digital Experience Development Platforms has been released, and Oracle has been named a leader for both its strong current offering and its...

Building a Chatbot to Handle Your Frequently Asked Questions (FAQ)

Guest Author: Grant Ronald, Director of Product Management, Oracle One of the primary benefits of a chatbot is dealing with the "low-fidelity" interactions from your customers, which helps to free up call center resources to deal with inquiries that need that extra human touch.  Frequently asked questions, by their very nature, are common questions that are simply looking for an answer.  "What are your opening times", "Can I overpay on my mortgage", "Do you serve gluten free pizzas".  The FAQs (or QnAs) often already exist, if you know where to find them, so why not bring them into your bot? You might therefore find the new QnA features in Oracle Intelligent Bots as a welcome addition to your chatbot armory.  This allow you to simply upload your existing QnA into a bot and any user input will automatically be searched within this document.  If the input matches a QnA the user will be presented with a carousel of related articles allowing them to view or browse related topics. If this has peaked your interested, check out the introduction and technical deep dive into the QnA Builder capabilities can help your customers straight away!       For more information on Oracle Intelligent Bots, visit oracle.com/bots. To try Oracle Intelligent Bots, a part of Oracle Autonomous Mobile Cloud Enterprise, go to cloud.oracle.com/mobile and click Try for Free.    

Guest Author: Grant Ronald, Director of Product Management, Oracle One of the primary benefits of a chatbot is dealing with the "low-fidelity" interactions from your customers, which helps to free up...

TechExchange

TechExchange: How to Ensure Valid User Date Entries in Oracle Intelligent Bots using BotML and a Custom Component

article by Frank Nimphius, July 2018 Oracle Intelligent Bots provides a DATE entity that bot designers can use to assign and save dates for later use. Though the DATE entity validates dates by their format, it does not check whether the provided date actually exists. For example, February 29th only exists in leap years and February 30th does not exist at all. Assigning a date of February 30th is saved as March 2nd, which from a logical perspective appears to be the right thing to do, but from a business perspective may not be what you want. Given that enforcing valid date entries is important for many businesses, how can you build chatbots that accept date input only if the date really exist? The use of Regular Expression comes to mind, but this is more for detecting valid patterns than a logic that includes leap years and different days in a month. If you cannot use Regular Expressions then the solution obviously needs to be found in JavaScript. A benefit of a JavaScript based solution is hat JavaScript is the programming language of custom components in Oracle Intelligent Bots. In this article I explain how to create a custom bot component that validates date string entries based on a pre-defined date format and the validness of the actual date. If the date input string has passed validation you can then use the System.MatchEntity built-in component to save the date object in a context variable. Once saved in a context variable, using Apache FreeMarker expressions, you can print the date in any format you like. Sounds interesting? Well it is. Figure 1: Valid Date Figure 2: Invalid Date   Update note:   Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit cloud.oracle.com/digital-assistant Read More Read Full Article (PDF) Download Custom Component (ZIP)   Related Articles TechExchange - Custom Component Development in OMCe – Getting Up and Running Immediately https://blogs.oracle.com/mobile/techexchange%3A-master-oracle-intelligent-bots-backend-integration-with-oracle-mobile-cloud-enterprise-like-a-pro  

article by Frank Nimphius, July 2018 Oracle Intelligent Bots provides a DATE entity that bot designers can use to assign and save dates for later use. Though the DATE entity validates dates by their...

TechExchange

TechExchange Quick-Tip: How-to Write And Read User Profile Information Using the Web Client-SDK

article by Frank Nimphius, July 2018 Update: Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit cloud.oracle.com/digital-assistant a common customer requirement for chatbots is the ability to run chatbots from a web site, web application or mobile applications. To simplify integration of Oracle Intelligent Bots in web and mobile applications, Oracle released a client-sdk for web, iOS and Android for download at http://www.oracle.com/technetwork/topics/cloud/downloads/mobile-suite-3636471.html.    Unlike normal SDK, which provide APIs only, the Oracle bot client-sdk provides a complete messenger client, ready for you to use. This means that all you need to do in Oracle Intelligent Bots, is to declaratively create a Web- , Android- or iOS - channel for your chatbot and then use the configuration information you obtain in the client-sdk configuration.  How to e.g. use the web client-sdk is explained in the Readme files of the web-client sdk sample that you can download from OTN. The sample is setup such that you can run it immediately from your local host and access a chatbot on the public cloud. Very cool - you want to check it out. How to Write User Profile Information Commercial Messengers like Facebook provide information about the user that you can access using the "profile" system variable in Oracle Intelligent Bots. ${profile.locale} for example gives you access to the user locale while ${profile.firstName} and ${profile.lastname} give you access to the user name. The same is possible using the web client-sdk, except that you - as the web application developer - pass this information to the bot when initialising the chat conversation. For this you have a JavaScript API available, which is Bots.updateUser( ... ).  The Bots.updateUser( ... ) function takes a JSON object argument, for example  Bots.updateUser(             {                 "givenName":"Frank",                  "surname":"Nimphius",                  "email": "frank.nimphius@oracle.com"                 "properties": {                     "locale": "de",                       "profession": "Product Manager"                 }             }         ) How to Read User Information You read the user information using the ${profile.<property name>} expression. The "givenName" and "surname" properties are accessible in the bot as ${profile.firstName} and ${profile.lastName}. The "email" property (which is optional) can be accessed from ${profile.email}. The custom properties added to the properties object too are accessible as ${profile.<property name>}, which is not so obvious. In fact the channel implementation will flatten the information to a single profile object. So the "preferredLocale" becomes accessible as ${profile.preferredLocale}. There is no limit and no restriction set to the number and names of the properties you add to the properties object.  The BotML code is from a very simple sample bot that only reads and displays the name, mail and preferred locale from the user profile. At runtime, using the web client-sdk sample (the one you can run immediately after downloading) the information of the BotML above is displayed as shown in the image below   Related Articles 10 Tips for Chatbot Success     

article by Frank Nimphius, July 2018 Update: Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit cloud...

TechExchange

TechExchange Quick-Tip: How-to add the user query string to the Q&A optionsLabel property on the System.Intent component

article by Frank Nimphius, June 2018 Update: Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit cloud.oracle.com/digital-assistant What this quick tip is about Finding a good title for this quick tip is probably harder than to explain the solution. So allow me to use what feels like a thousand words before showing you two images that support my point.  In Oracle Intelligent Bots you can configure the System.Intent component with Q&A so that the user query not only gets processed by the intent engine but also passed on to the Q&A feature. In a perfect scenario the user query is clear and points to either an intent to be resolved and handled by the intent engine or a question handled by the Q&A feature. Often it may happen that both, hen intent engine and the Q&A feature, find a match for the user query. Then, depending on the System.Intent component configuration, Oracle Intelligent Bots shows a list for the user to either select and execute the intent, or display the Q&A feature to select an answer.  The following System.Intent configuration is what you get when you select the "Intent with Q&A" template from the "+ Component" button option in the dialog flow editor. Note that I removed properties that are not relevant for this quick tip.    intentWithQnA:     component: "System.Intent"     properties:           variable: "iResult"        confidenceThreshold: 0.7       optionsPrompt: "What do you want to do?"             # Set to true to enable QnA. "qna" action must be specified when       # this property is defined.        qnaEnable: true          # qnaSkipIfIntentFound is boolean flag (defaults to false) that d       # etermines whether attempt is made to query QnA or give QnA as an       # option if intent match is found.       qnaSkipIfIntentFound: false       # optionsQnaLabel is label of the action in the options that will       # take the user to the QnA component to display the matches (optional,       # defaults to 'Questions').       optionsQnaLabel: "Questions"        transitions:       actions:         ...         qna: "state_that_has_System.QnA_configured_as_a_component"         unresolvedIntent: The code above produces the following display for a user query that matches a both, an intent and a question  I agree, the label "Questions" to view the Q&A answer for the query could have been chosen better. So what about  Here you see two improvements Improvement 1: The Q&A access label contains the initial user query Improvement 2: The label is truncated so that it fits into a single line  And this is what the quick tip is all about. See how difficult it was to find a title that explained it all? The Solution There a two flavours to this solution: One is to use a text component in front of the intent component. The other is to use intent components only.  If you are familiar with Oracle Intelligent Bots, then you know that the user query string can be accessed from ${iResult.value.query} after it is processed by the System.Intent component. And exactly the "after it is processed" is a problem because the user query string does not resolve with ${iResult.value.query}  added to the optionsLabel property of the System.Intent component. The rendering just happens to early. So how can you solve this? One option to solve this problem is to have the user adding the query string to a System.Text component first that then saves the text in a context variable of the dialog flow that you reference from the sourceVariable property of the System.Intent component. However, the System.Text component is not headless and always prints a prompt. If you can live with this, then you have your solution: Just use  ${name_of_context_variable.value} as an expression reference in the optionsLabel property of the System.Intent component.  A second option (though a bit of a hack) is to use two System.Intent components in a direct sequence. The first System.Intent component does nothing else than saving the query string into the iResult variable. It then navigate straight to the second System.Intent component that know has access to the string getUserQuery:     component: "System.Intent"     properties:       variable: "iResult"     # don't deal with any intent detection but navigate      # to next state     transitions:       next: "intentWithQnA" intentWithQnA:     component: "System.Intent"     properties:           variable: "iResult"        confidenceThreshold: 0.7       optionsPrompt: "What do you want to do?"             # Set to true to enable QnA. "qna" action must be specified when this property is defined.        qnaEnable: true          # qnaSkipIfIntentFound is boolean flag (defaults to false) that determines whether attempt is made       # to query QnA or give QnA as an option if intent match is found.       qnaSkipIfIntentFound: false       # optionsQnaLabel is label of the action in the options that will take the user to the QnA component to       # display the matches (optional, defaults to 'Questions').       optionsQnaLabel: "See FAQ for: ${iResult.value.query}"        transitions:       actions:         # map the intents to states         ...         qna: "state_that_has_System.QnA_configured_as_a_component"         unresolvedIntent: ... This now appends the query string as a label to the options list even if System.Intent is the first component in the flow.    So what is the cost of this solution?  The cost is that the intent engine is called twice, which should not cause major delays is the response. If you would experience a delay then your fallback is to use the solution with the System.Text component.  While the label in the image above looks good, still we want to truncate the query string so it looks a bit better (it should only be a hint for the user, not more). And this is where Apache FreeMarker template expressions serve us well. optionsQnaLabel: "See FAQ for: ${iResult.value.query?string[0..13]?ensure_ends_with('...')}"   The Apache FreeMarker expression ?string[0..13] truncates the string from its first character to the 13th. The second expression ?ensure_ends_with('...') then adds the trailing '...'.  Summary To create labels for the System.Intent QnA list option that include the user query string you have two options System.Text saving the text into a context variable that you reference from the System.Intent sourceVariable and optionsLabel properties A second System.Intent component that makes the user query string available to the iResult variable Using Apache FreeMarker template expressions, which work for both solutions explained in this article, you can then manipulate the label.    Related Article: TechExchange - Using Apache Freemarker Expression in Oracle Intelligent Bots TechExchange: How-to make System.Switch case insensitive with Apache FreeMarker  

article by Frank Nimphius, June 2018 Update: Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit cloud...

TechExchange

TechExchange: How-to Build Card Layout Responses from Custom Components

article by Frank Nimphius, June 2018 Using the Common Response component (CR component) in Oracle Intelligent Bots, bot conversation designers can build arbitrary complex bot responses declaratively. A very popular bot response is the card layout that displays multiple cards in a vertical or horizontal order with each card displaying a title, a description, an imagen an optional URL and one or more action items for the user to tap on. While the recommended conversation design strategy is to use the CR component whenever possible, there exist use cases in which a custom component must render its own UI. Still displaying data in cards remains a popular layout. In this article I explain how to display a card layout from a custom component  and how you handle post back actions (buttons on a card) and user text entries.  The article also contains the complete code listing of the example used in the article.    Update note:   Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit cloud.oracle.com/digital-assistant READ FULL ARTICLE (PDF) Download Custom Component (ZIP) Related TechExchange Articles TechExchange - Real World Insight into KeepTurn and Transition in Intelligent Bots TechExchange - Custom Component Development in OMCe – Getting Up and Running Immediately TechExchange: Master Oracle Intelligent Bots Backend Integration with Oracle Mobile Cloud Enterprise like a pro    

article by Frank Nimphius, June 2018 Using the Common Response component (CR component) in Oracle Intelligent Bots, bot conversation designers can build arbitrary complex bot responses declaratively. A...

The Mutua Madrid Open Creates the MatchBot: Artificial Intelligence at the Service of Fans

Authored by Fabian Gradolph, Head of Corporate Communications, Oracle Iberia The Mutua Madrid Open, one of the main tournaments in the world held in Madrid in May of every year, has launched a chatbot equipped with Artificial Intelligence to speed up communication with tennis fans. The chatbot, a computer program that uses artificial intelligence to maintain natural conversations with users, offers information on the development of the event, players, schedules, and results, as well as details on guest services, event access and parking. It is also a channel for ticket sales and discounts on merchandise. The MatchBot, as it has been baptized, is available on the tournament's iOS and Android mobile applications, as well as on the tournament website. It is also possible to exchange information with the chatbot through Facebook Messenger and Twitter if using direct messaging. This innovation makes the Mutua Madrid Open the first ATP Masters 1000 or WTA Premier tournament to incorporate a chatbot, whose purpose is to enrich the user experience and facilitate necessary and relevant information about the event at all times. The decision to use a chatbot to engage with fans is part of the strategy of the tournament's organizers to bet on innovation, youth and technology. Thanks to the recent advances in Machine Learning, chatbots can learn from experiences accumulated from interacting with different users in different situations. In this way, the experience offered to the fans is getting better, providing answers that are more precise and correct. To complete this project, Mutua Madrid Open 2018 relied on Oracle, and Oracle partners Crambo and BPM SOA Solutions (BSS). Thanks to Oracle Intelligent Bots, a part of Oracle Autonomous Mobile Cloud Enterprise, tennis fans will be able to interact with the tournament in a much more agile and natural way.   For more information on Oracle Intelligent Bots, visit oracle.com/bots. To try Oracle Intelligent Bots, a part of Oracle Autonomous Mobile Cloud Enterprise, go to cloud.oracle.com/mobile and click Try for Free.

Authored by Fabian Gradolph, Head of Corporate Communications, Oracle Iberia The Mutua Madrid Open, one of the main tournaments in the world held in Madrid in May of every year, has launched a chatbot...

Intelligent Bot Development

Introducing Oracle Autonomous Mobile Cloud Enterprise

If you’ve been reading this blog lately, you know we are in the early innings of artificial intelligence (AI). It’s good to see Oracle at bat, and having an early lead leveraging AI and machine learning (ML) within an enterprise environment.    Following up on the ground breaking release of Oracle Autonomous Database in March and then the first set of Autonomous Cloud Platform Services  that included Analytics Cloud, Integration Cloud and Visual Builder (May 7th), it’s exciting to be part of the next wave of services that includes the Mobile Cloud - which by the way, includes Intelligent Bots!   Do you recall the very first release of Oracle Mobile Cloud Service back in Sept 2013? Since then, the product has garnered market leadership position, customer accolades, and named leader by highly regarded analysts including Gartner, Forrest and Ovum. As Oracle is going all-in with mobile and cloud, it’s only fitting these waves of innovative releases, Oracle is all in on AI.    Lets touch on a couple of cool new features for this release.    QnA Builder - take your standard frequently asked questions document, import it into QnA Builder, and automagically create a chatbot to serve those needs. No more expecting customers to read an FAQ, or wasting valuable staffing resources responding to the same, repetitive questions. Let the chatbot deal with that - 24x7, 365 days a year!     And if the chatbot gets out of its depth of knowledge (we are not yet at the level of singularity - no one is) we’ve built in a bot-to-agent handoff, to better serve your customers, while scaling up operations. Just as machinery made people more efficient, so will AI-driven chatbots.     AI and chatbots are the future, and Oracle is taking that out of the lab and into the enterprise. Just ask Exelon, Bajaj Electricals, or the University of Adelaide and they’ll gladly laude the benefits of chatbots!   Learn more at oracle.com/bots and then try it out at cloud.oracle.com/mobile.     For real-time news, follow us on Twitter @OracleMobile. And don't forget to bookmark this blog. :)

If you’ve been reading this blog lately, you know we are in the early innings of artificial intelligence (AI). It’s good to see Oracle at bat, and having an early lead leveraging AI and...

Mobile Content

Oracle MAF 2.5.1 Released

Paul Johl | Consulting Product Manager Oracle Mobile Application Framework (MAF) release, 2.5.1 This is a minor release containing a number of platform upgrades and enhancements, including the following: This release updates the Cordova engine versions that MAF uses (Android: 7.0.0 and iOS: 4.5.4). On iOS and Android platforms, applications can be suspended or terminated by the operating system if they are not foreground applications or when the device is locked. We have added APIs to wrap background tasks so the application is not suspended while the tasks are in operation. For more information, see Allowing Background Thread Processing on iOS and Android Devices. On the Android platform: You must install Android API Level 27 as described in Setting Up Development Tools for the Android Platform. You can specify the CPU type for deployment, see Deploying a MAF Application to the Android Platform. MAF now declares the default hostname verification process as STRICT. You can override this, as described in How to Update Connection Attributes of a Named Connection at Runtime. MAF now removes all session cookies when a user logs out of a MAF application. You can override this, as described in How to Update Connection Attributes of a Named Connection at Runtime. MAF now provides a new core plugin, Google Geolocation Play Services, as described in Introduction to Using Plugins in MAF Applications. On the Universal Windows Platform, the MAF for Windows deployment profile can now invoke a Select Custom Color dialog for the splash screen. See Deploying a MAF Application to the Universal Windows Platform. Starting with this release, you can specify the languages supported by your MAF application. Only the supported languages you specify for the application are reported on the application stores and upload consoles. For more information, see Specifying Supported Languages for Your Application. This release removes the amx:inputDate component. We recommend that customers use the input type="date" element. MAF now uses a thread pool to manage processing whereas previously it used one static thread per application feature. This change optimizes memory usage by MAF applications. Please refer to the What's New section of the developer guide for detailed information about the changes and how they may affect you. For additional release information, such as release notes and certification matrix, please refer to the MAF documentation on OTN.  We always encourage you to upgrade to this latest MAF release as soon as possible! Paul Johl | Consulting Product Manager

Paul Johl | Consulting Product Manager Oracle Mobile Application Framework (MAF) release, 2.5.1 This is a minor release containing a number of platform upgrades and enhancements, including the...

TechExchange

New Version of Oracle Mobile Cloud is now Available!

We at the Oracle Mobile and Intelligent Bot Platform team are please to announce the availability of a new version of the Oracle Mobile Cloud.  Oracle Autonomous Mobile Cloud Enterprise is now generally available, and are in the process of rolling out to various data centers around the world.  This latest version of the Oracle Mobile Cloud includes the following major features: Adding QnA/FAQs to Your ChatBot without writing any code New entity type called Composite Bag that can group related entities together to simplify conversation flow and enhance user experiences. Auto-generation of Custom API implementations to accelerate API development And perhaps most significant enhancement is in the underlying infrastructure, as Oracle Mobile Cloud is now Autonomous.   This means: Oracle, not you the customer, manages the patching, operations, backup, and maintenance of the environment. One click provisioning of new Mobile Cloud instances Auto scaling and recovery Zero downtime maintenance and patching HA and DR Ready Built on the robust Oracle Cloud Infrastructure (OCI) To get your own environment, simply request a free cloud credit trial here. Here is a short video that shows you how easy it is to get your own Autonomous Mobile Cloud Enterprise environment. And if you have any questions and encounter any issues, simply visit our revamped Mobile and Intelligent Bot Forum for community support.  The revamped forum has a new link, so be sure to bookmark this new site. Lastly, just as a reminder, there are a rich set of resources to help you to learn the platform - YouTube Videos and Online Training.

We at the Oracle Mobile and Intelligent Bot Platform team are please to announce the availability of a new version of the Oracle Mobile Cloud.  Oracle Autonomous Mobile Cloud Enterprise is now...

TechExchange

TechExchange: Running and Debugging Custom Components Locally

article by Martin Deh, May 2018 With Oracle Intelligent Bots, each state in the dialog flow invokes a component to perform actions that range from basic interactions like taking user input or providing a bot response, to complex interactions that, for example, call out to remote services for backend integration. For standard bot functionality like setting variables and handling user interaction, Oracle Intelligent Bots provides a set of built-in components. For anything that you don't find a built-in component for and for backend system integration you are required to write a custom component. While the runtime of custom components is recommended to be in a container such as Oracle Mobile Cloud Enterprise (OMCe) for testing and production, the development experience when writing components in such environments is not as good as it could be. Debugging custom component code is one example that can be improved if development was outside these containers. In addition, any changes applied to the code when using OMCe during development require redeployment of the custom component, which is time consuming. In this TechExchange article, I describe how to enable the OMCe Intelligent Bots samples to run locally in development. I will also show how debugging can be locally without losing any of the functionality provided by OMCe. Update note:   Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit cloud.oracle.com/digital-assistant READ THE FULL ARTICLE Related Articles: TechExchange - Custom Component Development in OMCe – Getting Up and Running Immediately TechExchange: Master Oracle Intelligent Bots Backend Integration with Oracle Mobile Cloud Enterprise like a pro TechExchange: Setting Up a Local Environment for Developing Oracle Intelligent Bots Custom Components  

article by Martin Deh, May 2018 With Oracle Intelligent Bots, each state in the dialog flow invokes a component to perform actions that range from basic interactions like taking user input or providing...

TechExchange

TechExchange Quick-Tip: Accessing Attribute Names and Values of a Data Object

article by Frank Nimphius, May 2018 Update: Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit cloud.oracle.com/digital-assistant In this quick tip I show you how to use Apache FreeMarker (https://freemarker.apache.org/docs/index.html) expressions in Oracle Intelligent Bots to list the attribute names of a data object and to access the attribute value.  Data Objects in Oracle Intelligent Bots Chatbots interact with remote services to complete a task and to display results. In Oracle Intelligent Bots, result data objects are queried by custom components and saved to context variables in the dialog flow. To save data from a custom component in a context variable you use the following call conversation.variable('name_of_variable', js_data_object); The data you save may be an array of objects or a single objects. The context variable you save the information to must be defined at dialog flow design time and must be of type "string". Accessing Attributes and Values of an Object For this sample, we will set the data object in the dialog flow of Oracle Intelligent Bots directly to make it easy for you to reproduce the solution. The solution actually works with Oracle Intelligent Bots version 18.1.5 and above.  Note: if your data object is an array of objects then you simply add the index of the object in the array to the expressions shown below. e.g. data.value[0] accesses the first object in an array. Using Apache FreeMarker you can also determine the length of an array to iterate over all its contained objects. For the sample in this blog article, a single object will do though context:   variables:     data: "string"     selected_key: "string" states:   #Create a data object with attribute : value pairs in the dialog flow #to simulate data passed from a remote service setValues:     component: "System.SetVariable"     properties:       variable: "data"       value: {"FirstName":"Frank","LastName":"Nimphius","RegistrationId":"1234" }         #Display the list of attributes in a System.List component for the user to choose   variableList:     component: "System.List"     properties:        variable: "selected_key"       prompt: "Choose a key"       options: "${data.value?keys?join(',')}" #display the selected data object attribute and its value   displaySelectedValue:     component: "System.Output"     properties:       text: "You selected attribute \"${selected_key.value}\" with a value of \" ${data.value[selected_key.value]} \""       keepTurn: true The code above uses two Apache FreeMarker expressions. The first expression is used to create the list of attributes to display in a System.List component. Notice the use of the use of ?keys and ?join(,) expressions. The first expression reads the object attributes, whereas the second flattens the array into a comma separated string. The second use of Apache FreeMarker expressions reads the value of the selected attribute (the key) to obtain the attribute value.  ${data.value[selected_key.value]} Displaying an output list Not always it is that you want to display attribute names and values in a list. Often times you just want to "dump" it e.g. to show a booking or purchase confirmation. And this too can be accomplished easily using Apache FreeMarker templates in Oracle Intelligent Bots  printReceipt:     component: "System.Output"     properties:       text: "<#list data.value?keys as k> \"${k}\" has a value of \"${data.value[k]}\"\n</#list>"     transitions:        return: "done" Here Apache FreeMarker expressions are used in the context of a System.Output response message. Notice the <#list> ... </#list> elements that are Apache expressions to print a list. The list addresses the data object and assigns the array of attributes (using the ?keys expression) to a variable "k". The variable "k" is the iterated over to print the name of the attribute and the value of the attribute.  The image below shows how this little example looks in the racle Intelligent Bots embedded tester.                                     Related Articles TechExchange - Using Apache Freemarker Expression in Oracle Intelligent Bots TechExchange: How-to make System.Switch case insensitive with Apache FreeMarker TechExchange - Custom Component Development in OMCe – Getting Up and Running Immediately  

article by Frank Nimphius, May 2018 Update: Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit cloud....

TechExchange

TechExchange Quick-Tip: Adding Default Transitions to Dialog Flows

article by Frank Nimphius, May 2018 Update: Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit cloud.oracle.com/digital-assistant To simplify the definition of common navigation, but also to provide fallbacks in case that states or component don't handle navigation, Oracle Intelligent Bots 18.2.3* and later provide a new feature, which is the ability for the bot designer to specify default navigation handlers.    About Dialog Flow Navigation in Oracle Intelligent Bots Bot conversations are defined as states in Oracle Intelligent Bots. Each state is associated with a component that renders the bot UI for a user input or a bot response, or that executes logic. A conversation therefore is defined as the linear or non-linear sequence in which states are visited in the context of a dialog flow. For this, Oracle Intelligent bots provides the following options to "trigger" navigation  Empty Navigation - Sequential navigation that navigates from one state to a next as they appear in the dialog flow going from top to bottom doesn't require any explicit transition directive. In other words, the absence of an explicitly defined state transition always leads to sequential navigation. For example, the following two pseudo state definitions lead to sequential navigation as they don't specify a next state as the target. state_name:   component: "component_name"   properties:      component_property: "value"      component_property: "value" or state_name:   component: "component_name"   properties:      component_property: "value"      component_property: "value"   transitions: {}   Actions - Actions allow a component, system or custom, to provide hints to the bot designer as to where navigation should go next. A component can return as many actions as needed. An action is a string that the component returns when it finished processing for the dialog flow to procede. However, its you the bot designer who decides whether or not use those hints or ignore them (e.g. by using empty navigation for sequential navigation). If you want to use the component hint, then the state definition looks as shown below state_name:   component: "component_name"   properties:      component_property: "value"      component_property: "value"   transitions:      actions:       action_string1: "go_to_state1"       action_string2: "go_to_state2" The example above configured the "actions" transition. "action_string1" and "action_string2" are strings returned by the component associated with the current state. The "go_to_sate1" and "go_to_sate2" names are actually the name of states the dialog engine navigates to when an action string is returned by the component. As an example, a component that evaluates regular expressions may return "match" and "nomatch" as action string. Bot designers map those action names to state names that would handle the reported outcome. The navigation performed with actions can be sequential but also non-sequential, which means it can skip next states or event jump back to a previous state.  Note that you can define as many actions as you want. There is no restriction to the number of actions. The Common Response component (CR component), for example, allows you to define your own actions strings at design time.  Next - The "next" transitions does what is written on the tin: it navigates to a named next state. The state that it navigates to when the component finished processing may be the next state in the dialog flow or any other flow defined. Lets have a look at an example state_name:   component: "component_name"   properties:      component_property: "value"      component_property: "value"   transitions:     next: "go_to_state" A variant of the BotML sample above is to use expressions to conditionally navigate to a next state state_name:   component: "component_name"   properties:      component_property: "value"      component_property: "value"   transitions:     next: "${variable}" With this you could, for example, make navigation dependent on the user locale: next: "${profile.locale}_information". For a German user the navigation would be to a state with the name "de_information" while for an English user navigation would be to a state with the name "en_information"   Error - Components may throw an error if they cannot process. Reason for this could be a problem in the component (seldom) or a failure in a dependent system (more likely). Bot designers could use the error transition to gracefully handle scenarios in which unexpected happens. Lets have a look at an example state_name:   component: "component_name"   properties:      component_property: "value"      component_property: "value"   transitions:     error: "componentErrorHandler" In this example "componentErrorHandler" is a dialog flow state that handles component errors. If you define error transitions on the component then you have a good chance of handling the problem gracefully because the state you navigate to may be explicitly defined to handle this specific state's problems.   Return -  The return statement does not transition explicit. However, it resets the conversation in that it cleans context variable values and internal state. So the next user input will happen at the beginning of the dialog flow. In other words, the navigation issued by the "return" transition statement is to the top of the dialog flow after cleaning up all context state.  state_name:   component: "component_name"   properties:      component_property: "value"      component_property: "value"   transitions:     return: "done" Note that the string value added to the return statement is not currently used. You can use "done" as in the sample or the name of the state that exits the conversation. Its up to you.  Precedence There must be a reason for why the previous paragraph listed all the options for navigation in Oracle Intelligent Bots. The reason is that defining default navigation does make more sense if you understand the precedence that a transition type has over the next. The "weakest" navigation is empty navigation. This means that any other transition directive would be followed first if it matches. Only if none of the other transition definitions matches then empty navigation is used to navigate to the next state. "Next" is stronger than empty navigation but weaker than "actions". If a next transition is defined then empty navigation never happens for a component and state. However, if actions are defined and if a matching action string is returned by the component then "next " is not used.  "Actions" and "error" require the component to return a specific outcome, which means they don't work otherwise. In this case "next" and then "empty navigation" would determine the next state to navigate to.  With the above it should be clear, that transition directives could be mixed and matched. For example the following BotML code navigates to the returned action or error directive. If none of these are true, then it follows the "next" transition definition state_name:   component: "component_name"   properties:      component_property: "value"      component_property: "value"   transitions:     next: "go_to_state_next"    error: "go_to_error_handler"    actions:       action_string1: "go_to_state1"       action_string2: "go_to_state2" Default Transitions Starting Oracle Intelligent Bots 18.1.3, you can define a default transition that is called when an action, error or next transition is not defined on the component but the condition for one of these is met. For example state_name:   component: "component_name"   properties:      component_property: "value"      component_property: "value" The above BotML pseudo code uses empty navigation since no other transition directive is defined. Similar, ... state_name:   component: "component_name"   properties:      component_property: "value"      component_property: "value"   transitions:     actions:     actions:       action_string1: "go_to_state1"       action_string2: "go_to_state2" ... the above BotML pseudo code would perform empty navigation if the action string returned from the component does not match "action_string1" or "action_string2". To prevent empty navigation thus is one use case that a default transition can handle. Another use case is to define a global error handler so that you don't need to specify the error transition on each and every state definition. You only would define local error handlers if you knew how to handle possible errors for a state. Both pseudo BotML code sample don't specify an error handler, which means that a user-unfriendly system error is displayed when a problem occurs. Here too a default transition helps. Defining Default Transitions Default transitions are defined below the context section as shown below: context:   variables:     iresult: "nlpresult" defaultTransitions:   error: "DefaultErrorHandler"   next: "reportMissingNavigationDirective"   actions:     unexpectedAction: "HandleUnexpectedAction" states:   ...   DefaultErrorHandler:     component: "System.Input"     properties:       prompt: "I am sorry, but I discovered a problem. Do you want me to direct you to an agent?"       variable: "yesNo"     transitions:       next: "handleAgentRequest"   The above BotML code defines three default transitions: The default error handler is called whenever no error handler is defined on a component state. The unexpectedAction is an action string returned by several components like System.List and CR component. So whenever the action is not defined on the component it will be handled by the default transition. The "next" default transition handles cases in which empty navigation is performed. You can use this directive e.g. to report errors in the bot dialog flow design that lead to empty navigations, which may lead to unwanted navigation. 

article by Frank Nimphius, May 2018 Update: Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit cloud....

TechExchange

TechExchange: Displaying the Top 3 Runner-Up Intents in case of Unresolved Intent Resolution

article by Frank Nimphius April 2018 In an earlier TechExchange sample from November 2017 titled "Strategy for Handling Unresolved Intent Resolutions So Users Remain Unstuck" we demonstrated a technique to display a list of intents that got resolved with more than 0% confidence in cases where intent resolution did not succeed passing the confidence threshold set on the System.Intent component. With the current version of Oracle Intelligent Bots there exists another option to handle the very same use case. In addition, it turned out that customer usually only want to display a specific set of "runner-up" intents as options in a list. This article is a revised version of the previous publication showcasing an implementation that displays the top-3 intents for an otherwise unresolved intent resolution. If there are no 3 intents to display then the solution shows as many as possible. And if there is no intent that gets resolved to above 0% then a single help item is shown for the user to find the help she may need. The solution uses the Common Response Component (CR component) for displaying the list along with Apache FreeMarker expressions to conditionally render list items and to sort the list of intents so the top three really have the highest confidence scores. And there is more for you to learn. Intent names usually don't make good names to display in a list of values. This sample shows you how the intent names can be used as a key in a resource bundle that allows you to display user-friendly list option labels and to internationalize the solution. The figure below shows the solution in the Oracle Intelligent Bots tester. As you will learn by reading the full article and by trying the sample bot, the list shows two resolved intents plus a help option that is always shown (but that can be changed to show conditionally as well) Update note:   Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit cloud.oracle.com/digital-assistant READ THE FULL ARTICLE  (PDF)   DOWNLOAD AND INSTALL THE SAMPLE BOT Note: To import and run the bot you at least Oracle Intelligent Bots version 18.2.3 is needed. Though the outlined solution works with any existing bot version, the export file does not allow import to older versions. To import the bot, open the Oracle Intelligent Bots dashboard and use the Import button. Then open the imported bot and press the Train button to train the model. Once done, run the tester with phrases like "how much do I have" or "what money"   Related Articles and Samples TechExchange: Strategy for Handling Unresolved Intent Resolutions So Users Remain Unstuck TechExchange - Using Apache Freemarker Expression in Oracle Intelligent Bots    

article by Frank Nimphius April 2018 In an earlier TechExchange sample from November 2017 titled "Strategy for Handling Unresolved Intent Resolutions So Users Remain Unstuck" we demonstrated a...

TechExchange

TechExchange: Randomizing Responses from your Bot with Oracle Intelligent Bots

Article by Grant Ronald, April 2018 One element to the success of your bot is the tone and voice your bots uses. Informal and “chatty” response may be a more engaging and better fit with your brand. In line with this approach, you would probably want to ensure your bot replies are not formulaic and predictable. In this article I demonstrate how you can easily randomize the responses from your bot. Randomizing the responses from your bot There are many different ways you can achieve this functionality but to keep the implementation as simple as possible I’ve done so by defining an array win the BotML and then using a simple pseudo random number generator (based on date/time) which picks one of your messages defined within the array. Furthermore, it’s quite simple to extend the array to include different message for different points in the conversation: welcome, goodbye, not understanding a response etc. The sample is simple and self-documenting. Import the bot and run it you will get three random messages for welcome, unresolved and goodbye. The only limitation with the code shown below is that since it takes the last digit of a time then it would expect 10 (0-9) possible messages within the message array Update note:   Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit cloud.oracle.com/digital-assistant Read the Complete Article Download the Sample Bot (use the bot "Import" button) Related Content TechExchange - Using Apache Freemarker Expression in Oracle Intelligent Bots   

Article by Grant Ronald, April 2018 One element to the success of your bot is the tone and voice your bots uses. Informal and “chatty” response may be a more engaging and better fit with your brand. In...

TechExchange

TechExchange Quick-Tip: Understanding the profile.timezoneOffset variable in Oracle Intelligent Bots

by Frank Nimphius, April 2018 Update: Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit cloud.oracle.com/digital-assistant Oracle Intelligent Bots profiles user profile information that includes firstName, lastName, locale and timezoneOffset information. From all of these, the timezoneOffset option appears to be the least understood. profile.timezoneOffset 1-0-1 The timezoneOffset variable is passed from the messenger to the bot. You can access the profile.timezoneOffset from anywhere in the dialog flow using the  ${profile.timezoneOffset} expression. The result string presents the time offset the bot user has compared to the Coordinated Universal Time (UTC). Using UTC as a reference you can always compute the time for a specific location to match the user time. For example, if your business is in the US but you need to consider the local user time for a transaction, then this can be calculated based on the knowledge you have about the timezoneOffset.  To print the user time offset, you can use a dialog flow state similar to this:   printTimeZoneOffset:     component: "System.Output"     properties:       keepTurn: true       text: "${profile.timezoneOffset}" I, for example, am based in Germany and therefore for me, as the bot user, the messenger client independent offset is printed as 7200000. The time offset is in milliseconds, which means that apparently in Germany I am 2 hours ahead of UTC time.  So how do you compute this in Bot ML? The trick is to know that the timezone difference is returned as a string and that it needs to be coerced into a number to be able to compute the offset in hours.  computeOffsetInHours:   component: "System.Output"     properties:       text: "${profile.timezoneOffset?number / 3600000}" Notice the ?number expression, which is an Apache FreeMarker Expression. Accessing time offset information from a custom component Great, you can access the profile.timezoneOffset from BotML. But what this information is needed in a custom component? Well one option is to create a custom component input parameter that the bot designer provides the offset information to. The other option is to access the profile variable directly from the custom component using the custom component SDK. var timeOffset = conversation.variable("profile.timezoneOffset"); UTC vs. GMT The Coordinated Universal Time provides time information equivalent to Greenwich Mean Time (GMT). In fact UTC is the same time then GMT. While no country or timezone officially uses UTC, some countries for for GMT. Neither UTC nor GMT change for daylight saving, which means the time information stay consistent over a year. Countries that use GMT instead switch to another timezone, like the UK that switches to BST (British Summer Time) when it comes to daylight saving.  Oracle Intelligent Bots DATE entity The Oracle Intelligent Bots DATE entity does return date information in UTC milliseconds. At current, DATE does not consider the user timezoneOffset. So asking the bot to book a table for tomorrow, the extracted information is the date of tomorrow with the current time in UTC. To print the date and time for the user time zone, you need to add the time zone offset to the time information as shown below. computeBookingDateTime:   component: "System.Output"   properties:     text: "${(iResult.value.entityMatches['DATE'][0].date + profile.timezoneOffset?number?number_to_datetime}"   transitions: {} Notice the "iResult.value.entityMatches['DATE'][0].date" expression " that reads the extracted DATE information from the NLP result variable. After calculating the user time, you use the Apache FreeMarker "?number_to_datetime" expression to format the output to the ISO date format. The printed output in my case was: Apr 14, 2018 1:37:35 PM Note: Have a look at the Apache FreeMarker Manual for how to change the printed date to other formats A known problem As the time of writing, the integrated tester returns the timezoneOffset incorrectly as a difference (prefixed with "-" ) for countries that are ahead of UTC. Facebook Messenger and other messengers that add this offset information do it correctly though. So don't be confused when using the tester. 

by Frank Nimphius, April 2018 Update: Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit cloud.oracle...

TechExchange

TechExchange: How-to create a Star-Rating UI in your Bot Conversation

Article by Frank Nimphius, April 2018 Update note:   Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit cloud.oracle.com/digital-assistant It is common practice in surveys or requests for feedback on the web to show a star rating widget for users to select between 1 – 5 (and sometimes up to 10) stars they would give to judge the quality of a service, the solution described in an article or their satisfaction with a product they purchased. A star-rating option also makes sense to show at the end of a bot conversation for bot owners to collect analytic information about the quality of a bot conversation, or within as part of a conversation. And finally, a star-rating component is a great example of how good visual design makes the conversational interface even easier to use and less error prone. Oracle Intelligent Bots does not provide a system component to perform star-ratings. However, it provides the Common Response component, a system component with super powers, that you can use for implement this requirement. In this article I explain how you build a star-rating UI using the Common Response component (CR component) with Oracle Intelligent Bots in Oracle Mobile Cloud Enterprise. Additional "tricks" you learn include how to implement pagination for lists you create using the Common Response Component. Pagination is helpful when lists otherwise become too long or if messenger clients restrict the size of action lists like in Facebook Messenger   Downloads Download the full article The sample bots can be imported to Oracle Intelligent Bots using the "Import Bot" button in the dashboard. After importing the bot, open it and run it in the tester by simply typing "Hi". You can then change the range size settings as explained in the article. The Bot imports are ZIP files.  Download Code Sample (Bot) Download code sample optimised for FB (bot) Related Articles TechExchange - Custom Component Development in OMCe – Getting Up and Running Immediately TechExchange - Using Apache Freemarker Expression in Oracle Intelligent Bots TechExchange: How-to Populate a Common Response Component Iterator from a Custom Component    

Article by Frank Nimphius, April 2018 Update note:   Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more,...

Intelligent Bot Development

Intelligent Chatbots for Retail and CPG

As mobile app fatigue grows and mobile users concentrate their time on their devices to a few applications, among them messaging apps, it's logical that businesses can no longer rely on their own native apps for customer engagement.  Instead, companies must follow customers onto messaging platforms and establish presences there, 24/7, in order to engage effectively. This growth of messaging apps and the need for businesses to always "be on" means that chatbots have become the newest and most critical channel for companies to engage employees and customers. Whether it's responding to a request to return an item at a late hour, or whether an employee needs a real-time update of inventory stock while evaluating a brick-and-mortar location, businesses need solutions that are automated, scalable, and that provide personalized responses to a variety of business questions, in real-time, preferably within the context of a normal conversation.  Artificial intelligence is now at the level where intelligent chatbots can use machine learning and natural language processing to provide these services to businesses, their customers, and their employees.  This breakthrough in technology is especially beneficial for the Retail and CPG industries. To learn how it's beneficial, I invite you to watch these two on-demand webcasts, where I will discuss, and demonstrate, how your organization can create a comprehensive mobile strategy around intelligent bots, followed by a Q&A.  For more details on Oracle's Intelligent Bot solution, please visit oracle.com/bots.   Oracle Webcast: Intelligent Chatbots for the Retail Industry Oracle Webcast: Intelligent Chatbots for the CPG Industry

As mobile app fatigue grows and mobile users concentrate their time on their devices to a few applications, among them messaging apps, it's logical that businesses can no longer rely on their...

TechExchange

TechExchange Quick-Tip: How-to use the maxPrompts property for input validation

by Frank Nimphius, March 2018 Update: Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit cloud.oracle.com/digital-assistant About the maxPrompts property The maxPrompts property is exposed on Oracle Intelligent Bots built-in input components like System.Text, System.List and System.CommonResponse. It takes a numeric value indicating the maximum number of attempts allowed for a user to provide valid data input. If the allowed number of attempts is exceeded by a user, then the dialog engine performs navigation to a pre-configured "cancel" state that helps the user out. So in summary, what the maxPrompts property is good for is to validate user input and to ensure users are not getting locked-in. What you should know about the maxPrompts property The maxPrompts property only works for variables of an entity type. For this you reference a context variable of an entity from the component's variable property. The entity type can be a custom entity or system entity.  Note: Simulating the maxPrompts behaviour for a primitive type variable is a good topic for a later quick-tip.  Example A simple example is one in which a user is asked to enter a value that matches a certain pattern, like the format for car licenses in Germany. German license plates have the following format: <1-3 characters> for the city the car is registered in, followed by a dash and <1-2 alphanumeric characters>,  followed by a blank and <1-4 numeric digits>. The RegularExpression for this is [A-Z]{1,3}-[A-Z]{1,2} [0-9]{1,4}\b In Oracle Intelligent Bots, you define an entity of type RegularExpression as shown in the image below. The next steps then are to define a variable of the entity type (LicensePlate in this example) create a System.Text component that references the variable and that has its maxPrompts property set (set to 2 in the sample) create a success state that prints the license number of valid, and one that helps the user with how a valid car license number looks before redirecting to the text component again The image below shows the dialog flow definition for this The image above also shows a goodie provided by the dialog flow engine. When a user fails to provide a valid car license number, the system automatically sets a flag to the botsUserError variable. This flag is then used to modify the input component prompts to reflect the situation that the user previously failed providing a valid input. The expression used in the component prompt property is an Apache Freemarker expression. Note that the botsUserError property requires maxPrompts to be set.    !!! IMPORTANT CHANGE !!!: As of 18.2.3 production release the user.botsUserError variable is not named system.invalidUserInput. So please adapt this change when following the content in this article.    At runtime, a user conversation may look as in the image shown below. Notice that after two failed attempts, a help message is displayed before the user is redirected to the input component again.  Summary The maxPrompts property on input components can be used for use data input  validation if used in combination with a context variable of an entity type. Using the cancel action on the component, you can navigate to a state in the dialog flow you set up to help the user providing a valid component entry.   

by Frank Nimphius, March 2018 Update: Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit cloud.oracle...

TechExchange

TechExchange: A Simple Guide and Solution to Using Resource Bundles in Custom Components

Sample by Frank Nimphius, March 2018 A common requirement for bots is to support multiple languages. To address this requirement, Oracle Intelligent Bots provides the ability to configure translation services from Google and Microsoft to auto-translate user input messages and bot responses. If you don't want bot responses to be auto-translated then a second option is to use Resource Bundles instead. All the before mentioned options work great for building multi lingual bots, but require messages to be defined in the dialog flow, or saved in context variables. This excludes custom components that directly write user responses to the message channel using the bot SDK conversation.reply( … ) function. Without going into a longer discussion of when custom components should write message responses directly to a message channel and when they should save messages or data in a context variable, we simply accept the fact that there are use cases for custom components to be self-contained. This however then bears the question of how to implement translations for those responses. To translate bot responses sent directly from a custom component, you have two options Call a translation service from the custom component implementation code before sending a message. This option is suitable if the messages are not composed in the custom component but queried from a remote backend. Here auto-translation will help making the strings available in the bot user preferred language. Use message bundles to provide translated responses for the languages you want the bot to support. Message bundles can use placeholders in the translated strings for the custom component to insert data value at runtime. Message bundles in custom components are a viable option if the custom component queries data from a remote service to integrate in a bot response. The article (readme), and its sample, shows a simple solution to implement message bundle support in custom components. You can leverage the sample sources in your own custom component projects, and the readme in the sample tells you how.  The image above shows the sample at runtime. When a German string is issued, then the custom component response is in German. If French, then the response is in French (well, you get the idea) Enjoy. Update note:   Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit cloud.oracle.com/digital-assistant A Simple Solution to Using Resource Bundles in Custom Components (ZIP)

Sample by Frank Nimphius, March 2018 A common requirement for bots is to support multiple languages. To address this requirement, Oracle Intelligent Bots provides the ability to configure translation...

Customer Success Stories

The Factory Disrupts The Used Auto Market With Oracle Mobile

According to the American Automobile Association (AAA), there currently are 150,000 brick & mortar car dealerships across United States. In addition to selling new cars, these dealerships also offer used and certified pre-owned cars and trucks, often at reduced prices. While many dealers accept trade-ins and sales from customers, they also often purchase used vehicles from other dealerships, through a complex, auction purchasing system that is invisible to the end-consumer. In fact, in 2015, a massive 9.1 million pre-owned cars were bought and sold in the United States through these auction houses. However, since the auction house process is based on the brick & mortar concept of auto sales and is relatively archaic, the area is ripe for disruption. Enter The Factory. Co-founders Lynn Clark and Jerry Clark, both long term veterans in the automotive dealer industry, realized the limitations of the current system, especially in the age of digitization. They started The Factory as a way build a digital, B2B marketplace for dealerships looking to appraise, buy, and sell pre-owned cars. Though a combination of a mobile app and a web portal, dealers can appraise, list, search and buy vehicles in real-time, 24 hours a day, from anywhere, with added visibility into specific make and model inventory across the country. By transforming the way that dealers buy and sell used cars and trucks, The Factory was able to reduce the importance of the "middlemen," the auction houses, in each transaction and save dealers both time and money.   Using a combination of Oracle Mobile Cloud for its mobile app (and related mobile services such as security, push notifications, etc.), and Oracle Integration Cloud to connect via REST API services to each dealership's proprietary Dealer Management System (DMS), the Factory also was able to save end-customers precious time as each salesperson at every dealership knew exactly every piece of relevant information, in real-time, about each used vehicle. In the future, The Factory plans to integrate intelligent chatbots into its platform to handle customer service requests, and to refer complex questions to live human agents.  For the full story, watch the video below:

According to the American Automobile Association (AAA), there currently are 150,000 brick & mortar car dealerships across United States. In addition to selling new cars, these dealerships also offer...

TechExchange

TechExchange: Master Oracle Intelligent Bots Backend Integration with Oracle Mobile Cloud Enterprise like a pro

Article by Frank Nimphius, March 2018 Chatbots are frontend intelligent, which means they are designed to understand the user intent as well as the user provided information. To do anything useful like processing an order, providing answers to a service request or booking a flight, chatbots needs to make integrated calls to intelligent or traditional backend systems. Backend integration in Oracle Intelligent Bots is implemented through custom components, which can be developed in Oracle Mobile Cloud Enterprise (OMCe) or any other Node.js container. This article and sample show how to integrate backend systems through custom components developed in OMCe. The service integrated by this sample is OpenWeatherMap, a free Internet service that returns weather information based on a city and country name. p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 20.0px; font: 13.0px Helvetica; color: #262626} Update note:   Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit cloud.oracle.com/digital-assistant Oracle Intelligent Bots Backend Integration Sample and Article (ZIP)   Related Articles: TechExchange - Custom Component Development in OMCe – Getting Up and Running Immediately  

Article by Frank Nimphius, March 2018 Chatbots are frontend intelligent, which means they are designed to understand the user intent as well as the user provided information. To do anything useful like...

Customer Success Stories

Intelligent Chatbot for Heineken Urban Polo on Facebook Messenger

  Cheers from down under! That’s what I’d imagine the Heineken Urban Polo chatbot might say when you say hello on Facebook Messenger! Heineken has an event where the Heineken Urban Polo attendees can register for a competition through a chatbot on FB Messenger.  Facebooks is super popular and has over 2 billion active members every month. And many people, especially digital natives, are very comfortable chatting thru a messenger app. Sure, mobile apps are still cool, but there's a limit to how many apps someone is going to download and use.  With messaging apps, that's on everyone's smartphone! What a brilliant way to interact with customers. I don’t know about you, but I’d rather have a bot handle many of the common requests. And it’s available 24/7, and never gets tired. I believe the Heineken Urban Polo event is in New Zealand, and for those who are lucky enough to attend the event, can register, but you can still check out the bot and see how cool it is via this link. https://www.facebook.com/urbanpolo/ And by the way, the bot was built with the Intelligent Bots capabilities that are part of Oracle Mobile Cloud Enterprise. With Oracle Mobile, you don’t need to be an AI expert or data scientists to build an intelligent bot. And you can do it fast. Check it out for at cloud.oracle.com/mobile and learn more at oracle.com/bots.    And if you're interested in some AI podcasts, check out our recent Practical Path to AI series.   Cheers!  

  Cheers from down under! That’s what I’d imagine the Heineken Urban Polo chatbot might say when you say hello on Facebook Messenger! Heineken has an event where the Heineken Urban Polo attendees can...

Customer Success Stories

AuraPlayer Uses Oracle Mobile Cloud to Support NY MTA's Digital Transformation

It's been a while since we last checked in on the New York Metropolitan Transportation Authority.  At the time, they recently had moved their Oracle Forms-based accident reporting system from paper forms and office-based, desktop computers, and onto mobile tablets that employees could bring into, and use in, the field.  Oracle partner AuraPlayer made this advancement possible by wrapping the existing Forms application and exposing it via a set of APIs that could be consumed by Oracle Mobile Cloud, allowing the MTA to access its back-end seamlessly, on any mobile device, without changing one line of code.  MTA employees could file accident reports from the field instantaneously, allowing the agency to asses damage, dispatch crews, clear accidents, and get traffic moving again much more quickly, in some cases in minutes as opposed to hours. With this successful implementation, AuraPlayer and the MTA set their sights on using Oracle Mobile Cloud to improve employee quality of life.  MTA's 75,000 person workforce had been using call centers and other legacy communications channels not only to determine shift schedules, but also to ask questions about everything from benefits to sick days.  Consideration was given to creating new mobile applications that employees could use in order to discover answers to these questions, and also so that they could execute on actions like time card and vacation reporting.  However, with a large, diversified workforce, the training needed to use even the most simple of these apps would have proven cumbersome.  Instead, AuraPlayer and the MTA decided to create an intelligent chatbot that could serve the same function as a mobile app, but that would be able to interact with an MTA employee using natural language and machine learning; essentially an employee could ask the chatbot something in a conversational manner,  through text, and the bot would respond in context, without the need to train an employee on how to use a new mobile UI. With the recent release of Oracle Mobile Cloud Enterprise with Intelligent Bots, AuraPlayer built this intelligent chatbot in three weeks.  To learn more about this story, check out the videos below: AuraPlayer Takes Field Management to the Oracle Cloud: AuraPlayer Helps NYMTA Use AI and Chatbots for Their Digital Transformation:  

It's been a while since we last checked in on the New York Metropolitan Transportation Authority.  At the time, they recently had moved their Oracle Forms-based accident reporting system from paper...

Intelligent Bot Development

TechExchange: How-to Populate a Common Response Component Iterator from a Custom Component

Sample by Frank Nimphius, February 2018 For bots to do anything useful, they need to integrate with data queried from remote systems. The most popular option for this is to query and write data through REST services and JSON payloads. This sample explains how you populate a context variable defined in BotML with an array from a custom component. The variable then is referenced from a Common Response component (CRC, or CR component) to display a list of choices. The sample does not contain the REST connector call but starts from a JSON string representing an array of fruits. Note that explaining ow to access REST services from custom components through connectors in Oracle Oracle Mobile Clou Enterprise is subject to a separate blog article here in TechExchange. This article focuses on how to pass data to the BotML so the CR component can render the structured information as not all data is a series of strings only.  At runtime, the sample bot displays the list of fruits for a user to select from (Figure 1). Notice that the list label is different from the selected value ("Yellow Banana" vs. "banana"). The CR component allows you to have labels that are different from the actual value set to a bot context variable (or multiple variables as you can save more than a single value from a list). Download the Sample and Readme (ZIP)   Update note:   Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit cloud.oracle.com/digital-assistant Related articles TechExchange - Custom Component Development in OMCe – Getting Up and Running Immediately

Sample by Frank Nimphius, February 2018 For bots to do anything useful, they need to integrate with data queried from remote systems. The most popular option for this is to query and write data...

Intelligent Bot Development

TechExchange: Strategy for Handling Unresolved Intent Resolutions So Users Remain Unstuck

Sample by Frank Nimphius, November 2017 Independent of the quality of utterances used for training the intent model, chances are that bot users enter a phrase the bot doesn't understand. In such cases the System.Intent component navigates to the state configured for the "unresolvedIntent" action. It is up to the bot designer then to handle the situation gracefully so bot users don't experience an interruption. This sample shows how the "unresolvedIntent" case can be handled such that the bot displays a list of intents in order of the intent confidence level. Intents that have a confidence level of 0% are ignored. And just in case, a "help" option is displayed at the end for the user learn about how to use the bot or being directed to a human agent (not implemented in the sample). Whatever the user selects in the list will navigate her to the matching state in the dialog flow. The sample is a BotML only implementation. Of course, similar functionality can be built using custom components. You use custom components if you don't wat to just list the intents as a choice but e.g. pre-filter them on some kind of condition. The sample can be imported to Oracle Intelligent Bots version 17.4.5 and above. Update note:   Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit cloud.oracle.com/digital-assistant Download Sample (ZIP) and Readme Related Articles: TechExchange - First Step in Training Your Bot TechExchange - Using Apache Freemarker Expression in Oracle Intelligent Bots

Sample by Frank Nimphius, November 2017 Independent of the quality of utterances used for training the intent model, chances are that bot users enter a phrase the bot doesn't understand. In such cases...

Intelligent Bot Development

Custom OAuthAccountLink Component

Sample by Martin Deh, February 2018 With Oracle Intelligent Bots (IB), each state within the Bot flow has the ability to invoke a component to perform actions that can range from basic interactions: taking user input and providing a textual response, to the more complex: some service-specific action like creating an order. IB provides a set of built-in components that support basic actions like setting variables, enabling user input and enabling OAuth. If the Bot calls for a specific action that’s outside of these functions, or need to add some additional UI based customizations, you’ll need to implement a custom component. For example, the out-of-the-box (OOTB) System.OAuthAccountLink component allows the Bot to make requests to an OAuth Resource Server on the user's behalf; in practice this means connecting to something like LinkedIn as if it were the user. This is done in a "two step" manner. In step 1, the user follows a link (provided by the OAuthAccountLink component) to an OAuth Authorization Server to ask for permission. Once the user logs-in (or clicks Allow), thus granting permission, the OAuth Authorization Server generates an "Authorization Code". The Authorization Code is then sent via the callback to the Bot. In the second step, which in this example, must be coded by the developer, the Bot presents that Authorization Code to the OAuth Authorization Server, along with its client ID and secret, then exchanges it for an OAuth Access Token. In the acctlink.js there is a commented section to where this part of the code will need to be developed. The OOTB component does perform what it is designed to do; retrieve the Authorization Code. However, in the current IB release, the UI is also strict on how the component will display in a messaging client like Facebook. The sample and and Article you download from below (ZIP file) explains how to achieve customisation of the  OAUTH component in Oracle Intelligent Bots using a custom component. Enjoy. Custom OAUTH component for Oracle Intelligent Bots

Sample by Martin Deh, February 2018 With Oracle Intelligent Bots (IB), each state within the Bot flow has the ability to invoke a component to perform actions that can range from basic interactions:...

Intelligent Bot Development

TechExchange - Using SMS Channels with Oracle Intelligent Bots

Sample by Marcello Jabali, February 2018 Using SMS is a very convenient way to communicate with someone these days and most people prefer to use SMS instead of email. SMS also gives you a history of the conversation while, for example, the context of a phone call can be easily forgotten if you don’t take notes. In the same way that you text someone these days, you could also apply the same idea to business communications. The convenience, flexibility and speed of SMS can dramatically improve customer service. On top of that, several business tasks could be easily automated. Just imagine that you can get the status of something you order without waiting in line or having to download a particular mobile app by just texting the business’ phone number. Having the capability of serving your users using SMS with an Intelligent Bot performing the interactions is the exact scenario we are going to explore in this article.  This sample download (zip) provides resources and an article in its readme folder for you to get started using SMS in Oracle Intelligent Bots chatbot. Update note:   Oracle Intelligent Bots has been rebranded Oracle Digital Assistant to better describe its capabilities beyond a standard chatbot. To learn more, visit cloud.oracle.com/digital-assistant Sample Explaining How to Use SMS in Oracle Intelligent Bots

Sample by Marcello Jabali, February 2018 Using SMS is a very convenient way to communicate with someone these days and most people prefer to use SMS instead of email. SMS also gives you a history of...

Intelligent Bot Development

The Nitty Gritty of Oracle Mobile Cloud with Intelligent Bots

We've spent a considerable amount of time over the past several months speaking at a high level about Oracle Mobile Cloud Enterprise (OMCE) with Oracle Intelligent Bots.  We've showed you why the platform is not only beneficial, but crucial to Mobile and AI success within the enterprise.  We've discussed, generally, how the platform that allows you to develop better mobile apps faster, connect any mobile client to any backend system, create intelligent, AI-powered chatbots that can help to scale and personalize customer engagement, understand what your customers are doing across channels with detailed, actionable analytics, and access a variety of these functions without writing one line of code.  And we've detailed how a number of customers from around the world are using Oracle Mobile Cloud Enterprise to engage with customers more easily.  However, we understand that some of you may want more detail on each of OMCE's features!  That's why we created three data sheets; one that highlights the benefits of Oracle Mobile Cloud Enterprise, one that describes the features of Oracle Intelligent Bots, and a third that details what you can measure and analyze with Oracle Mobile Cloud Analytics (hint: it's a lot!)  Check out all three of these data sheets, and if you wish, feel free to share them with your friends and colleagues.  If you have any questions, you can always visit oracle.com/mobile or oracle.com/bots for additional information, and if you'd like to try Oracle Mobile Cloud Enterprise, you can sign up for a free trial at cloud.oracle.com/mobile.   Oracle Mobile Cloud Enterprise Data Sheet   Oracle Intelligent Bots Data Sheet   Oracle Mobile Cloud Analytics Data Sheet

We've spent a considerable amount of time over the past several months speaking at a high level about Oracle Mobile Cloud Enterprise (OMCE) with Oracle Intelligent Bots.  We've showed you why the...

Mobile Content

Oracle MAF 2.5.0 Released

Paul Johl | Consulting Product Manager Oracle Mobile Application Framework (MAF) release, 2.5.0 This is a major release containing a number of platform upgrades and enhancements, including the following: A NEW release of JDeveloper is required.  You need to install the MAF extension in Oracle JDeveloper 12c (12.2.1.3.0).  See Installing Oracle JDeveloper Studio in Installing Oracle JDeveloper and Installing Mobile Application Framework with JDeveloper.   The embedded Cordova platform engines have been updated to the following versions: iOS version 4.5.0 Android version 6.2.3 Universal Windows Platform (UWP) version 5.0.0 We now support iOS 11, iPhone X and Xcode 9. You need Xcode 9.x to build and deploy your MAF applications. Upgrade your installation to Xcode 9.x, as described in Using Xcode 9.x with MAF 2.5.0. We have deprecated 32 bit support for iOS devices.  Please check the Certification Matrix for devices now supported. We now support Android 8, and the Google Pixel C phone. You need Android API Level 26 to build and deploy you MAF applications.  See Deploying a MAF Application to the Android Platform. Please check the Certification Matrix for devices now supported. For faster performance, MAF applications now evaluate EL expressions in the Java VM layer!  Note: There is more error checking as well, such that new errors now may be raised causing code to break if it did not have full error checking in place already. For quick resolution, you can use a legacy mode.  See Evaluating EL Expressions in the Java VM Layer.   The inputDate component has been changed such that tapping the up arrow increases the value and the down arrow decreases the value. To keep the older behavior, there is a new attribute (legacyMode) whose value can be set to true. See How To Use The Input Date Component for more details.   We now support JDeveloper constructs to deploy MAF applications to the Universal Windows Platform, which means that you can deploy your application from the command line Please refer to the What's New section of the developer guide for detailed information about the changes and how they may affect you. For additional release information, such as release notes and certification matrix, please refer to the MAF documentation on OTN.  We always encourage you to upgrade to this latest MAF release as soon as possible! Paul Johl | Consulting Product Manager

Paul Johl | Consulting Product Manager Oracle Mobile Application Framework (MAF) release, 2.5.0 This is a major release containing a number of platform upgrades and enhancements, including the...

Intelligent Bot Development

Catching up on Oracle’s Working AI and Chatbot Endeavors

I had a great opportunity to attend our internal Mobile, AI and Chatbot offsite this week.  Really cool stuff. There was plenty of lively discussion, interesting demos and I’m excited about Oracle’s future where AI is top of mind. Note that I’m just looking at a fraction of what’s going on internally. I know, I know… you’re thinking, Oracle and AI?  Not what immediately comes to mind when the topic of AI hits the headlines.  It’s not as sexy a headline like Google’s AlphaGo beating the best Go masters of the world, or perhaps the viral videos like Amazon's Alexa trying to entertain your kids. No, nothing like that. Oracle focuses on what it does best - helping the enterprise operate more efficiently while helping simplify the efforts to adopt new technologes. We’re not talking general purpose AI, we’re talking chatbots that can be easily implemented by mere mortals. AI that is focused on helping your businesses scale. I would like to invite you to check out our upcoming webcast, Conversational AI at your Fingertips, Jan 24, 10AM Pacific, where Oracle’s Suhas Uliyar and Chatbox’s CEO, Phil Gordon, will explore AI, chatbots, messaging apps, and the impact they will have on your business.  We’ll be answering questions live, with real people – no chatbots....at least not yet! This is a follow up to the launch presentation here, so you may want to watch that if you haven't already seen it.  Otherwise, catch up with us what's new on Jan 24, 10AM Pacific.

I had a great opportunity to attend our internal Mobile, AI and Chatbot offsite this week.  Really cool stuff. There was plenty of lively discussion, interesting demos and I’m excited about Oracle’s...

Intelligent Bot Development

New Videos for Oracle Mobile Cloud Enterprise & Oracle Intelligent Bots!

We've spent a lot of time over the past several months writing about Oracle Mobile Cloud Enterprise with Oracle Intelligent Bots.  Certainly, it's a complete, open, integrated, and easy-to-use platform that allows you to develop better mobile apps faster, connect any mobile client to any backend system, create intelligent, AI-powered chatbots that can help to scale and personalize customer engagement, understand what your customers are doing across channels with detailed, actionable analytics, and access a variety of these functions without writing one line of code.  However, we realize that not everyone processes information in the same way; some of us are visual learners!  To address this, we've created two new videos; one that highlights the benefits of Oracle Mobile Cloud Enterprise, and the other that describes what you, as a customer, can do with Oracle Intelligent Bots, a part of the Oracle Mobile Cloud Enterprise suite.  Check out both videos below, and if you wish, feel free to share them with your friends and colleagues.  If you have any questions, you can always visit oracle.com/mobile or oracle.com/bots for more information, and if you'd like to try Oracle Mobile Cloud Enterprise, you can sign up for a free trial at cloud.oracle.com/mobile.   Oracle Mobile Cloud Enterprise:   Oracle Intelligent Bots:  

We've spent a lot of time over the past several months writing about Oracle Mobile Cloud Enterprise with Oracle Intelligent Bots.  Certainly, it's a complete, open, integrated, and easy-to-use...

Customer Success Stories

How AI And Chatbots Are Transforming The Workplace

Many Oracle customers already are exploring the use of AI-powered chatbots to better engage with consumers, from Exelon, to National Pharmacies, to Bajaj Electricals.  But can intelligent, conversational interfaces help companies to improve internal processes and employee productivity, and help employees in everyday business tasks?  Turns out, the answer is "yes!" Take a look at what some of Oracle's own teams currently are doing with the help of artificial intelligence.  In Oracle Sales Cloud, the team has invested in a "virtual sales assistant," which is a AI-powered assistant designed to help Oracle sales personnel increase their daily productivity. Machine learning is used to determine the next best actions for each sales rep (such as recommending when the right time is to follow up with a customer), and natural language processing allows each rep to communicate, and interact, with the assistant in a conversational manner.  As a result, a rep can pull up any CRM record, business intelligence report, or the transaction data of any customer deal simply by asking the intelligent chatbot either through text or through voice, like one might with Siri or Alexa.  The Virtual Sales Assistant can also surface daily calendar information, set and show task reminders, highlight current news about a sales rep's customers or a customer's competitors, schedule meetings, and allow the the rep to enter call reports, all from within the confines of the chatbot messaging conversation.  Check out the full video with Oracle Sales Cloud VP Catherine You:   Oracle HCM Cloud also is incorporating AI and chatbots into its daily routines for talent recruitment.  Oracle Group VP Nagaraj Nadendla is responsible for Oracle's Talent Acquisition Cloud, which helps to find, engage and hire top talent. Nadendla says that his team is focused on using AI in three important areas:  First, to use AI to provide prospective employees with a personalized candidate experience.  Second, to use AI-powered chatbots to help candidates discover relevant information and to answer any questions that they might have as they make a decision as to whether the company in question is the right company for them. Finally, to use machine learning to match potential candidates with open roles that the candidates may excel in and may enjoy, but for which they may initially not have considered applying.  You can watch the full video below: To learn more about Oracle Intelligent Bots, visit oracle.com/bots.

Many Oracle customers already are exploring the use of AI-powered chatbots to better engage with consumers, from Exelon, to National Pharmacies, to Bajaj Electricals.  But can intelligent,...

Customer Success Stories

Bajaj Electricals Uses Chatbots to Illuminate Digital Transformation

If you're a business that usually sells to other businesses, you might not have significant interaction with your product's end users, or consumers.  In fact, the only time you might even hear from an actual consumer is when one calls, emails, or messages you to complain about your product! No company relishes consumer complaints, but they're often manageable and have little impact on brand if a business is far enough removed from the end user.  However, if your company sells both to businesses and consumers, or wants to begin selling to consumers, then engaging customers before they register a complaint is critical to customer satisfaction, customer retention, and brand perception. One might think that Bajaj Electricals Ltd., featured in a new Forbes article, is simply a large electrical utility based in Mumbai, India, but the company has many divisions that directly touch consumers.  In fact, 50% of the company's business is made up of selling consumer products, which include commercial and home lighting products, as well as home appliances.  When the power goes out, people often grumble, but an electricity provider's brand (and revenue) often doesn't take a hit due to limited competition in the industry.  However, when a light bulb burns out well before its expected life, or when a fan or microwave breaks, you can bet that a company like Bajaj Electricals is going to hear directly from dissatisfied customers, who may even threaten to turn to a competitor for their next purchase.  This is why Bajaj Electricals decided that it needed to strengthen its consumer presence and engagement as part of a larger digital transformation that is currently taking place at the company. Many in India receive electricity from the government, but according to the Forbes article, an estimated 500 million consumers either have never purchased a household appliance, or are purchasing an appliance for the first time.  What's more, there is a culture of repairing things as opposed to throwing them out and buying new ones. "At any given time we have 20 million products under warranty... and nearly 2 billion products in use," says Anant Bajaj, Joint Managing Director for Bajaj Electricals.  When a first-time purchaser buys a new appliance, or when a customer wants to repair a fan, they need an easy way to schedule product demos and service/repair calls, or find out more about the product in question.  That's where Bajaj Electricals believes intelligent chatbots can play a crucial role. The company has built a pilot chatbot using Oracle Intelligent Bots, a part of Oracle Mobile Cloud Enterprise.  Automating, scaling, and personalizing consumer engagement, Bajaj Electricals' customer service chatbot reportedly will let users report broken appliances, schedule installation appointments, and request demos from service technicians to learn how to use new products.  "We need more user-friendly ways to engage consumers.  For the first time, we began reacting to the happy customer, not just the customer in pain," says Bajaj.  The chatbot is currently available through SMS text message, and eventually there are plans to roll it out on popular social messaging platforms.  Thanks to the AI capabilities within the Oracle Intelligent Bots platform, this chatbot has the ability to continuously learn from consumer questions and interactions, which could eventually lead to an expansion in functionality, from controlling appliances, to interacting with voice assistants like Amazon's Alexa, to assisting Bajaj Electricals employees in everyday tasks. There's also hope that the chatbot will help to reduce costs.  Pratap Gharge, Executive President and CIO, elaborates: "“We are trying to train our chatbot to be as intelligent as possible so that it can also help to reduce our call center load.  If the chatbot is able to understand customer problems using natural language processing and machine learning without help from a human, some consumer questions can be resolved by the bot itself. This will allow our call center agents to focus on more pressing customer issues.” You can read the full Bajaj Electricals story in Forbes here, and you can learn more about chatbots here.

If you're a business that usually sells to other businesses, you might not have significant interaction with your product's end users, or consumers.  In fact, the only time you might even hear from an...

Intelligent Bot Development

Six Pitfalls to Avoid When Engaging Your Customers With Chatbots

Chatbots can engage with customers in a normal, personalized conversation by using a combination of natural language processing and machine learning. As more consumers become used to engaging with an AI-powered interface (usually in a messaging channel like Facebook Messenger) and receiving personalized, accurate responses to questions almost instantaneously, chatbots have the potential to become the next “web browser.” Yet with their exploding popularity, chatbots do create pitfalls for companies that are unprepared for this new engagement medium. In a new Wall Street Journal article, author Chris Murphy speaks with Oracle Vice President of Product Management - Mobile, Bots & AI, Suhas Uliyar, to learn how companies can avoid these pitfalls and to understand what businesses must do in order to engage customers successfully when using chatbots. These best practices include: 1.  Being ready to engage customers across multiple digital channels: Every customer has his or her favorite digital channel; some may prefer engaging through WeChat while others prefer using Alexa or Google Assistant.  In addition, different channels are popular in different countries / regions of the world, and some channels may even be banned in certain areas.  As a business, it's important not only to recognize this, but also to be able to adapt and serve your customers in the channel they prefer. 2.  Having real conversations with your customers: First, businesses shouldn't trick their customers into believing that they are speaking with a human when, in fact, they are speaking with a chatbot; it's not cool.  Second, and equally as important, companies need to take advantage of improved natural language processing capabilities so that their customers can communicate in a normal way with chatbots.  As a business, you wouldn't want your customers to have to remember specific code phrases or use awkward grammatical syntax in order to ask a the chatbot a question; that would be a poor user experience. 3.  Using machine learning: If your chatbot can't understand that "What's my balance?" and "How much money do I have?" are two variations of the same question, you're going to end up with a lot of frustrated customers.  Using machine learning algorithms to allow chatbots to learn and get smarter over time is critical to providing customers with the best engagement experience.  4.  Integrating with your company's back-end systems and data: A chatbot is only as intelligent as the data and the systems that it can access.  If a customer wants to book a flight through a chatbot, but the chatbot can't access real-time flight inventory due to limited integration with the seller's systems, then how intelligent/helpful is the chatbot?  Not intelligent or helpful at all! 5.  Using "instant apps" for data-heavy customer requests: Intelligent chatbots have become very good at engaging with people in a natural, conversational manner. However, in situations where customers need to input a lot of data, such as when providing shipping/billing information, or filling out the reasons for returning a purchase, a chatbot might ask for each piece of information separately, which can become cumbersome.  Instead, businesses should consider using "instant apps," which are pre-built mobile/web apps with UIs designed to capture structured information that chatbots can surface, and then and process for customers, directly from within the conversation flow.      6.  Knowing a chatbot's limitations: Companies should remember that chatbots can't handle every situation and should train their bots to hand off certain requests to live, human agents.  Similarly, companies should also train their employees to hand off repetitive, easily-automated tasks to chatbots. Fortunately, Uliyar reveals that Oracle Mobile Cloud Enterprise with Intelligent Bots can address all of these potential pitfalls.  To read the full article in the Wall Street Journal, click here, and to learn more about Oracle Intelligent Bots, visit oracle.com/bots.

Chatbots can engage with customers in a normal, personalized conversation by using a combination of natural language processing and machine learning. As more consumers become used to engaging with an...

Customer Success Stories

National Pharmacies Keeps Customers Front-And-Center with Digital Innovation

You probably would think that a chain of Australian pharmacies and vision centers wouldn't be at the forefront of digital customer engagement, but you'd be wrong.  National Pharmacies, a large chain claiming over 350,000 members, which is based in Adelaide and has locations throughout South Australia, Victoria, and New South Wales, is pioneering new digital technologies that could allow customers to live healthier lives.  At the very least, National Pharmacies hopes that these technologies will increase customer engagement, allowing the company to serve its user base in a quicker and more accurate manner. Ryan Klose, who leads technology and innovation at National Pharmacies, says one goal is to create a "wow" experience for pharmacy members.  Many members, especially digital natives, have been conditioned to expect a seamless digital experience as the result of using consumer mobile apps for years.  "You have to live in the world of consumer tech to be relevant," states Klose.  Yet, a slick UI isn't the only key to success.  While design is important, relevancy and customization are crucial in increasing customer engagement, and Klose understands that personalizing each member's experience and encouraging improvements to their overall health can be more productive than forming a simple transnational relationship. "We're trying to connect with empathy," says Klose. How is National Pharmacies achieving this? By using the latest digital engagement technologies.  The company recently began testing a chatbot built with Oracle's Intelligent Bots platform on Oracle Mobile Cloud Enterprise that allows customers to take their blood pressure and check their weight before submitting that data via the bot. While Klose was initially skeptical of AI-based communication channels, this new breed of chatbot with natural language processing and machine learning algorithms convinced him that these types of automated interactions actually might improve the customer experience.  In addition, National Pharmacies recently added a "count-down timer" to its Oracle-built mobile app, which alerts members to how long it will be until the company sends them a personalized coupon based on their pharmacy shopping habits. This gamified, and personalized, experience by itself led to an almost 10% increase in app downloads. Along with significant customer innovation, National Pharmacies also has upgraded its processes and planning systems.  Using Oracle Process Cloud Service (PCS), the pharmacy chain has been able to create a library of standard procedures and practices, including a standard procedure for ordering a product for a customer.  This will help National Pharmacies to improve back-end efficiency.  In addition, the company recently upgraded its ERP system to Oracle's JD Edwards in the Cloud. Yet, instead of using the traditional JD Edwards interface, Klose and his team created a separate mobile/tablet app for in-store employees to use, and then connected this app with APIs to both the back-end JD Edwards system and to Oracle PCS.  In doing this, store employees and customers are using the same app (with different privileges), which means that employees experience the same digital joys, and understand the same digital pains, of the customers who they are trying to serve. To learn more about National Pharmacies, and about Oracle Mobile Cloud Enterprise, you can read the full Forbes article here. 

You probably would think that a chain of Australian pharmacies and vision centers wouldn't be at the forefront of digital customer engagement, but you'd be wrong.  National Pharmacies, a large chain...

Intelligent Bot Development

Will Intelligent Bots Shape the Future of Hospitality?

It was a tremendous amount of fun to see all of the new announcements, innovations, and visions of the future at Oracle OpenWorld 2017.  From Slack, to AI & Chatbots, to Blockchain and more, one can see Oracle is moving towards a comprehensive, open, and exciting future. In fact, as I walked around the OpenWorld demo grounds last week, one exhibit in particular caught my attention.  No, there weren't any free t-shirts, or drones, or beer given away at this demo booth.  Instead, positioned in a corner of the Innovation Studio in Moscone North, sat a large lacquered table supporting several miniature robots, small plastic boxes with etched QR codes, a faerie-sized wooden door, and a tablet with facial recognition software.  Nearby, a large monitor displayed a live Facebook Messenger conversation, streamed from a mobile phone, between a person and a chatbot. What was this peculiar demo and why did it fascinate me so much?  Part of the attraction, admittedly, was that I was intently curious to see what could possibly fit through that miniature door. Was one of the robots going to open it, or drive through it? (The answer to both questions was "no," but both the door and the robot still ended up being used in very cool ways.)  More importantly, I became fascinated with the demo when I learned about the use case it was trying to solve, how well it worked, and which technologies it used. Carlos Zarate, Carlos Casares, Jesus Brasero, and Jesus Guerra (left to right, above) belong to Oracle's WEDO team, a group of about 20 Oracle Spain employees that focus on implementing new "Digital" business models.  The WEDO team takes pride in understanding how to bridge the gap between business requirements and technology in order to define innovative use cases that span the entire Oracle stack. In this particular scenario, WEDO decided to create a demo around a hospitality use case and used Oracle Intelligent Bots as the focal point. The demo takes a user through a full "hospitality flow," from booking a hotel room through a chatbot, to checking in and asking the bot to unlock your door, to ordering room service and having it delivered via robot, to requesting room maintenance, and finally to checking out and paying the hotel bill. Although the demo uses Oracle Intelligent Bots as its core component, the WEDO team managed to incorporate 21 different Oracle PaaS services and 6 different Oracle SaaS services, proving that Oracle Intelligent Bots is not only a completely open bot development environment, but also that it can play an a central and critical role in any digital engagement strategy. Check out the embedded video below to see the entire demo:     For more information on Oracle Intelligent Bots, visit oracle.com/bots or head to cloud.oracle.com/mobile.

It was a tremendous amount of fun to see all of the new announcements, innovations, and visions of the future at Oracle OpenWorld 2017.  From Slack, to AI & Chatbots, to Blockchain and more, one...

Mobile Development

Oracle MAF 2.4.2 released

Paul Johl | Consulting Product Manager As summer winds down, get back to work mode and download the latest Oracle Mobile Application Framework (MAF) release, 2.4.2! This is a minor release containing the following enhancements: Support for Visual Studio 2017 Improved MAF compatibility with a range of 3rd party Cordova plugins. - We have upgraded to a newer version of Cordova-Plugman.  Windows bar code scanner also works on this version. MAF application developers are able to provide user authentication via the OpenID Connect authentication protocol. - OpenID was created by an open source community and allows you to use an existing account to sign in to multiple websites, without needing to create new passwords. - See "How to Configure OpenID Authentication" for details. - See www.openid.net for more information on OpenID. Support for the barcode scanner plugin on Windows. - Source code example given in the BarcodeDemo sample app Ability to hide the logon URL - For more security, you can now hide the URL on the logon screen. - Available for Single Sign On customers on iOS and Android. Please refer to the What's New section of the developer guide for detailed information about the changes and how they may affect you. For additional release information, such as release notes and certification matrix, please refer to the MAF documentation on OTN.  This release of MAF requires JDeveloper 12.2.1.0.0 and you can upgrade MAF via the JDeveloper Update Center.   And we always encourage you to upgrade to this latest MAF release as soon as possible! Paul Johl | Consulting Product Manager

Paul Johl | Consulting Product Manager As summer winds down, get back to work mode and download the latest Oracle Mobile Application Framework (MAF) release, 2.4.2! This is a minor release containing...

Mobile Content

#OOW17: The #bestoneyet... Here Are Just a Few of The Highlights!

Authored by Rimi Bewtra, Senior Director, Cloud Business Group, Oracle   WOW… I am not even sure where to begin… this Oracle OpenWorld was AWESOME!!!!! If by chance you missed it then catch one or more of the replays: (Larry Ellison, Mark Hurd, Thomas Kurian, Dave Donatelli.) This year was all about Innovation – across areas like AI, Chatbots, App and Data Integration, APIs, Robotic Process Automation, IoT and Content and Experience Management… and few other things like Blockchain, Autonomous Database and Security, and Management in the Cloud also got some attention :) but I will keep my focus and highlights on the areas I manage and am most familiar with, and let my colleagues share their own highlights. First, here are just a few of my highlights! No matter where you went, you probably heard the buzz and hopefully caught one or more of our sessions on:  #AI, #APIs, #BigData. #Chatbots, Content & #ExperienceMgmt, Integration (App and Data), #IoT, and #RoboticProcessAutomation. Leaping off of our global chatbots launch, our Intelligent Bots were everywhere! Across all major keynotes the attention was on AI-powered chatbots as the new engagement channel to enhance customer and employee experiences.  There were press releases on Oracle’s AI–powered Intelligent Bots and strategic partnerships with both Chatbox and Slack: Oracle Introduces AI-Powered Intelligent Bots to Help Enterprises Engage Customers and Employees Oracle and Chatbox Collaborate to Bring Instant Apps to AI-powered Oracle Intelligent Chatbots Reuters: Slack locks down Oracle partnership targeting enterprises CNBC: Slack is partnering with Oracle to offer new in-app business bots ComputerWorld: Slack and Oracle move to collaborate on business app chatbots You are going to continue to hear a lot more about these topics so if you haven't taken 30 minutes to watch our Launch Webcast and visit www.oracle.com/bots, it is well worth your time. More than anything #OOW17 was about innovation, sharing our customer successes, and Oracle’s strategy and vision. I was inspired by the kids from Design Tech High School – these students are teaching Silicon Valley a few things.  Clearly, there is a lot to look forward to, and this next generation of entrepreneurs have already started to lead the way. One thing is certain, with Oracle Cloud, we are committed to supporting our customers throughout their Cloud journey, no matter where they are. Just take a look at some of our Cloud Platform innovations:   Oracle Expands Open and Integrated Cloud Platform with Innovative Technologies Oracle Cloud Platform Innovates to Power Big Data at Scale More than anything, it was our customers and partners that showcased the power of the Oracle Cloud Platform. Australia eBay, Exelon, Financial Group, CoreLogic, National Pharmacies, Orb Financial, Paysafe, Sinclair, Subaru of America, The Factory, Trek Bicycles, Trunk Club, Turning Point, and so many others shared their stories about how they have embraced Oracle Cloud to embark on their own digital transformation journeys and lead their industries. Customers also discussed how they are leveraging Oracle Integration Cloud to connect their SaaS and on-premises applications by leveraging 100+ out-of-the-box cloud adapters, orchestrating end-to-end process automation, and , using easy tools for visual application development. With Oracle Data Integration, organizations are able to easily integrate new sources of data in any format to help eliminate costly downtime, accelerate data integration for Analytics or Big Data, and improve data governance. Whether you were at one of our largest developer-focused, OpenWorld Oracle Code events that drew over 1500+ attendees, or one of our standing room only general and conference sessions, you probably saw our most complete API management cloud solution that lets you design, govern, manage, analyze, monetize, and secure APIs in a true hybrid deployment. Oracle’s API Platform Cloud now includes Apiary, which allows developers to prototype, test, document and manage their APIs with industry standards such as OpenAPI and API Blueprint. Before I finish, I must acknowledge our partners. They were instrumental in helping our customers embark on their journeys... Auraplayer, Avio, Cognizant, Fishbowl, Rubicon Red, SunetraTech, Sofbang, TetraTech, Deloitte, Intel, PWC, Tata Consultancy Services, Accenture, Fujitsu, Infosys, and Wipro all deserve recognition for their successes. With the help from our customers, partners we are able to showcase how technology in transforming companies and industries – we were able to... Explore Tomorrow, Today!    

Authored by Rimi Bewtra, Senior Director, Cloud Business Group, Oracle   WOW… I am not even sure where to begin… this Oracle OpenWorld was AWESOME!!!!! If by chance you missed it then catch one or...

Mobile Content

Welcome to #OOW17: Last Mintue Resources, Demo Showcases, and More!

    We’re ready for Oracle's biggest event of the year, but before you arrive at Moscone North on Sunday evening, we wanted to provide you with some last minute resources to make your week at OpenWorld 2017 even more enjoyable:    Chatbots & Mobile Sessions: You need to go to The New Frontier: AI-Powered Chatbots session on Monday at 2:15pm (Moscone West 3024), our Bots Customer Panel on Tuesday at 3:45pm, and our Mobile Customer Panel on Tuesday at 4:45pm ( both in Moscone West 3022). Also, be sure to check out our General Sessions on Oracle's Cloud Strategy & Roadmap and on Modern Application Development on Monday afternoon.  For list of all of the recommended Chatbots and Mobile sessions at OpenWorld 2017, read this blog, or go to bit.ly/OOW17Bots.   The Innovation Studio @ Oracle OpenWorld: Located on the street level of Moscone North near the front entrance to Howard Street, the Innovation Studio @ Oracle OpenWorld will feature hand-on demonstrations of emerging technologies from Fortune 500 companies, 17 cutting-edge start-ups, and of course, from Oracle itself!  One of these demos will be presented by Wedo, Oracle Spain's Digital Practice, and will feature an end-to-end hotel experience using chatbots!  Book a room, check in, unlock your door, access amenities and room service, and pay your bill... all are possible within this demo using Oracle Intelligent Bots.   Chatbots & Mobile Demos:  There are many demos located in the OpenWorld Exchange this year, and we've listed them for you below:   Chatbots, Conversational UI, AI, and Machine Learning with Oracle's Intelligent Bot Location: Moscone West, SOA-24 Why you should be excited: Come by this demo booth and see not only demonstrations of many examples of chatbots but also how Oracle’s Intelligent Bots leverage AI and machine learning to create the most natural UI possible, the conversational UI.   Customer Experience Analytics: Actionable Insights to Improve Mobile Apps & Chatbots Location: Moscone West, SOA-26 Why you should be excited:  Oracle Customer Experience Analytics provides all the analytic tools needed to develop a deep understanding of user behavior. It provides up-to-the-minute, detailed insights into what users are doing—using actual behavioral data—to take the guesswork out of what’s working and what isn’t. You can then take action based on these insights to optimize your solution.   Mobile App Development in the Cloud: Low Code, Mobile APIs, and Rich Mobile Services Location: Moscone West, SOA-25 Why you should be excited:  Oracle Mobile Cloud delivers a market-leading mobile application development platform and mobile back end as a service (MbaaS), enabling you to easily create engaging mobile applications—and you don’t even need to be a developer to create great and engaging mobile applications. Learn more in this demo.   Oracle Mobile and Chatbots for SaaS Location: Moscone South, CX-001 Why you should be excited:  This demo introduces Oracle Mobile Cloud Enterprise for Oracle SaaS. Come meet Oracle product and technical experts to learn about the architecture and underlying technologies for this new cloud service as well as any questions you may have as you consider this platform for your mobile or chatbot development needs.   Oracle Mobile & Chatbots Showcase: Innovations from Customers and Partners Location: Moscone West, SOA-23 Why you should be excited:  Come to this demo to see great real-life examples of mobile applications and chatbots built with Oracle Mobile Cloud and Oracle’s Intelligent Bots. The most-innovative examples of mobile and chatbots have been gathered from live customers and partners and placed into this one area.   Oracle Mobile Cloud Enterprise: One Integrated, Complete Platform for Mobile & Chatbots Location: Moscone West, SOA-29 Why you should be excited:  This demo introduces Oracle Mobile Cloud Enterprise. Come meet Oracle product and technical experts to learn about the architecture and underlying technologies for this new cloud service as well as any questions you may have as you consider this platform for your mobile or chatbot development needs.   Don’t forget to subscribe to our social channels to keep up to date during #OOW17: Follow us at @OracleMobile Join the conversation on LinkedIn Like Oracle Fusion Middleware Subscribe to the Oracle Mobile blog

   We’re ready for Oracle's biggest event of the year, but before you arrive at Moscone North on Sunday evening, we wanted to provide you with some last minute resources to make your week at...

Customer Success Stories

AAR Corp Uses Intelligent Bots to Help Drive New Insights

AAR Corp. is a global aviation services company that operates in more than 100 countries. It works with both government and commercial customers, and fields requests that range from aircraft maintenance and parts orders, to fleet logistics and even airlift services. With many different customers depending on its expertise, and with millions of transactions flowing through its systems every day, AAR knows that it needs to make intra-company communication and access to information and processes as easy as possible for its employees.  Rather than replacing a mix of legacy back-end systems, or using significant IT resources to create new analytics and communications dashboards, AAR is building prototype chatbots using Oracle Mobile Cloud Enterprise (MCE).  These intelligent chatbots use natural language processing and artificial intelligence to understand employee inquiries in context, respond to employees with relevant answers based on information provided from connections with AAR's current back-end systems of record, and then learn from the questions they were asked in order to better anticipate and respond to future queries. This allows AAR employees to find answers to questions through their preferred communication channel (mobile messaging), and saves the company from quickly having to replace costly IT infrastructure in order to stay current with modern employee expectations. Serdar Yorgancigil, VP of MRO Soultions and User Experience at AAR notes that "chatbots [are] a great opportunity to provide information to people who typically don't use our systems, like our senior management, VPs, and general managers... [they ask] unique, one-off questions that [they] may never ask again in that same context." Indeed, different users rarely will ask for information in exactly the same way so having a chatbot that can understand nuanced variations of the same question, and having one that can remember the context of an ongoing conversation, is extremely helpful.  "Once you start having a chatbot conversation, and it’s established that you’re dealing with the Oklahoma facility, if a couple of questions later you just say, ‘Give me the aircraft status,’ it knows that we’re in the context of Oklahoma and applies it as a filter, as opposed to asking you again “would you like to get status for Miami, Oklahoma, Indianapolis,” says Yorgancigil. AAR says it that at first, it will probably deploy its newly-minted prototype bots on Facebook Messenger and on its own internal system, but eventually, it plans to connect additional bots to additional back-ends and release them through additional channels. Oracle Intelligent Bots allows users to connect to back-end systems easily through APIs, and to write code only once while deploying onto many channels, making it fairly easy for a company like AAR to test and scale employee communication and information gathering as its needs change. To learn more about AAR's plans for chatbots, and about Oracle Mobile Cloud Enterprise, you can read the full Forbes article here. 

AAR Corp. is a global aviation services company that operates in more than 100 countries. It works with both government and commercial customers, and fields requests that range from aircraft...

Mobile Content

3,2,1... Oracle Intelligent Bots have Arrived… and they are STAYING!

Authored by Rimi Bewtra, Senior Director, Cloud Business Group, Oracle   Chatbots powered by AI have the potential to transform our lives.  Consider this: A chatbot never sleeps, never makes you wait, and can personalize any customer experience. Even more compelling, chatbots powered by AI now have the ability to learn and build relationships. You can see why I was so excited about this launch webcast: The Next Decade of Mobile: Conversational Bots Driven by AI. If you missed it, check it out... I promise it is well worth your time.  I have launched many products over my product marketing career – there is a great deal of work that goes into any launch – pulling together the content, planning out the activities, and of course, building the product. To pull off a successful product launch you need a great team. I would say that I have had a handful of truly successful launches, and this was definitely one of them. With a record number of attendee views and registrations (and still growing) – this 30 minute webcast was full of insights and innovations. I was honored to be joined by both Amit Zavery, Senior Vice President of Oracle Cloud Platform and Fusion Middleware, Suhas Uliyar, Vice President, Product Management and Strategy for Mobile, Bots and AI, and our customer, Exelon, a FORTUNE 100 company in the energy business (learn how chatbots are driving better customer connections.) The webcast opened with Amit providing a glimpse into Oracle’s current and future strategy. Then, Suhas shared how easily chatbots, powered by AI, can personalize engagement with customers across web, mobile or voice-enabled devices. He also demonstrated Oracle tools that not only allow users to build chatbots, but also tools that easily allow users to analyze insights from chatbot and mobile engagements.  Like I said … this webcast is definitely worth your time. To continue the excitement, each region around the world threw its own Launch Party! Timed with the release of our webcast, we hosted parties across the United Kingdom, Italy, Spain, India, Brazil, Columbia, and the United States.  Each location watched our webcast, Oracle representatives answered questions, and all attendees shared their customer and partner use cases and success stories. Of course, no party is complete without goodie bags, food, beverages and yes, even dessert was included! From what I am hearing, the parties are continuing, not only at Oracle Open World 2017 but also well beyond.  Needless to say, you will be  hearing lots more about #Chatbots, #AI, #Mobile, and much more at #OOW17 – if you are going, here are 7 must-see sessions on #OracleBots. And if by chance you are not, be sure to check out our new animated videos, white papers, customer stories, and much more at: oracle.com/bots or at cloud.oracle.com/mobile.

Authored by Rimi Bewtra, Senior Director, Cloud Business Group, Oracle   Chatbots powered by AI have the potential to transform our lives.  Consider this: A chatbot never sleeps, never makes you wait,...

4 Concepts to Consider Before Building a Chatbot

  What use is a chatbot without data, or the systems that house that data?  Not much, when you think about it. Sure, you could build a chatbot and hard code canned answers to users' questions into its programming, but if you want to build an AI-powered, intelligent bot that responds in a contextual and personalized way, you not only need natural language processing and machine learning tools, you also need data that the bot can access to provide its users with the most relevant answers. In a new Forbes article, Alexa Morales speaks with Oracle Vice President of Product Management - Mobile, Bots & AI, Suhas Uliyar, to learn more about the larger questions that enterprises need to ask when developing chatbots.  In this context, "how do I build my first chatbot?" is too narrow in scope.  To survive in this hyper-competitive, on-demand world, large businesses must think in broader terms, across departments, technologies, channels, and even time if they are to avoid disruption from smaller more nimble competitors.  A more appropriate question that an enterprise might ask could be "how do I build an intelligent, AI-powered user experience that can connect with all of my back-end systems and adapt to different communication channels over time?" Answering this question still could lead a company to focus on chatbot development, but in the context of a larger, enterprise-wide, AI push that will be needed as user demands, and the personalized, automated responses created to engage with users, increase exponentially. When considering these questions as you begin chatbot development, Uliyar advocates paying attention to four key concepts: 1.  Understand how complex each messaging channel actually is: Every channel has different standards. Not only are different channels popular in different parts of the world, but each messaging platform has a different look and feel on the front-end, and on the back-end, operates differently.  To create a specific chatbot for each different channel sucks up valuable time and resources. A platform that lets a developer write code once and deploy it across multiple channels, however, offers tremendous business value. 2.  Don't trivialize Machine Learning and Natural Language Processing: While you certainly can use an open source ML or NLP library for your chatbot, these tools have become "table stakes" for many of today's applications; everyone is using them. If you want your chatbot to stand out, you should consider allowing your technology platform to use its own algorithms to model both "supervised" and "unsupervised learning" so that your chatbot can make more accurate predictions than its peers. 3.  You need a good dialog engine to create a good chatbot: If your bot can't understand that "What's my balance?" and "How much money do I have?" are two variations of the same question, you're going to end up with a lot of frustrated users. 4.  A chatbot without enterprise integration isn't tapping into its full potential: As stated above, what's the use of creating a chatbot when it can't connect to your back-end systems to access all of that data, in a personalized way, for your customers? Fortunately, Uliyar reveals that Oracle Mobile Cloud Enterprise can address all of these concepts.  To read the full article on Forbes, click here, and to learn more about Oracle Intelligent Bots, visit oracle.com/bots.  

  What use is a chatbot without data, or the systems that house that data?  Not much, when you think about it. Sure, you could build a chatbot and hard code canned answers to users' questions into its...

Customer Success Stories

Exelon's Customer Connections Extend Beyoned Power Lines and into Chatbots

  Exelon is a Fortune 100 company and by customer count, the United States' largest energy generator, transmitter, and seller.  It owns six different utilities along the East Coast and in Illinois, and is responsible for electricity and natural gas delivery to approximately 10 million customers. When customers complain about a power outage or their monthly bills, or when Exelon wants to ask customers to reduce energy use in an effort to manage the power grid, naturally, both parties desire a quick and effective communication solution.  That's why Exelon is currently using Oracle Mobile Cloud Enterprise (MCE) to build a chatbot that uses natural language processing and artificial intelligence to understand and respond to customer queries across a number of different messaging platforms. Currently, over 4.1 billion people use messaging apps. Although email refuses to die, and in some cases, people still actually do call each other, mobile messaging has exploded, and with the popularity of apps like Facebook Messenger, Slack, and WeChat, many businesses realize that they must now engage customers in this preferred communication channel. This engagement, however, is easier said than done.  Thanks to the on-demand nature of today's information, customers expect to have any questions answered quickly, using relevant data, and to have those answers personalized.  That's where chatbots come in. Chatbots that use natural language processing and machine learning, like Oracle Intelligent Bots, can adapt to how different people ask similar questions, analyze the intents of these questions, and provide relevant, contextualized answers to each customer.  What does this mean, exactly?  When a customer asks "how much do I owe this month?" a chatbot will reply "You're bill is $65.47," instead of providing a similar experience to that of a "dumb" phone tree where multiple selections must be made before arriving at a canned answer. Exelon built its portfolio in several acquisitions across the energy sector, and each subsidiary has its own back-end systems, from billing to power outage monitoring.  Connecting these systems together isn't easy, especially when the goal is to build a consumer-facing user interface that can respond naturally to human language and provide personalized answers within seconds.  That's why Exelon used micro-service and API features built into MCE to expose their back-end systems so that they could connect easily with front-end user interfaces like chatbots. As a part of MCE, Oracle Intelligent Bots allows users to not only build, test, and deploy AI-powered chatbots quickly (in Exelon's case, the prototype took less than two weeks to complete), but it also eliminates the complexity of writing different code for different channels. With Oracle Intelligent Bots, "we don't have to write the same logic six different times for six different channels," says Rajesh Kumar Thakur, Exelon's Principal Architect, "that's what Oracle is offering us." To read the full story in Forbes, you can click here.   For more information about Oracle Intelligent Bots, click here, or visit oracle.com/bots.    

  Exelon is a Fortune 100 company and by customer count, the United States' largest energy generator, transmitter, and seller.  It owns six different utilities along the East Coast and in Illinois, and...

Mobile Content

#OOW17: 7 Sessions You Need to Attend!

  On October 1st, as you walk into Moscone Center for OpenWorld 2017, you might wonder how you'll be able to choose from all the fantastic sessions that are scheduled this year.  Fortunately, we're here to help! First, check out the Oracle Focus On: AI, Chatbots and Mobile web document that lists all of the exciting Chatbots and Mobile presentations, hands-on labs, and demos at #OOW17.  This document will be a fantastic reference for you while you're at OpenWorld.  Between sessions, don't forget to stop by "The Innovation Studio at Oracle OpenWorld," located at the top of the escalators in Moscone North, where you'll be able to learn about, and try out, emerging technologies like chatbots and IoT devices that Oracle supports! Next, follow this blog, as we will continue to highlight sessions that you'll definitely not want to miss!  Last time, we highlighted "The New Frontier: AI-Powered Chatbots," which will discuss Oracle's strategy and vision surrounding chatbots and artificial intelligence.  Below, we'll preview the seven sessions that you won't want to miss: Monday, Oct. 2nd, 2017 CON7150: The New Frontier: AI-Powered Chatbots Location: Moscone West – 3024 Time: 2:15pm Speakers: Suhas Uliyar, Vice President, Product Management - Mobile, Bots & AI, Oracle Ryan Klose, Executive General Manager, National Pharmacies Group Get excited: Suhas Uliyar highlights Oracle's AI and chatbots strategy, and then will be joined on stage by National Pharmacies, where they will discuss how AI and intelligent, conversational bots will transform the retail industry, in addition to a variety of others. CON7155: Introducing Oracle's Intelligent Bot Location: Moscone West – 3022 Time: 12:15pm Speakers: Dan Nguyen, Senior Director, Product Management, Oracle Anush Kumar, Director, Product Strategy, Oracle Sanga Viswanathan, VP Engineering, Oracle Get excited: See Oracle Intelligent Bots in action! View the demos, learn about the major components, and hear how customers are adopting the technology. CON7145: Oracle Mobile Cloud: Mobile Services Enhancements, Strategy, and Roadmap Location: Moscone West – 3011 Time: 12:15pm Speakers: Deb Ayers, Director Product Management, Oracle Rajesh Kumar Thakur, Principal Architect, Exelon Get excited: Learn about all of the exciting new, and upcoming features of Oracle Mobile Cloud. Deb Ayers will dive into Oracle Mobile's roadmap, and will speak with Oracle customer Exelon about its use of Oracle Mobile solutions as it engages its utility customers across the United States.   Tuesday, Oct. 3rd, 2017 CON7142: Rapid No-Code Creation of Multichannel Instant Apps to Extend Chatbots/Mobile Location: Moscone West – 3022 Time: 11:30am Speakers: Dan Nguyen, Senior Director, Product Management, Oracle Phil Gordon, Founder & CEO, Chatbox Get excited: Chatbots are great, but what if you need more than just a chat interface in order to give your customers the best engagement experience? Learn how to create and use instant apps, which can deliver rich user experiences and integrate chatbots with other device services like the camera.  Also, for all of you poker players... Phil Gordon!! CON7123: Extend and Enrich Oracle SaaS Applications with Oracle Mobile and Chatbots Location: Moscone West – 3022 Time: 12:45pm Speakers: Srikant Subramaniam, Director, Product Management, Oracle Get excited: Enterprise mobility has transformed businesses, but now users rapidly are migrating towards conversational interfaces via chatbots. Oracle Mobile Cloud Enterprise can help your business transition from "there's an app for that" to "there's a bot for that!" CON7153: Intelligent Bots Customer Panel Location: Moscone West – 3022 Time: 3:45pm Speakers: Martin Jarvis, Director, Mobile Product Management, Oracle Carlos Chang, Senior Principal Product Marketing Director, Oracle Serdar Yorgancigil, Vice President, IT, AAR Corp. Pratap Gharge, Executive President and CIO, Bajaj Electricals Ltd. Get excited:  Learn from these technology mavens about how they are transforming customer and employee engagement through intelligent bots! CON7152: Oracle Mobile Cloud Customer Panel Location: Moscone West – 3022 Time: 4:45pm Speakers: Joe Huang, Director, Mobile Product Management, Oracle Eric Rogge, Senior Principal Director, Mobile & IoT Competitive Intelligence, Oracle Robert Brough, Manager, Development & Integration Services, Ledcor Robson Schmidt, Head of IT, Rumo Get excited:   Hear from customers who have used Oracle Mobile Cloud to create compelling mobile applications that have transformed their businesses!  

  On October 1st, as you walk into Moscone Center for OpenWorld 2017, you might wonder how you'll be able to choose from all the fantastic sessions that are scheduled this year.  Fortunately, we're...

Oracle OpenWorld 2017: The New Frontier... AI-Powered Chatbots!

  Are you ready to boldly go to Oracle’s biggest event of the year? This year has been a very busy year for the Oracle Mobile Team, and at #OOW17, you will get to see, hear, and interact with all the intelligent innovations we've been building for our customers over the past 365 days!  In the lead-up to October 1st, we will be sharing the sessions, highlights, and tips you’ll need to pay attention to in order to successfully navigate Oracle OpenWorld 2017.  First, make sure you're registered.  If you haven't registered yet, hurry up and do so or else you'll miss out on all the fun! Next, set your schedule to "stun" (because you'll be stunned by all of the ridiculously cool sessions, of course) and check out our Focus On AI, Chatbots, and Mobile document to learn what we have planned for the week.  We'll give you a hint... this year, it's all about the chatbots!  In fact, if you're interested in learning about Oracle's vision for chatbots and AI, you need to register for the "New Frontier: AI-Powered Chatbots" session on Monday October 2nd at 2:15pm in Moscone West - 3024!  Suhas Uliyar, Oracle VP of Product Management - Mobile, Bots & AI, will discuss Oracle's AI strategy, demo some very cool chatbots, and speak with Oracle customer National Pharmacies. Finally, if you haven't already done so, join and follow our social media channels; we'll be releasing new information through them up to and throughout, OpenWorld! Follow us at @OracleMobile Join the conversation on LinkedIn Like Oracle Fusion Middleware Subscribe to the Oracle Mobile blog That's it for now.  Get excited, stay tuned, and live long and prosper... there's lots more to come!

  Are you ready to boldly go to Oracle’s biggest event of the year? This year has been a very busy year for the Oracle Mobile Team, and at #OOW17, you will get to see, hear, and interact with all the int...

Intelligent Bot Development

Intelligent Bots Are Coming September 20th!

  Oracle Intelligent Bots are almost here! Get ready... OpenWorld 2017 may be less than a month away, but before everyone descends on Moscone Center, we wanted to invite you to join us for an exciting webcast on Wednesday, September 20th, 2017 at 10:00am PT as we launch Oracle Mobile Cloud, Enterprise with Intelligent Bots!   Oracle Mobile Cloud, Enterprise (OMCe) will include current features available in Oracle Mobile Cloud Service, the ability to build, test, deploy, and manage conversational chatbots, and powerful, built-in analytics for both developers and business users. Tune in on the 20th to learn more about OMCe, Intelligent Bots, watch awesome, fun demos of chatbots in action, and listen to our experts as they discuss the impact that AI is having on their businesses: •    Amit Zavery, Sr. VP, Fusion Middleware and PaaS Development, Oracle •    Suhas Uliyar, VP, Product Management – Mobile, Bots & AI, Oracle •    Rajesh Kumar Thakur, Principal Architect, Customer Apps, Exelon •    Rimi Bewtra, Sr. Director, Cloud Business Group, Oracle Register for the webcast today, and follow one or more of our social channels for the latest information leading up to the launch: •    Twitter: @OracleMobile •    Facebook: Oracle Fusion Middleware •    LinkedIn: OracleMobile This is just the beginning… Look out for additional information as we move closer to the 20th and get excited! This is going to be huge!!!  

  Oracle Intelligent Bots are almost here! Get ready... OpenWorld 2017 may be less than a month away, but before everyone descends on Moscone Center, we wanted to invite you to join us for an exciting...

Intelligent Bot Development

10 Tips for Chatbot Success

Authored by Martin Jarvis, Director, Oracle Mobile Product Management and Ian Wallis, Oracle Mobile Technical Director, EMEA     Chatbots rapidly are becoming a key user engagement tool within an organization’s digital strategy portfolio. The exponential growth of messaging platforms across desktop and mobile devices has enabled a new style of Conversational App that can be used to engage your customers, your partners and your employees in multiple locations, at any time. Some of these apps even are voice-activated, and are starting to appear in places like the home and in vehicles. Alexa, Google Assistant, Siri, and technologies such as Android Auto and Apple Car Play are extending the reach of these conversational apps into places one would only dream of several years ago. To help ensure your first chatbot projects are successful, we have compiled a set of 10 top tips. These tips have been sourced from industry experts, from current customer projects, and from our own experience in implementing chatbot apps at Oracle:     1)    Don’t be afraid to launch “Mobile Chat” before a “Chatbot” For many organisations, the Contact Center is the primary point of interaction with customers or employees. Traditionally, these have been call centers providing inbound, 1:1 voice communication between customers and service agents. Recently, these centers have evolved to incorporate “web chat” or “live chat,” allowing customers to converse with a live service agent through a website text interface. With the increasing mobile usage, it’s vital to ensure that the web chat experience is “mobile-optimized,” either through your company’s mobile app, mobile website, or through popular messaging apps like Facebook Messenger, WhatsApp, or WeChat. As you will learn below, having the option for a live human agent to handle certain customer interactions can be vital to the success of your overall bot strategy. 2)    Start simple and make sure it works We’ve all watched and read so much science fiction it’s tempting to think your chatbot has to be a sentient machine capable of solving the world’s problems, or worse still, destroying the world as we know it! But the best chatbots are the ones that help people to solve simple problems in an efficient manner. Deploying a chatbot is far easier and cheaper than deploying a mobile app so it’s feasible to start with a bot that can handle two or three simple interactions and then add additional functionality later. Critically, these interactions need to be fast, easy to use, and consistently reliable. If they are not, your users will try the chatbot once or twice and then give up.  The development mantra should be “crawl, walk, run, sprint!”  How do you know when you should move from “crawl” to “walk” or from “run” to “sprint?” That’s where analytics come in, which leads us to our next tip... 3)    Monitor your chatbot with deep analytics from Day 1 Analytics is the difference between guessing and making informed decisions. Every change and improvement to your bot should be based on solid data from insights into how your bot is behaving in the real world. That means instrumenting your bot and collecting data on each user interaction for subsequent analysis. If users are having problems completing a transaction, analyse the conversational flow to identify where the problem is occurring. It may be a sporadic technical issue, or it could be that a tweak to the conversational flow improves the user experience. Either way, you will have the data to give you the confidence you are making the right changes to your bot. Some of the most valuable insights you will receive come when you first launch new services so it's vital to have a strong analytics capability built into your chatbot infrastructure when you first deploy your bot. 4)    Be honest with the user – admit it’s a bot With current technology, we’re not able to produce an artificial life form that can completely think, behave, and adapt to situations like humans can.  There will always be situations that a bot cannot completely understand or handle, and when one of these situations occurs, your users will be more forgiving if they know that they are talking to a bot and not to a human. There is a parallel in the movie industry referred to as “the Uncanny Valley.”  When the latest motion capture techniques are employed to digitise human actors into CGI re-creations, audiences sometimes can’t distinguish between animations and real life; the imagery is somewhere between the two, hence the “uncanny valley.” The same thing can happen with your bot if you pretend it’s human. It sometimes may behave like a real person, but at others the way it behaves will feel unnatural. This will leave your users in the uncanny “bot” valley.  That’s why you should also always be clear it’s a bot.     5)    Add "Intelligence" to your chatbot, but don’t let users train the AI Starting with menu-based, structured bots is all good and well but users will start to expect your bot to intelligently handle queries. Open up your bot to more phrases (utterances) from users. Use Artificial Intelligence techniques such as Natural Language Processing (NLP) and Machine Learning (ML) to understand what the user wants (their intent) and any specific information (entities) contained in the text. Manage the context and state of the conversation so that the human-bot interactions make sense, and make sure you train up your bot with sample utterances using supervised Machine Learning. If you want to use unsupervised Machine Learning to detect groupings of user phrases and intents, make sure you have someone review the recommendations from the ML so that users do not unintentionally, or intentionally, corrupt your bot. A racist or sexist bot has a very short life span. 6)    Give your bot character, wit, and a persona There is nothing worse than a boring bot. Give your bot a name and build up a persona and profile for the bot that matches your brand goals. Add a friendly image or avatar but remember Tip #4, above. Make your bot “chatty” by using concise prompts and break these up with comments to keep it conversational.  Be consistent, but add small variances in how the bot responds, e.g. “Hi”, “Hello”, or “Hiya” on start-up.  Recognize slang terms used by users.  Consider appropriate use of humour, but take care to test this out with users and monitor user reactions. Admit failure graciously, and make sure you avoid SHOUTING!!! 7)    Leverage your APIs to connect your bot to the Enterprise To be useful, bots need to be able to connect to your back-end systems to find the information requested, or to perform transactions on your users’ behalf. Building great mobile apps taught us that the best way to connect to back-end systems is with mobile-optimised REST APIs. If you’ve already built APIs for your mobile app, you can reuse them for your bot and they will help you to get your bot to market faster. If you have yet to build a set of mobile-optimised APIs, you can use a platform such as Oracle’s Mobile Cloud to help you create the right APIs for your bot.   8)    Identify habit-forming interactions to keep users coming back The bots that produce the highest levels of engagement are those that help users accomplish regular tasks in a quicker or simpler way than if the users had done these tasks by themselves. Imagine how much easier life would be if you could ask a bot to organise a meeting with several people from different organisations, and then adjust your schedule and notify everyone affected when you tell the bot you are running late. To achieve this, your bot needs to be immediately accessible in whichever channel is most convenient when you issue that instruction, which is why it's important to think of a chatbot not only as a simple automation tool, but also as a pillar of a multichannel user engagement strategy. Identifying these simple user behaviors and increasing user interaction with your bot across channels can increase user comfort with, and reliance on, your bot, which can lead to higher productivity as time is being saved.   9)    Always allow your bot to hand a conversation off to a human Admit to the user when your bot is stuck. When this occurs, pass the conversation to a human and allow a live representative to escalate the issue. If a user becomes frustrated with a bot, it’s helpful if a bot can detect this and connect the user to a live agent. Otherwise, you could risk losing the user as a customer.  It also is quite reassuring for users to know that they can chat with a real person in certain scenarios, especially in extreme cases like a life emergency, where a bot should not be given responsibility for handling a critical processes or interactions. For these reasons, make sure your bot is seamlessly integrated with your live chat capability so that the user does not need to make a phone call or swap to another screen. 10)    Continue to invest in your bot, and enhance the user experience This is a brave new world. Organizations need to invest in skills and technology to create fantastic conversational experiences. The new skills required in an organization include Conversational Design, Intent-Utterance-Entity Mapping, Machine Learning Set-Up and Training, Channel Integration, and Back-end Integration and API Shaping for Conversational Interfaces. It is worth investing in the skills and technologies that facilitate building chatbots. In turn, if you invest correctly, you will delight your users and drive improved engagement and satisfaction.   Oracle provides customers with Intelligent Bots as part of its upcoming Oracle Mobile Cloud, Enterprise. For more information please contact ian.wallis@oracle.com or go to www.oracle.com/bots.  

Authored by Martin Jarvis, Director, Oracle Mobile Product Management and Ian Wallis, Oracle Mobile Technical Director, EMEA     Chatbots rapidly are becoming a key user engagement tool within an...

Mobile Development

JSON Validation in MCS: Quickly and Easily

Validating JSON in MCS I was working with a customer the other day, trouble shooting an API that did not seem to be working when it was accessed by a MAX application. When he tested the API in MCS, everything worked fine. When he accessed that same API call from MAX, the list control was empty and the message "No data found" was displayed instead.   Fortunately, this customer noticed a small discrepancy between the JSON that was being returned by the API and the expected format of the JSON as specified by the schema. The API's schema for the returned JSON value was different than the actual return value and that was the root of the problem.   MCS Does Not Validate Your Data By default, MCS does not validate any of the data that you pass through it. Developers sometimes assume that since MCS allows you to specify the schema, or limits | patterns | ranges on arguments, that MCS is validating these value. It does not. You can see this for yourself by test the HelloValidation API, which specified a 4 digit number in the simple greeting request. Use a 2 digit number instead and MCS will happily provide you with the example data.   There are two main reasons for the lack of automatic validation: Validation takes time and would slow down service response times. If you create a REST service that can take multiple request types and provides multiple response types (application/json, application/x-www-form-urlencoded or multipart/form-data) automating the validation of the payloads is nearly impossible. However, as developers we know that slower response times are worth the trouble when we are creating new services. In the development phase we need visibility into how the services are running, not execution speed. Fortunately, MCS and Node.js do allow for validation and you can turn it on an off in your custom code.   Adding Validation to Your MCS Code Adding validation to your code requires a few steps. The first thing you need is your API. I have create a RAML file for my sample API and you can download it and use it to create the same service that I am using for this blog entry. I named the API HelloValidation.   Click to download RAML   Now you need a JSON validator package. There are several out there but I chose the "jsonschema" package from nam because it seemed easy to use. Please note that I did not do an exhaustive (or even cursory) examination of all available JSON validators so my use of jsonschema is not an endorsement in any way, just a handy example. Feel free to substitute with the validator of your choice. You can see the main page for jsonchema here.   From MCS download the javascript scaffold for the HelloValidation service and unzip it onto your local hard drive for editing.   Open a command window and navigate to the directory that contains your HelloValidation service.   Type in the following command npm install jsonschemma Once the installation is complete, you will see a node_modules directory. We now need to make your code aware of the existence of this package. Open up the package.json file and the package-lock.json file and compare them. Update the package.json file so that it looks like the following (assuming the version number of jsonschema hasn't changed since I wrote this).   { "name": "hellovalidation",   "version": "1.0",   "description": "Provide a validated greeting to the caller",   "main": "hellovalidation.js",   "oracleMobile": {     "dependencies": {     "apis": {},     "connectors": {} }   },   "dependencies": {     "jsonschema": {     "version": "1.1.1",     "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.1.1.tgz",     "integrity": "sha1-PO3o4+QR03eHLu+8n98mODy8Ptk="     }   } }   Next you need to modify the code for the GET method to provide a validated response. We can also use this code to test invalid requests and responses. Open the hellovalidation.js file. The first thing we want to do is to add some validation to the {id}   module.exports = function(service) {    var validationActive = true;    /**     *  The file samples.txt in the archive that this file was packaged with     *  contains some example code.     */    service.get('/mobile/custom/HelloValidation/simplegreeting', function(req,res) {    // Get the "id" query parameter as a number. It is a string by default    var id = parseInt(req.query.id);    if(validationActive) {       // Initialize our validator object       var Validator = require('jsonschema').Validator;       var v = new Validator();       // Create a schema for numeric values between 1000 and 9999       var idSchema = {"type": "number", "minimum": 1000, "maximum": 9999};       console.info("validating an id with the value: " + id);       // Validate the query parameter       var vRes = v.validate(id, idSchema);       if(vRes.errors.length > 0) {          // There was an error in the ID. Handle it          console.info("bad ID: " + id);       } else {          // Validation passed.          console.info("good ID: " + id);       }    console.info(vRes); // Write the validation results to the log.    }    // Create our result object    var result = { "simplegreeting" : "Hello John" };    if(validationActive) {       // Now create our result schema       var resultSchema = {          "$schema": "http://json-schema.org/draft-04/schema#",          "definitions": {},          "id": "http://oracle.com/simplegreeting",          "properties": {          "simplegreeting": {             "id": "/properties/simplegreeting",             "type": "string"          }      ,       "type": "object"       }       console.info(v.validate(result, resultSchema));    }      var statusCode = 200; // Success    res.status(statusCode).send(result);    }); };   Note the line near the top of the code: var validationActive = true;   This is our switch to turning validation on and off. When you move the code to production, this allows you to quickly and easily turn off validation. Of course, you may wish to leave validation turned on in production, especially if your services are being called by partners or the public. It is entirely possible that they may send bad query parameters or payloads, accidentally or deliberately.   Naturally in production code you would want to send errors back to the caller, either in the header or in the body of the response. This example is not meant to show coding best practices, only to show how easy it is to add JSON validation to your projects

Validating JSON in MCS I was working with a customer the other day, trouble shooting an API that did not seem to be working when it was accessed by a MAX application. When he tested the API in MCS,...

Mobile Development

Securely connecting to other apps and services from Mobile Cloud Service

CSF Keys in MCS I recently had a customer ask me about creating a connector from Mobile Cloud Service (MCS) to Oracle Financials in the cloud. Creating a connector to Oracle Financials is a quick process and involves the creation of a CSF key. What is a CSF Key? CSF stand for Credential Store Framework. This framework, built into MCS, allows you to create and store multiple credentials for use by MCS. In this case, we want to store a basic authorization credential in MCS so MCS can authenticate to the Oracle Financials Cloud Service. How do I create a connector that uses CSF? Here is the process for creating a connector to Oracle Financials. You must know the authentication strategy used by the system to which you are connecting. In the case of Oracle Financials or HCM in the cloud, Basic Auth is used. Therefore you need to have a user name and password that will be recognized by the backend system. Start MCS and navigate to the Connectors page. Click on the green "+ New Connector" button to start the connector creation wizard. Oracle Financials and HCM will need a SOAP connector, so select SOAP Connector when prompted. Provide your new connector with a name and paste in the URL to the WSDL for the SOAP service. ​ Press the Create button to create the connector. For our purposes, you can skip the first 2 steps of the Connector configuration and go directly to the Security link. Here on the security page you must first select the authentication policy for the system. In this case it is oracle/http_basic_auth_over_ssl_client_policy. Once you have selected the authentication policy, you can create a new CSF key. See the highlighted areas on the following image.     The Add / Create CSF Key dialog will appear. Press the Add button to create a new key. Fill in all of the required information and press the Create button. Mobile Cloud Service will take care of all of the details for you. The key will remain available for other connectors also, so if you have specific privileged user accounts for your backend systems, you can easily reuse the keys. Managing CSF Keys That takes care of creating a CSF key. Now how do you manage them? If the user password changes on a backend system you need a way to quickly change it in Mobile Cloud Service (MCS). It's not uncommon for corporate policy to specify that passwords are changed twice a year or more frequently. Fortunately, this is easy in MCS. Simply click on the Administration tab in the main MCS menu, and then click on the Keys & Certificates button in the main web page.   This will bring up the now familiar CSF Keys and Certificates dialog. Just change the password here and save your changes. No need to update any of your connectors or custom code.   That's all there is to it. Now you know how to easily create and manage your CSF keys.

CSF Keys in MCS I recently had a customer ask me about creating a connector from Mobile Cloud Service (MCS) to Oracle Financials in the cloud. Creating a connector to Oracle Financials is a quick...

Mobile Content

Great Mobile and Internet Reports You Must Check Out

PSA post today for all you mobile and technology fans. I wanted to highlight a couple of excellent reports that should be on your radar. Chronologically speaking, the first being from Benedict Evans of Andreessen Horowiztz (a16z.com – a16z, get it? Geek-minded would, but I’ll let you google it) as well as Mary Meeker of Kleiner Perkins. They are both on my radar as I consider them to be great though leaders covering mobile and Internet trends and offer insightful information supported by real-world data. I look forward to the content they publish and check it out regularly. Benedict’s slides for "Mobile is Eating the World" are more focused on mobile and AI/bots, which explains why it’s only 77 slides long, while Mary’s slides "2017 Internet Trends" are broadly covering Internet trends, and thus 355 slides. (yeah, 355) Great content in both. Artificial intelligence is well covered in Benedict’s slides so more closely aligned with our own bots endeavors. Not sure why Meeker's deck has no references to AI. Out of scope for Internet Trends? Doesn't make sense. Anyways, good info nonetheless which is why I suggest you check out both. You can go thru their slides yourself at the links below, but otherwise,  a couple of interesting things...   Nearly half the world is now connected via a smartphone.  The data from Evans vs. Meeker varies slightly, but I attribute it to the fact that Evan’s is using people over the age of 14, while Meeker is using general overall population. Still, the trend is clear, “mobile is eating the world.” China is one of the key playa to watch. If you just count the number of slides dedicated to discussing China, you’ll see what I mean.  And as a related aside, check out this excellent video by the NY Times discussing how China, mobile, messaging and WeChat, are leading the way to transforming the Internet. IMHO, it's an awesome video.  I would love to be able to pull off a video of that caliber. The visuals, animation and script visually and mentally engaging. Pets.com was the right, just bad timing.I listen to a lot of podcasts (you should too) and recall an interview with Marc Andreessen where I learned that chewy.com was purchased by PetSmart for more than $3B dollars.  That the big B for billion. Say what you will the dot bomb implosion back in 2000, and pets.com was the poster child for implosions, but chewy.com is basically in the same business (pet supplies over the internet) and as Marc noted, right idea, bad timing. :-\  Oh, and on podcasts, personal note, I sometimes accelerate the playback about 25% to get thru it faster, or make slow talkers bearable, but when Marc is talking, he’s one of the few where I sometimes have to slow down the playback by 25% to grok what he’s saying. Must be that big brain of his that's running a bit faster than average, and his mouth can barely keep up. :) Here's the links to the slides from Benedict Evans and Mary Meeker.  I put them here at the end so that there would be a chance that you'd read this far. If I had put them earlier, you'd have become engrossed by their great content. Kind of like Reddit. :) As you can see, everything is moving forward at a wiki-wiki pace. Well, almost everything. We need to get that Paris Climate Agreement back on track.  I mean seriously, when you’re swinging far right of Exxon and Conoco, you’ve got to question that decision, am I right?  Follow us @OracleMobile and join the official Oracle Mobile group conversation on on LinkedIn.

PSA post today for all you mobile and technology fans. I wanted to highlight a couple of excellent reports that should be on your radar. Chronologically speaking, the first being from Benedict Evans of...

Mobile Development

Oracle JET Command Line Interface

If you’ve ever struggled to remember the syntax of the Oracle JET tooling commands, help is at hand!   The Oracle JET command line tooling has been significantly enhanced with the release of the ojet-cli module that provides a consistent, easy-to-use command line interface (CLI) for scaffolding, building, serving and managing JET apps.   This CLI has been released together with JET 3.1.0, but is not yet documented in the JET documentation while we ask you to install it, use it and provide feedback on it. Installation The ojet-cli open source module is fully supported by the Oracle JET team and can be installed as follows: [sudo] npm –g install ojet-cli  Note:  Download the LTS version of Node.js from https://nodejs.org and make sure npm is v3 or v4, since npm v5 has known issues. Usage Once installed, the ojet CLI makes use of the installed Oracle JET Yeoman generators and Grunt tasks, as well as the Cordova CLI.   The syntax is: ojet <task> [scope] [parameters] [options] The available tasks are: add ........................... Adds platforms, plugins, themes and more to a JET app build ......................... Builds a JET app create ........................ Creates a new JET app help .......................... Displays command line help list .......................... Lists platforms and plugins within a JET app remove ........................ Removes platforms and plugins from a JET app restore ....................... Restores a JET app serve ......................... Serves a JET app to an emulator, device or the browser Examples Scaffold a new web app with: ojet create MyApp --template=navdrawer Scaffold a new hybrid mobile app with: ojet create MyApp --hybrid --platform ios --template navbar --appid com.mycompany.MyApp Build and serve the app with: ojet serve ios --device Add platforms and Cordova plugins with: ojet add platform android  ojet add plugin cordova-plugin-camera Help You can get help at a high level, or for specific commands, by invoking commands such as the following: ojet help ojet help remove ojet help remove plugin Give it a go! We encourage you to install and play with the new ojet-cli module and provide your feedback via the Oracle JET Community.  And we hope it makes your life easier when creating Oracle JET web and hybrid mobile apps.

If you’ve ever struggled to remember the syntax of the Oracle JET tooling commands, help is at hand!   The Oracle JET command line tooling has been significantly enhanced with the release of the ojet-c...

Intelligent Bot Development

From Mobile to Chatbots - Bringing AI to the Enterprise

Mobile continues to eat the world and it appears that we're only halfway there. As @BenedictEvans recently pointed out, we're halfway to connecting everyone on the planet with a smartphone! Work in the fact that compute power is getting cheap and accessible, and the recent gains in machine learning (ML), and you you know we're in for some fascinating times ahead of us.  So what's Oracle been working on? I'm glad you asked! Tuesday, May 30th, 10AM Pacific, please join Suhas Uliyar, Oracle Vice President, Mobile Strategy & Product Management, who will be updating, discussing and demonstrating Oracle's continued (r)evolutionin the Cloud First, Mobile First enterprise, the importance of an API First strategy with microservices, and the dominant position of mobile messaging apps and how they are becoming smarter through the adoption of Artificial Intelligence and Chatbots! Want some related reads? Don't know what a chatbot is? Watch this 2 min video and you'll be set. Also, check out our new oracle.com/bots page, and read a bit about our customer successes on our platform. And in case you missed it, watch Larry Ellison brief presentation introducing chatbots.  Follow us @OracleMobile and join the official Oracle Mobile group conversation on on LinkedIn.

Mobile continues to eat the world and it appears that we're only halfway there. As @BenedictEvans recently pointed out, we're halfway to connecting everyone on the planet with a smartphone! Work in...

Intelligent Bot Development

Chatbots 101: Just The Facts

We've spent a lot of time recently discussing chatbots and how they likely will change how customers interact with businesses.  Yet, we haven't spent much time discussing the origin of chatbots, what exactly it is they can do for businesses, and how pervasive they might become.  That changes today, with this new chatbots infographic:       The infographic provides you with a solid introduction to chatbots through useful and interesting statistics.  First, you'll be introduced to some recent milestones in the field of Artificial Intelligence, which have paved the way for mainstream acceptance of chatbots.  Remember when Watson defeated Ken Jennings in Jeopardy, or when Deep Blue beat Gary Kasparov in a game of chess?  Without previous advancements in AI, chatbots would not be nearly as powerful, or as helpful to us, as they are today. Next, you'll learn why mobile messaging platforms have become the ideal channel for chatbot innovation.  Sixty-five percent of consumers prefer using a messaging app when contacting a business (who calls anyone anymore, anyway,) but businesses often are inundated with thousands, or even millions, of customer requests and complaints and are struggling to keep up.  That's where chatbots come in! Finally, you'll understand the differences between the types of chatbots that currently exist (yes, there is more than one type of chatbot!) and what each type can do for you, and for your customers.  Some chatbots are fairly basic and engage only in a structured way based on menu choices (think of these as beefed-up phone trees or FAQs.)  Others, however, can monitor intent, are contextually aware, use natural language processing and machine learning, and can even personalize responses to your questions.  This second type of chatbot is the type that you'll be able to create using Oracle's mobile chatbot platform, and it's also the type that will revolutionize customer engagement in the enterprise!     Don't forget to follow us @OracleMobile and to join the conversation on LinkedIn.

We've spent a lot of time recently discussing chatbots and how they likely will change how customers interact with businesses.  Yet, we haven't spent much time discussing the origin of chatbots, what...

Mobile Development

EMM AppConfig Cordova plugin released

EMM (Enterprise Mobility Management) is the technology of managing mobile devices, wireless networks, and other mobile computing services in a business context.   EMM servers allow administrators to configure mobile apps via a web console and apply the configuration to the app on every managed device as part of the app installation process.  This configuration typically consists of generic name-value pairs defined by the app developer, such as URI, port numbers, tenant ids or skin configurations.   Android & iOS support this functionality natively, but retrieving app configuration data and being alerted when it has changed is just as important for Cordova-based hybrid mobile apps.   To make this possible, the Oracle JavaScript Extension Toolkit (JET) team has developed the cordova-plugin-emm-app-config plugin.  This plugin allows the app developer to retrieve the app configuration data at any point in the app lifecycle, including when the app configuration has been changed on the EMM server.   This plugin is not limited to Oracle JET apps.  Make use of this plugin to enable your Cordova-based hybrid mobile app to retrieve app configuration data and to be alerted when this data has changed.   For more information on implementing various EMM features, including managed app configuration, refer to the AppConfig Community.

EMM (Enterprise Mobility Management) is the technology of managing mobile devices, wireless networks, and other mobile computing services in a business context.   EMM servers allow administrators to...

Intelligent Bot Development

Learn More About Chatbots With Oracle VP Suhas Uliyar

Recently, Oracle Vice President of Product Management and Mobile Strategy Suhas Uliyar sat down with Cognizant Sr. Analyst Kevin Benedict for a discussion about everyone's new favorite topic: chatbots!  Most likely, you have heard some mention, somewhere, of how chatbots are going to change the way that customers interact with businesses, and that the "app revolution" is about to die off, soon to be replaced by bots that will assert their control through engagement on messaging platforms like WeChat and Facebook Messenger.  However, before chatbots invade our daily lives, some of you might be curious as to how they will be built, and why they will become so popular simply by appearing on messaging channels. In the video below, Suhas and Kevin address these questions. First, the two discuss four key components of chatbot development and how chatbots can use current mobility platforms effectively.  Then, they move onto a variety of chatbot-related topics, including discussions about APIs, natural language processing, AI and neural networks, customer sentiment analysis, and user personalization.  At about 23 minutes, the video is short enough to watch in one sitting, but long enough to give needed attention to all of these extremely interesting topics.     &lt;span id=&quot;XinhaEditingPostion&quot;&gt;&lt;/span&gt;

Recently, Oracle Vice President of Product Management and Mobile Strategy Suhas Uliyar sat down with Cognizant Sr. Analyst Kevin Benedict for a discussion about everyone's new favorite topic:...

Intelligent Bot Development

Implementing Chatbots

Wikipedia: A chatbot (also known as a talkbot, chatterbot, Bot, chatterbox, Artificial Conversational Entity) is a computer program which conducts a conversation via auditory or textual methods.  Per my previous post on Artificial Intelligence,  this topic is nothing less than fascinating! Oracle has been making strong moves into the world of intelligent chatbots, its impact with consumers, within the enterprise ecosystem and specifically, what it takes to successfully implement them. At the recent QCon London 2017,  Lyudmil Pelov, Lead Architect with the Oracle A-Team, had a great talk titled: Implementing Your Own Chatbot Platform!  I know, that's the past, but you can check out the slides posted on SlideShare.        And by the way, Oracle President Thomas Kurian recently kicked off the first Oracle Code event (San Francisco), which covered Oracle's overall Cloud offerings and strategy for developers. His slides are also available on SlideShare here. I know, I know - you're thinking, slides are just slides! Where's the beef?  You want to get your hands dirty at a live event right?  Check out the 20 city tour Oracle Code events, specially tuned by developers, for developers. And if one of those isn't nearby, you should check the locally led field events at events.oracle.com and search for your location.  Now if you still can't find a live event nearby, or simply can't spare the day on a "technical research outing" you can tune in to the free Oracle Mobile Platform YouTube channel, where technical videos about mobile (and chatbots too) are covered in detail! You're welcome.  :)     Follow us @OracleMobile and to join our Oracle Mobile Group on LinkedIn.        

Wikipedia: A chatbot (also known as a talkbot, chatterbot, Bot, chatterbox, Artificial Conversational Entity) is a computer program which conducts a conversation via auditory or textual methods.  Per...

Customer Success Stories

Rogers Group Construction & Mobile Cloud Service: An Update

We spoke about Rogers Group Inc, a road and highway construction company based out of Nashville, Tennessee, back in November, but wanted to take this opportunity to update you on the company's progress and to share two new pieces of content... an article from Forbes, and a very cool video featuring Dawna Roberts, Rogers Group's IT Infrastructure Manager. As you may recall, Rogers was looking for a way to increase both productivity and efficiency at its job sites. All of the company's on-site data, was recorded, entered, and tracked, using paper forms and spreadsheets, and an office clerk processed everything manually on the back-end into Oracle E-Business Suite applications. This led to construction site reporting delays and productivity loss.   Using a solution developed by AuraPlayer, an Oracle Partner that helps companies to integrate, extend, modernize and mobilize their E-Business Suite and Forms applications, as well as Oracle Mobile Cloud Service, Rogers was able to "wrap" its existing EBS infrastructure and expose it as a web service without changing any code.  The company then collaborated with Sofbang, an Oracle Platinum Partner, to create a mobile app that would allow on-site managers to visualize and manipulate the now-exposed E-Business Suite data.  For the full story of how the solution helped construction foremen, construction managers, estimators, and even IT managers, read the Forbes article!       With this solution set to go live in April at job sites around the US, Rogers anticipates that data collection and processing time will be reduced from one week down to one day, and that on-site managers will be able to make instantaneous decisions by comparing real-tme production costs to their planned budgets for each project.  We'd call that a win for both speed and productivity! Don't forget to follow us @OracleMobile and to join the conversation on LinkedIn.    

We spoke about Rogers Group Inc, a road and highway construction company based out of Nashville, Tennessee, back in November, but wanted to take this opportunity to update you on the company's...

Mobile Content

Oracle Code & Oracle Mobile: Learn What's Next!

  Recently, we've discussed Oracle Code in our blog posts, but today we wanted to give special attention to several sessions related to "Mobile" at upcoming Oracle Code events.  As you may know, Oracle Code is a series of free conferences being held in 20 cities across the globe where developers can learn about the latest technologies, practices and trends in Cloud Development.  Through a series of keynotes, technical sessions, hands-on labs, workshops, and demos, developers will be able to learn from both experts and peers about everything from containers and the latest development tools to AI and chatbots.  These Code events should not be missed, and if you are on the US East Coast and are interested in mobile development, you'll want to make sure to attend these sessions below:     New York -- March 21st   The Rise of Chatbots in Enterprise Mobile Application Development Convene Rockefeller Center - Forum 2; 4:05pm-4:50pm; Frank Nimphius -- Senior Principal Product Manager, Oracle In many science fiction movies, such as 2001: A Space Odyssey, War Games, and any of the Star Trek movies, artificial intelligence is used to enable man-to-machine conversation.  Yet today, in the real world, conversational interfaces are becoming science reality in mobile computing, and are ready to be the next big thing in consumer and enterprise mobile application development.  Paired with artificial intelligence, chatbots help to simplify the mobile communication between users and services. Like in human conversation, well chosen wordings directed at these bots will allow users to book a table in a restaurant, arrange a taxi pickup to the airport, and buy an airline ticket, among many other things. An entry level presentation, this conference session will explore chatbots from a business perspective and will focus on the positioning, use cases, and possibilities that chatbots will create for developers.       Washington DC -- March 27th How to Get Actionable Insights from Mobile Apps and Chatbots Washington Mariott at Metro Center - Junior Ballroom 1; 2:50pm-3:35pm; Joe Huang -- Product Manager, Oracle Have you ever wondered how your mobile app is being adopted by end users? Do you ever want to gather business intelligence data from the way your user use mobile apps? What about the accuracy of your chatbot in understanding what your end user actually asked for? In this conference session, explore how to glean critical business insights and user adoption information from mobile applications and chatbot clients. Then discover how you can turn these insights into actions in order to better engage end users and remedy any issues you observed through analytics data. The Rise of Chatbots in Enterprise Mobile Application Development Washington Marriott at Metro Center - Salon A/B; 5pm-5:45pm; Joe Huang -- Product Manager, Oracle A reprise of the session that was presented in New York on March 21st.     Not able to attend either of these Oracle Code events?  We have additional events coming up in Toronto (April 18th), London (April 20th), Berlin (April 24th), Prague (April 28th), New Delhi (May 10th), and many other cities!  Find an event that works for you and register today!   Dont forget to follow us @OracleMobile, and to join the conversation on LinkedIn.  

  Recently, we've discussed Oracle Code in our blog posts, but today we wanted to give special attention to several sessions related to "Mobile" at upcoming Oracle Code events.  As you may know,...

Mobile Content

Oracle Developer Week San Francisco Keynote

Feb 14th,  Developer Week in San Francisco, Oracle showed some <3 for developers and coincidentally, the keynote was on Valentines day. (aww!) The interesting thing about this keynote was that it not only discussed Oracle's vision for developers, but also showed a great end-to-end demo that showcased some of that vision in action. You might say it was a "talk the talk and walk the walk" keynote & demo, which seems appropriate when you have a room full of developers. Below, I'll try to summarize what I mean. (all images, click to enlarge)   Amit Zavery, Oracle SVP (far right) getting ready to start the keynote       Amit kicked things off right away noting the wonderful changes happening in software development. As he put it, it was a "great time to be a developer" and he meant it. The flexibility of open source technologies, fewer monolithic apps, more microservices and API-first designs, mobile of course, and exciting technologies such as AI and chatbots!     In terms of demonstrating what he mean, he set up the development of an app that would be led API First, deployed on Mobile with an Intelligent Chatbot guiding customers in making efficient purchase decision to obtain those impossible to get, Golden State Warrior tickets.     Vikas Anand, Oracle VP, Product Management - kicked off the demo discussion with the API First view of development. Vikas leads the charge with Oracle's own Integration Cloud Service, where APIs are near and dear to his heart.            Vikas then introduced Jakub Nešetřil, founder and CEO of Apiary.io, Oracle's latest acquisition, to show off how make it easy for developers to readily design, prototype, document and test their APIs. From a developer's perspective, a great addition to their toolset in an API First world.   Jakub Nešetřil, founder and CEO of Apiary.io       The demo inevitably led to the cloud, where the flexibility in tools, languages and processes, were aided by the inherent capabilities of the Oracle Cloud, and all the built in goodies that help developers be more productive.       Oracle Cloud       And finally the demo concluded with Sri Ramanathan, Oracle GVP, Mobile - developing the intelligent chatbot interface, that took advantage of the APIs developed earlier, which enabled the chatbot to make the best ticket offers to the customers.      Sri Ramanathan, Oracle GVP, Mobile End of day, back to Amit Zavery who wrapped it all up with the big picture of the Oracle Cloud Platform.    It was a great keynote and if you missed it, don't worry because you can get your hands on some/similar content at the global Oracle Code events that recently got underway. (March 1st, San Francisco)  They are hands on events tuned for developers, staring this month and going big across 20 cities world wide!               Follow us @OracleMobile and to join the Oracle Mobile conversation on LinkedIn.                                          

Feb 14th,  Developer Week in San Francisco, Oracle showed some <3 for developers and coincidentally, the keynote was on Valentines day. (aww!) The interesting thing about this keynote was that it not...

Mobile Engagement & Analytics

A New Wave of Mobile Engagement

Recently, we talked about the ascension of chatbots and how to engage mobile customers in both a timely and personalized, manner.  However, we have yet to address why either of these topics is, and will continue to be, a driving success factor for both enterprises and small businesses. To say that these advancements are a result of living in a Mobile-First world would be only a partial answer.  Mobile phones have been around for decades, and yet only very recently have we started to use chatbots and advanced customer engagement techniques like location targeting in a business setting.  What's changed?  The answer is that the scale and the technology that surrounds the mobile ecosystem have advanced far enough that its now beneficial, and even necessary, to use these new technologies in order to gain a competitive advantage and achieve a positive ROI.  We just published an iPaper that discusses this topic in detail and we encourage you to read it.  A brief abstract of the paper is below:       Abstract: By 2021, there will be 10 billion connected mobile devices.  That will be enough for every man, woman, and child on Earth to have at least one. This explosive mobile growth has created a huge demand for mobile services, and developers have created tons of apps to fill these service needs.  As a result, mobile users are now accustomed to accessing services on-demand, from transferring money, to ordering an Uber, to submitting a vacation request through their company's HR app. As the on-demand economy scales, customers expect fast and accurate service from their apps.  If they don't get it, they simply switch to another app.  In this very large, low-entry, hyper-competitive, on-demand market, both small and enterprise-level businesses fight for customer share-of-mind and wallet.  Often, the only way these businesses can remain relevant is to create timely and useful "mobile moments" (real-time, intent-driven interactions that require only a glance—yet deliver information users can consume and take action on immediately), either by providing a user with the quickest and most accurate way to consume information (i.e. responding to a query in-app with a chatbot instead of linking to an answer), or by providing a personalized response based on a user's actions (i.e. using location targeting to create a relevant, engaging offer when a user walks into a store.)  If certain businesses don't use these new mobile technologies to create and capitalize on mobile moments, they risk losing out to competitors who will gladly step in to fill any on-demand service gap.   What's made it so easy to compete?  Mobile development, testing, and deployment technology has become more powerful and easier to use.  With low code and even no-code interfaces, these mobile technologies can help companies build, test, and deploy chatbots, codeless apps, or microsites in minutes using nothing but a browser. These mobile platforms also are built with open standards and with API-First development in mind so creating more robust applications and connecting them to system back-ends becomes easy.  In addition, Analytics technology has matured so that businesses now can engage with mobile users on a personal level.  Understanding why customers have gone quiet within an app, targeting them, and re-engaging them with personalized information has allowed SMBs to mine the long tail efficiently and to compete alongside enterprises for additional customer share and profit. Increased competition makes using new mobile technologies even more of a necessity for any business that wants to stay ahead.     Download and read this iPaper, follow us @OracleMobile, and to join the conversation on LinkedIn.

Recently, we talked about the ascension of chatbots and how to engage mobile customers in both a timely and personalized, manner.  However, we have yet to address why either of these topics is, and...

Intelligent Bot Development

Mobile, Cloud and AI...The (chat)Bots are here!

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Verdana; -webkit-text-stroke: #000000}p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Verdana; -webkit-text-stroke: #000000; min-height: 13.0px}span.s1 {font-kerning: none}   Mobile and Cloud are ubiquitous. Chances are, you have a mobile device within reach and in your daily life, you use a Cloud based service. Mobile is the “first screen." Cloud, more specifically, Cloud Native, when it comes to ease of provisioning, set up, use, flexibility, extensibility, security, maintenance – and building on the growing trends in API first, Microservices, and Functions, the Cloud technology and economic model is an easy call.    Mobile and Cloud have come together to change the landscape     So what’s next? While mobile is the "first screen," messaging apps are dominant apps used on those screens, and Artificial Intelligence, e.g. intelligent chatbots, is the new interfaces – or maybe even no screen at all, but instead, voice interfaces. Hey Siri, who is Alan Turing? John McCarthy? Alan Turing asked“Can machines think?” in his 1950  paper, Computing Machinery and Intelligence John McCarthy, coined Artificial Intelligence at the first AI research conference at Dartmouth College   Artificial Intelligence or simply “AI” is the next big shift in technology. I'll tread carefully because historically, AI’s been emerging since the fifties but the compute power wasn’t yet there and the science needed to mature through a few “AI winters." Now thanks to many brilliant minds and exponential growth in compute power (Moore’s law), this time, it's the dawn of the AI era. Serious breakthroughs have occurred and the time between AI milestones is shrinking.   A few examples:   1997, Deep Blue defeats Garry Kasparov, grandmaster World Chess Champion.  (Ok - an 8x8 grid. Not surprising. What about Go? The complexity is magnitudes greater. 2016 AlphaGo’s Deep Mind beats Lee Sedol, the world’s grandmaster Go champion.  A decisive win with creative moves Mr. Sedol and the Go community had never seen.        But Chess and Go are games with “perfect information.” What about imperfect games where some information is hidden? Like poker. Surely, human intuition has an edge?        a Jan 2017, Carnagie Mellon’s Libratus poker bot beats 4 of the world’s best professional poker players, heads up, no-limit Texas Holdem. The win was decisive. Games with imperfect information... Ouch.       The milestones are impressive, but I think we have some time before singularity and I'm not ready to be a house cat to the AI overlords. The Luddite option isn't right either. Let’s look near term and narrow these topics to the business of the enterprise where we will all need to step up our game!   Messaging Intelligent Chatbots     Messaging apps are the most common way for people to communicate with each other, and it is becoming more common (and preferable) to communicating with businesses. Messaging is the latest interface to reach everyone because it’s natural. Mobile apps are great, but the mobile home screen can only fit so many apps. Since messaging apps are popular (WhatsApp, WeChat, Kik, FB Messenger, etc.) automated, intelligent chatbots, offer a way to establishing a scalable, natural conversation between humans and businesses, while at the same time, increasing quality, consistency and response times. Chatbots are not at the stage of passing the Turing test, and replace the ability for humans to work on complex problems, but instead, offload simple to moderately complex inquiries automatically – freeing expert staff to work on complex questions.     Without a doubt, Mobile, Cloud and AI/chatbots are in your future. Whether you will be driving or following is up to you. You’ll want an open, flexible environment that is secure, scalable and intelligent, from a trusted & proven partner.  Oracle is the leader in SaaS, PaaS and IaaS,  and is “all in.”   To learn more about Oracle's mobile, cloud and AI/chatbot development:   Oracle's keynote at Developer Week, San Francisco, Tuesday, Feb 14, Building Modern Applications with APIs, Microservices and Chatbots         Oracle Code: A 20 cities, worldwide tour built for developers. Get hands on experience with Oracle’s Cloud Native, Mobile and Open Source adoptions. Technical presentations and hands on labs. And please visit developer.oracle.com             Quickly! Before our AI overlords take over, follow us @OracleMobile and to join the Oracle Mobile conversation on LinkedIn.   Larry Ellison introducing intelligent chatbots at the 2016 Oracle OpenWorld keynote and stay tuned for more exciting announcements.

  Mobile and Cloud are ubiquitous. Chances are, you have a mobile device within reach and in your daily life, you use a Cloud based service. Mobile is the “first screen." Cloud, more specifically, Cloud...

Mobile Development

Adding Cool Features to Your Oracle MAX App

With Oracle's Mobile Application Accelerator (MAX) as a part of Oracle Mobile Cloud Service (MCS), we've allowed citizen developers to create mobile apps in minutes without using any code.  This is especially useful when you, as a Marketing, HR, Finance, Sales, Service, or even as an over-burdened IT employee need to build a quick, functional app for a specific purpose without allocating significant resources from your company's development team.  MAX gives you that power and that flexibility, increasing both business efficiency and productivity.  But what if, as you create your app, you realize that you need to build more than a simple service dashboard?  What if you want to include more advanced app features, such as allowing users to access phone numbers or email addresses, or maps, or allowing them to take pictures with their phone's camera? These are all important functions within many of today's apps, but for a citizen developer with limited app building experience, incorporating them into an app may not be intuitive.  That's why we're here to help!  We've created several tutorials on how to include these types of features in your MAX app.  Click on any of the videos below, and you'll learn how easy it is to add things like maps to your build!     Displaying Phone Numbers, Email Addresses & Links:         Working with Maps in MAX:       Using the Camera in MAX:       Don't forget to follow us @OracleMobile and to join the conversation on LinkedIn.

With Oracle's Mobile Application Accelerator (MAX) as a part of Oracle Mobile Cloud Service (MCS), we've allowed citizen developers to create mobile apps in minutes without using any code.  This...

Customer Success Stories

Doosan Heavy Industries Modernizes with Mobile

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Verdana; -webkit-text-stroke: #000000; min-height: 13.0px}p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Verdana; -webkit-text-stroke: #000000}span.s1 {font-kerning: none}span.Apple-tab-span {white-space:pre}   Doosan Heavy Industries & Construction is a subsidiary of Doosan Group, is a heavy industrial company head-quartered in Changwon, Korean. It was established in 1962. Its business includes manufacturing and construction of nuclear power plants, thermal power plants, turbines and generators, desalination plants, castings, and forgings.       Doosan Heavy Industries (DHI) was looking to modernize its employee and partner work flow experience, and to improve overall efficiencies. The ubiquity of mobile devices made extending services into the mobile channel an easy decision, but the company didn’t just want to create a simple point solution app that it’d have to revamp all too soon. Doosan sought a long-term view by selecting a partner that could help it establish a scalable multichannel development and management strategy.   Doosan selected Oracle because of Oracle’s mobile domain expertise and technology that showed it could exceed Doosan’s goals with a cloud based platform that Doosan could count on into the future.    “Thanks to Oracle Mobile Cloud Service, we gained workforce mobility across construction sites and allowed us to process work-orders in real-time. This helped to significantly improve employee productivity and business agility.”   — Hee Moon Yang, Senior Manager, Process Innovation Team, Doosan Heavy Industries & Construction Co., Ltd.   In a span of approximately 2.5 months, Oracle helped Doosan modernize its process with contextual mobile apps for construction job orders and approvals that were customized for field managers, partners and approvers. The apps securely connected to existing SIMS application via RESTful interfaces and took advantage of MCS storage capabilities to improve overall performance. The apps used on-device services, such as the camera, to create richer more accurate reporting, while leveraging Oracle MCS push notifications to streamline business processes in real-time.   The solution resulted in in a reduction of hours worked, better and faster approval coordination, and real-time responses between partners and managers.    Specifically, Doosan was able to:    Register new work orders at field construction sites and allocate, manage and coordinate with partners, in real time, through mobile devices Achieve a 50% reduction in business process complexities Reduce construction job processing time from 4-8 hours down to 10-30 minutes Create an overall boost in productivity between Doosan managers, staff and partners Oracle is proud to continue to help companies like Doosan modernize their employee and customer experience and embrace the future of mobility in a secure and scalable manner.   Don't forget to follow us @OracleMobile and to join the Oracle Mobile conversation on LinkedIn.        

  Doosan Heavy Industries & Construction is a subsidiary of Doosan Group, is a heavy industrial company head-quartered in Changwon, Korean. It was established in 1962. Its business includes...

Oracle

Integrated Cloud Applications & Platform Services