upsidelab / voicecommerce

JavaScript library for easily connecting ecommerce to Alexa and Google Assistant
https://upsidelab.io/blog/introducing-voicecommerce-js/
MIT License
41 stars 6 forks source link
ecommerce nodejs voice-assistant

VoiceCommerce is a library that makes it to connect ecommerce stores with voice user interfaces, especially Amazon Alexa and Google Assistant.

Currently it works with any Vue Storefront-based store, allowing developers to quickly build voice integrations that provide common ecommerce features.

VoiceCommerce Demo

Installing VoiceCommerce

To install the library in your local node environment, run:

npm install --save voicecommerce

Then, in your project code include the following, to easily connect to VueStorefront store.

const {VueStorefrontApi, Authentication, inMemoryAuthenticationPersistence} = require('voicecommerce')

const api = new VueStorefrontApi({ endpoint: 'https://demo.vuestorefront.io' })
const authentication = new Authentication(inMemoryAuthenticationPersistence);

Building your first Alexa Skill for ecommerce

The easiest way to start building voice apps is with Jovo framework. VoiceCommerce seamlessly connects with it, giving you a chance to quickly build a working voice app for ecommerce.

Boostraping a project

To bootstrap a project, follow this guide: Bootstraping project with Jovo

Once you get the hello world working, you're ready to add ecommerce features.

Adding OAuth

First, you'll need to set up account linking in your Alexa Skill. For more details, read how to configure account linking

In the index.js file of your jovo project add OAuth handler:

  ...
  const oauthConfig = {
    clients: [
      {
        clientId: 'XXXXXX',
        clientSecret: 'XXXXXX',
        redirectUris: ['http://XXXXX']
      }
    ]
  }

  Webhook.use('/oauth', authentication.oauthHandler(api, oauthConfig))

  // generated by jovo
  Webhook.post('/webhook', (req, res) => {
      app.handleWebhook(req, res)
  });
  ...

Reordering action

Then, in the app/app.js file add the following to one of the intents:

  const { Reorder } = require('voicecommerce')

  'HelloWorldIntent': function() {
    authentication.getUser(this.getAccessToken()).then((user) => {
      if (!user) {
        this.alexaSkill().showAccountLinkingCard()
        this.tell('Please link your account before making purchases')
        return;
      }

      const reorder = new Reorder(api)
      reorder.call(user).then(() => {
        this.tell('Ordering the same products as usual')
      })
    })
  },

That's it!

Configuration

Roadmap

The major features that are coming up include:

Contributing

We're always open for contributions. If you'd like to get involved, contact us at rafal@upsidelab.io.

If you've found any bugs or have ideas for new features you can create an issue on GitHub.

License

VoiceCommerce is provided under the MIT license.

Please see LICENSE for licensing details.