Build an Extension App with Message Renderers
Last updated
Was this helpful?
Last updated
Was this helpful?
This guide will provide an overview on how to use the Symphony Messaging App Developer Kit (ADK) to build an extension app that handles custom message rendering. This app will look for incoming messages that match a specific type and replace their default rendering with a custom one.
Create a working directory and initialize it using npm
.
Install the Symphony Messaging ADK along with the webpack bundler.
Open the project directory in an editor of your choice
Edit the package.json
file, replacing the scripts
section with the following:
This adds two commands:
npm start
for starting the development web server
npm run build
to launch the production build process
Create a file named webpack.config.js
that will inject the ADK configuration into the webpack bundler.
Each extension app requires a manifest (also known as the bundle.json
file) to describe the application. Create a file named bundle.json
with the following contents:
We are now ready to start building the app. Create a src
directory and a file named index.js
within it.
The code ADK.start()
initializes the ADK with an app id (adk-example
) that must correspond with the value provided in the bundle.json
manifest from the previous step.
Once the initialization is complete, we use ADK.messages.registerRenderer
to register a message renderer on the message type adk.entity.quote
.
The actionHandler
then defines the callback to execute when the action buttons are clicked on. In this example, we useADK.dialogs.show
to launch a dialog, feeding in the previous payload
as the dialog's data
. Dialog allows the use of <text />
references with id
's corresponding to data keys.
We can now start the app using:
This starts a local development server on https://localhost:4000
. Note that this is a TLS-enabled site because all extension apps need to be loaded from TLS-enabled sites. However, because this is a development server, the certificate is self-signed and not trusted by any browser.
Visit https://localhost:4000 in your browser to accept the security warning about the untrusted self-signed certificate. Skipping this step will cause the extension app to not load within Symphony Messaging in the next step.
There are 2 ways to load an extension app into Symphony Messaging . For development purposes, we will be using the bundle injection method to temporarily load the app into the current session.
We can now load the app by injecting the bundle URL as a parameter named bundle
behind a pod URL. For example, if you are using the developer sandbox located at develop2.symphony.com, visit the following URL in your browser:
Acknowledge the warning about being in developer mode.
Once the message is sent, you should see that it renders as an action button. If the extension app is not installed, users will see the fallback text ("Hello") instead. You should use this text to hint to users that they should install your extension app in order to access further interactivty.
Clicking on the button then lauches a dialog with the defined content.
The quoteRenderer
function returns an object defining the template to render as well as any action buttons and extra data. The template field uses , which supports a range of formatting options, action buttons as well as iframes. If action buttons are defined in the template, the id
of each action button needs to correspond with a key in the actions
field (e.g. quote
). This key should reference an object with label
and data
fields. The extraData
field can either be a primitive as in this example or an object.
We now need to send a test message that corresponds with the registered message type adk.entity.quote
. You can either do this in or create a simple . Assuming a Java BDK project was used, this is the sample code required to send a message with the custom message type: