Skip to main content

What is Call Fabric?


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 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:

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 a Subscribers resource named Alice in the public context would be /public/Alice.


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.

Picture showing the Resources Page on the SignalWire Dashboard. Two resources are created and shown in the list: 'Subscriber' and a `SWML Script'.
List of Resources

Managing Resources

To learn more about managing Resources, check out the Managing Resources guide.


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 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.


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.


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) {
`Something went wrong trying to dial ${

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.


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.

This example demonstrates how to use SWML to connect to a room by their Resource Address.

- answer
- play:
volume: 10
- 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.
A screen recording of the Logging pane of a SignalWire Space. The Voice, Video, Message, and Fax tabs are shown, each with detailed records.
The 'Logging' pane of the SignalWire Space.
Resource typeTab in Logging paneLogged values
VoiceCallingCall, From, To, Date, Status
VideoConferencingRoom, Started, Duration, Cost, Quality, Status
MessageMessagingMessage, From, To, Date, Status
FaxFaxFax, From, To, Date, Status

Expanded Logging with Resource IDs

Under each log item, a preview of the Resource ID is shown.

A screenshot of the Calling logs tab showing Resource IDs.
Voice Logs

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.

A screenshot of an individual log item, with the Details pane of an event expanded.
A single detailed log report.