By Lee Boonstra, Developer Advocate @ Google Cloud.
Airport SelfServiceDesk demo, to demonstrate how microphone streaming to GCP works, from a web application.
In this demo, you can start recording your voice, it will display answers on a screen.
These steps will deploy a Node JS application with a Angular client, to a cluster with Cloud Run for Anthos. It will also deploy a Dialogflow Agent, for intent matching.
-
Set the PROJECT_ID variable: export PROJECT_ID=[gcp-project-id]
-
Set the project:
gcloud config set project $PROJECT_ID
-
Download the service account key.
-
Assign the key to environment var: GOOGLE_APPLICATION_CREDENTIALS
LINUX/MAC
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service_account.json
WIN
set GOOGLE_APPLICATION_CREDENTIALS=c:\keys\key-ssd.json
-
Login:
gcloud auth login
-
Open env.txt, change the environment variables and rename the file to .env
-
Enable APIs:
gcloud services enable \
appengineflex.googleapis.com \
containerregistry.googleapis.com \
cloudbuild.googleapis.com \
cloudtrace.googleapis.com \
dialogflow.googleapis.com \
logging.googleapis.com \
monitoring.googleapis.com \
sourcerepo.googleapis.com \
speech.googleapis.com \
texttospeech.googleapis.com \
translate.googleapis.com
-
Build the client-side Angular app:
cd client && npm install npm run-script build
-
Start the server Typescript app, which is exposed on port 8080:
cd ../server && npm install npm run-script watch
-
Browse to http://localhost:8080
-
Create a Dialogflow agent at: http://console.dialogflow.com
-
Zip the contents of the dialogflow folder, from this repo.
-
Click settings > Import, and upload the Dialogflow agent zip, you just created.
-
Caution: Knowledge connector settings are not currently included when exporting, importing, or restoring agents.
Make sure you have enabled Beta features in settings.
- Select Knowledge from the left menu.
- Create a Knowledge Base: Airports
- Add the following Knowledge Base FAQs, as text/html documents:
- https://www.panynj.gov/port-authority/en/help-center/faq/airports-faq-help-center.html
- https://www.schiphol.nl/en/before-you-take-off/
- https://www.flysfo.com/faqs
- As a response it requires the following custom payload:
{ "knowledgebase": true, "QUESTION": "$Knowledge.Question[1]", "ANSWER": "$Knowledge.Answer[1]" }
- And to make the Text to Speech version of the answer working add the following Text SSML response:
$Knowledge.Answer[1]
This demo makes heavy use of websockets and
the microphone getUserMedia()
HTML5 API requires
to run over HTTPS. Therefore, I deploy this demo
with a custom runtime, so I can include my own Dockerfile.
-
Edit the app.yaml to tweak the environment variables. Set the correct Project ID.
-
Deploy with:
gcloud app deploy
-
Browse:
gcloud app browse