Author: Devon White - product:signalwire_space import ResourceAddresses from ../_shared/resource-addresses.md import ResourceContexts from ../_shared/resource-contexts.md import ResourceSubscribers from ../_shared/resource-subscribers.md ## **Overview** SignalWires 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](#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} [Resources](../guides/signalwire-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](#subscribers). For example, all of the following are Resources: - [Subscribers](#subscribers) - [SWML Scripts](/swml) - [Compatibility XML Webhooks/Applications](/compatibility-api/cxml) - [Relay apps](/sdks/overview/what-is-relay) - [SignalWire AI Agents](/swml/methods/ai) - Video Conferences: - [Programmable API Video Conferences](/guides/video/managing-rooms-with-apis/) - [Pre-built Video Conferences](/guides/video-conferences/) - [SIP Endpoints](/guides/set-up-a-signalwire-phone-number-with-a-sip-endpoint/) - [FreeSWITCH Connectors](https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/Modules/mod_signalwire_19595544/#5-connect-to-signalwire-by-creating-a-new-integrationconnector) #### Resource Addresses #### Managing Resources To learn more about managing Resources, check out the [Managing Resources](../managing-your-signalwire-resources/index.mdx) guide. ### Subscribers #### Managing Subscribers To learn more about managing Resources, check out the [Managing Resources](../managing-your-signalwire-resources/index.mdx) guide. ### Contexts {#contexts} ## **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. js import { SignalWire } from @signalwire/js; async function main() { const client = await SignalWire({ 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 :::warning 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](#resources): **[SignalWire Markup Language (SWML)](/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. {/* Comment out until we have working examples for the below **[cXML API](/compatibility-api)** - SignalWires cXML API is designed to offer a quick onramp to developers migrating their telecommunication application from other APIs. In particular, this API maintains parity with Twilios API for near-instant migration to the SignalWire platform. **[RELAY Realtime](/sdks/overview/what-is-relay/)** - Relay Realtime is a WebSocket-based API offering real-time, two-way communication and advanced event-driven interactions with vastly improved performance over traditional REST APIs. */} This example demonstrates how to use SWML to connect to a room by their Resource Address. yaml 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 Fabrics 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.