// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= Chatbot Integration with Oracle JET
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Chatbot Integration with Oracle JET - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Chatbot Integration with Oracle JET

This document provides a step-by-step set of instructions guiding you through the process of integrating link:https://www.oracle.com/solutions/mobile/bots.html[+IBCS chatbots+] with the link:http://oraclejet.org[+Oracle JavaScript Extension Toolkit (JET)+]. JET empowers web and mobile developers by providing a modular toolkit based on modern JavaScript, CSS3, and HTML5 design and development principles.


== Setting Up an Oracle JET Application

In this exercise you set up an Oracle JET application and explore its default content.

1. Follow the steps described in link:ojet-settingup.html[+Setting Up an Oracle JET Application+].

2. Open the project into an editor or IDE of your choice, such as NetBeans IDE, which displays the application as follows:

image::images/navdrawer.png[]

Spend some time browsing through the application structure. In the next section, you'll be introduced to the main concepts of the application structure.


== Setup your ChatBot to expose it via a Websocket

In this step, now configure the Intelligent Bot Webhook channel. Then try out the ChatBot from your Oracle JET application.

1. Return to the Intelligent Bot user interface in a new browser tab, select the *Settings* button on the left menu, then the *Channels* tab and finally click the *Add Channel* button.

image::images/ccm029.png[]

2. Follow the instructions from the Configuration section of:

*  ``http://<bot server>:3000/samples/chat``  if you’re using a Docker Image before 0.6 *OR*
*  ``http://<botserver>:8888/source/apps/chat/overview``  if you’re using a Docker image from 0.6


== Integrate the ChatBot in the Application

1. In the application, in the  ``src/js``  folder, create a folder named  ``jet-composites`` . Unzip the content of the ZIP file into it, in a folder named  ``bot-client`` :

image::images/t060001.png[]

2. In  ``js/viewModels/Dashboard.js`` , add a reference to  ``jet-composites/bot-client/loader``  and  ``ojs/ojcomposite``  in the  ``define``  block, to load the  ``bot-client``  component.

3. In  ``js/views/Dashboard.html`` , set the following properties, below  ``var self = this,`` :


[source,java]
----

self.websocketConnectionUrl = 'ws://' <bot websocket> => check with the instructor;
self.userId = 'your userId used to send message to the bot';
self.channel = 'channelId, copy from your webhook definition';
----

Can't get yours to work? Try  ``71DB044C-0624-4533-9C98-B8E76BAF919D``  as the channel ID.

4. In  ``js/views/Dashboard.html`` , define the view as follows:


[source,xml]
----

<bot-client id="bot-client"
      channel="[[channel]]" 
      websocket-connection-url="[[websocketConnectionUrl]]" 
      user-id="[[userId]]">
</bot-client>
----
5. 
Run the application and interact with the ChatBot.

image::images/t060004.png[]

You have now hooked your ChatBot into an Oracle JET application.


== Next Steps

Read link:http://www.oracle.com/webfolder/technetwork/jet/jetCookbook.html?component=composite&demo=basic[+the related Oracle JET Cookbook section+] in detail and include another CCA component from there.

Also read link:http://docs.oracle.com/middleware/jet320/jet/developer/GUID-18F9F429-1A80-4A9F-9B78-09428EFD2530.htm#BEGIN[+Creating Composite Components+] in the Oracle JET Developer Guide.

Congratulations! You have now learned how to create and load CCA components in your Oracle JET applications.

link:/about/contact_form.html?to=3&subject=Feedback:%20Getting%20Started%20with%20CCA[+Send Feedback on This Tutorial+]




[[seealso]]
== See Also

For more information about support for Oracle JET and a variety of HTML5 applications in the IDE on link:https://netbeans.org/[+netbeans.org+], see the following resources:

* link:http://www.oracle.com/webfolder/technetwork/jet/globalExamples.html[+"Learn" section on the Oracle JET site+]. A set of official Oracle JET learning resources.
* link:html5-editing-css.html[+Working with CSS Style Sheets in HTML5 Applications+]. A document that continues with the application that you created in this tutorial that demonstrates how to use some of the CSS wizards and windows in the IDE and how to use the Inspect mode in the Chrome browser to visually locate elements in your project sources.
* link:html5-js-support.html[+Debugging and Testing JavaScript in HTML5 Applications+]. A document that demonstrates how the IDE provides tools that can help you debug and test JavaScript files in the IDE.
