WARNING: This repository is no longer maintained :warning: This repository will not be updated. The repository will be kept available in read-only mode.
This repository will not be updated. The repository will be kept available in read-only mode.
Watson Conversation is now Watson Assistant. Although some images in this code pattern may show the service as Watson Conversation, the steps and processes will still work.
CognitiveConcierge is an end-to-end Swift application sample with an iOS front end and a Kitura web framework back end. This application also demonstrates how to pull in a number of different Watson services to your Swift client and server side apps via the Watson Developer Cloud's Swift SDK, including Watson Assistant, Text to Speech, Speech to Text, and the Natural Language Understanding service.
The user deploys the server application to IBM Cloud.
The user interacts with the iOS application.
When the user performs an action, the iOS application will call the server application API, which uses Watson services and the Google Places API to provide recommendations to the user.
If you haven't done so yet, you also need to download and install the following:
Run the following steps to deploy the application:
There are 3 ways to deploy the server application:
Clicking on the button below creates an IBM Cloud DevOps Toolchain and deploys this application to the IBM Cloud. The manifest.yml
file [included in the repo] is parsed to obtain the name of the application, configuration details, and the list of services that should be provisioned. For further details on the structure of the manifest.yml
file, see the Cloud Foundry documentation.
Once deployment to the IBM Cloud is completed, you can view the deployed application and services from your IBM Cloud account.
You can also manually deploy the Server Application to the IBM Cloud. While it isn't as magical as using the "Deploy to IBM Cloud" button above, manually deploying the app provides some insight as to what's happening behind the scenes. Remember that you'd need the IBM Cloud command line installed on your system to deploy the app to the IBM Cloud.
Execute the following command to clone the Git repository:
git clone https://github.com/IBM/CognitiveConcierge
Go to the project's root folder on your system and execute the Cloud-Scripts/services/services.sh
script to create the services that CognitiveConcierge depends on. Please note that you should have logged on to the IBM Cloud before attempting to execute this script. For information on how to log in, see the IBM Cloud documentation.
Executing the Cloud-Scripts/services/services.sh
script:
$ ./Cloud-Scripts/services/services.sh
If you'd like to create the services manually, or don't have the IBM Cloud CLI, you can create the following services:
Before deploying your application to the cloud, you will need to update it with the Google Places API Key. In the main.swift folder, update the value in the struct with your Google Places API Key.
After the services are created and you've updated this file, you can run the bx app push YOUR_APP_NAME
command from the project's root folder (CognitiveConcierge
) to deploy the server application to IBM Cloud.
Once the application is running on the IBM Cloud, you can access your application's assigned URL (i.e. route). To find the route, you can log on to your IBM Cloud account, or you can inspect the output from the execution of the bluemix app push
or bx app show <application name>
commands. The string value shown next to the urls
field contains the assigned route. Use that route as the URL to access the sample server.
$ bx app show CognitiveConcierge
Invoking 'cf app CognitiveConcierge'...
Showing health and status for app CognitiveConcierge in org [email protected] / space dev as [email protected]...
OK
requested state: started
instances: 1/1
usage: 512M x 1 instances
urls: cognitiveconcierge-lazarlike-archaizer.mybluemix.net
last uploaded: Mon Jun 5 18:01:42 UTC 2017
stack: cflinuxfs2
buildpack: swift_buildpack
state since cpu memory disk details
#0 running 2017-06-05 11:05:41 AM 0.3% 6.4M of 512M 269.8M of 1G
Resources/conversationWorkspace.json
. Take note of the workspace ID for later use in the iOS application.CognitiveConcierge/CognitiveConcierge-iOS
folder, and run the following command to install the necessary dependencies (this may take some time):carthage update --platform iOS
pod install
Open the CognitiveConcierge.xcworkspace
file in Xcode 9.4 from your terminal using open CognitiveConcierge.xcworkspace
, or by double-clicking it in Finder.
Update CognitiveConcierge.plist file: One way to persist data in Swift is through property list or .plist
files. You will need to open this file and add the credentials for all of the services you created earlier, as well as the Google Places API Key mentioned in the Prerequisites section. You can find these services in the Bluemix dashboard. Click the service name you're interested in, and then click Service Credentials
. If there is no Credential created, click New Credential
. If your Assistant service uses an API Key, remove the ConversationUsername and ConversationPassword keys from the file; if not, remove the ConversationIamApiKey key.
Update bluemix.plist file:
isLocal
value to YES
; if you set the value to NO
, then you will be accessing the server instance running on the IBM Cloud.appRouteRemote
value, you should go to your application's page on the IBM Cloud. There, you will find a View App
button towards the top right. Clicking on it should open up your app in a new tab, and the url for this page is your route, which maps to the appRouteRemote key in the plist. Make sure to include the http://
protocol in your appRouteRemote
and to exclude a forward slash at the end of the url.bx app env CognitiveConcierge
, in which appRouteRemote is the value in the uris
key.
"VCAP_APPLICATION": {
"application_id": "3d06c0e7-1fff-4dbf-b0cb-b289770eccfe",
"application_name": "CognitiveConcierge",
"application_uris": [
"cognitiveconcierge-lazarlike-archaizer.mybluemix.net"
],
"application_version": "3ef63168-35f5-4517-84e9-e8f19c8f34b4",
"limits": {
"disk": 1024,
"fds": 16384,
"mem": 512
},
"name": "CognitiveConcierge",
"space_id": "2b3083b9-7ef9-4d55-9741-34433be4cea1",
"space_name": "dev",
"uris": [
"cognitiveconcierge-lazarlike-archaizer.mybluemix.net"
],
"users": null,
"version": "3ef63168-35f5-4517-84e9-e8f19c8f34b4"
}
unning Environment Variable Groups:
LUEMIX_REGION: ibm:yp:us-south
taging Environment Variable Groups:
LUEMIX_REGION: ibm:yp:us-south
Press the Run
button in Xcode to build and run the project in the simulator or on your iPhone!
Before building the CognitiveConcierge-Server application, first update the credentials in the config/nlu-creds file for local development.
You can then build the CognitiveConcierge-Server by going to the CognitiveConcierge-Server
directory of the cloned repository and running swift build
. To start the Kitura-based server for the CognitiveConcierge app on your local system, go to the CognitiveConcierge-Server
directory of the cloned repository and run .build/debug/CognitiveConcierge
. You should also update the bluemix.plist
and CognitiveConcierge.plist
file in the Xcode project in order to have the iOS app connect to this local server. See the Update configuration for iOS app section for details.
CognitiveConcierge.plist
and bluemix.plist
files.This code pattern is licensed under the Apache Software License, Version 2. Separate third party code objects invoked within this code pattern are licensed by their respective providers pursuant to their own separate licenses. Contributions are subject to the Developer Certificate of Origin, Version 1.1 (DCO) and the Apache Software License, Version 2.