Nicely Presented Misnomer

    TypeScript icon, indicating that this package has built-in type declarations

    2.4.0 • Public • Published


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


    npm install @relaypro/sdk


    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


    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 .

    Workflow Registration

    More thorough documentation on how to register your workflow on a Relay device can be found at


    git clone
    cd relay-js
    npm install
    npm run build
    npm run test




    npm i @relaypro/sdk

    DownloadsWeekly Downloads






    Unpacked Size

    88.5 kB

    Total Files


    Last publish


    • brandonsmith