Archived | Deploy a serverless multilingual conference room

Archived content

Archive date: 2019-06-30

This content is no longer being updated or maintained. The content is provided “as is.” Given the rapid evolution of technology, some content, steps, or illustrations may have changed.


This pattern proposes a method to create a communications channel that allows clients who speak different languages to seamlessly communicate with each other. This channel can be particularly useful in meeting rooms and conference calls where the participants are located in different countries. Translated subtitles, or audio, can be generated and delivered in real time.


Have you ever wished there was a way for online game teammates who speak different languages to communicate effectively? Or how about in chat rooms with many clients, such as a Slack, Sametime, or Zoom chat group? Live broadcasts like on YouTube or Twitch? Or maybe online classes and webinars? This pattern proposes a way to do just that: create a communications channel to allow different-language clients to seamlessly communicate with each other.

This pattern leverages the MQTT messaging protocol, which allows for each client to publish and “subscribe” to one or more channels. The channel makeup determines each client’s requested language and payload type, (fromClient/french/audio, for example).

The channel that each submitted message is sent to determines the sequence of cloud functions that will be called – for example, submitting a message to fromClient/english/audio will run the audio payload through the Watson® Speech to Text service, forward that result to the translator service, and distribute the translated result to all listening clients.

When you have completed this pattern, you will better understand how to:

  • Deploy IBM Cloud Functions actions/triggers
  • Interact with the Watson IoT platform
  • Set up a Cloud Foundry application



  1. Message received from a client, which can be a web browser, CLI, IBM Cloud Function action, SMS text, etc.
  2. If message payload contains an audio file, it is transcribed to text.
  3. Transcribed text is translated to other supported languages.
  4. If message is sent via SMS, sender phone number is added to an etcd key-value store. etcd is used here to maintain a list of subscribers’ phone numbers, as well as their respective languages. An adjustable TTL value is used here to remove numbers from the store if the subscriber does not participate in the conversation for 300 seconds.
  5. Translated messages/audio streams are published to various channels on the MQTT broker, which then distributes the messages among subscribing clients.


Ready to put this code pattern to use? Complete details on how to get started running and using this application are in the README.