If you are familiar with SignalWire products or even caught our first introduction to RELAY, you know we’ve been building RELAY for a while now. But do you know what it’s all about, and do you appreciate just how awesome it is?
RELAY is a real-time web service protocol that maintains persistent, asynchronous connections to the SignalWire network. Our RELAY APIs use WebSocket technology, which allows for simultaneous, bi-directional data transmission. This is in contrast to traditional REST APIs that rely on one-way communication.
In layman’s terms, RELAY is like talking over a telephone where you can indiscriminately talk and hear simultaneously. REST is like talking over a walkie-talkie or CB radio where only one person can speak at a time. So, if you want to consume every event that is going on in your application, there is no substitute for RELAY!
Our latest integration of RELAY into a single SDK has sparked a wave of new guides that showcase the impressive capabilities and versatility of RELAY. All of our demonstrations utilize SignalWire's RELAY SDKs. Let's explore some of the valuable resources found within our highly sought-after namespaces.
📞 Voice
![Phone Call](https://mcdn.signalwire.com/Phone-call_2022-07-17-192608_mvht.png)
Voice is all about phone calls, whether that be a one-to-one connection between VOIP numbers, a SIP connection, or a complex IVR call center. If you aren’t already a pro at these telecom terms, our article “What is SIP?” is a great place to start. If you are a telecom veteran, you can try RELAY with the simplest use cases:
Making and Receiving Phone Calls shows you how to configure your SignalWire Space to start making and receiving calls with a Node.js application.
Call Forwarding shows you how to configure your SignalWire Space to forward incoming phone calls with a RELAY Consumer.
Then check out more advanced use cases:
Weather IVR demonstrates a simple IVR application that uses the SignalWire Realtime SDK to provide current weather reports to the caller in Washington DC by either a phone call or text.
Appointment Reminder IVR creates a service to send custom text-to-speech calls to any number and uses user input to confirm or deny appointments. You can receive real-time information about their selection and programmatically redirect their call.
Translating and Transcribing Voice Calls uses a RELAY SDK and the Google Cloud Speech and Translate APIs. Receives an incoming call, then translates it and displays the incoming call number, a translation text of the audio, and an element to play the original call audio.
📱 Messaging
![Appointment Reminder](https://mcdn.signalwire.com/Text-Message.png)
Messaging encompasses SMS and MMS in a peer-to-peer (P2P) or application-to-person (A2P) capacity. Before starting any application development, you should check out our information on The Campaign Registry (TCR). After your phone numbers are cleared to send messages, you can start employing RELAY for some simple use cases:
Sending and Receiving Messages shows you how to configure your SignalWire space to start sending and receiving SMS messages with a Node.js application.
Forwarding SMS to Email walks through making a webhook to forward messages to an email address and configure it in your SignalWire space.
After you’ve mastered the basics, there are examples of more advanced use cases:
Sending SMS from the Browser creates a simple server with Express.js and uses the RealTime API to allow users to send SMS.
Two-Factor Authorization via SMS generates a one-time password and then uses the RELAY Realtime SDK to send it to the recipient's phone number via SMS.
You may also want to send a Recording URL or Recording Transcription via SMS.
You can even utilize RELAY for administration purposes:
Analyze Messaging Statistics with a simple code snippet that organizes the status of your sent messages and displays the data in a table.
Find all Undelivered Messages programmatically and record them to a table with corresponding error codes.
🎥 Video
![Programmable Video Conference](https://mcdn.signalwire.com/Programmable-Video-Conf.png)
SignalWire Video products have often featured in our recent news as we have rolled out Programmable Video Conferences. We now offer a couple of distinct options for developing an app with videoconferencing.
The first is our newer product Programmable Video Conferences (PVC). This option for integrating videoconferencing works right out of the box and includes customization options. This product is so easy to use that everything you need to know is in a couple of resources:
Video Conferences Overview tells you in easy steps how to add PVC and get video conferencing running in your app in just a couple of minutes.
Integrating Video Conferences With Any Website in Minutes gets into detail about incorporating PVC with specific website types as examples.
The second path with video development is to use SignalWire’s Video SDK to build a complete video conferencing application from scratch with granular control over every feature. Start here for the basics:
First Steps with Video walks through creating and joining a simple video room with the Video API.
Simple Video Demo adds functionality to a simple video room using events and creates a backend server to proxy video room token requests.
There are many examples of advanced use cases to follow or get inspiration from:
Build a Zoom clone using React. It will help you understand how to create rooms, mute audio/video, change layouts, create custom overlays, and more.
Build a Videoconferencing App with Vue and incorporate features like room previews and device switchers.
Using Video with React Native will introduce you to mobile development with the SignalWire video SDK.
💬 Chat
![Chat with React](https://mcdn.signalwire.com/react-chat.png)
Finally, our Chat namespace allows you to incorporate a chat feature in your applications. Our Chat Overview explains how Chat is built on a basic PubSub base. Chat adds an element of members to PubSub, but is still a very straightforward product for simple use cases:
First Steps with Chat describes how to get a Chat token, subscribe to channels, and listen for message events.
Simple Chat Demo adds to "First Steps with Chat" with a simple UI, the ability to download existing messages, and even a typing indicator using member state.
For inspiration from slightly more advanced use cases:
Using Chat to Send SMS and Make Calls describes how to create a Chatbot IVR to send SMS and make voice calls.
- Using Chat with React builds a standalone React chat application with multiple channels.
All of these products are available to you individually, but—like gaming combos—they become even more powerful when used together. SignalWire is always improving our RELAY products and platform so that you can build powerful, dynamic, and reliable applications. These resources may include the answer to your development needs, or you can find inspiration for your next innovation.
If you have any questions while getting started with SignalWire RELAY, stop by our Community Slack or our Forum to connect with our team!