What is Call Fabric?
Overview
SignalWire's Call Fabric represents a transformative evolution from traditional CPaaS, UCaaS, and CCaaS models, marking a significant shift towards more adaptable and integrated communication solutions. Traditional CPaaS (Communications Platform as a Service) provides a set of APIs for developers to build custom communication features into their applications, but often lacks comprehensive integration and scalability. UCaaS (Unified Communications as a Service) offers a broader suite of communication tools yet can be rigid, offering limited customization to meet specific business needs. CCaaS (Contact Center as a Service) focuses on customer service functionalities but frequently operates in isolation from other communication tools within a business.
An Architectural Evolution
Call Fabric bridges these gaps by offering a holistic, flexible solution that encompasses the strengths of
CPaaS, UCaaS, and CCaaS while eliminating their limitations. It allows for the creation and management
of communication resources like scripts, rooms, and AI agents with ease, providing a fully programmable
and scalable platform. This new apparoach defines a new category of communication services known
as Programmable Unified Communication
(PUC).
Key Benefits of Call Fabric
- Integration:
Benefit from the convenience and efficiency of a single interface that
seamlessly integrates various communication channels, including
Voice
,Video
,Messaging
,AI
and more. - Customization: Easily create and arrange diverse communication pathways, seamlessly connecting across channels, devices, and platforms by using basic, mix-and-match elements.
- Turnkey Solutions: Speed up deployment and time-to-value with a platform that enables rapid development and implementation, requiring minimal developer work, onboarding, or training.
- Scalability: Scale to meet higher volume without compromising reliability, impacting performance, or requiring significant changes to your existing infrastructure.
- Interoperability: Build using reusible blocks that can easily call each other.
- Unified Addressing: Access all types of Resources with a consistent and generalized Resource Addressing system.
Core Components
Resources
Resources are the primary entities for communication within the Call Fabric ecosystem. They are the building blocks of the system, representing the various communication tools that can be used to interact with subscribers. For example, all of the following are Resources:
Subscribers
SWML Scripts
Compatibility XML Webhooks/Applications
Relay apps
SignalWire AI Agents
Video Conferences
:SIP Endpoints
FreeSWITCH Connectors
Resource Addresses
Each Resource is uniquely identified by its Address, allowing for precise targeting and interaction within the Call Fabric ecosystem. This simplifies the development process by providing a standardized way to handle different communication elements, and enhances flexibility, as developers can interact with a wide range of communication tools using a unified approach.
Resources can have multiple addresses, and addresses are mutable. For instance, you can map a SWML script and a Video Room to the same Resource Address. These addresses can be changed or deleted later as needed.
Each Resource Address has two components:
- Context: A identifier that indicates in which context the resource is located.
- Name: The name is the unique identifier for the resource.
For example, the address for an AI Agent
resource named Alice-AI
in the public
context would be /public/Alice-AI
.
If you are interacting with a resource from within the same context, you can omit the context from the address.
For example, if you are interacting with a Subscribers
resource named Bob
from within the private
context,
you can use the address /Bob
instead of /private/Bob
.
Once you have created a Resource, you can use the address to interact with it within the Call Fabric ecosystem.
Additionally, you can view the created resource in the Resources
tab of the SignalWire Dashboard.
Here, you can view the address, type, and other details of the resource.
Managing Resources
To learn more about managing Resources, check out the Managing Resources guide.
Subscribers
Subscribers represent registered end-users within the Call Fabric paradigm.
In other words, subscribers are internal account-holders.
As such, they always use the private
context.
Subscribers are the focal points of communication, capable of receiving or initiating calls, messages, and other forms of interaction. The system facilitates smooth transitions between different communication modes, such as switching from a voice call to a video conference, or from a text chat to a voice call.
This offers a seamless user experience by allowing easy switching between different communication channels, and improves accessibility and convenience by catering to the preferences and needs of different users.
Managing Subscribers
To learn more about managing Resources, check out the Managing Resources guide.
Contexts
Contexts
in Call Fabric define the operational environment or 'scenario' under which resources operate.
They determine how resources are routed and interact with each other.
Every Space has two contexts:
- The
public
context exposes the Resource to anyone. - The
private
context exposes the Resource to Subscribers.
Benefits
Ensures structured and secure communication flows. Provides granular control over how different elements within the Call Fabric interact, enhancing customization and efficiency.
SDK Integration
Browser SDK
- Usage: Simplifies the process of integrating Call Fabric functionalities into web applications. Designed for client-side development.
- Benefits: Streamlines the development process by providing a consistent and easy-to-use set of tools across different platforms. Reduces the complexity of integrating various communication methods into applications.
Example
In this example, we demonstrate how to use the SignalWire Call Fabric Browser SDK to connect to a room by its Resource Address.
import { SignalWire } from "@signalwire/js";
async function main() {
const client = await SignalWire({
token: "<TOKEN>"
});
}
try {
const call = await client.dial({
to: '/public/video-room', // Setting the destination to a video rooms resource address.
rootElement: document.getElementById('rootElement')
});
} catch (e) {
alert(
`Something went wrong trying to dial ${
document.getElementById('destination').value
}`)
}
Server-Side SDK
Server-Side functionalities are currently under development. Be aware that accessing a Fabric Resource Address might not be universally supported at this time.
- Usage: Tailored for backend integrations. Facilitates the control and management of communication functionalities from the server side.
- Benefits: Provides a consistent and easy-to-use set of tools across different platforms.
Examples
View examples for calling the same Resource:
SignalWire Markup Language (SWML)
- SWML is a hybrid markup and scripting language enabling developers to define and control voice and messaging workflows with simple YAML or JSON statements. SWML is powerful, easy to use, and can be deployed in a serverless context.
- SWML
This example demonstrates how to use SWML to connect to a room by their Resource Address.
sections:
main:
- answer
- play:
volume: 10
urls:
- silence:1.0
- say:Hello, connecting to a fabric Resource that is a room
- connect:
to: "/public/test_room"
Monitoring and Reporting
Thanks to Call Fabric's generalized handling of Resources, Logs for all Resource types are accessed from a central Logging tab in the SignalWire Space.
Unified Logging
- Functionality: Call Fabric offers a centralized logging system for all interactions and events related to the various Resources. From a single tab, developers can view call logs, message logs, and other interaction data in one place.
- Benefits: Facilitates easier tracking and debugging of communication flows. Provides valuable insights into the performance and usage of different Resources, aiding in optimization and decision-making.
- Analysis: All Logging tabs support CSV export for analysis and reporting with outside tools.
Resource type | Tab in Logging pane | Logged values |
---|---|---|
Voice | Calling | Call, From, To, Date, Status |
Video | Conferencing | Room, Started, Duration, Cost, Quality, Status |
Message | Messaging | Message, From, To, Date, Status |
Fax | Fax | Fax, From, To, Date, Status |
Expanded Logging with Resource IDs
Under each log item, a preview of the Resource ID is shown.
Click on this preview to open a detailed report of the log item. This includes all relevant details for the Resource type, as well as a comprehensive list of events executed. Where available, additional event information can be expanded by clicking the Details button.