Skip to content
This repository has been archived by the owner on Aug 16, 2023. It is now read-only.

Physical Goods Transactions API sample (using Dialogflow) in Java

License

Notifications You must be signed in to change notification settings

actions-on-google/dialogflow-transactions-java

Repository files navigation

Actions on Google: Transactions Sample

⚠️ Warning: Conversational Actions will be deprecated on June 13, 2023. For more information, see Conversational Actions Sunset.

This sample demonstrates Actions on Google features for use on Google Assistant including physical transactions, specifically merchant-managed as well as through Google Pay with payment gateways -- using the Java client library and deployed on App Engine.

This sample shows everything you need to facilitate transactions, including:

  • Check for transaction requirements
  • Get the delivery address
  • Confirm the transaction
  • Examples of Google Pay and merchant-managed payment options
  • Order update Gradle task (sendOrderUpdate), to asynchronously update order status at any time

⚠️ Warning: This code sample was built using Dialogflow. We now recommend using Actions Builder or the Actions SDK to develop, test, and deploy Conversational Actions.

⚠️ Warning: Due to new regulatory requirements, transaction functionalities for Conversational Actions are no longer available in the following countries: Denmark, France, Germany, Italy, the Netherlands, Norway, Spain, Sweden, Poland

Setup Instructions

Prerequisites

  1. Download & install the Google Cloud SDK
  2. Gradle with App Engine Plugin
    • Run gcloud auth application-default login with your Google account
    • Install and update the App Engine component,gcloud components install app-engine-java
    • Update other components, gcloud components update

Configuration

Actions Console

  1. From the Actions on Google Console, New project (this will become your Project ID) > Create project > under More options > Conversational.
  2. From the top menu under Deploy > Directory Information (left nav), where all of the information is required to run transactions (sandbox or otherwise) unless specifically noted as optional.
    • Privacy Policy link: for testing purposes can be https://www.example.com
    • Additional information >
      • Select a Category
      • Do your Actions use the Transactions API to perform transactions of physical goods? > Yes > Save.
  3. From the top menu under Develop > Actions (left nav) > Add your first action > BUILD (this will bring you to the Dialogflow console) > Select language and time zone > CREATE.
  4. In Dialogflow, go to Settings ⚙ > Export and Import > Restore from zip.
    • Follow the directions to restore from the agent.zip file in this repo.

App Engine Deployment & Webhook Configuration

When a new project is created using the Actions Console, it also creates a Google Cloud project in the background.

  1. Configure the gcloud CLI and set your Google Cloud project to the name of your Actions on Google Project ID, which you can find from the Actions on Google console under Settings ⚙
    • gcloud init
  2. Deploy to App Engine using Gradle:
    • gradle appengineDeploy OR
    • From within IntelliJ, open the Gradle tray and run the appEngineDeploy task.

Dialogflow Console

Return to the Dialogflow Console, from the left navigation menu under Fulfillment > Enable Webhook, set the value of URL to https://${YOUR_PROJECT_ID}.appspot.com > Save.

  1. From the left navigation menu, click Integrations > Integration Settings under Google Assistant > Enable Auto-preview changes > Test to open the Actions on Google simulator then say or type Talk to my test app.

Running this Sample

  • (Recommended) You can test your Action on any Google Assistant-enabled device on which the Assistant is signed into the same account used to create this project. Just say or type, “OK Google, talk to my test app”.
  • Set up a payment method for your account in the Google Assistant settings on your phone if you haven't set one up already -- sandbox testing is the default setting.

Send Order Update Configuration

  1. In the Google Cloud Platform console, select your Project ID from the dropdown > Menu ☰ > APIs & Services > Library
  2. Select Actions API > Enable
  3. Under Menu ☰ > APIs & Services > Credentials > Create Credentials > Service Account Key.
  4. From the dropdown, select New Service Account
    • name: service-account
    • role: Project/Owner
    • key type: JSON > Create
    • Your private JSON file will be downloaded to your local machine
  5. Place the downloaded file in the 'src/main/resources/' and name it service-account.json.
  6. In TransactionsApp.java, in the main() method > replace the <UNIQUE_ORDER_ID> placeholder string assigned to uniqueOrderId with the ID of the order you wish to update.
  7. To send an order update, open a terminal and run the following command: ./gradlew sendOrderUpdate.
    • Or from within IntelliJ, open the Gradle tray and run the sendOrderUpdate task.
  8. If the order update succeeds, a 200 OK response should be logged to the console.

References & Issues

Make Contributions

Please read and follow the steps in the CONTRIBUTING.md.

License

See LICENSE.

Terms

Your use of this sample is subject to, and by using or downloading the sample files you agree to comply with, the Google APIs Terms of Service.