February 21, 2018

Oracle IBCS: Getting Started with Chat bots - My First Chat Bot- Part 2

Continuation to Oracle IBCS: Getting Started with Chat bots - Part 1

Now you have the basic knowledge about the Oracle chat bot environment. Let's see how to use this environment.

  • Click on New Chatbot

  • Enter Name of the bot which is a mandatory field, and description is optional
  • Your bot window will be opened
  • Before, doing further steps, the bot has a default flow to greet the user. So, let's test the bot first. 
  • Click on "Run" icon which is on top right corner
  • Test window will be opened
  • Type anything to start the bot flow. Let's say, "Hi". Now you can see the bot response as below
  • Let's see the dialog flow for this default bot
  • If you observe the dialog flow, we can see different sections but below are very important out of those
    • Variables: variables created to use in entire bot in any state.
    • States: To define the flow in various states. 
    • System.Intent: Is a component name which will map the user input with the corresponding intent and its state defined in the flow
  • Now, let's change this bot
  • Goto Intents
  • Click on the "+ Intent" button to create new Intent
  • Give a name to the Intent. Ex: MyBot
  • Give some statements to identify the intent under "Examples" section, which we call as utterances
  • Select "Flow" from left menu and write the YAML code as below
  • You can observe a button called "+ Components" on top left corner in "Flow" which provides a menu to choose system components
  • In the flow, the first state is "startBot" which is to identify the intent and the corresponding state 
  • If you enter any statement which does not match with any of the utterances, then it will go to "unresolvedIntent"
  • Now run the bot. Let's type "Hi" again. This time you can see a message which we defined to "unresolvedIntent"
  • Now, give any statement from the given utterances like "about". You can see the defined flow will be started. And the bot  will look like as below

Oracle IBCS: 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 IBCS: Getting Started with Chat bots - My First Chat Bot- Part 2

February 14, 2018

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

January 26, 2018

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


December 3, 2017

Issue: Simulator is running very slow on MAC

The Simulator is responding very slow on my MAC book while running apps. The issue here I found is somehow slow animations are enabled in the simulator. The solution for this is press "Command+T" on the simulator.  It may be simple and funny, but it worked for me. Try yourself :).