diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index 157b270644b21f09e2dfaa4884b465597f04e7d4..306e670b31ee85c4ba18ad004c08d2c64ca62472 100644 Binary files a/.idea/caches/build_file_checksums.ser and b/.idea/caches/build_file_checksums.ser differ diff --git a/app/build.gradle b/app/build.gradle index bf75d57009bb5d25600da1162fa9c902c9267437..b98b24d13c36b47b98053dc5c77494f87eb271d2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,6 +20,8 @@ android { } dependencies { + implementation 'com.ibm.watson.developer_cloud:java-sdk:3.7.2' + implementation 'com.github.kittinunf.fuel:fuel-android:1.9.0' implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:27.1.1' implementation 'com.android.support.constraint:constraint-layout:1.1.2' @@ -31,4 +33,5 @@ dependencies { testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' + implementation 'com.android.support:design:27.1.1' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6add63f224b1080306f307d671d3adcdf0a4c34d..b3de1390658a368df8689d0092cb387da7f2f57e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.admin.sleepbetter"> - + <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" diff --git a/app/src/main/java/com/example/admin/sleepbetter/MainMenu.java b/app/src/main/java/com/example/admin/sleepbetter/MainMenu.java index 6e6f260e91c24c62466d8814d127a6f251c1bfab..8cf8c02c7302a444c19988b359895e1d54000712 100644 --- a/app/src/main/java/com/example/admin/sleepbetter/MainMenu.java +++ b/app/src/main/java/com/example/admin/sleepbetter/MainMenu.java @@ -84,6 +84,7 @@ public class MainMenu extends AppCompatActivity FragmentManager fragmentManager = getFragmentManager(); + if (id == R.id.nav_factors) { fragmentManager.beginTransaction().replace(R.id.content_frame, new Factors()).commit(); } else if (id == R.id.nav_goal_diary) { @@ -94,6 +95,8 @@ public class MainMenu extends AppCompatActivity fragmentManager.beginTransaction().replace(R.id.content_frame, new Questionnaire()).commit(); } else if (id == R.id.nav_help) { fragmentManager.beginTransaction().replace(R.id.content_frame, new Help()).commit(); + } else if (id == R.id.nav_bot) { + fragmentManager.beginTransaction().replace(R.id.content_frame, new TestBot()).commit(); } DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); diff --git a/app/src/main/java/com/example/admin/sleepbetter/TestBot.java b/app/src/main/java/com/example/admin/sleepbetter/TestBot.java new file mode 100644 index 0000000000000000000000000000000000000000..581501bb30816663266c16c238f8a02e16954ad7 --- /dev/null +++ b/app/src/main/java/com/example/admin/sleepbetter/TestBot.java @@ -0,0 +1,115 @@ +package com.example.admin.sleepbetter; + +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.text.Html; +import android.util.Log; +import android.view.KeyEvent; +import android.view.inputmethod.EditorInfo; +import android.widget.EditText; +import android.widget.TextView; + +import com.github.kittinunf.fuel.Fuel; +import com.github.kittinunf.fuel.core.FuelError; +import com.github.kittinunf.fuel.core.Handler; +import com.github.kittinunf.fuel.core.Request; +import com.github.kittinunf.fuel.core.Response; +import com.ibm.watson.developer_cloud.conversation.v1.ConversationService; +import com.ibm.watson.developer_cloud.conversation.v1.model.MessageRequest; +import com.ibm.watson.developer_cloud.conversation.v1.model.MessageResponse; +import com.ibm.watson.developer_cloud.http.ServiceCallback; + +import java.util.HashMap; +import java.util.Map; + +public class TestBot extends AppCompatActivity { + + private static final String TAG = "TestBot"; + private ConversationService myConversationService = null; + private TextView chatDisplayTV; + private EditText userStatementET; + private final String IBM_USERNAME = "528a69dc-8537-4a01-8598-bf08be28a75a"; + private final String IBM_PASSWORD = "PqXreJu3IwoQ"; + private final String IBM_WORKSPACE_ID = "724cbe7d-c790-4298-a591-79833ac9aff9"; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.testbot); + chatDisplayTV = findViewById(R.id.tv_chat_display); + userStatementET = findViewById(R.id.et_user_statement); + + //instantiating IBM Watson Conversation Service + myConversationService = + new ConversationService( + "2017-12-06", + IBM_USERNAME, + IBM_PASSWORD + ); + + userStatementET.setOnEditorActionListener(new TextView.OnEditorActionListener() { + @Override + public boolean onEditorAction(TextView tv, int action, KeyEvent keyEvent) { + if (action == EditorInfo.IME_ACTION_DONE) { + //show the user statement + final String userStatement = userStatementET.getText().toString(); + chatDisplayTV.append( + Html.fromHtml("<p><b>YOU:</b> " + userStatement + "</p>") + ); + userStatementET.setText(""); + + MessageRequest request = new MessageRequest.Builder() + .inputText(userStatement) + .build(); + // initiate chat conversation + myConversationService + .message(IBM_WORKSPACE_ID, request) + .enqueue(new ServiceCallback<MessageResponse>() { + @Override + public void onResponse(MessageResponse response) { + final String botStatement = response.getText().get(0); + runOnUiThread(new Runnable() { + @Override + public void run() { + chatDisplayTV.append( + Html.fromHtml("<p><b>BOT:</b> " + + botStatement + "</p>") + ); + } + }); + + // if the intent is joke then we access the third party + // service to get a random joke and respond to user + if (response.getIntents().get(0).getIntent().endsWith("RequestQuote")) { + final Map<String, String> params = new HashMap<String, String>() {{ + put("Accept", "text/plain"); + }}; + Fuel.get("https://icanhazdadjoke.com/").header(params) + .responseString(new Handler<String>() { + @Override + public void success(Request request, Response response, String body) { + Log.d(TAG, "" + response + " ; " + body); + chatDisplayTV.append( + Html.fromHtml("<p><b>BOT:</b> " + + body + "</p>") + ); + } + + @Override + public void failure(Request request, Response response, FuelError fuelError) { + } + }); + } + } + + @Override + public void onFailure(Exception e) { + Log.d(TAG, e.getMessage()); + } + }); + } + return false; + } + }); + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/testbot.xml b/app/src/main/res/layout/testbot.xml new file mode 100644 index 0000000000000000000000000000000000000000..d2a2eb950b8a009d57dbec53d250b001bc334433 --- /dev/null +++ b/app/src/main/res/layout/testbot.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" +xmlns:tools="http://schemas.android.com/tools" +android:layout_width="match_parent" +android:layout_height="match_parent" +android:padding="16dp"> +<!--tools:context="MainActivity">--> + + <ScrollView + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_above="@+id/user_statement_container"> + + <TextView + android:id="@+id/tv_chat_display" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:textSize="16sp" /> + </ScrollView> + + <android.support.design.widget.TextInputLayout + android:id="@+id/user_statement_container" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_alignParentBottom="true"> + + <EditText + android:id="@+id/et_user_statement" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="Your Message:" + android:imeOptions="actionDone" + android:inputType="textShortMessage" /> + </android.support.design.widget.TextInputLayout> +</RelativeLayout> \ No newline at end of file diff --git a/app/src/main/res/menu/activity_menu_drawer.xml b/app/src/main/res/menu/activity_menu_drawer.xml index 2b4c42cbb8f95e40254bdee7975a3881d3010b7c..5a43064cc72b3819613b041c06dfa81ea13259fe 100644 --- a/app/src/main/res/menu/activity_menu_drawer.xml +++ b/app/src/main/res/menu/activity_menu_drawer.xml @@ -20,6 +20,9 @@ <item android:id="@+id/nav_help" android:title="Help" /> + <item + android:id="@+id/nav_bot" + android:title="TestBot" /> </group> </menu>