@relaypro/sdk
TypeScript icon, indicating that this package has built-in type declarations

2.4.0 • Public • Published

relay-js

relay-js SDK is a Node.js library for interacting with Relay. For full documentation visit developer.relaypro.com.

Installation

npm install @relaypro/sdk

Usage

The following code snippet demonstrates a very simple "Hello World" workflow. However, it does show some of the power that is available through the Relay SDK.

import pkg from '@relaypro/sdk'
const { relay, Event, createWorkflow, Uri } = pkg

const app = relay()

app.workflow(`helloworld`, helloworld)

const helloworld = createWorkflow(wf => {
  wf.on(Event.START, async (event) => {
    const { trigger: { args: { source_uri } } } = event
    wf.startInteraction([source_uri], `hello world`)
  })

  wf.on(Event.INTERACTION_STARTED, async ({ source_uri }) => {
    const deviceName = Uri.parseDeviceName(source_uri)
    console.log(`interaction start ${source_uri}`)
    await wf.sayAndWait(source_uri, `What is your name ?`)
    const { text: userProvidedName } = await wf.listen(source_uri)
    const greeting = await wf.getVar(`greeting`)
    await wf.sayAndWait(source_uri, `${greeting} ${userProvidedName}! You are currently using ${deviceName}`)
    await wf.terminate()
  })
})

Features demonstrated here:

  • When the workflow is triggered, the start event is emitted and the registered start callback function is called.
  • An interaction is started. This creates a temporary channel on the Relay device, which provides a sort of "context" in which some device-specific commands are sent.
  • Inside the interaction started handler, the workflow prompts with the sayAndWait action. The device user will hear text-to-speech.
  • The workflow awaits for a response from the device user with the listen action.
  • A workflow configuration variable greeting is retrieved as is the triggering device's name.
  • The workflow then again uses text-to-speech to reply with a dynamic message.
  • Finally, the workflow is terminated and the device is returned to its original state.

Using the Relay CLI, the workflow can be registered with the following command:

relay workflow:create:phrase --name my-test-workflow --uri wss://yourhost:port/helloworld --trigger test -i 99000XXXXXXXXXX

In the above sample sample, a workflow callback function is registered with the name helloworld. This value of helloworld is used to map a WebSocket connection at the path wss://yourhost:port/helloworld to the registered workflow callback function.

It is also possible to register a "default" workflow at path / by providing the workflow callback function as the first parameter:

app.workflow(wf => {
  wf.on(Event.START, async () => {
    // handle start event
  })
})

API

The Relay JS SDK covers a broad set of use cases. Explore the various actions that can be performed in workflow event callbacks:

The full API reference is available at https://relaypro.github.io/relay-js .

Workflow Registration

More thorough documentation on how to register your workflow on a Relay device can be found at https://developer.relaypro.com/docs/register-workflows

Development

git clone git@github.com:relaypro/relay-js.git
cd relay-js
npm install
npm run build
npm run test

License

MIT

Readme

Keywords

Package Sidebar

Install

npm i @relaypro/sdk

Weekly Downloads

0

Version

2.4.0

License

MIT

Unpacked Size

88.5 kB

Total Files

21

Last publish

Collaborators

  • brandonsmith