diff --git a/website/docs/main/home/overview/getting-started.mdx b/website/docs/main/home/overview/getting-started.mdx new file mode 100644 index 000000000..ce45c6c18 --- /dev/null +++ b/website/docs/main/home/overview/getting-started.mdx @@ -0,0 +1,439 @@ +--- +slug: /getting-started +title: Getting Started with SignalWire +description: Learn what SignalWire is, understand the core concepts, and find the right path for your project. +sidebar_position: 2 +--- + +import { FaServer, FaRobot, FaCloud, FaExchangeAlt, FaPhone, FaVideo, FaComments, FaFax } from "react-icons/fa"; +import { MdWeb, MdCode, MdMessage } from "react-icons/md"; +import { SiPython } from "react-icons/si"; + +# Getting Started with SignalWire + +Whether you're building your first communications app or migrating from another provider, this guide will help you understand SignalWire and get you building quickly. + +--- + +## What is SignalWire? + +SignalWire is a programmable unified communications platform that lets you add voice calling, video, messaging, and AI to your applications. +We handle the complex telecom infrastructure for you so you have more time to focus on building great experiences for your users. + +With SignalWire, you can: +- **Make and receive phone calls** programmatically or through your own interfaces +- **Send and receive SMS/MMS** messages at scale +- **Build video conferencing** directly into your apps +- **Create AI-powered voice agents** that handle phone calls autonomously +- **Build IVR systems** (phone menus) and call routing logic + +Everything runs on SignalWire's cloud infrastructure, so there's no telecom equipment to manage. + +--- + +## Product Offerings + +SignalWire provides numerous ways to build, depending on your needs and how you prefer to work. + + + } + > + A simple markup language (JSON/YAML) for defining call flows. Respond to webhooks or host scripts directly in your Dashboard. + + } + > + Node.js SDK with persistent WebSocket connections for real-time control over calls, messages, and video. + + } + > + JavaScript SDK for building WebRTC voice, video, and chat experiences directly in the browser. + + } + > + Python framework for building AI-powered voice agents with LLM integration and custom functions. + + } + > + Visual drag-and-drop interface for building call handling logic without writing code. + + } + > + Twilio-compatible REST API and cXML for easy migration from other providers. + + + +--- + +## Your SignalWire Space + +When you [create a SignalWire account](https://signalwire.com/signup), you get access to your **Space** - that's your [Dashboard](https://my.signalwire.com) where you can quickly: + +- Buy and configure phone numbers +- Create and manage your applications +- View call logs and analytics +- Access your API credentials +- Set up AI agents, call flows, and more + +Think of your Space as your home base for everything SignalWire. + +--- + +## Core Concepts + +Before you start building, it helps to understand a few key concepts. + +### Communication Channels + +SignalWire supports the following communication channels: + + + }> + Phone calls, IVRs, recording, conferencing + + }> + Video rooms, screen sharing, recordings + + }> + SMS and MMS text messages + + }> + Real-time chat for web and mobile apps + + }> + Intelligent voice agents powered by LLMs + + }> + Send and receive faxes programmatically + + + +Most channels can work over different **transports** depending on how you want to connect: + +| Transport | What it is | Common uses | +|-----------|-----------|-------------| +| **PSTN** | The traditional phone network | Calling regular phone numbers, receiving calls from landlines and cell phones | +| **SIP** | Voice over IP protocol | Connecting PBX systems, desk phones, softphones, and VoIP carriers | +| **WebRTC** | Browser-based real-time communication | In-app calling, video conferencing, browser-based contact centers | + +For example, a voice call could come in via PSTN (someone dialing your number), SIP (from a desk phone), or WebRTC (from your web app) - and SignalWire will handle all three. + +### Phone Numbers + +To make or receive calls and messages through the phone network, you'll need SignalWire phone numbers. +You can buy local numbers, toll-free numbers, or short codes directly from your Dashboard. + +Each number can be configured to handle incoming calls and messages differently - whether that's forwarding to another number, running a script, connecting to an AI agent, or triggering your own application. + + + How to buy, configure, and manage your numbers + + +We also offer the option of purchasing phone numbers programmatically via our [Purchase a Phone Number](rest/signalwire-rest/endpoints/space/purchase-phone-number) API Endpoint. + +### Resources + +In SignalWire, a **Resource** is anything that can handle communications - an AI agent, a script, a SIP connection, or your own application. +When a call or message comes in, you tell SignalWire which Resource should handle it. + +Common resource types include: +- **SWML Scripts** - Simple JSON/YAML instructions hosted in your Dashboard +- **AI Agents** - Conversational AI that handles calls autonomously +- **Call Flows** - Visual drag-and-drop call routing +- **Relay Applications** - Your own server applications connected via WebSocket + + + Understanding the different resource types + + +### Addresses + +Every Resource has an **Address**. +This is a unique identifier that lets you target and interact with it. +Think of addresses as the **phone number** for any resource, but broader in scope. + +Addresses can be: +- **Phone numbers** - Traditional numbers like `+14155551234` for PSTN calls +- **SIP addresses** - For VoIP connections like `sip:user@domain.com` +- **Aliases** - Custom names like `/support-queue` or `/main-conference` that are easy to remember + +A single Resource can have multiple addresses, and you can change them anytime. +For example, you might point both a phone number and a custom alias to the same AI agent. + + + How addressing works in SignalWire + + +### Subscribers + +**Subscribers** are end users who authenticate with SignalWire to make and receive calls. +If you're building a contact center, business phone system, or video conferencing app for example, your users become Subscribers. + +SignalWire manages these users for you. You create, update, and delete them through our REST APIs, and each Subscriber gets: +- **Authentication** - Secure credentials and tokens for logging in +- **A callable address** - They can be reached directly at `/private/username` +- **Multi-device support** - They can answer calls from a browser, mobile app, or desk phone + +This means you don't have to build user management, authentication, or device registration yourself - SignalWire handles it. + + + User management and authentication + + + +--- + +## Ready to Start Building? + +Now that you understand the basics, let's figure out the best way for you to build. +The right approach depends on what you're creating and how you prefer to work. + +### What are you trying to build? + + + + +**You want to build an AI-powered voice agent that handles phone calls.** + +This is common for: +- Automated customer service +- Appointment scheduling and reminders +- FAQ bots and information lines +- Lead qualification and surveys +- Virtual receptionists + +#### Your best options: + +**[Agents SDK](/sdks/agents-sdk)** - A Python framework for building sophisticated AI voice agents. +You get full control over prompts, custom functions (SWAIG) dedicated to AI, customizeable conversation flow, and seamless LLM integration. +Best for complex agents that need to perform actions like booking appointments, looking up data, or integrating with your systems. + + +**[AI Agent (Dashboard)](/ai/get-started)** - Configure an AI agent directly in your Dashboard without writing code. +Set up prompts, choose a voice, add functions, and connect it to a phone number. +Great for getting started quickly or simpler use cases. + +NOTE: Commenting this out as we need to have a discussion on if this should be recommended to users. +It's extremely buggy, and I'm pretty sure is out of date. + + +**[SWML with AI](/swml/methods/ai)** - Add AI capabilities to your SWML scripts using the `ai` method. +Good when you want AI as part of a larger call flow that includes other logic. + + + + Python, full control + + + + No-code setup + + + + AI in call flows + + + +#### Quick start with Agents SDK: + +```bash +pip install signalwire-agents +``` + +```python +from signalwire_agents import AgentBase + +class MyAgent(AgentBase): + def __init__(self): + super().__init__(name="Assistant", route="/agent") + self.prompt_add_section("main", body="You are a helpful assistant for Acme Corp.") + +agent = MyAgent() +agent.serve() +``` + + + Build your first AI voice agent + + + + + +**You want voice, video, or chat directly in a web browser or mobile app.** + +This is common for: +- Click-to-call buttons on websites +- In-app voice or video calling +- Browser-based contact centers +- Video conferencing applications + +#### Your best options: + +**[Browser SDK](/sdks/browser-sdk)** - Our JavaScript SDK for building custom WebRTC experiences. +You get full control over the UI and user experience. Best when you need video conferencing, custom calling interfaces, or real-time chat. + +**[Click-to-Call](/tools/c2c)** - A pre-built widget you can drop onto any website. +Users click a button and call you directly from their browser. Minimal code required - great for adding a "call us" button quickly. + + + Build voice, video, and chat in the browser + + + + + +**You're building a backend service that handles calls or messages.** + +This is common for: +- IVR systems and phone menus +- Automated call routing +- SMS notifications and two-factor auth +- Call centers and support systems +- AI voice agents + +#### First question: Do you need real-time control? + +**If you need simple call handling** (IVRs, call forwarding, playing messages), use **[SWML](/swml)**. +Your server responds to webhooks with JSON/YAML instructions. It's stateless, works with any programming language, and is the simplest approach for most use cases. + +**If you need real-time control** (live call monitoring, mid-call transfers, complex orchestration), use the **[Realtime SDK](/sdks/realtime-sdk)**. +It maintains a persistent WebSocket connection for instant, bi-directional communication. +Best for applications that need to react to events as they happen. + +**If you're building AI voice agents**, use the **[Agents SDK](/sdks/agents-sdk)**. +It's a Python framework specifically designed for creating conversational AI that handles phone calls. +It handles the complexity of integrating with LLMs and managing conversations. + + + + HTTP webhooks, any language + + + WebSocket, Node.js + + + AI voice agents, Python + + + + + + +**You want to build without writing much (or any) code.** + +This is common for: +- Quick prototypes +- Simple IVR systems +- Small businesses needing basic call handling +- Testing ideas before building full applications + +#### Your best options: + +**[Call Flow Builder](/call-flow-builder)** - A visual, drag-and-drop interface for building call handling logic. No code required. +You connect nodes to define what happens when someone calls - play a message, gather input, route to different people, etc. + +**[SWML Scripts](/swml)** - Write simple JSON or YAML scripts directly in your Dashboard. +It's not quite "no code" but it's very low code, and you don't need to run any servers. SignalWire hosts the scripts for you. + +**[AI Agent](/ai/get-started)** - Configure a conversational AI agent through your Dashboard. Set up prompts, choose a voice, and connect it to a phone number. +The AI handles conversations autonomously. + + + + Visual drag-and-drop + + + Simple JSON/YAML + + + Dashboard AI setup + + + +#### Quick start for no-code: + +1. **Buy a phone number** - Go to Phone Numbers in your Dashboard +2. **Create a Call Flow** - Use Call Flow Builder to design what happens when someone calls +3. **Assign it to your number** - Edit the number settings and select your Call Flow +4. **Call your number** - Test it out! + + + Step-by-step walkthrough with screenshots + + + + + +**You have an existing Twilio application and want to move to SignalWire.** + +Good news, SignalWire's **[Compatibility API](/compatibility-api)** is designed as a drop-in replacement. +In most cases, you can switch by changing a few lines of code. + +#### What's compatible: + +| Twilio | SignalWire | +|--------|------------| +| TwiML | [cXML](/compatibility-api/cxml) (same syntax) | +| REST API | [Compatibility REST API](/rest/compatibility-api/overview) | +| Helper Libraries | [Compatibility SDKs](/compatibility-api/sdks) (Node, Python, Ruby, C#) | +| Account SID | Project ID | +| Auth Token | API Token | + +#### Migration steps: + +1. **Create a SignalWire account** at [signalwire.com/signup](https://signalwire.com/signup) +2. **Get your credentials** from Dashboard > API > API Tokens +3. **Update your code** to use SignalWire's SDK and credentials +4. **Update webhook URLs** if needed (cXML syntax is identical to TwiML) +5. **Buy or port phone numbers** to SignalWire +6. **Test** your application + +```javascript +// Change from this (Twilio) +const twilio = require("twilio"); +const client = twilio(ACCOUNT_SID, AUTH_TOKEN); + +// To this (SignalWire) +const { RestClient } = require("@signalwire/compatibility-api"); +const client = RestClient(PROJECT_ID, API_TOKEN, { + signalwireSpaceUrl: "your-space.signalwire.com" +}); +``` + + + Complete migration documentation + + + + + +--- + +## Next Steps + +Once you've chosen your path, here are some resources to help you along the way: + +- **[Discord Community](https://discord.com/invite/F2WNYTNjuF)** - Join 8,000+ developers. Great for questions and sharing what you're building. +- **[GitHub](https://github.com/signalwire/)** - Example code, SDKs, and open source tools. +- **[API Reference](/rest)** - Detailed documentation for all our APIs. + +If you get stuck or have questions, our support team is here to help at [support@signalwire.com](mailto:support@signalwire.com). + +Happy building! diff --git a/website/docs/main/home/overview/homepage.mdx b/website/docs/main/home/overview/homepage.mdx index f92f943ed..c737c0504 100644 --- a/website/docs/main/home/overview/homepage.mdx +++ b/website/docs/main/home/overview/homepage.mdx @@ -9,7 +9,7 @@ import UseCases from "./_usecases/_useCases.mdx"; import Admonition from '@theme/Admonition'; import ProductButtons from "./_products.mdx" import Tools from "./_tools.mdx" -import { FaGithub, FaDiscord, FaRobot } from "react-icons/fa"; +import { FaGithub, FaDiscord, FaRobot, FaRocket } from "react-icons/fa"; import { MdBuild } from "react-icons/md"; @@ -34,15 +34,22 @@ import Sigmond from "@site/src/components/Sigmond"
- - + } + href="/getting-started" + > + Find your path: server, browser, serverless, no-code, or migrating from Twilio. + + } > Talk to Sigmond! He is a helpful assistant that can answer questions and help you get started, and he's built using SignalWire APIs. - } href="https://signalwire.com/signup" diff --git a/website/docs/main/home/platform/sdks-overview.mdx b/website/docs/main/home/platform/sdks-overview.mdx index ec22a4298..e409447a8 100644 --- a/website/docs/main/home/platform/sdks-overview.mdx +++ b/website/docs/main/home/platform/sdks-overview.mdx @@ -9,8 +9,11 @@ import { MdWeb } from "react-icons/md" import { FaRobot } from "react-icons/fa" import { LuCodeXml } from "react-icons/lu" -SignalWire offers a range of SDKs to help you build applications using the SignalWire platform. +SignalWire offers a range of SDKs to help you build applications using the SignalWire platform. +:::tip New to SignalWire? +Check out our [Getting Started Guide](/getting-started) to find the right SDK and development approach for your project. +:::