AVS SDK IPC Server Sample App Quick Start Overview

Start with the AVS Device SDK Inter-Process Communication (IPC) Server Sample Application to integrate Alexa into your screen-based devices for multi-process, rich visual Alexa interactions and experiences. The IPC Server App implements the same core SDK features and components of the Console Sample App, and extends them to add support for common Alexa multimodal features, such as Alexa Presentation Language (APL) content, TemplateRuntime, and smart home cameras. Additionally, the IPC Server Sample App implements a local server for IPC communication with a separate client on your device to control Alexa interactions, and complete rendering of Alexa-provided graphical content. By default, the IPC Server Sample App uses Websocket++ as the local server.

The IPC Server Sample App provides a versioned IPC message API, the AVS Device SDK IPC Client Framework, for all communication between the IPC Server and your IPC Client.

The IPC Server Sample App is most commonly paired with a web client built from the Alexa Smart Screen Web Components framework, but you're free to implement an IPC client of your choice.

The IPC Server Sample App communicates with the IPC Client using the IPC Client Framework Messages.
Communication between the IPC Server Sample App and the IPC Client through IPC Client Framework Messages

Quick start guides

You can build the IPC Server Sample App for most Linux-based platforms. Amazon provides the following quick start guides for you to run the AVS Device SDK on three platforms:

Basic usage

The IPC Server Sample App requires input from a connected client that implements support for the AVS Device SDK IPC Client Framework to complete Alexa interactions. Typically you can start with the Alexa Smart Screen Sample Web App as your IPC Client.

Dependencies

For general dependency information, see Alexa Voice Service Device SDK Dependencies. In addition, the AVS Device SDK IPC Server Sample App requires the following dependencies for you to build.

Library Description Minimum version
PortAudio Used for handling microphone audio input to the application. v190600_20161030
GStreamer Used for handling all audio media output from the application, including music playback, Alexa voice responses, and Alerts. 1.8.3
WebSocket++ Used for IPC communication. v0.8.2
ASIO Used for I/O network implementation. v1.12
APLClientLibrary Used for rendering APL content and media. v2022.1.1

Optional adapters

You can enable the following optional adapters with CMAKE configurations to further extend the features of the IPC Server Sample App.

Adapter Description Requires permissioned access from Amazon
Alexa captions Support for WebVTT based captioning of common Alexa Speak directives. No
Wake word engine (WWE) Support for building the application with a supported WWE for hands-free voice experience. Yes ( for Amazon provided WWEs)
Alexa Communications Support for initiating and receiving voice and video calls from other Alexa-enabled devices and users. Yes
Smart home cameras Support for interacting with Alexa-connected smart home cameras. Yes

Endpoint controllers

The IPC Server Sample App provides reference implementations of the following controller interfaces for connected endpoints.

Library Description
InputController Used for controlling input of entertainment devices.

Video endpoint

The IPC Server Sample App provides optional features for video device and application control with video device control. For usage details, see AVS Device SDK Video Device Control.

Configuration

In addition to the build-time configuration options provided that the optional adapters provide, the IPC Server Sample App uses two configuration files for runtime configuration of the application’s features:

  • AlexaClientSDKConfig–Same configuration file as used by the Console Sample App for configuring basic setup and authorization features of the application.
  • IPCServerSampleApplicationConfig– Additional configuration file for controlling the application’s WebSocket server implementation, and supported Alexa multimodal features.

The following example shows the general usage of the configuration file.

/<path-to-ipc-server-sample-app-build/.IPCServerSampleApplication 
     -C /<path-to-client-config>/AlexaClientSDKConfig.json
     -C /<path-to-ipc-server-app-config/IPCServerSampelApplicationConfig.json 

For platform-specific usage instructions, see the quick start guides macOS, Rasbperry Pi, and Ubuntu.