Wednesday

Oracle Intelligent Bots: Getting Started with Chat bots - Part 1

In this post, we are going to see how to create a sample chatbot using Oracle Intelligent Bot Cloud Service (IBCS).

Before developing the chatbot, we should understand the terminology.
  • Intent: The entry point of any conversation or use case by describing the various actions that your bot helps its users complete. It enables bot to recognize user input because each intent has a set of typical user statements associated with it.
  • Utterance: It is a typical statement or sample data for an Intent which helps to train the bot. Need to add a good pool of utterances to each intent which will decide to choose the Intent. It is not necessary to be exact string matching.
  • Entity: It is to provide a context to enable your bot to complete a user request. It is a variable or parameter for an Intent or an important word in an input. It is a re-usable component.
  • Dialog Flow: The dialog flow describes how your bot reacts as different intents are resolved. It defines what your bot says to its users, how it prompts them for input, and how it returns data. Think of the dialog flow as a flow chart that’s been transposed to a simple markdown language. In Bots, this markdown language is a version of YAML called OBotML.
  • Custom Components: To put your bot’s intelligence to work, you need to add components and then create a dialog flow. At present, we have two types of components. One is System components which are available by default with the bot and the Other category is custom components which are developed in external systems, used in the bot to completed the flow for the user request.
  • Channels: Enables user to connect to messaging clients like Facebook Messenger, WeChat or any other custom clients like mobile apps, web applications. Oracle IBCS provided client SDKs using which we can generate custom clients as well to interact with the bots.


     Please find the above screenshot of an Oracle Intelligent Bot Cloud Service. All the components discussed above are pointed on the image.
     This image is from a "Finacial Bot" where Balances, Send Money, Transactions etc are the list of intents. The statements like "Do I have enough balance?", "How much do I have available?" etc are utterances for the Intent "Balances", which means when the user gives any of these statements to the bot, then the bot will fetch the "Balance" intent.
     You can also observe "Resource Bundle" on the image which is a new feature in the IBCS which helps to train the bot for multi-language support.

     We will see how to develop our first bot using Oracle IBCS in the next article: Oracle Intelligent Bots: Getting Started with Chat bots - My First Chat Bot- Part 2

Oracle MAF 2.5.0 Released


Oracle Mobile Application Framework (MAF) released a new version 2.5.0.
This is a major release containing a number of platform upgrades and enhancements, including the following:
  • A NEW release of JDeveloper 12.2.1.3.0 is required
  • The embedded Cordova platform engines have been updated
  • Support iOS 11, iPhone X and Xcode 9
  • Support Android 8, and the Google Pixel C phone
  • For faster performance, MAF applications now evaluate 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.
  • 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

Friday

Resolving or Invoking a Method Expression from a Managed Bean in Oracle MAF

[MAF 2.3.1]

I developed a mobile app using Oracle Mobile Application Framework (MAF) in which I had a requirement to invoke a method from a managed bean method. Below is the code snippet worked for me to do this.


public static Object resloveMethodExpression(String expression,
                                             Class returnType,
                                             Class[] argTypes,
                                             Object[] argValues) {
  MethodExpression methodExpression = AdfmfJavaUtilities.getMethodExpression(expression,
                                                                             returnType,
                                                                             argTypes);
  return methodExpression.invoke(AdfmfJavaUtilities.getAdfELContext(), argValues);
}


Where,
  •  expression:  the managed bean method EL expression
  • returnType:  Class name of the return value of the method, can be null if it is void
  • argTypes: Class names of the input parameters need to be passed to the method if any. It would be null if there are no parameters
  • argValues: Input parameter values to be passed to the method if any. It would be null if there are no parameters