From 8c666016eee9a0b744ed434e8bcfcad708b7fe25 Mon Sep 17 00:00:00 2001 From: Devon-White Date: Tue, 28 Jan 2025 10:53:59 -0500 Subject: [PATCH 01/18] initial PR for AI capabilities --- .../ai/get-started/platform-capabilities.mdx | 108 ++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 docs/home/products/ai/get-started/platform-capabilities.mdx diff --git a/docs/home/products/ai/get-started/platform-capabilities.mdx b/docs/home/products/ai/get-started/platform-capabilities.mdx new file mode 100644 index 0000000..4bf3da2 --- /dev/null +++ b/docs/home/products/ai/get-started/platform-capabilities.mdx @@ -0,0 +1,108 @@ +--- +title: AI Platform Capabilities +slug: /ai/get-started/platform-capabilities +description: Learn about the capabilities of SignalWire's AI platform, including natural language processing, voice technology, business applications, advanced features, multi-channel intelligence, real-time analytics, and security. +--- + +## Understanding AI-Powered Communications + +SignalWire's AI platform transforms traditional telecommunications into intelligent conversations. At its core, the platform combines advanced natural language processing with telecom infrastructure to create natural, context-aware interactions over voice and messaging channels. + +### Conversation Intelligence + +The foundation of SignalWire's AI capabilities lies in its ability to understand and maintain natural conversations. +Unlike traditional IVR systems that follow rigid decision trees, SignalWire AI engages in fluid, context-aware dialogues. The system maintains conversation history, +understands context, and can reference previous parts of the conversation naturally. + +For example, when a caller asks "What about the premium version?", the AI understands this refers to a product discussed +earlier in the conversation. This context awareness extends across different topics and requests within the same interaction, allowing for natural conversation +flows like: + +"I'd like to schedule an appointment" → "What time works for you?" → "Actually, before we do that, what's your cancellation policy?" + +The AI handles these context switches seamlessly while maintaining the original intent to schedule an appointment. + +--- + +### Voice Technology + +SignalWire's voice technology combines two critical elements: natural speech synthesis and intelligent speech understanding. +The platform uses advanced voice synthesis through multiple TTS providers to generate natural-sounding speech that can be customized for your brand. +Voice parameters can be fine-tuned to match your needs: + +- Voice stability affects how consistent the voice sounds across different interactions +- Voice similarity controls how closely the AI matches a reference voice +- Language and accent options allow for authentic multilingual communication + +The speech understanding system processes incoming audio in real-time, handling various accents and dialects while filtering out background noise. This enables clear communication even in challenging environments like busy offices or public spaces. + +--- + +## Business Applications + +### Intelligent Customer Service + +SignalWire AI transforms customer service operations by providing consistent, 24/7 support capability. The system can: + +- **Handle Complex Inquiries:** Unlike simple chatbots, the AI can manage sophisticated conversations, understanding context and maintaining thread across multiple questions. For example, a customer asking about product features, then pricing, then compatibility will experience a coherent conversation where each answer builds on previous context. + +- **Manage Escalations:** The system intelligently determines when to transfer to human agents. It recognizes complex situations, emotional cues, or specific requests that require human intervention, ensuring customers get the right level of support at the right time. + +### Process Automation + +The platform excels at automating routine business processes while maintaining a natural interaction experience. Take appointment scheduling as an example: + +The AI doesn't just book appointments - it manages the entire scheduling ecosystem. It understands complex requests ("I need an appointment next week, preferably Tuesday afternoon but Wednesday morning would work too"), checks availability, sends confirmations, and handles changes. It can even proactively manage schedule conflicts and suggest alternatives. + +--- + +## Advanced Features + +### Multi-Channel Intelligence + +SignalWire's AI maintains consistent conversations across different communication channels. A conversation that starts over the phone can seamlessly transition to SMS for follow-up information or documentation. The system maintains context across these transitions, creating a unified experience regardless of the communication method. + +### Real-Time Analytics and Webhooks + +SignalWire's platform transforms AI interactions into actionable intelligence through real-time webhook integration. Every conversation becomes a source of immediate insights, allowing businesses to understand, monitor, and optimize their AI communications as they happen. + +The platform streams comprehensive interaction data to your systems in real-time, providing deep visibility into every aspect of the conversation. This goes beyond simple transcription, offering detailed analysis of each interaction: + +When a customer engages with your AI agent, you'll see the entire conversation unfold in real-time, including how the AI interprets each request, its confidence in responses, and even subtle elements like tone and intent. For example, during a support call, you can observe: + +- The natural flow of conversation between customer and AI +- How the AI interprets and responds to each request +- Precise timing of each interaction +- The AI's understanding of customer intent +- Quality metrics for each response + +Performance monitoring becomes truly real-time, with instant access to critical metrics that affect customer experience: + +- How quickly the AI processes and responds +- Voice quality and clarity measurements +- Accuracy of speech recognition +- Processing times for AI decisions +- Response times for integrated functions + + + +This real-time visibility enables powerful capabilities that transform how you manage AI interactions: + +- **Proactive Management:** Monitor conversations as they unfold and step in when needed. For instance, if a customer is discussing a high-value transaction, supervisors can receive instant alerts and provide guidance or take over seamlessly. + +- **Dynamic Optimization:** Adjust your AI's behavior in real-time based on performance data. If certain types of inquiries are taking longer than expected, you can fine-tune parameters or update routing rules immediately. + +- **Continuous Quality Improvement:** Rather than reviewing interactions after the fact, identify and address potential issues as they occur. This immediate feedback loop helps maintain high service standards and ensures regulatory compliance in real-time. + +- **Strategic Decision Making:** Transform raw interaction data into actionable business intelligence through live dashboards and real-time analytics. Spot trends as they emerge and make informed decisions about resource allocation, training needs, and service improvements. + + +This real-time insight capability ensures your AI communications aren't just automated – they're continuously optimized, monitored, and improved to deliver the best possible customer experience. + +--- + +## Security and Compliance + +SignalWire's AI platform is built with security and compliance at its core. All communications are encrypted, and the system includes sophisticated PII (Personally Identifiable Information) detection and protection mechanisms. This allows businesses to automate sensitive communications while maintaining compliance with regulations like HIPAA and GDPR. + +The platform includes comprehensive audit logging and access controls, providing transparency and accountability for all AI interactions. This is particularly important in regulated industries where documentation of all customer interactions is required. From af420dafb441168eb65858b1ce4fdc0324423d22 Mon Sep 17 00:00:00 2001 From: Devon-White Date: Tue, 28 Jan 2025 11:36:41 -0500 Subject: [PATCH 02/18] add mermaid diagrams --- .../ai/get-started/platform-capabilities.mdx | 113 +++++++++++++++++- 1 file changed, 110 insertions(+), 3 deletions(-) diff --git a/docs/home/products/ai/get-started/platform-capabilities.mdx b/docs/home/products/ai/get-started/platform-capabilities.mdx index 4bf3da2..1a4c340 100644 --- a/docs/home/products/ai/get-started/platform-capabilities.mdx +++ b/docs/home/products/ai/get-started/platform-capabilities.mdx @@ -14,6 +14,49 @@ The foundation of SignalWire's AI capabilities lies in its ability to understand Unlike traditional IVR systems that follow rigid decision trees, SignalWire AI engages in fluid, context-aware dialogues. The system maintains conversation history, understands context, and can reference previous parts of the conversation naturally. +Let's compare how a customer might try to schedule a medical appointment: + + + +**Traditional IVR Flow:** +```mermaid +sequenceDiagram + participant C as Customer + participant I as IVR System + C->>I: Calls clinic + I->>C: "Press 1 for appointments, 2 for billing..." + C->>I: Presses 1 + I->>C: "Press 1 for new appointment, 2 to modify..." + C->>I: Presses 1 + I->>C: "Press 1 for general, 2 for specialist..." + C->>I: Presses 2 + I->>C: "Press 1 for cardiology, 2 for dermatology..." + C->>I: Presses 1 + I->>C: "Press 1 for morning slots, 2 for afternoon..." + Note over C,I: Multiple steps to reach goal
No flexibility in conversation
Can't ask questions mid-flow +``` +
+ + +**SignalWire AI Flow:** +```mermaid +sequenceDiagram + participant C as Customer + participant A as AI Agent + C->>A: "I need to see a cardiologist" + A->>C: "I can help with that. Do you have a preferred day?" + C->>A: "What's available next week?" + A->>C: "Dr. Smith has openings on Tuesday at 2PM or Thursday morning" + C->>A: "Before we book, what's the cancellation policy?" + A->>C: "You can cancel up to 24 hours before. Shall we look at those times?" + C->>A: "Yes, Thursday morning works better" + A->>C: "Great, I can book you for Thursday at 9AM or 11AM" + Note over C,A: Natural conversation flow
Handles context switches
Answers questions mid-booking +``` +
+
+ + For example, when a caller asks "What about the premium version?", the AI understands this refers to a product discussed earlier in the conversation. This context awareness extends across different topics and requests within the same interaction, allowing for natural conversation flows like: @@ -84,8 +127,6 @@ Performance monitoring becomes truly real-time, with instant access to critical - Processing times for AI decisions - Response times for integrated functions - - This real-time visibility enables powerful capabilities that transform how you manage AI interactions: - **Proactive Management:** Monitor conversations as they unfold and step in when needed. For instance, if a customer is discussing a high-value transaction, supervisors can receive instant alerts and provide guidance or take over seamlessly. @@ -96,9 +137,75 @@ This real-time visibility enables powerful capabilities that transform how you m - **Strategic Decision Making:** Transform raw interaction data into actionable business intelligence through live dashboards and real-time analytics. Spot trends as they emerge and make informed decisions about resource allocation, training needs, and service improvements. - This real-time insight capability ensures your AI communications aren't just automated – they're continuously optimized, monitored, and improved to deliver the best possible customer experience. +### External Service Integration + +SignalWire AI seamlessly integrates with external services and APIs through its function system. When the AI identifies specific intents or triggers during a conversation, it can execute functions that interact with your business systems, databases, or third-party services - all while maintaining natural conversation flow. + +Here's how it works in practice: + +```mermaid +sequenceDiagram + autonumber + + participant Customer + participant AI + participant Functions + participant CalAPI as Calendar API + participant SMS + + %% Initial Request + Customer->>+AI: I need to schedule a meeting with the sales team + Note right of AI: Detects scheduling intent + AI-->>AI: Identifies scheduling need + AI->>-Customer: I can help. When is best for you next week? + + %% Time Selection + Customer->>+AI: Tuesday afternoon would be great + + %% Availability Check + Note over AI,CalAPI: Checking team availability + AI->>+Functions: check_team_availability() + Functions->>+CalAPI: Query sales team calendar + CalAPI-->>-Functions: Return available slots + Functions-->>-AI: Provide available times + + AI->>-Customer: The sales team is free at 2 PM or 4 PM on Tuesday + Customer->>+AI: 2 PM works perfectly + + %% Meeting Setup + Note over AI,CalAPI: Scheduling the meeting + AI->>+Functions: schedule_meeting() + Functions->>+CalAPI: Create event and send invites + CalAPI-->>-Functions: Confirm booking and invites sent + + %% Notifications + Note over Functions,SMS: Sending notifications + Functions->>Functions: Trigger SMS notification + Functions->>+SMS: Send confirmation text + SMS-->>-Functions: Confirm delivery status + + Functions-->>-AI: Confirm meeting setup + AI->>-Customer: Meeting scheduled for Tuesday at 2 PM + Note over Customer,AI: You'll receive a calendar invite and a confirmation SMS +``` + +The AI acts as an intelligent orchestrator, seamlessly connecting various services: + +1. **Intent Recognition**: The AI identifies when a user's request requires external service interaction +2. **Function Triggers**: Based on recognized intents, the AI triggers appropriate functions +3. **Service Integration**: Functions handle the complex interaction with external services +4. **Response Management**: The AI maintains context and provides natural responses while background processes complete + +For example, in a meeting scheduling scenario: +- The AI recognizes scheduling intent from natural language +- Triggers calendar availability checks +- Manages meeting creation across platforms +- All while maintaining a natural conversation flow + +This integration capability enables complex business processes to be handled through natural conversation, without exposing the underlying technical complexity to the user. + --- ## Security and Compliance From b004751e1b6d729b70aa2e52c454cd8cb55201f7 Mon Sep 17 00:00:00 2001 From: Devon-White Date: Thu, 30 Jan 2025 10:12:15 -0500 Subject: [PATCH 03/18] More edits --- .../ai/get-started/platform-capabilities.mdx | 376 ++++++++++++++---- 1 file changed, 300 insertions(+), 76 deletions(-) diff --git a/docs/home/products/ai/get-started/platform-capabilities.mdx b/docs/home/products/ai/get-started/platform-capabilities.mdx index 1a4c340..70d1718 100644 --- a/docs/home/products/ai/get-started/platform-capabilities.mdx +++ b/docs/home/products/ai/get-started/platform-capabilities.mdx @@ -4,9 +4,30 @@ slug: /ai/get-started/platform-capabilities description: Learn about the capabilities of SignalWire's AI platform, including natural language processing, voice technology, business applications, advanced features, multi-channel intelligence, real-time analytics, and security. --- -## Understanding AI-Powered Communications +## Introduction -SignalWire's AI platform transforms traditional telecommunications into intelligent conversations. At its core, the platform combines advanced natural language processing with telecom infrastructure to create natural, context-aware interactions over voice and messaging channels. +SignalWire's AI platform represents a new paradigm in communications technology, seamlessly blending artificial intelligence with enterprise-grade telecommunications infrastructure. This platform transforms traditional communication channels into intelligent, context-aware interactions that adapt to your business needs. + +Key differentiators of our platform include: +- Natural language understanding and generation +- Real-time processing and response +- Multi-channel communication capabilities +- Enterprise-grade security and compliance +- Seamless integration with existing systems + +## Core Capabilities + +### Voice Technology + +SignalWire's voice technology combines two critical elements: natural speech synthesis and intelligent speech understanding. +The platform uses advanced voice synthesis through multiple TTS providers to generate natural-sounding speech that can be customized for your brand. +Voice parameters can be fine-tuned to match your needs: + +- Voice stability affects how consistent the voice sounds across different interactions +- Voice similarity controls how closely the AI matches a reference voice +- Language and accent options allow for authentic multilingual communication + +The speech understanding system processes incoming audio in real-time, handling various accents and dialects while filtering out background noise. This enables clear communication even in challenging environments like busy offices or public spaces. ### Conversation Intelligence @@ -16,24 +37,57 @@ understands context, and can reference previous parts of the conversation natura Let's compare how a customer might try to schedule a medical appointment: - + **Traditional IVR Flow:** ```mermaid sequenceDiagram + autonumber participant C as Customer participant I as IVR System C->>I: Calls clinic - I->>C: "Press 1 for appointments, 2 for billing..." - C->>I: Presses 1 - I->>C: "Press 1 for new appointment, 2 to modify..." - C->>I: Presses 1 - I->>C: "Press 1 for general, 2 for specialist..." - C->>I: Presses 2 - I->>C: "Press 1 for cardiology, 2 for dermatology..." - C->>I: Presses 1 - I->>C: "Press 1 for morning slots, 2 for afternoon..." - Note over C,I: Multiple steps to reach goal
No flexibility in conversation
Can't ask questions mid-flow + Note over I: Start Input Collection + I->>C: "Press or say 1 for appointments, 2 for billing..." + C->>I: Presses or says "1" + Note over I: End Input Collection + Note over I: Selected: Appointments Menu + Note over I: Start Input Collection + I->>C: "Press or say 1 for new appointment, 2 to modify..." + C->>I: Presses or says "1" + Note over I: End Input Collection + Note over I: Selected: New Appointment Flow + Note over I: Start Input Collection + I->>C: "Press or say 1 for general, 2 for specialist..." + C->>I: Presses or says "2" + Note over I: End Input Collection + Note over I: Selected: Specialist Menu + Note over I: Start Input Collection + I->>C: "Press or say 1 for cardiology, 2 for dermatology..." + C->>I: Presses or says "1" + Note over I: End Input Collection + Note over I: Selected: Cardiology Scheduling + Note over I: Start Input Collection + I->>C: "Press or say 1 for morning slots, 2 for afternoon..." + C->>I: Presses or says "1" + Note over I: End Input Collection + Note over I: Selected: Morning Slots + Note over I: Start Input Collection + I->>C: "For next Tuesday at 9AM, press or say 1. For Thursday at 10AM, press or say 2..." + C->>I: Presses or says "1" + Note over I: End Input Collection + Note over I: Selected: Tuesday 9AM + Note over I: Start Input Collection + I->>C: "For cancellation policy, press 1. To confirm appointment, press 2..." + C->>I: Presses or says "1" + Note over I: End Input Collection + I->>C: "You may cancel up to 24 hours before your appointment." + Note over I: Start Input Collection + I->>C: "To confirm appointment, press 1. To start over, press 2..." + C->>I: Presses or says "1" + Note over I: End Input Collection + Note over I: Appointment Confirmed + I->>C: "Your appointment is scheduled for Tuesday at 9AM with Dr. Smith." + Note over C,I: 9 menu selections
Each question requires new menu
Linear path only
Inflexible conversation ```
@@ -41,22 +95,29 @@ sequenceDiagram **SignalWire AI Flow:** ```mermaid sequenceDiagram + autonumber participant C as Customer participant A as AI Agent - C->>A: "I need to see a cardiologist" - A->>C: "I can help with that. Do you have a preferred day?" - C->>A: "What's available next week?" - A->>C: "Dr. Smith has openings on Tuesday at 2PM or Thursday morning" - C->>A: "Before we book, what's the cancellation policy?" - A->>C: "You can cancel up to 24 hours before. Shall we look at those times?" - C->>A: "Yes, Thursday morning works better" - A->>C: "Great, I can book you for Thursday at 9AM or 11AM" - Note over C,A: Natural conversation flow
Handles context switches
Answers questions mid-booking + C->>A: Calls clinic + Note over A: Understands natural speech + A->>C: "Hello, how can I help you today?" + C->>A: "I need to schedule a cardiology appointment" + Note over A: Instantly identifies:
1. Appointment scheduling
2. Specialist type
3. New appointment + A->>C: "I can help you schedule that. Would you prefer morning or afternoon appointments?" + C->>A: "Morning would be better" + Note over A: Processes multiple criteria:
1. Time preference
2. Available slots
3. Doctor availability + A->>C: "I have morning slots available with Dr. Smith next Tuesday at 9AM or Thursday at 10AM" + C->>A: "What's the cancellation policy?" + Note over A: Handles context switch
while maintaining booking flow + A->>C: "You can cancel up to 24 hours before your appointment. Would you like one of those morning slots?" + C->>A: "Yes, I'll take Tuesday at 9AM" + Note over A: Completes booking while
maintaining conversation context + A->>C: "Perfect, I've scheduled your cardiology appointment for Tuesday at 9AM with Dr. Smith" + Note over C,A: 5 natural exchanges
Handles multiple inputs per turn
Allows questions mid-flow - flexible conversation ```
- For example, when a caller asks "What about the premium version?", the AI understands this refers to a product discussed earlier in the conversation. This context awareness extends across different topics and requests within the same interaction, allowing for natural conversation flows like: @@ -65,79 +126,164 @@ flows like: The AI handles these context switches seamlessly while maintaining the original intent to schedule an appointment. ---- - -### Voice Technology - -SignalWire's voice technology combines two critical elements: natural speech synthesis and intelligent speech understanding. -The platform uses advanced voice synthesis through multiple TTS providers to generate natural-sounding speech that can be customized for your brand. -Voice parameters can be fine-tuned to match your needs: - -- Voice stability affects how consistent the voice sounds across different interactions -- Voice similarity controls how closely the AI matches a reference voice -- Language and accent options allow for authentic multilingual communication - -The speech understanding system processes incoming audio in real-time, handling various accents and dialects while filtering out background noise. This enables clear communication even in challenging environments like busy offices or public spaces. - ---- - -## Business Applications - -### Intelligent Customer Service - -SignalWire AI transforms customer service operations by providing consistent, 24/7 support capability. The system can: +### Dynamic Context Switching -- **Handle Complex Inquiries:** Unlike simple chatbots, the AI can manage sophisticated conversations, understanding context and maintaining thread across multiple questions. For example, a customer asking about product features, then pricing, then compatibility will experience a coherent conversation where each answer builds on previous context. +Unlike traditional systems that maintain a single conversation thread, SignalWire's AI platform enables specialized contexts for different types of interactions. Each context switch creates a fresh AI agent with its own prompt and memory space, ensuring focused expertise and strict information boundaries. -- **Manage Escalations:** The system intelligently determines when to transfer to human agents. It recognizes complex situations, emotional cues, or specific requests that require human intervention, ensuring customers get the right level of support at the right time. +Let's compare how a complex support interaction typically works: -### Process Automation + + +**Traditional Support Flow:** +```mermaid +sequenceDiagram + autonumber + participant C as Customer + participant G as General Support + participant T as Technical Support + participant B as Billing Team + + C->>G: "I need account help" + G->>C: "I can assist with basic account questions" + C->>G: "I'm seeing API errors" + G->>C: "Let me transfer you to technical support" + Note over G,T: Customer waits in new queue + C->>T: "I'm having API issues" + T->>C: "I can help with technical problems" + C->>T: "What about my invoice?" + T->>C: "Let me transfer you to billing" + Note over T,B: Customer waits again + C->>B: "About my invoice..." + Note over C,B: Customer repeats information +``` + -The platform excels at automating routine business processes while maintaining a natural interaction experience. Take appointment scheduling as an example: + +**SignalWire AI Flow:** +```mermaid +sequenceDiagram + autonumber + participant C as Customer + participant A as AI Agent + + Note over A: Support Context
Prompt: General inquiries instructions + C->>A: "I need help with my account" + A->>C: "I can help with account-related questions" + C->>A: "I'm getting API errors" + Note over A: New Context
Prompt: Technical support instructions + A->>C: "Let me check your API logs..." + C->>A: "What about my invoice?" + Note over A: New Context
Prompt: Billing support instructions + A->>C: "I see your billing history..." + Note over C,A: Each topic creates a fresh agent
with specialized knowledge +``` +
+
-The AI doesn't just book appointments - it manages the entire scheduling ecosystem. It understands complex requests ("I need an appointment next week, preferably Tuesday afternoon but Wednesday morning would work too"), checks availability, sends confirmations, and handles changes. It can even proactively manage schedule conflicts and suggest alternatives. +Each context operates independently with: +- Its own specialized prompt +- Fresh conversation memory +- Focused expertise (technical, billing, sales) +- Strict information boundaries ---- +This approach ensures: +- Specialized knowledge stays within appropriate contexts +- No information bleeds between different roles +- Clear compliance and security boundaries +- Purpose-built responses for each domain -## Advanced Features +For example, when a customer moves from technical support to billing questions, the AI creates a fresh agent focused solely on financial matters, leaving technical details in the previous context. This isolation maintains security while ensuring each interaction benefits from specialized expertise. -### Multi-Channel Intelligence +### Real-Time Analytics and Monitoring -SignalWire's AI maintains consistent conversations across different communication channels. A conversation that starts over the phone can seamlessly transition to SMS for follow-up information or documentation. The system maintains context across these transitions, creating a unified experience regardless of the communication method. +Understanding how your AI interactions perform is crucial for maintaining high-quality customer experiences. SignalWire's platform provides comprehensive analytics and monitoring capabilities that go beyond basic metrics. Our system captures every aspect of AI conversations - from speech recognition quality to response timing - enabling you to: -### Real-Time Analytics and Webhooks +- Monitor conversations as they happen +- Measure and optimize AI performance +- Ensure quality customer interactions +- Enable human supervision when needed +- Track system health and reliability -SignalWire's platform transforms AI interactions into actionable intelligence through real-time webhook integration. Every conversation becomes a source of immediate insights, allowing businesses to understand, monitor, and optimize their AI communications as they happen. +The platform achieves this through a robust webhook integration system that transforms conversations into actionable intelligence. Let's see how this works in a customer support scenario: -The platform streams comprehensive interaction data to your systems in real-time, providing deep visibility into every aspect of the conversation. This goes beyond simple transcription, offering detailed analysis of each interaction: +```mermaid +sequenceDiagram + autonumber + participant C as Customer + participant A as AI Agent + participant W as Webhook + + C->>A: Asks about product return + Note over A: Processes request + A->>W: Sends interaction data + Note over W: Analytics Processing + A->>C: Responds to customer + Note over W: Real-time updates:
- Speech confidence: 0.876
- Response time: 850ms
- Language: en-US +``` -When a customer engages with your AI agent, you'll see the entire conversation unfold in real-time, including how the AI interprets each request, its confidence in responses, and even subtle elements like tone and intent. For example, during a support call, you can observe: +#### Webhook Data and Metrics + +Below is an example webhook payload showing the comprehensive data captured during an AI interaction: + +```json +{ + "call_info": { + "project_id": "b08dacad...", + "content_type": "text/json", + "call_id": "b3f4e4e1..." + }, + "conversation_add": { + "role": "assistant", + "content": "...", + "lang": "en-US", + "tokens": 53, + "latency": 836, + "utterance_latency": 934, + "audio_latency": 1106 + }, + "webhook_reply": { + "status": "OK", + "request_id": "341de258...", + "parameters": { + "query": "...", + }, + "data": {...} + } +} +``` -- The natural flow of conversation between customer and AI -- How the AI interprets and responds to each request -- Precise timing of each interaction -- The AI's understanding of customer intent -- Quality metrics for each response +This data provides real-time visibility into: +- Natural conversation flow and context maintenance +- Speech recognition confidence scores +- Response timing and latency measurements +- Voice quality metrics +- Processing and decision-making speeds +- Integration response times -Performance monitoring becomes truly real-time, with instant access to critical metrics that affect customer experience: +#### Management Capabilities -- How quickly the AI processes and responds -- Voice quality and clarity measurements -- Accuracy of speech recognition -- Processing times for AI decisions -- Response times for integrated functions +The real-time data enables powerful operational control through: -This real-time visibility enables powerful capabilities that transform how you manage AI interactions: +- **Proactive Supervision:** + - Monitor high-value conversations in real-time + - Receive instant alerts for critical situations + - Enable supervisor intervention when needed -- **Proactive Management:** Monitor conversations as they unfold and step in when needed. For instance, if a customer is discussing a high-value transaction, supervisors can receive instant alerts and provide guidance or take over seamlessly. +- **Dynamic Optimization:** + - Fine-tune AI behavior based on performance data + - Adjust routing rules for different inquiry types + - Optimize response patterns for better outcomes -- **Dynamic Optimization:** Adjust your AI's behavior in real-time based on performance data. If certain types of inquiries are taking longer than expected, you can fine-tune parameters or update routing rules immediately. +- **Quality Assurance:** + - Identify and address issues in real-time + - Maintain compliance with industry standards + - Track and improve service quality metrics -- **Continuous Quality Improvement:** Rather than reviewing interactions after the fact, identify and address potential issues as they occur. This immediate feedback loop helps maintain high service standards and ensures regulatory compliance in real-time. +The platform delivers this data through a robust integration system featuring JSON-formatted payloads, consistent schemas, and reliable delivery mechanisms with retry capabilities, enabling seamless integration with your existing analytics tools and monitoring systems. -- **Strategic Decision Making:** Transform raw interaction data into actionable business intelligence through live dashboards and real-time analytics. Spot trends as they emerge and make informed decisions about resource allocation, training needs, and service improvements. +--- -This real-time insight capability ensures your AI communications aren't just automated – they're continuously optimized, monitored, and improved to deliver the best possible customer experience. +## Integration & Architecture ### External Service Integration @@ -206,10 +352,88 @@ For example, in a meeting scheduling scenario: This integration capability enables complex business processes to be handled through natural conversation, without exposing the underlying technical complexity to the user. +### SignalWire's RAG Stack Integration - Datasphere + +SignalWire's AI platform becomes even more powerful when combined with [Datasphere](/rest/signalwire-rest/endpoints/datasphere/documents), our built-in Retrieval-Augmented Generation (RAG) stack. This integration enables AI agents to access and leverage your organization's knowledge base in real-time during conversations. + +Here's how Datasphere enhances AI interactions: + +- **Dynamic Knowledge Access**: AI agents can pull relevant information from your documented knowledge base during live conversations, providing accurate and contextual responses based on your organization's specific content. + +- **Intelligent Document Processing**: + - Automatically processes and vectorizes documents using various chunking strategies + - Maintains semantic understanding of content + - Enables natural language queries across your knowledge base + +For example, in a healthcare policy inquiry scenario: + +```mermaid +sequenceDiagram + autonumber + participant Customer + participant AI + participant Datasphere + participant KB as Knowledge Base + + Customer->>AI: "What's covered under my maternity benefits?" + AI->>Datasphere: Semantic search for maternity coverage + Datasphere->>KB: Query vectorized policy documents + KB-->>Datasphere: Return relevant policy sections + Datasphere-->>AI: Contextualized coverage details + AI->>Customer: Explains specific maternity benefits and coverage limits + Customer->>AI: "And what about prenatal care visits?" + Note over AI,Datasphere: Maintains context of maternity discussion + AI->>Datasphere: Search for prenatal care coverage + Datasphere->>KB: Query with maternity context + KB-->>Datasphere: Return relevant prenatal care policies + Datasphere-->>AI: Contextualized prenatal care info + AI->>Customer: Details prenatal visit coverage within maternity benefits +``` + +The combination provides several key advantages: + +- **Always Up-to-Date Information**: As your documentation and knowledge base evolve, Datasphere automatically indexes and makes new information available to AI agents. + +- **Context-Aware Responses**: + - Combines conversation history with knowledge base queries + - Provides responses that reference specific documentation + - Maintains conversation flow while incorporating detailed information + +- **Flexible Knowledge Organization**: + - Tag-based organization for efficient information retrieval + - Multiple chunking strategies for optimal information storage + - Semantic search capabilities for natural language queries + +- **Enhanced Accuracy**: + - Reduces hallucination by grounding responses in your actual documentation + - Provides verifiable sources for information + - Maintains consistency across all AI interactions + +This powerful combination ensures that your AI agents not only engage in natural conversations but also provide accurate, +documented information specific to your organization's needs. To learn more about using Datasphere, check out our +[Use Datasphere with curl](/rest/signalwire-rest/guides/datasphere/curl-usage) guide. + +--- + +## Real-World Applications + +### Intelligent Customer Service + +SignalWire AI transforms customer service operations by providing consistent, 24/7 support capability. The system can: + +- **Handle Complex Inquiries:** Unlike simple chatbots, the AI can manage sophisticated conversations, understanding context and maintaining thread across multiple questions. For example, a customer asking about product features, then pricing, then compatibility will experience a coherent conversation where each answer builds on previous context. + +- **Manage Intentions:** You can define intentions for your AI in your prompt and the AI will intelligently respond to those intentions. For example, you can define an intention for the AI to transfer to a human when the customer requests a human. + +### Process Automation + +The platform excels at automating routine business processes while maintaining a natural interaction experience. Take appointment scheduling as an example: + +The AI doesn't just book appointments - it manages the entire scheduling ecosystem. It understands complex requests ("I need an appointment next week, preferably Tuesday afternoon but Wednesday morning would work too"), checks availability, sends confirmations, and handles changes. It can even proactively manage schedule conflicts and suggest alternatives. + + --- ## Security and Compliance SignalWire's AI platform is built with security and compliance at its core. All communications are encrypted, and the system includes sophisticated PII (Personally Identifiable Information) detection and protection mechanisms. This allows businesses to automate sensitive communications while maintaining compliance with regulations like HIPAA and GDPR. - -The platform includes comprehensive audit logging and access controls, providing transparency and accountability for all AI interactions. This is particularly important in regulated industries where documentation of all customer interactions is required. From ba1da7aaca9c3cb64e70e120fe8bc2dbf0a432a2 Mon Sep 17 00:00:00 2001 From: Devon-White Date: Thu, 30 Jan 2025 12:17:00 -0500 Subject: [PATCH 04/18] edits --- docs/home/products/ai/get-started/platform-capabilities.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/home/products/ai/get-started/platform-capabilities.mdx b/docs/home/products/ai/get-started/platform-capabilities.mdx index 70d1718..ced2063 100644 --- a/docs/home/products/ai/get-started/platform-capabilities.mdx +++ b/docs/home/products/ai/get-started/platform-capabilities.mdx @@ -23,8 +23,8 @@ SignalWire's voice technology combines two critical elements: natural speech syn The platform uses advanced voice synthesis through multiple TTS providers to generate natural-sounding speech that can be customized for your brand. Voice parameters can be fine-tuned to match your needs: -- Voice stability affects how consistent the voice sounds across different interactions -- Voice similarity controls how closely the AI matches a reference voice +- Ability to select from multiple TTS providers - some of which have more parameters to fine-tune the voice. +- Fillers for function calls and general speech fillers - helps with filling in the void during pauses making the flow of conversation more natural. - Language and accent options allow for authentic multilingual communication The speech understanding system processes incoming audio in real-time, handling various accents and dialects while filtering out background noise. This enables clear communication even in challenging environments like busy offices or public spaces. From c22a8101a6634e70e8c42cc3c28e612ef231fcbf Mon Sep 17 00:00:00 2001 From: Devon-White Date: Tue, 4 Feb 2025 11:58:24 -0500 Subject: [PATCH 05/18] Add components --- .../capabilities/_mermaid/ai-ivr-flow.mdx | 22 ++++ .../_mermaid/traditional-ivr-flow.mdx | 36 ++++++ .../index.mdx} | 94 ++------------- .../Extras/PreviewCard/Card/index.tsx | 107 +++++++++++++++++ .../Extras/PreviewCard/Card/styles.module.css | 113 ++++++++++++++++++ .../Extras/PreviewCard/Group/index.tsx | 31 +++++ .../PreviewCard/Group/styles.module.css | 25 ++++ .../Extras/PreviewCard/Modal/index.tsx | 74 ++++++++++++ .../PreviewCard/Modal/styles.module.css | 101 ++++++++++++++++ src/components/Extras/PreviewCard/index.tsx | 4 + src/components/Extras/Tooltip/index.tsx | 64 ++++++++++ .../Extras/Tooltip/styles.module.css | 103 ++++++++++++++++ src/css/_common.scss | 4 +- src/theme/MDXComponents/index.js | 10 ++ 14 files changed, 705 insertions(+), 83 deletions(-) create mode 100644 docs/home/products/ai/get-started/capabilities/_mermaid/ai-ivr-flow.mdx create mode 100644 docs/home/products/ai/get-started/capabilities/_mermaid/traditional-ivr-flow.mdx rename docs/home/products/ai/get-started/{platform-capabilities.mdx => capabilities/index.mdx} (80%) create mode 100644 src/components/Extras/PreviewCard/Card/index.tsx create mode 100644 src/components/Extras/PreviewCard/Card/styles.module.css create mode 100644 src/components/Extras/PreviewCard/Group/index.tsx create mode 100644 src/components/Extras/PreviewCard/Group/styles.module.css create mode 100644 src/components/Extras/PreviewCard/Modal/index.tsx create mode 100644 src/components/Extras/PreviewCard/Modal/styles.module.css create mode 100644 src/components/Extras/PreviewCard/index.tsx create mode 100644 src/components/Extras/Tooltip/index.tsx create mode 100644 src/components/Extras/Tooltip/styles.module.css diff --git a/docs/home/products/ai/get-started/capabilities/_mermaid/ai-ivr-flow.mdx b/docs/home/products/ai/get-started/capabilities/_mermaid/ai-ivr-flow.mdx new file mode 100644 index 0000000..5f3f773 --- /dev/null +++ b/docs/home/products/ai/get-started/capabilities/_mermaid/ai-ivr-flow.mdx @@ -0,0 +1,22 @@ + ```mermaid + sequenceDiagram + autonumber + participant C as Customer + participant A as AI Agent + C->>A: Calls clinic + Note over A: Understands natural speech + A->>C: "Hello, how can I help you today?" + C->>A: "I need to schedule a cardiology appointment" + Note over A: Instantly identifies:
1. Appointment scheduling
2. Specialist type
3. New appointment + A->>C: "I can help you schedule that. Would you prefer morning or afternoon appointments?" + C->>A: "Morning would be better" + Note over A: Processes multiple criteria:
1. Time preference
2. Available slots
3. Doctor availability + A->>C: "I have morning slots available with Dr. Smith next Tuesday at 9AM or Thursday at 10AM" + C->>A: "What's the cancellation policy?" + Note over A: Handles context switch
while maintaining booking flow + A->>C: "You can cancel up to 24 hours before your appointment. Would you like one of those morning slots?" + C->>A: "Yes, I'll take Tuesday at 9AM" + Note over A: Completes booking while
maintaining conversation context + A->>C: "Perfect, I've scheduled your cardiology appointment for Tuesday at 9AM with Dr. Smith" + Note over C,A: 5 natural exchanges
Handles multiple inputs per turn
Allows questions mid-flow - flexible conversation. +``` \ No newline at end of file diff --git a/docs/home/products/ai/get-started/capabilities/_mermaid/traditional-ivr-flow.mdx b/docs/home/products/ai/get-started/capabilities/_mermaid/traditional-ivr-flow.mdx new file mode 100644 index 0000000..e75aa8c --- /dev/null +++ b/docs/home/products/ai/get-started/capabilities/_mermaid/traditional-ivr-flow.mdx @@ -0,0 +1,36 @@ + ```mermaid +sequenceDiagram + autonumber + participant C as Customer + participant I as IVR System + C->>I: Calls clinic + Note over I: Start Input Collection + I->>C: "Press or say 1 for appointments, 2 for billing..." + C->>I: Presses or says "1" + Note over I: End Input Collection
Selected: Appointments Menu
Start Input Collection + I->>C: "Press or say 1 for new appointment, 2 to modify..." + C->>I: Presses or says "1" + Note over I: End Input Collection
Selected: New Appointment Flow
Start Input Collection + I->>C: "Press or say 1 for general, 2 for specialist..." + C->>I: Presses or says "2" + Note over I: End Input Collection
Selected: Specialist Menu
Start Input Collection + I->>C: "Press or say 1 for cardiology, 2 for dermatology..." + C->>I: Presses or says "1" + Note over I: End Input Collection
Selected: Cardiology Scheduling
Start Input Collection + I->>C: "Press or say 1 for morning slots, 2 for afternoon..." + C->>I: Presses or says "1" + Note over I: End Input Collection
Selected: Morning Slots
Start Input Collection + I->>C: "For next Tuesday at 9AM, press or say 1. For Thursday at 10AM, press or say 2..." + C->>I: Presses or says "1" + Note over I: End Input Collection
Selected: Tuesday 9AM
Start Input Collection + I->>C: "For cancellation policy, press 1. To confirm appointment, press 2..." + C->>I: Presses or says "1" + Note over I: End Input Collection
Selected: Cancellation Policy + I->>C: "You may cancel up to 24 hours before your appointment." + Note over I: Start Input Collection + I->>C: "To confirm appointment, press 1. To start over, press 2..." + C->>I: Presses or says "1" + Note over I: End Input Collection
Appointment Confirmed + I->>C: "Your appointment is scheduled for Tuesday at 9AM with Dr. Smith." + Note over C,I: 9 menu selections • Each question requires new menu • Linear path only • Inflexible conversation +``` \ No newline at end of file diff --git a/docs/home/products/ai/get-started/platform-capabilities.mdx b/docs/home/products/ai/get-started/capabilities/index.mdx similarity index 80% rename from docs/home/products/ai/get-started/platform-capabilities.mdx rename to docs/home/products/ai/get-started/capabilities/index.mdx index ced2063..8442254 100644 --- a/docs/home/products/ai/get-started/platform-capabilities.mdx +++ b/docs/home/products/ai/get-started/capabilities/index.mdx @@ -4,6 +4,9 @@ slug: /ai/get-started/platform-capabilities description: Learn about the capabilities of SignalWire's AI platform, including natural language processing, voice technology, business applications, advanced features, multi-channel intelligence, real-time analytics, and security. --- +import TraditionalIVRFlow from './_mermaid/traditional-ivr-flow.mdx'; +import AIVRFlow from './_mermaid/ai-ivr-flow.mdx'; + ## Introduction SignalWire's AI platform represents a new paradigm in communications technology, seamlessly blending artificial intelligence with enterprise-grade telecommunications infrastructure. This platform transforms traditional communication channels into intelligent, context-aware interactions that adapt to your business needs. @@ -24,8 +27,7 @@ The platform uses advanced voice synthesis through multiple TTS providers to gen Voice parameters can be fine-tuned to match your needs: - Ability to select from multiple TTS providers - some of which have more parameters to fine-tune the voice. -- Fillers for function calls and general speech fillers - helps with filling in the void during pauses making the flow of conversation more natural. -- Language and accent options allow for authentic multilingual communication +- Fillers for function calls and general speech fillers - helps with filling in the void during pauses making the flow of conversation more natural. The speech understanding system processes incoming audio in real-time, handling various accents and dialects while filtering out background noise. This enables clear communication even in challenging environments like busy offices or public spaces. @@ -37,86 +39,16 @@ understands context, and can reference previous parts of the conversation natura Let's compare how a customer might try to schedule a medical appointment: - - -**Traditional IVR Flow:** -```mermaid -sequenceDiagram - autonumber - participant C as Customer - participant I as IVR System - C->>I: Calls clinic - Note over I: Start Input Collection - I->>C: "Press or say 1 for appointments, 2 for billing..." - C->>I: Presses or says "1" - Note over I: End Input Collection - Note over I: Selected: Appointments Menu - Note over I: Start Input Collection - I->>C: "Press or say 1 for new appointment, 2 to modify..." - C->>I: Presses or says "1" - Note over I: End Input Collection - Note over I: Selected: New Appointment Flow - Note over I: Start Input Collection - I->>C: "Press or say 1 for general, 2 for specialist..." - C->>I: Presses or says "2" - Note over I: End Input Collection - Note over I: Selected: Specialist Menu - Note over I: Start Input Collection - I->>C: "Press or say 1 for cardiology, 2 for dermatology..." - C->>I: Presses or says "1" - Note over I: End Input Collection - Note over I: Selected: Cardiology Scheduling - Note over I: Start Input Collection - I->>C: "Press or say 1 for morning slots, 2 for afternoon..." - C->>I: Presses or says "1" - Note over I: End Input Collection - Note over I: Selected: Morning Slots - Note over I: Start Input Collection - I->>C: "For next Tuesday at 9AM, press or say 1. For Thursday at 10AM, press or say 2..." - C->>I: Presses or says "1" - Note over I: End Input Collection - Note over I: Selected: Tuesday 9AM - Note over I: Start Input Collection - I->>C: "For cancellation policy, press 1. To confirm appointment, press 2..." - C->>I: Presses or says "1" - Note over I: End Input Collection - I->>C: "You may cancel up to 24 hours before your appointment." - Note over I: Start Input Collection - I->>C: "To confirm appointment, press 1. To start over, press 2..." - C->>I: Presses or says "1" - Note over I: End Input Collection - Note over I: Appointment Confirmed - I->>C: "Your appointment is scheduled for Tuesday at 9AM with Dr. Smith." - Note over C,I: 9 menu selections
Each question requires new menu
Linear path only
Inflexible conversation -``` -
- -**SignalWire AI Flow:** -```mermaid -sequenceDiagram - autonumber - participant C as Customer - participant A as AI Agent - C->>A: Calls clinic - Note over A: Understands natural speech - A->>C: "Hello, how can I help you today?" - C->>A: "I need to schedule a cardiology appointment" - Note over A: Instantly identifies:
1. Appointment scheduling
2. Specialist type
3. New appointment - A->>C: "I can help you schedule that. Would you prefer morning or afternoon appointments?" - C->>A: "Morning would be better" - Note over A: Processes multiple criteria:
1. Time preference
2. Available slots
3. Doctor availability - A->>C: "I have morning slots available with Dr. Smith next Tuesday at 9AM or Thursday at 10AM" - C->>A: "What's the cancellation policy?" - Note over A: Handles context switch
while maintaining booking flow - A->>C: "You can cancel up to 24 hours before your appointment. Would you like one of those morning slots?" - C->>A: "Yes, I'll take Tuesday at 9AM" - Note over A: Completes booking while
maintaining conversation context - A->>C: "Perfect, I've scheduled your cardiology appointment for Tuesday at 9AM with Dr. Smith" - Note over C,A: 5 natural exchanges
Handles multiple inputs per turn
Allows questions mid-flow - flexible conversation -``` -
-
+ + + + + + + + + For example, when a caller asks "What about the premium version?", the AI understands this refers to a product discussed earlier in the conversation. This context awareness extends across different topics and requests within the same interaction, allowing for natural conversation diff --git a/src/components/Extras/PreviewCard/Card/index.tsx b/src/components/Extras/PreviewCard/Card/index.tsx new file mode 100644 index 0000000..159bf65 --- /dev/null +++ b/src/components/Extras/PreviewCard/Card/index.tsx @@ -0,0 +1,107 @@ +import React, { ReactNode, useState, isValidElement, useMemo, useCallback } from 'react'; +import clsx from 'clsx'; +import styles from './styles.module.css'; +import Modal from '../Modal'; + +export interface PreviewCardProps { + title?: string; + description?: string; + children: ReactNode; + className?: string; + thumbnail?: ReactNode; +} + +const CardMetadata = React.memo<{ title?: string; description?: string }>(({ title, description }) => { + if (!title && !description) return null; + + return ( +
+ {title &&

{title}

} + {description &&

{description}

} +
+ ); +}); + +CardMetadata.displayName = 'CardMetadata'; + +const PreviewCard: React.FC = React.memo(({ + title, + description, + children, + className, + thumbnail, +}) => { + const [isModalOpen, setIsModalOpen] = useState(false); + + const handleOpen = useCallback(() => { + setIsModalOpen(true); + }, []); + + const handleClose = useCallback(() => { + setIsModalOpen(false); + }, []); + + const handleKeyPress = useCallback((e: React.KeyboardEvent) => { + if (e.key === 'Enter' || e.key === ' ') { + setIsModalOpen(true); + } + }, []); + + // Memoize the rendered content + const renderedContent = useMemo(() => { + const renderComponent = (component: ReactNode, key: string) => { + if (isValidElement(component)) { + const ComponentType = component.type; + const { key: _, ...componentProps } = component.props; + + return ( + + ); + } + return component; + }; + + const previewContent = thumbnail ? renderComponent(thumbnail, 'preview-thumbnail') : renderComponent(children, 'preview-instance'); + const modalContent = renderComponent(children, 'modal-instance'); + + return { + preview: ( +
+ {previewContent} +
+ ), + modal: modalContent + }; + }, [children, thumbnail]); + + return ( + <> +
+
+ {renderedContent.preview} + +
+
+ + + {renderedContent.modal} + + + ); +}); + +PreviewCard.displayName = 'PreviewCard'; + +export default PreviewCard; \ No newline at end of file diff --git a/src/components/Extras/PreviewCard/Card/styles.module.css b/src/components/Extras/PreviewCard/Card/styles.module.css new file mode 100644 index 0000000..446a476 --- /dev/null +++ b/src/components/Extras/PreviewCard/Card/styles.module.css @@ -0,0 +1,113 @@ +/* Preview card styles */ +.previewCard { + flex-direction: column; + background: var(--ifm-card-background-color); + border-radius: 0.75rem; + overflow: hidden; + transition: all 0.3s ease; + cursor: pointer; + padding: 0; /* Remove default padding */ + border: 1px solid var(--sw-card-border-color); + width: 100%; + display: flex; + margin-bottom: 2rem; +} + +/* When inside a PreviewCardGroup, make the card take full height */ +:global(.previewCardGroup) .previewCard { + height: 100%; + margin-bottom: 0; + min-height: 100%; +} + +/* Preview card content styles */ +.previewCardContent:not(:has(img)) { + position: relative; + display: flex; + justify-content: center; + width: 100%; + flex: 1; + min-height: 0; + overflow: hidden; + padding-bottom: 1.5rem; /* Match top padding */ +} + +.previewCardContent:not(:has(img)) > div { + width: max-content; + max-width: 100%; + display: flex; + justify-content: center; + align-items: center; + height: 100%; +} + +/* Mermaid diagram specific styles */ +.previewCardContent:not(:has(img)) > div > svg { + margin: 0 auto; +} + +/* Image specific styles in preview */ +.previewCardContent img { + width: 100%; + height: 100%; + object-fit: contain; + margin-bottom: 3rem; +} + + + +/* Dark mode styles */ +[data-theme="dark"] .previewCard { + background: color-mix(in srgb, var(--ifm-card-background-color) 40%, transparent); +} + +/* Hover effects */ +[data-theme="light"] .previewCard:hover { + border-color: var(--sw-link-color); + transform: translateY(-4px); + box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12); +} + +[data-theme="dark"] .previewCard:hover { + border-color: transparent; + background-image: linear-gradient( + var(--ifm-card-background-color), + var(--ifm-card-background-color) + ), + var(--sw-horizontal-active-line-color); + background-origin: border-box; + background-clip: padding-box, border-box; + transform: scale(1.01); +} + +.previewCardItemContent { + display: flex; + flex-direction: column; + flex: 1; + min-height: 0; + padding: 1.5rem; +} + +/* Metadata styles */ +.cardMetadata { + border-top: 1px solid var(--sw-card-border-color); + margin: 0 -1.5rem; + padding: 1rem 1.5rem 0; + margin-top: auto; +} + +.previewCardTitle { + margin: 0; + font-size: 1.1rem; + line-height: 1.2; + flex-shrink: 0; +} + +.previewCardDescription { + margin: 0.25rem 0 0 0; + font-size: 1rem; + font-weight: normal; + color: var(--ifm-font-color-base); + line-height: 1.4; + flex-shrink: 0; +} \ No newline at end of file diff --git a/src/components/Extras/PreviewCard/Group/index.tsx b/src/components/Extras/PreviewCard/Group/index.tsx new file mode 100644 index 0000000..49086fc --- /dev/null +++ b/src/components/Extras/PreviewCard/Group/index.tsx @@ -0,0 +1,31 @@ +import React, { ReactNode } from 'react'; +import clsx from 'clsx'; +import styles from './styles.module.css'; + +export interface PreviewCardGroupProps { + children: ReactNode; + columns?: 1 | 2 | 3 | 4; + className?: string; +} + +const PreviewCardGroup: React.FC = ({ + children, + columns = 2, + className, +}) => { + return ( +
+ {children} +
+ ); +}; + +export default PreviewCardGroup; \ No newline at end of file diff --git a/src/components/Extras/PreviewCard/Group/styles.module.css b/src/components/Extras/PreviewCard/Group/styles.module.css new file mode 100644 index 0000000..da6d399 --- /dev/null +++ b/src/components/Extras/PreviewCard/Group/styles.module.css @@ -0,0 +1,25 @@ +.previewCardGroup { + display: grid; + width: 100%; + gap: 1rem; + margin: 2rem 0; +} + + +@media (min-width: 640px) { + .cols1 { + grid-template-columns: 1fr; + } + + .cols2 { + grid-template-columns: repeat(2, 1fr); + } + + .cols3 { + grid-template-columns: repeat(3, 1fr); + } + + .cols4 { + grid-template-columns: repeat(4, 1fr); + } +} \ No newline at end of file diff --git a/src/components/Extras/PreviewCard/Modal/index.tsx b/src/components/Extras/PreviewCard/Modal/index.tsx new file mode 100644 index 0000000..773ef28 --- /dev/null +++ b/src/components/Extras/PreviewCard/Modal/index.tsx @@ -0,0 +1,74 @@ +import React, { ReactNode, useEffect, isValidElement, useRef } from 'react'; +import { createPortal } from 'react-dom'; +import Mermaid from '@theme/Mermaid'; +import styles from './styles.module.css'; + +export interface ModalProps { + isOpen: boolean; + onClose: () => void; + children: ReactNode; +} + +const Modal: React.FC = ({ isOpen, onClose, children }) => { + const overlayRef = useRef(null); + + useEffect(() => { + if (isOpen) { + document.body.style.overflow = 'hidden'; + + const handleEscape = (e: KeyboardEvent) => { + if (e.key === 'Escape') { + onClose(); + } + }; + document.addEventListener('keydown', handleEscape); + + return () => { + document.body.style.overflow = 'unset'; + document.removeEventListener('keydown', handleEscape); + }; + } + }, [isOpen, onClose]); + + // Don't render anything if modal is not open and animation has finished + const overlayElement = overlayRef.current; + if (!isOpen && overlayElement?.style.opacity === '0') return null; + + // Check if the content is a Mermaid diagram + const isMermaid = isValidElement(children) && children.type === Mermaid; + + const modalContent = ( +
+
e.stopPropagation()} + > + +
+ {isMermaid ? ( +
+ {children} +
+ ) : children} +
+
+
+ ); + + return createPortal(modalContent, document.body); +}; + +export default React.memo(Modal); \ No newline at end of file diff --git a/src/components/Extras/PreviewCard/Modal/styles.module.css b/src/components/Extras/PreviewCard/Modal/styles.module.css new file mode 100644 index 0000000..b25df6b --- /dev/null +++ b/src/components/Extras/PreviewCard/Modal/styles.module.css @@ -0,0 +1,101 @@ +/* Modal styles */ +.modalOverlay { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.75); + display: flex; + align-items: center; + justify-content: center; + z-index: 1000; + backdrop-filter: blur(2px); + /* Force GPU layer */ + transform: translateZ(0); + will-change: opacity; + /* Add smooth transition */ + opacity: 1; + transition: opacity 0.2s ease-out; +} + +/* Add enter/exit animations */ +.modalOverlay[aria-hidden="true"] { + opacity: 0; + pointer-events: none; +} + +.modalContent { + position: relative; + width: 95vw; + height: 95vh; + background: var(--ifm-background-surface-color); + border: 1px solid var(--sw-card-border-color); + border-radius: var(--ifm-card-border-radius); + /* Force GPU layer and reduce repaints */ + transform: translateZ(0) scale(1); + will-change: transform; + backface-visibility: hidden; + perspective: 1000px; + /* Add smooth transition */ + transition: transform 0.2s ease-out; +} + +.modalOverlay[aria-hidden="true"] .modalContent { + transform: translateZ(0) scale(0.95); +} + +.modalContentWrapper { + flex: 1; + width: 100%; + height: 100%; + padding-top: 4rem; /* Space for close button */ + overflow: auto; + display: flex; + flex-direction: column; + -webkit-overflow-scrolling: touch; + overscroll-behavior: contain; + transform: translateZ(0); + will-change: transform; + scroll-behavior: auto; +} + +/* Add specific handling for Mermaid diagrams */ +.modalContentWrapper > div { + width: 100%; + display: flex; + justify-content: center; +} + +/* Image styles in modal */ +.modalContent img { + max-width: min(90vw, 1200px); + max-height: 85vh; + width: auto; + height: auto; + object-fit: contain; + margin: 0 auto; + display: block; +} + +.modalClose { + position: absolute; + top: 1rem; + right: 2rem; + width: 2.5rem; + height: 2.5rem; + border-radius: 50%; + border: none; + background: var(--ifm-color-emphasis-200); + font-size: 1.5rem; + cursor: pointer; + z-index: 10; + transform: translateZ(0); + will-change: transform, background; + transition: background 0.2s ease; +} + +.modalClose:hover { + background: var(--ifm-color-emphasis-300); + color: var(--ifm-color-emphasis-900); +} \ No newline at end of file diff --git a/src/components/Extras/PreviewCard/index.tsx b/src/components/Extras/PreviewCard/index.tsx new file mode 100644 index 0000000..f7829e9 --- /dev/null +++ b/src/components/Extras/PreviewCard/index.tsx @@ -0,0 +1,4 @@ +export { default as PreviewCard } from './Card'; +export { default as PreviewCardGroup } from './Group'; +export type { PreviewCardProps } from './Card'; +export type { PreviewCardGroupProps } from './Group'; diff --git a/src/components/Extras/Tooltip/index.tsx b/src/components/Extras/Tooltip/index.tsx new file mode 100644 index 0000000..604cfff --- /dev/null +++ b/src/components/Extras/Tooltip/index.tsx @@ -0,0 +1,64 @@ +import React, { ReactNode, useState } from 'react'; +import { useWindowSize } from '@docusaurus/theme-common'; +import clsx from 'clsx'; +import styles from './styles.module.css'; + +interface TooltipProps { + children: ReactNode; + tip: ReactNode; + delay?: number; +} + +export default function Tooltips({ + children, + tip, + delay = 200 +}: TooltipProps) { + const windowSize = useWindowSize(); + const isMobile = windowSize === 'mobile'; + const [isVisible, setIsVisible] = useState(false); + + if (!tip) { + throw new Error('Tooltip requires a non-empty tip prop'); + } + + if (!children) { + throw new Error('Tooltip requires children to be provided'); + } + + const handleMouseEnter = () => { + setIsVisible(true); + }; + + const handleMouseLeave = () => { + setIsVisible(false); + }; + + return ( + + {children} + + {tip} + + + ); +} diff --git a/src/components/Extras/Tooltip/styles.module.css b/src/components/Extras/Tooltip/styles.module.css new file mode 100644 index 0000000..ff938b4 --- /dev/null +++ b/src/components/Extras/Tooltip/styles.module.css @@ -0,0 +1,103 @@ +.tooltipContainer { + position: relative; + display: inline-block; + cursor: help; + border-bottom: 1px dotted var(--ifm-color-primary); +} + +.tooltip { + visibility: hidden; + position: absolute; + z-index: 1; + bottom: 125%; + left: 50%; + transform: translateX(-50%) translateY(5px); + padding: 8px 12px; + background-color: var(--ifm-background-surface-color); + color: var(--ifm-text-color); + text-align: left; + border-radius: 8px; + font-size: 14px; + width: max-content; + max-width: min(90vw, 400px); + white-space: normal; + word-wrap: break-word; + opacity: 0; + transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s; + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08); + border: 1px solid var(--sw-card-border-color); + user-select: text; + cursor: text; + backdrop-filter: blur(8px); + line-height: 1.5; +} + +.tooltip::after { + content: ""; + position: absolute; + top: 100%; + left: 50%; + margin-left: -6px; + border-width: 6px; + border-style: solid; + border-color: var(--ifm-background-surface-color) transparent transparent transparent; + filter: drop-shadow(0 1px 1px rgba(0, 0, 0, 0.1)); +} + +/* Add a pseudo-element for the arrow border */ +.tooltip::before { + content: ""; + position: absolute; + top: 100%; + left: 50%; + margin-left: -7px; + border-width: 7px; + border-style: solid; + border-color: var(--sw-card-border-color) transparent transparent transparent; + z-index: -1; +} + +.tooltip.visible { + visibility: visible; + opacity: 1; + transform: translateX(-50%) translateY(0); +} + +/* Keep tooltip visible when hovering over it */ +.tooltip:hover { + visibility: visible; + opacity: 1; + transform: translateX(-50%) translateY(0); +} + +/* Add a delay before hiding */ +.tooltipContainer:not(:hover) .tooltip:not(:hover) { + transition-delay: 100ms; +} + +/* Mobile Styles */ +.tooltipMobile { + width: auto; + max-width: calc(100vw - 32px); + font-size: 13px; + padding: 8px 12px; + bottom: auto; + top: 125%; + transform: translateX(-50%) translateY(-5px); +} + +.tooltipMobile::before { + top: auto; + bottom: 100%; + border-color: transparent transparent var(--sw-card-border-color) transparent; +} + +.tooltipMobile::after { + top: auto; + bottom: 100%; + border-color: transparent transparent var(--ifm-background-surface-color) transparent; +} + +.tooltipMobile.visible { + transform: translateX(-50%) translateY(0); +} \ No newline at end of file diff --git a/src/css/_common.scss b/src/css/_common.scss index b05a9fc..1489042 100644 --- a/src/css/_common.scss +++ b/src/css/_common.scss @@ -66,8 +66,8 @@ --sw-gradient-border: var(--sw-horizontal-active-line-color); --sw-card-border-color: var(--ifm-color-gray-800); - --ifm-background-color: #070c2d !important; - --ifm-background-surface-color: #0c1339 !important; + --ifm-background-color: #070c2d; + --ifm-background-surface-color: #0c1339; background-image: var(--dark-mode-gradient-overlay), var(--dark-mode-bg-pattern); background-repeat: no-repeat, repeat; diff --git a/src/theme/MDXComponents/index.js b/src/theme/MDXComponents/index.js index fba7cb4..7b03f9b 100644 --- a/src/theme/MDXComponents/index.js +++ b/src/theme/MDXComponents/index.js @@ -21,6 +21,11 @@ import CodeGroup from "../../components/Extras/Code"; import { ExpandableItemCoverIcon } from "../../components/Extras/Expandable/ExpandableItemCoverIcon"; import Frame from "../../components/Extras/Frame/Frame"; import Slideshow from "../../components/Extras/Slideshow/Slideshow"; +import Tooltips from "../../components/Extras/Tooltip"; +import { PreviewCardGroup, PreviewCard } from "../../components/Extras/PreviewCard"; + + + export default { ...MDXComponents, @@ -43,12 +48,16 @@ export default { DocCardList, ExpandableItemCoverIcon, Frame, + PreviewCardGroup, + PreviewCard, HomepageHeader, LinkBadge, LinkCard, LinkCardContainer, ProductButton, + ProductButtons, + Slideshow, Steps, Subtitle, @@ -56,4 +65,5 @@ export default { TabItem, UseCaseLinks, UseCaseView, + Tooltips, }; \ No newline at end of file From 08d2f41c806e539e5ad4325ba959e5014f3930ca Mon Sep 17 00:00:00 2001 From: Devon-White Date: Tue, 4 Feb 2025 12:31:24 -0500 Subject: [PATCH 06/18] Made Modal Browser only to fix build --- .../Extras/PreviewCard/Card/styles.module.css | 43 ++++++++++++------- .../Extras/PreviewCard/Modal/index.tsx | 15 ++++++- 2 files changed, 40 insertions(+), 18 deletions(-) diff --git a/src/components/Extras/PreviewCard/Card/styles.module.css b/src/components/Extras/PreviewCard/Card/styles.module.css index 446a476..1ab7606 100644 --- a/src/components/Extras/PreviewCard/Card/styles.module.css +++ b/src/components/Extras/PreviewCard/Card/styles.module.css @@ -21,41 +21,52 @@ } /* Preview card content styles */ -.previewCardContent:not(:has(img)) { +.previewCardContent { position: relative; display: flex; - justify-content: center; + flex-direction: column; width: 100%; - flex: 1; + flex: 1 1 auto; min-height: 0; overflow: hidden; - padding-bottom: 1.5rem; /* Match top padding */ } -.previewCardContent:not(:has(img)) > div { - width: max-content; - max-width: 100%; +/* Container for SVG/Mermaid content */ +.previewCardContent > div { + position: relative; + width: 100%; + height: 100%; + min-height: 200px; display: flex; - justify-content: center; align-items: center; - height: 100%; + justify-content: center; + overflow: visible; } /* Mermaid diagram specific styles */ -.previewCardContent:not(:has(img)) > div > svg { - margin: 0 auto; +.previewCardContent :global(.docusaurus-mermaid-container) { + width: 100%; + min-height: inherit; + display: flex; + align-items: center; + justify-content: center; + overflow: visible; } -/* Image specific styles in preview */ +.previewCardContent :global(.docusaurus-mermaid-container) > svg { + display: block; + min-width: 100%; + height: auto; + min-height: inherit; +} + +/* Image specific styles */ .previewCardContent img { width: 100%; - height: 100%; + height: auto; object-fit: contain; - margin-bottom: 3rem; } - - /* Dark mode styles */ [data-theme="dark"] .previewCard { background: color-mix(in srgb, var(--ifm-card-background-color) 40%, transparent); diff --git a/src/components/Extras/PreviewCard/Modal/index.tsx b/src/components/Extras/PreviewCard/Modal/index.tsx index 773ef28..09eb4e9 100644 --- a/src/components/Extras/PreviewCard/Modal/index.tsx +++ b/src/components/Extras/PreviewCard/Modal/index.tsx @@ -1,6 +1,7 @@ import React, { ReactNode, useEffect, isValidElement, useRef } from 'react'; import { createPortal } from 'react-dom'; import Mermaid from '@theme/Mermaid'; +import BrowserOnly from '@docusaurus/BrowserOnly'; import styles from './styles.module.css'; export interface ModalProps { @@ -9,7 +10,7 @@ export interface ModalProps { children: ReactNode; } -const Modal: React.FC = ({ isOpen, onClose, children }) => { +const ModalContent: React.FC = ({ isOpen, onClose, children }) => { const overlayRef = useRef(null); useEffect(() => { @@ -71,4 +72,14 @@ const Modal: React.FC = ({ isOpen, onClose, children }) => { return createPortal(modalContent, document.body); }; -export default React.memo(Modal); \ No newline at end of file +const Modal: React.FC = React.memo((props) => { + return ( + + {() => } + + ); +}); + +Modal.displayName = 'PreviewCardModal'; + +export default Modal; \ No newline at end of file From 8c77b03eb92a56b92fa52af78a29f55fd80583ac Mon Sep 17 00:00:00 2001 From: Devon-White Date: Tue, 4 Feb 2025 13:20:47 -0500 Subject: [PATCH 07/18] Safari fixes --- .../Extras/PreviewCard/Card/styles.module.css | 95 ++++++++----------- 1 file changed, 41 insertions(+), 54 deletions(-) diff --git a/src/components/Extras/PreviewCard/Card/styles.module.css b/src/components/Extras/PreviewCard/Card/styles.module.css index 1ab7606..fd64fef 100644 --- a/src/components/Extras/PreviewCard/Card/styles.module.css +++ b/src/components/Extras/PreviewCard/Card/styles.module.css @@ -6,11 +6,12 @@ overflow: hidden; transition: all 0.3s ease; cursor: pointer; - padding: 0; /* Remove default padding */ + padding: 0; border: 1px solid var(--sw-card-border-color); width: 100%; display: flex; margin-bottom: 2rem; + position: relative; } /* When inside a PreviewCardGroup, make the card take full height */ @@ -20,44 +21,36 @@ min-height: 100%; } -/* Preview card content styles */ -.previewCardContent { - position: relative; +.previewCardItemContent { display: flex; flex-direction: column; width: 100%; - flex: 1 1 auto; - min-height: 0; - overflow: hidden; + height: 100%; + padding: 1.5rem; } -/* Container for SVG/Mermaid content */ -.previewCardContent > div { +/* Preview card content styles */ +.previewCardContent { position: relative; width: 100%; - height: 100%; - min-height: 200px; + flex: 1; display: flex; align-items: center; - justify-content: center; - overflow: visible; + margin-bottom: 1rem; } -/* Mermaid diagram specific styles */ -.previewCardContent :global(.docusaurus-mermaid-container) { +/* Container for SVG/Mermaid content */ +.previewCardContent > div { width: 100%; - min-height: inherit; display: flex; align-items: center; justify-content: center; - overflow: visible; + padding: 1rem; } -.previewCardContent :global(.docusaurus-mermaid-container) > svg { - display: block; - min-width: 100%; - height: auto; - min-height: inherit; + +.previewCardContent :global(.docusaurus-mermaid-container) { + display: contents; } /* Image specific styles */ @@ -65,38 +58,7 @@ width: 100%; height: auto; object-fit: contain; -} - -/* Dark mode styles */ -[data-theme="dark"] .previewCard { - background: color-mix(in srgb, var(--ifm-card-background-color) 40%, transparent); -} - -/* Hover effects */ -[data-theme="light"] .previewCard:hover { - border-color: var(--sw-link-color); - transform: translateY(-4px); - box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12); -} - -[data-theme="dark"] .previewCard:hover { - border-color: transparent; - background-image: linear-gradient( - var(--ifm-card-background-color), - var(--ifm-card-background-color) - ), - var(--sw-horizontal-active-line-color); - background-origin: border-box; - background-clip: padding-box, border-box; - transform: scale(1.01); -} - -.previewCardItemContent { - display: flex; - flex-direction: column; - flex: 1; - min-height: 0; - padding: 1.5rem; + margin-bottom: 3rem; } /* Metadata styles */ @@ -105,6 +67,7 @@ margin: 0 -1.5rem; padding: 1rem 1.5rem 0; margin-top: auto; + flex-shrink: 0; } .previewCardTitle { @@ -121,4 +84,28 @@ color: var(--ifm-font-color-base); line-height: 1.4; flex-shrink: 0; +} + +/* Dark mode styles */ +[data-theme="dark"] .previewCard { + background: color-mix(in srgb, var(--ifm-card-background-color) 40%, transparent); +} + +/* Hover effects */ +[data-theme="light"] .previewCard:hover { + border-color: var(--sw-link-color); + transform: translateY(-4px); + box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12); +} + +[data-theme="dark"] .previewCard:hover { + border-color: transparent; + background-image: linear-gradient( + var(--ifm-card-background-color), + var(--ifm-card-background-color) + ), + var(--sw-horizontal-active-line-color); + background-origin: border-box; + background-clip: padding-box, border-box; + transform: scale(1.01); } \ No newline at end of file From a1ce43aa2d1a41aeca7fb4ee9d7f3a1c3382b7e8 Mon Sep 17 00:00:00 2001 From: Devon-White Date: Tue, 4 Feb 2025 13:51:11 -0500 Subject: [PATCH 08/18] edits to component --- src/components/Extras/PreviewCard/Card/index.tsx | 10 ++++++++-- .../Extras/PreviewCard/Card/styles.module.css | 2 +- .../Extras/PreviewCard/Modal/styles.module.css | 1 - 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/components/Extras/PreviewCard/Card/index.tsx b/src/components/Extras/PreviewCard/Card/index.tsx index 159bf65..4217e79 100644 --- a/src/components/Extras/PreviewCard/Card/index.tsx +++ b/src/components/Extras/PreviewCard/Card/index.tsx @@ -41,8 +41,9 @@ const PreviewCard: React.FC = React.memo(({ setIsModalOpen(false); }, []); - const handleKeyPress = useCallback((e: React.KeyboardEvent) => { + const handleKeyDown = useCallback((e: React.KeyboardEvent) => { if (e.key === 'Enter' || e.key === ' ') { + e.preventDefault(); setIsModalOpen(true); } }, []); @@ -77,6 +78,9 @@ const PreviewCard: React.FC = React.memo(({ }; }, [children, thumbnail]); + const cardTitle = title || 'Preview content'; + const ariaLabel = `${cardTitle}. Click to open an expanded view of the content.`; + return ( <>
= React.memo(({ onClick={handleOpen} role="button" tabIndex={0} - onKeyPress={handleKeyPress} + onKeyDown={handleKeyDown} + aria-label={ariaLabel} + title="Click to open an expanded view of the content" >
{renderedContent.preview} diff --git a/src/components/Extras/PreviewCard/Card/styles.module.css b/src/components/Extras/PreviewCard/Card/styles.module.css index fd64fef..f939711 100644 --- a/src/components/Extras/PreviewCard/Card/styles.module.css +++ b/src/components/Extras/PreviewCard/Card/styles.module.css @@ -5,7 +5,7 @@ border-radius: 0.75rem; overflow: hidden; transition: all 0.3s ease; - cursor: pointer; + cursor: zoom-in; padding: 0; border: 1px solid var(--sw-card-border-color); width: 100%; diff --git a/src/components/Extras/PreviewCard/Modal/styles.module.css b/src/components/Extras/PreviewCard/Modal/styles.module.css index b25df6b..5bbea9d 100644 --- a/src/components/Extras/PreviewCard/Modal/styles.module.css +++ b/src/components/Extras/PreviewCard/Modal/styles.module.css @@ -11,7 +11,6 @@ justify-content: center; z-index: 1000; backdrop-filter: blur(2px); - /* Force GPU layer */ transform: translateZ(0); will-change: opacity; /* Add smooth transition */ From 475f15c195e644621048df50a5e9809d008b20c9 Mon Sep 17 00:00:00 2001 From: Devon-White Date: Tue, 4 Feb 2025 14:43:45 -0500 Subject: [PATCH 09/18] Edits --- .../capabilities/_mermaid/ai-support-flow.mdx | 17 + .../_mermaid/traditional-support-flow.mdx | 21 ++ .../ai/get-started/capabilities/index.mdx | 300 +++++++++--------- .../Extras/{Tooltip => Tooltips}/index.tsx | 0 .../{Tooltip => Tooltips}/styles.module.css | 29 +- src/theme/MDXComponents/index.js | 2 +- 6 files changed, 201 insertions(+), 168 deletions(-) create mode 100644 docs/home/products/ai/get-started/capabilities/_mermaid/ai-support-flow.mdx create mode 100644 docs/home/products/ai/get-started/capabilities/_mermaid/traditional-support-flow.mdx rename src/components/Extras/{Tooltip => Tooltips}/index.tsx (100%) rename src/components/Extras/{Tooltip => Tooltips}/styles.module.css (77%) diff --git a/docs/home/products/ai/get-started/capabilities/_mermaid/ai-support-flow.mdx b/docs/home/products/ai/get-started/capabilities/_mermaid/ai-support-flow.mdx new file mode 100644 index 0000000..26c9a25 --- /dev/null +++ b/docs/home/products/ai/get-started/capabilities/_mermaid/ai-support-flow.mdx @@ -0,0 +1,17 @@ +```mermaid +sequenceDiagram + autonumber + participant C as Customer + participant A as AI Agent + + Note over A: Support Context
Prompt: General inquiries instructions + C->>A: "I need help with my account" + A->>C: "I can help with account-related questions" + C->>A: "I'm getting API errors" + Note over A: New Context
Prompt: Technical support instructions + A->>C: "Let me check your API logs..." + C->>A: "What about my invoice?" + Note over A: New Context
Prompt: Billing support instructions + A->>C: "I see your billing history..." + Note over C,A: Each topic creates a fresh agent
with specialized knowledge +``` \ No newline at end of file diff --git a/docs/home/products/ai/get-started/capabilities/_mermaid/traditional-support-flow.mdx b/docs/home/products/ai/get-started/capabilities/_mermaid/traditional-support-flow.mdx new file mode 100644 index 0000000..9f160aa --- /dev/null +++ b/docs/home/products/ai/get-started/capabilities/_mermaid/traditional-support-flow.mdx @@ -0,0 +1,21 @@ +```mermaid +sequenceDiagram + autonumber + participant C as Customer + participant G as General Support + participant T as Technical Support + participant B as Billing Team + + C->>G: "I need account help" + G->>C: "I can assist with basic account questions" + C->>G: "I'm seeing API errors" + G->>C: "Let me transfer you to technical support" + Note over G,T: Customer waits in new queue + C->>T: "I'm having API issues" + T->>C: "I can help with technical problems" + C->>T: "What about my invoice?" + T->>C: "Let me transfer you to billing" + Note over T,B: Customer waits again + C->>B: "About my invoice..." + Note over C,B: Customer repeats information +``` \ No newline at end of file diff --git a/docs/home/products/ai/get-started/capabilities/index.mdx b/docs/home/products/ai/get-started/capabilities/index.mdx index 8442254..e5c68cf 100644 --- a/docs/home/products/ai/get-started/capabilities/index.mdx +++ b/docs/home/products/ai/get-started/capabilities/index.mdx @@ -1,50 +1,56 @@ --- -title: AI Platform Capabilities +title: AI platform capabilities slug: /ai/get-started/platform-capabilities description: Learn about the capabilities of SignalWire's AI platform, including natural language processing, voice technology, business applications, advanced features, multi-channel intelligence, real-time analytics, and security. --- import TraditionalIVRFlow from './_mermaid/traditional-ivr-flow.mdx'; import AIVRFlow from './_mermaid/ai-ivr-flow.mdx'; +import TraditionalSupportFlow from './_mermaid/traditional-support-flow.mdx'; +import AISupportFlow from './_mermaid/ai-support-flow.mdx'; ## Introduction -SignalWire's AI platform represents a new paradigm in communications technology, seamlessly blending artificial intelligence with enterprise-grade telecommunications infrastructure. This platform transforms traditional communication channels into intelligent, context-aware interactions that adapt to your business needs. +SignalWire's AI platform is a unified system for building and deploying conversational AI solutions. The platform combines: -Key differentiators of our platform include: -- Natural language understanding and generation -- Real-time processing and response -- Multi-channel communication capabilities -- Enterprise-grade security and compliance -- Seamless integration with existing systems +- A single platform to orchestrate voice, video, and messaging channels +- Native integrations with leading LLM, Text-to-Speech, and Speech-to-Text providers +- Serverless functions that execute with minimal latency during live conversations +- Multi-threaded architecture for parallel, asynchronous function execution +- Global edge network with points of presence in every major region +- Enterprise-grade security, compliance, logging and analytics -## Core Capabilities +You can use SignalWire AI as a complete agent development platform or as an orchestration layer for your existing AI solutions. -### Voice Technology +--- + +## Core capabilities -SignalWire's voice technology combines two critical elements: natural speech synthesis and intelligent speech understanding. -The platform uses advanced voice synthesis through multiple TTS providers to generate natural-sounding speech that can be customized for your brand. -Voice parameters can be fine-tuned to match your needs: +### Voice technology -- Ability to select from multiple TTS providers - some of which have more parameters to fine-tune the voice. -- Fillers for function calls and general speech fillers - helps with filling in the void during pauses making the flow of conversation more natural. +SignalWire's voice technology gives you control over how your AI agents sound and understand speech: -The speech understanding system processes incoming audio in real-time, handling various accents and dialects while filtering out background noise. This enables clear communication even in challenging environments like busy offices or public spaces. +- Choose from multiple Text-to-Speech providers and fine-tune voice parameters to match your brand +- Add natural speech fillers to maintain conversation flow during processing pauses +- Process incoming audio in real-time with noise filtering and accent handling -### Conversation Intelligence +### Conversation intelligence -The foundation of SignalWire's AI capabilities lies in its ability to understand and maintain natural conversations. -Unlike traditional IVR systems that follow rigid decision trees, SignalWire AI engages in fluid, context-aware dialogues. The system maintains conversation history, -understands context, and can reference previous parts of the conversation naturally. +SignalWire AI helps you build agents that can handle complex conversations naturally. Unlike traditional IVR systems that follow rigid decision trees, your agents can: -Let's compare how a customer might try to schedule a medical appointment: +- Stay on task and maintain their assigned role +- Keep track of multiple conversation threads +- Interface with multiple backend systems while maintaining natural dialogue +- Handle unexpected topic changes without losing context + +Let's compare how a customer might schedule a medical appointment: - + - + @@ -58,59 +64,34 @@ flows like: The AI handles these context switches seamlessly while maintaining the original intent to schedule an appointment. -### Dynamic Context Switching +### Dynamic context switching -Unlike traditional systems that maintain a single conversation thread, SignalWire's AI platform enables specialized contexts for different types of interactions. Each context switch creates a fresh AI agent with its own prompt and memory space, ensuring focused expertise and strict information boundaries. +One powerful way to structure conversations is through "contexts" - specialized mini-agents with their own skills, prompts, permissions, and access to tools. Instead of transferring callers between departments like a traditional system, your AI agent switches contexts internally to handle different parts of the conversation. -Let's compare how a complex support interaction typically works: +Each context has: +- Specific prompts and instructions +- Defined permissions and access levels +- Specialized tools and integrations +- Its own conversation memory - - -**Traditional Support Flow:** -```mermaid -sequenceDiagram - autonumber - participant C as Customer - participant G as General Support - participant T as Technical Support - participant B as Billing Team - - C->>G: "I need account help" - G->>C: "I can assist with basic account questions" - C->>G: "I'm seeing API errors" - G->>C: "Let me transfer you to technical support" - Note over G,T: Customer waits in new queue - C->>T: "I'm having API issues" - T->>C: "I can help with technical problems" - C->>T: "What about my invoice?" - T->>C: "Let me transfer you to billing" - Note over T,B: Customer waits again - C->>B: "About my invoice..." - Note over C,B: Customer repeats information -``` - +This approach lets you: +- Route each task to the most appropriate specialized context +- Control what information passes between contexts +- Maintain natural conversation flow while switching roles +- Implement security boundaries for sensitive operations + +Let's compare how a complex support interaction works: + + + + + + + + + + - -**SignalWire AI Flow:** -```mermaid -sequenceDiagram - autonumber - participant C as Customer - participant A as AI Agent - - Note over A: Support Context
Prompt: General inquiries instructions - C->>A: "I need help with my account" - A->>C: "I can help with account-related questions" - C->>A: "I'm getting API errors" - Note over A: New Context
Prompt: Technical support instructions - A->>C: "Let me check your API logs..." - C->>A: "What about my invoice?" - Note over A: New Context
Prompt: Billing support instructions - A->>C: "I see your billing history..." - Note over C,A: Each topic creates a fresh agent
with specialized knowledge -``` -
-
Each context operates independently with: - Its own specialized prompt @@ -126,17 +107,24 @@ This approach ensures: For example, when a customer moves from technical support to billing questions, the AI creates a fresh agent focused solely on financial matters, leaving technical details in the previous context. This isolation maintains security while ensuring each interaction benefits from specialized expertise. -### Real-Time Analytics and Monitoring +### Real-time analytics and monitoring + +Use comprehensive analytics to understand and optimize how your AI agents perform. The platform captures data about: -Understanding how your AI interactions perform is crucial for maintaining high-quality customer experiences. SignalWire's platform provides comprehensive analytics and monitoring capabilities that go beyond basic metrics. Our system captures every aspect of AI conversations - from speech recognition quality to response timing - enabling you to: +- Conversation flow and role adherence +- Speech recognition accuracy +- Response timing and latency +- Voice quality metrics +- Integration performance + +This data flows through a robust webhook system that lets you: -- Monitor conversations as they happen -- Measure and optimize AI performance -- Ensure quality customer interactions +- Monitor conversations in real-time +- Track key performance metrics - Enable human supervision when needed -- Track system health and reliability +- Optimize agent behavior -The platform achieves this through a robust webhook integration system that transforms conversations into actionable intelligence. Let's see how this works in a customer support scenario: +Here's how this works in a customer support scenario: ```mermaid sequenceDiagram @@ -153,9 +141,9 @@ sequenceDiagram Note over W: Real-time updates:
- Speech confidence: 0.876
- Response time: 850ms
- Language: en-US ``` -#### Webhook Data and Metrics +#### Webhook data and metrics -Below is an example webhook payload showing the comprehensive data captured during an AI interaction: +Here's an example of the data you receive during an AI interaction: ```json { @@ -184,44 +172,37 @@ Below is an example webhook payload showing the comprehensive data captured duri } ``` -This data provides real-time visibility into: -- Natural conversation flow and context maintenance -- Speech recognition confidence scores -- Response timing and latency measurements -- Voice quality metrics -- Processing and decision-making speeds -- Integration response times -#### Management Capabilities +#### Management tools -The real-time data enables powerful operational control through: +The real-time data enables you to: -- **Proactive Supervision:** - - Monitor high-value conversations in real-time - - Receive instant alerts for critical situations - - Enable supervisor intervention when needed +- **Monitor Live Conversations:** + - Watch high-value interactions in real-time + - Get alerts for critical situations + - Step in when human help is needed -- **Dynamic Optimization:** - - Fine-tune AI behavior based on performance data - - Adjust routing rules for different inquiry types - - Optimize response patterns for better outcomes +- **Improve Performance:** + - Adjust AI behavior based on metrics + - Update routing rules + - Fine-tune response patterns -- **Quality Assurance:** - - Identify and address issues in real-time - - Maintain compliance with industry standards - - Track and improve service quality metrics +- **Ensure Quality:** + - Catch and fix issues quickly + - Meet compliance requirements + - Track service quality -The platform delivers this data through a robust integration system featuring JSON-formatted payloads, consistent schemas, and reliable delivery mechanisms with retry capabilities, enabling seamless integration with your existing analytics tools and monitoring systems. +The webhook system uses standard JSON formats and includes retry mechanisms for reliable delivery to your analytics tools. --- -## Integration & Architecture +## Integration & architecture -### External Service Integration +### External service integration -SignalWire AI seamlessly integrates with external services and APIs through its function system. When the AI identifies specific intents or triggers during a conversation, it can execute functions that interact with your business systems, databases, or third-party services - all while maintaining natural conversation flow. +SignalWire AI connects with your business systems through its function framework. When your agent needs to perform an action - like checking inventory or booking an appointment - it can call functions that interact with your databases and services while keeping the conversation natural. -Here's how it works in practice: +Here's an example of scheduling a meeting: ```mermaid sequenceDiagram @@ -269,35 +250,24 @@ sequenceDiagram Note over Customer,AI: You'll receive a calendar invite and a confirmation SMS ``` -The AI acts as an intelligent orchestrator, seamlessly connecting various services: +The process works like this: -1. **Intent Recognition**: The AI identifies when a user's request requires external service interaction -2. **Function Triggers**: Based on recognized intents, the AI triggers appropriate functions -3. **Service Integration**: Functions handle the complex interaction with external services -4. **Response Management**: The AI maintains context and provides natural responses while background processes complete +1. Your agent recognizes when a request needs external data or actions +2. It calls the appropriate function +3. The function handles the technical work with your systems +4. Your agent incorporates the results naturally into the conversation -For example, in a meeting scheduling scenario: -- The AI recognizes scheduling intent from natural language -- Triggers calendar availability checks -- Manages meeting creation across platforms -- All while maintaining a natural conversation flow +This lets you automate complex processes without exposing the technical details to your users. -This integration capability enables complex business processes to be handled through natural conversation, without exposing the underlying technical complexity to the user. +### SignalWire's RAG stack integration - Datasphere -### SignalWire's RAG Stack Integration - Datasphere +[Datasphere](/rest/signalwire-rest/endpoints/datasphere/documents) is SignalWire's built-in system for giving your AI agents access to your organization's knowledge. It helps your agents: -SignalWire's AI platform becomes even more powerful when combined with [Datasphere](/rest/signalwire-rest/endpoints/datasphere/documents), our built-in Retrieval-Augmented Generation (RAG) stack. This integration enables AI agents to access and leverage your organization's knowledge base in real-time during conversations. +- Find and use relevant information during conversations +- Keep responses accurate and up-to-date +- Back answers with your official documentation -Here's how Datasphere enhances AI interactions: - -- **Dynamic Knowledge Access**: AI agents can pull relevant information from your documented knowledge base during live conversations, providing accurate and contextual responses based on your organization's specific content. - -- **Intelligent Document Processing**: - - Automatically processes and vectorizes documents using various chunking strategies - - Maintains semantic understanding of content - - Enables natural language queries across your knowledge base - -For example, in a healthcare policy inquiry scenario: +Here's how it works in practice: ```mermaid sequenceDiagram @@ -322,50 +292,64 @@ sequenceDiagram AI->>Customer: Details prenatal visit coverage within maternity benefits ``` -The combination provides several key advantages: +Key benefits include: -- **Always Up-to-Date Information**: As your documentation and knowledge base evolve, Datasphere automatically indexes and makes new information available to AI agents. +- **Always Current:** Your agents automatically use the latest information as you update your documentation -- **Context-Aware Responses**: - - Combines conversation history with knowledge base queries - - Provides responses that reference specific documentation - - Maintains conversation flow while incorporating detailed information +- **Smart Information Use:** + - Combines conversation context with document searches + - References specific sources + - Maintains natural dialogue while using detailed info -- **Flexible Knowledge Organization**: - - Tag-based organization for efficient information retrieval - - Multiple chunking strategies for optimal information storage - - Semantic search capabilities for natural language queries +- **Flexible Organization:** + - Tag documents for easy finding + - Choose how to break up information + - Search using natural language -- **Enhanced Accuracy**: - - Reduces hallucination by grounding responses in your actual documentation - - Provides verifiable sources for information - - Maintains consistency across all AI interactions +- **High Accuracy:** + - Grounds responses in your actual documents + - Provides sources for information + - Keeps responses consistent -This powerful combination ensures that your AI agents not only engage in natural conversations but also provide accurate, -documented information specific to your organization's needs. To learn more about using Datasphere, check out our -[Use Datasphere with curl](/rest/signalwire-rest/guides/datasphere/curl-usage) guide. +To learn more about using Datasphere, see our [Use Datasphere with curl](/rest/signalwire-rest/guides/datasphere/curl-usage) guide. ---- -## Real-World Applications +--- -### Intelligent Customer Service +## Real-world applications -SignalWire AI transforms customer service operations by providing consistent, 24/7 support capability. The system can: +### Customer service -- **Handle Complex Inquiries:** Unlike simple chatbots, the AI can manage sophisticated conversations, understanding context and maintaining thread across multiple questions. For example, a customer asking about product features, then pricing, then compatibility will experience a coherent conversation where each answer builds on previous context. +SignalWire AI helps you build customer service agents that can: -- **Manage Intentions:** You can define intentions for your AI in your prompt and the AI will intelligently respond to those intentions. For example, you can define an intention for the AI to transfer to a human when the customer requests a human. +- Handle complex questions that need multiple steps +- Remember context across topic changes +- Use your knowledge base to give accurate answers +- Connect to your systems to solve problems +- Transfer to humans when needed -### Process Automation +### Process automation -The platform excels at automating routine business processes while maintaining a natural interaction experience. Take appointment scheduling as an example: +The platform excels at automating multi-step processes while keeping interactions natural. For example, an appointment scheduling agent can: -The AI doesn't just book appointments - it manages the entire scheduling ecosystem. It understands complex requests ("I need an appointment next week, preferably Tuesday afternoon but Wednesday morning would work too"), checks availability, sends confirmations, and handles changes. It can even proactively manage schedule conflicts and suggest alternatives. +- Understand complex time and date requests +- Check multiple calendar systems +- Handle schedule conflicts +- Send confirmations +- Make changes when needed +All while maintaining a natural conversation flow. --- -## Security and Compliance +## Security and compliance + +SignalWire's AI platform includes built-in security features: + +- Encrypted communications +- PII detection and protection +- Compliance tools for HIPAA and GDPR +- Detailed audit logging +- Access controls and permissions -SignalWire's AI platform is built with security and compliance at its core. All communications are encrypted, and the system includes sophisticated PII (Personally Identifiable Information) detection and protection mechanisms. This allows businesses to automate sensitive communications while maintaining compliance with regulations like HIPAA and GDPR. +These features let you automate sensitive communications while maintaining regulatory compliance. diff --git a/src/components/Extras/Tooltip/index.tsx b/src/components/Extras/Tooltips/index.tsx similarity index 100% rename from src/components/Extras/Tooltip/index.tsx rename to src/components/Extras/Tooltips/index.tsx diff --git a/src/components/Extras/Tooltip/styles.module.css b/src/components/Extras/Tooltips/styles.module.css similarity index 77% rename from src/components/Extras/Tooltip/styles.module.css rename to src/components/Extras/Tooltips/styles.module.css index ff938b4..23e5b0c 100644 --- a/src/components/Extras/Tooltip/styles.module.css +++ b/src/components/Extras/Tooltips/styles.module.css @@ -2,7 +2,12 @@ position: relative; display: inline-block; cursor: help; - border-bottom: 1px dotted var(--ifm-color-primary); + font-weight: 600; + text-decoration: underline solid; + text-decoration-thickness: 0.05rem; + text-underline-offset: 4px; + text-decoration-color: var(--sw-link-decoration-color); + transition: 100ms; } .tooltip { @@ -30,6 +35,7 @@ cursor: text; backdrop-filter: blur(8px); line-height: 1.5; + font-weight: normal; } .tooltip::after { @@ -79,23 +85,28 @@ .tooltipMobile { width: auto; max-width: calc(100vw - 32px); + min-width: min(250px, calc(100vw - 48px)); font-size: 13px; padding: 8px 12px; - bottom: auto; - top: 125%; + top: auto; + bottom: 125%; + left: 50%; transform: translateX(-50%) translateY(-5px); + /* Add safety margins from screen edges */ + margin-left: 16px; + margin-right: 16px; } .tooltipMobile::before { - top: auto; - bottom: 100%; - border-color: transparent transparent var(--sw-card-border-color) transparent; + bottom: auto; + top: 100%; + border-color: var(--sw-card-border-color) transparent transparent transparent; } .tooltipMobile::after { - top: auto; - bottom: 100%; - border-color: transparent transparent var(--ifm-background-surface-color) transparent; + bottom: auto; + top: 100%; + border-color: var(--ifm-background-surface-color) transparent transparent transparent; } .tooltipMobile.visible { diff --git a/src/theme/MDXComponents/index.js b/src/theme/MDXComponents/index.js index 7b03f9b..9ad64bd 100644 --- a/src/theme/MDXComponents/index.js +++ b/src/theme/MDXComponents/index.js @@ -21,7 +21,7 @@ import CodeGroup from "../../components/Extras/Code"; import { ExpandableItemCoverIcon } from "../../components/Extras/Expandable/ExpandableItemCoverIcon"; import Frame from "../../components/Extras/Frame/Frame"; import Slideshow from "../../components/Extras/Slideshow/Slideshow"; -import Tooltips from "../../components/Extras/Tooltip"; +import Tooltips from "../../components/Extras/Tooltips"; import { PreviewCardGroup, PreviewCard } from "../../components/Extras/PreviewCard"; From cd468f66f44cfb4426bca710d6985d5ee7e4dc01 Mon Sep 17 00:00:00 2001 From: Devon-White Date: Tue, 4 Feb 2025 15:07:25 -0500 Subject: [PATCH 10/18] Style changes --- .../Extras/PreviewCard/Modal/index.tsx | 22 +++++++------------ .../PreviewCard/Modal/styles.module.css | 9 ++++---- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/src/components/Extras/PreviewCard/Modal/index.tsx b/src/components/Extras/PreviewCard/Modal/index.tsx index 09eb4e9..9a2e838 100644 --- a/src/components/Extras/PreviewCard/Modal/index.tsx +++ b/src/components/Extras/PreviewCard/Modal/index.tsx @@ -35,9 +35,6 @@ const ModalContent: React.FC = ({ isOpen, onClose, children }) => { const overlayElement = overlayRef.current; if (!isOpen && overlayElement?.style.opacity === '0') return null; - // Check if the content is a Mermaid diagram - const isMermaid = isValidElement(children) && children.type === Mermaid; - const modalContent = (
= ({ isOpen, onClose, children }) => { aria-hidden={!isOpen} role="dialog" aria-modal="true" + style={{ cursor: 'zoom-out' }} >
e.stopPropagation()} > - -
- {isMermaid ? ( -
- {children} -
- ) : children} + {children}
diff --git a/src/components/Extras/PreviewCard/Modal/styles.module.css b/src/components/Extras/PreviewCard/Modal/styles.module.css index 5bbea9d..bc0ac08 100644 --- a/src/components/Extras/PreviewCard/Modal/styles.module.css +++ b/src/components/Extras/PreviewCard/Modal/styles.module.css @@ -31,13 +31,12 @@ background: var(--ifm-background-surface-color); border: 1px solid var(--sw-card-border-color); border-radius: var(--ifm-card-border-radius); - /* Force GPU layer and reduce repaints */ transform: translateZ(0) scale(1); will-change: transform; backface-visibility: hidden; perspective: 1000px; - /* Add smooth transition */ transition: transform 0.2s ease-out; + overflow: hidden; } .modalOverlay[aria-hidden="true"] .modalContent { @@ -48,7 +47,6 @@ flex: 1; width: 100%; height: 100%; - padding-top: 4rem; /* Space for close button */ overflow: auto; display: flex; flex-direction: column; @@ -57,13 +55,16 @@ transform: translateZ(0); will-change: transform; scroll-behavior: auto; + cursor: zoom-out; + padding: 2rem; } -/* Add specific handling for Mermaid diagrams */ .modalContentWrapper > div { width: 100%; + min-height: min-content; display: flex; justify-content: center; + margin: auto 0; } /* Image styles in modal */ From ed5fbd6da295ae01ee2f71c3a3b27cf4ce8c3b37 Mon Sep 17 00:00:00 2001 From: Devon <86693904+Devon-White@users.noreply.github.com> Date: Tue, 4 Feb 2025 16:12:12 -0500 Subject: [PATCH 11/18] Update docs/home/products/ai/get-started/capabilities/index.mdx Co-authored-by: August <112662403+hey-august@users.noreply.github.com> --- docs/home/products/ai/get-started/capabilities/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/home/products/ai/get-started/capabilities/index.mdx b/docs/home/products/ai/get-started/capabilities/index.mdx index e5c68cf..607e37a 100644 --- a/docs/home/products/ai/get-started/capabilities/index.mdx +++ b/docs/home/products/ai/get-started/capabilities/index.mdx @@ -31,7 +31,7 @@ You can use SignalWire AI as a complete agent development platform or as an orch SignalWire's voice technology gives you control over how your AI agents sound and understand speech: - Choose from multiple Text-to-Speech providers and fine-tune voice parameters to match your brand -- Add natural speech fillers to maintain conversation flow during processing pauses +- Add natural speech fillers to maintain conversation flow during processing pauses - Process incoming audio in real-time with noise filtering and accent handling ### Conversation intelligence From 15d8c2e9c533551e692e5c8cdde869bc7c2843f6 Mon Sep 17 00:00:00 2001 From: Devon <86693904+Devon-White@users.noreply.github.com> Date: Tue, 4 Feb 2025 16:12:50 -0500 Subject: [PATCH 12/18] Update docs/home/products/ai/get-started/capabilities/index.mdx Co-authored-by: August <112662403+hey-august@users.noreply.github.com> --- docs/home/products/ai/get-started/capabilities/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/home/products/ai/get-started/capabilities/index.mdx b/docs/home/products/ai/get-started/capabilities/index.mdx index 607e37a..8f3fa31 100644 --- a/docs/home/products/ai/get-started/capabilities/index.mdx +++ b/docs/home/products/ai/get-started/capabilities/index.mdx @@ -43,7 +43,7 @@ SignalWire AI helps you build agents that can handle complex conversations natur - Interface with multiple backend systems while maintaining natural dialogue - Handle unexpected topic changes without losing context -Let's compare how a customer might schedule a medical appointment: +The below diagrams illustrate how a customer might schedule a medical appointment using a conventional IVR ("interactive voice response", left), compared to using a SignalWire AI Agent (right). From d64ff5441369956e4c35c79c944ed4daeb094edf Mon Sep 17 00:00:00 2001 From: Devon <86693904+Devon-White@users.noreply.github.com> Date: Tue, 4 Feb 2025 16:13:32 -0500 Subject: [PATCH 13/18] Update docs/home/products/ai/get-started/capabilities/index.mdx Co-authored-by: August <112662403+hey-august@users.noreply.github.com> --- docs/home/products/ai/get-started/capabilities/index.mdx | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/docs/home/products/ai/get-started/capabilities/index.mdx b/docs/home/products/ai/get-started/capabilities/index.mdx index 8f3fa31..422a835 100644 --- a/docs/home/products/ai/get-started/capabilities/index.mdx +++ b/docs/home/products/ai/get-started/capabilities/index.mdx @@ -261,11 +261,8 @@ This lets you automate complex processes without exposing the technical details ### SignalWire's RAG stack integration - Datasphere -[Datasphere](/rest/signalwire-rest/endpoints/datasphere/documents) is SignalWire's built-in system for giving your AI agents access to your organization's knowledge. It helps your agents: - -- Find and use relevant information during conversations -- Keep responses accurate and up-to-date -- Back answers with your official documentation +[Datasphere](/rest/signalwire-rest/endpoints/datasphere/documents) is SignalWire's built-in system for giving your AI agents access to your organization's knowledge. +Datasphere empowers your agents to find and use relevant and approved information during conversations, keeping responses accurate and up-to-date. Here's how it works in practice: From cb1a389ed6ca8009611789ab6854bb51ffdfe1b3 Mon Sep 17 00:00:00 2001 From: Devon-White Date: Tue, 4 Feb 2025 16:37:23 -0500 Subject: [PATCH 14/18] converted most bullet points to paragraphs --- .../ai/get-started/capabilities/index.mdx | 199 ++++++------------ 1 file changed, 63 insertions(+), 136 deletions(-) diff --git a/docs/home/products/ai/get-started/capabilities/index.mdx b/docs/home/products/ai/get-started/capabilities/index.mdx index e5c68cf..9efbed9 100644 --- a/docs/home/products/ai/get-started/capabilities/index.mdx +++ b/docs/home/products/ai/get-started/capabilities/index.mdx @@ -11,14 +11,13 @@ import AISupportFlow from './_mermaid/ai-support-flow.mdx'; ## Introduction -SignalWire's AI platform is a unified system for building and deploying conversational AI solutions. The platform combines: - -- A single platform to orchestrate voice, video, and messaging channels -- Native integrations with leading LLM, Text-to-Speech, and Speech-to-Text providers -- Serverless functions that execute with minimal latency during live conversations -- Multi-threaded architecture for parallel, asynchronous function execution -- Global edge network with points of presence in every major region -- Enterprise-grade security, compliance, logging and analytics +SignalWire's AI platform is a unified system for building and deploying conversational AI solutions. +The platform delivers a comprehensive suite of capabilities that work together seamlessly. +At its core, it provides a single platform for orchestrating voice, video, and messaging channels, complemented by native integrations +with leading LLM, Text-to-Speech, and Speech-to-Text providers. The system is built on serverless functions that execute with minimal +latency during live conversations, supported by a multi-threaded architecture for parallel, asynchronous function execution. +With a global edge network featuring points of presence in every major region and enterprise-grade security, compliance, logging and analytics, +the platform ensures reliable and secure operations worldwide. You can use SignalWire AI as a complete agent development platform or as an orchestration layer for your existing AI solutions. @@ -28,20 +27,18 @@ You can use SignalWire AI as a complete agent development platform or as an orch ### Voice technology -SignalWire's voice technology gives you control over how your AI agents sound and understand speech: - -- Choose from multiple Text-to-Speech providers and fine-tune voice parameters to match your brand -- Add natural speech fillers to maintain conversation flow during processing pauses -- Process incoming audio in real-time with noise filtering and accent handling +SignalWire's voice technology provides comprehensive control over how your AI agents sound and understand speech. +The platform enables you to select from multiple Text-to-Speech providers and fine-tune voice parameters to perfectly match your brand identity. +Natural speech fillers +maintain smooth conversation flow during processing pauses, while real-time audio processing handles noise filtering and accent variations +with precision. ### Conversation intelligence -SignalWire AI helps you build agents that can handle complex conversations naturally. Unlike traditional IVR systems that follow rigid decision trees, your agents can: - -- Stay on task and maintain their assigned role -- Keep track of multiple conversation threads -- Interface with multiple backend systems while maintaining natural dialogue -- Handle unexpected topic changes without losing context +SignalWire AI revolutionizes how agents handle complex conversations. Unlike traditional IVR systems that follow rigid +decision trees, our AI agents operate with natural fluidity. They excel at maintaining their assigned role while juggling multiple +conversation threads, seamlessly interfacing with backend systems without breaking natural dialogue flow. +Perhaps most importantly, they can handle unexpected topic changes without losing context, ensuring a more human-like interaction. Let's compare how a customer might schedule a medical appointment: @@ -68,61 +65,24 @@ The AI handles these context switches seamlessly while maintaining the original One powerful way to structure conversations is through "contexts" - specialized mini-agents with their own skills, prompts, permissions, and access to tools. Instead of transferring callers between departments like a traditional system, your AI agent switches contexts internally to handle different parts of the conversation. -Each context has: -- Specific prompts and instructions -- Defined permissions and access levels -- Specialized tools and integrations -- Its own conversation memory - -This approach lets you: -- Route each task to the most appropriate specialized context -- Control what information passes between contexts -- Maintain natural conversation flow while switching roles -- Implement security boundaries for sensitive operations - -Let's compare how a complex support interaction works: - - - - - - - - - - +Each context operates as an independent entity with its own specialized prompt, fresh conversation memory, +and focused expertise in areas such as technical support, billing, or sales. This independence is maintained through strict information +boundaries that ensure clear separation between different roles. - -Each context operates independently with: -- Its own specialized prompt -- Fresh conversation memory -- Focused expertise (technical, billing, sales) -- Strict information boundaries - -This approach ensures: -- Specialized knowledge stays within appropriate contexts -- No information bleeds between different roles -- Clear compliance and security boundaries -- Purpose-built responses for each domain +This sophisticated approach enables several key benefits. The system can intelligently route each task to the most appropriate specialized context +while controlling information flow between contexts. It maintains natural conversation flow during role transitions and implements +robust security boundaries for sensitive operations. The result is a system that delivers specialized knowledge within appropriate contexts, +prevents information bleed between different roles, and maintains clear compliance and security boundaries while delivering purpose-built +responses for each domain. For example, when a customer moves from technical support to billing questions, the AI creates a fresh agent focused solely on financial matters, leaving technical details in the previous context. This isolation maintains security while ensuring each interaction benefits from specialized expertise. ### Real-time analytics and monitoring -Use comprehensive analytics to understand and optimize how your AI agents perform. The platform captures data about: - -- Conversation flow and role adherence -- Speech recognition accuracy -- Response timing and latency -- Voice quality metrics -- Integration performance - -This data flows through a robust webhook system that lets you: - -- Monitor conversations in real-time -- Track key performance metrics -- Enable human supervision when needed -- Optimize agent behavior +The platform provides comprehensive analytics to understand and optimize your AI agents' performance. +It continuously captures vital metrics including conversation flow and role adherence, speech recognition accuracy, response timing and latency, +voice quality metrics, and integration performance. This wealth of data flows through a robust webhook system that enables +real-time conversation monitoring, performance metric tracking, human supervision when needed, and ongoing agent behavior optimization. Here's how this works in a customer support scenario: @@ -175,24 +135,17 @@ Here's an example of the data you receive during an AI interaction: #### Management tools -The real-time data enables you to: +The real-time data enables powerful management capabilities across three key areas: -- **Monitor Live Conversations:** - - Watch high-value interactions in real-time - - Get alerts for critical situations - - Step in when human help is needed +**Live Monitoring and Supervision** +The platform provides comprehensive real-time monitoring of high-value interactions, with intelligent alerting for critical situations and seamless intervention capabilities when human assistance is required. -- **Improve Performance:** - - Adjust AI behavior based on metrics - - Update routing rules - - Fine-tune response patterns +**Performance Optimization** +Continuous performance improvement is achieved through AI behavior adjustments based on metrics, dynamic routing rule updates, and refined response pattern optimization. -- **Ensure Quality:** - - Catch and fix issues quickly - - Meet compliance requirements - - Track service quality +**Quality Assurance** +The system maintains high service standards by quickly identifying and resolving issues, ensuring compliance requirements are met, and maintaining consistent service quality metrics. -The webhook system uses standard JSON formats and includes retry mechanisms for reliable delivery to your analytics tools. --- @@ -261,38 +214,9 @@ This lets you automate complex processes without exposing the technical details ### SignalWire's RAG stack integration - Datasphere -[Datasphere](/rest/signalwire-rest/endpoints/datasphere/documents) is SignalWire's built-in system for giving your AI agents access to your organization's knowledge. It helps your agents: - -- Find and use relevant information during conversations -- Keep responses accurate and up-to-date -- Back answers with your official documentation +[Datasphere](/rest/signalwire-rest/endpoints/datasphere/documents) serves as SignalWire's built-in knowledge integration system, providing AI agents with seamless access to your organization's information. The system excels at finding and utilizing relevant information during conversations, ensuring responses remain accurate and current by drawing from your latest documentation. Every answer is backed by official documentation, providing confidence and reliability in every interaction. -Here's how it works in practice: - -```mermaid -sequenceDiagram - autonumber - participant Customer - participant AI - participant Datasphere - participant KB as Knowledge Base - - Customer->>AI: "What's covered under my maternity benefits?" - AI->>Datasphere: Semantic search for maternity coverage - Datasphere->>KB: Query vectorized policy documents - KB-->>Datasphere: Return relevant policy sections - Datasphere-->>AI: Contextualized coverage details - AI->>Customer: Explains specific maternity benefits and coverage limits - Customer->>AI: "And what about prenatal care visits?" - Note over AI,Datasphere: Maintains context of maternity discussion - AI->>Datasphere: Search for prenatal care coverage - Datasphere->>KB: Query with maternity context - KB-->>Datasphere: Return relevant prenatal care policies - Datasphere-->>AI: Contextualized prenatal care info - AI->>Customer: Details prenatal visit coverage within maternity benefits -``` - -Key benefits include: +The system offers several key advantages: - **Always Current:** Your agents automatically use the latest information as you update your documentation @@ -320,36 +244,39 @@ To learn more about using Datasphere, see our [Use Datasphere with curl](/rest/s ### Customer service -SignalWire AI helps you build customer service agents that can: - -- Handle complex questions that need multiple steps -- Remember context across topic changes -- Use your knowledge base to give accurate answers -- Connect to your systems to solve problems -- Transfer to humans when needed +SignalWire AI transforms the customer service experience by creating intelligent agents that deliver comprehensive support capabilities. These agents are designed to handle complex, multi-step inquiries while maintaining contextual awareness throughout the conversation. They seamlessly integrate with your knowledge base to provide accurate, consistent answers and can connect to your backend systems for real-time problem resolution. When situations require human expertise, the system smoothly facilitates transfers to human agents, ensuring no context is lost in the process. ### Process automation -The platform excels at automating multi-step processes while keeping interactions natural. For example, an appointment scheduling agent can: +The platform excels at automating multi-step processes while maintaining natural, fluid interactions. In appointment scheduling scenarios, for example, the AI demonstrates sophisticated capabilities in understanding complex time and date requests, managing multiple calendar systems simultaneously, and handling schedule conflicts with grace. The system proactively sends confirmations and can accommodate changes when needed, all while maintaining a natural conversation flow that feels effortless to the user. -- Understand complex time and date requests -- Check multiple calendar systems -- Handle schedule conflicts -- Send confirmations -- Make changes when needed +### SignalWire's RAG stack integration - Datasphere -All while maintaining a natural conversation flow. +[Datasphere](/rest/signalwire-rest/endpoints/datasphere/documents) serves as SignalWire's built-in knowledge integration system, providing AI agents with seamless access to your organization's information. The system excels at finding and utilizing relevant information during conversations, ensuring responses remain accurate and current by drawing from your latest documentation. Every answer is backed by official documentation, providing confidence and reliability in every interaction. ---- +The system offers several key advantages: -## Security and compliance +- **Always Current:** Your agents automatically use the latest information as you update your documentation + +- **Smart Information Use:** + - Combines conversation context with document searches + - References specific sources + - Maintains natural dialogue while using detailed info + +- **Flexible Organization:** + - Tag documents for easy finding + - Choose how to break up information + - Search using natural language -SignalWire's AI platform includes built-in security features: +- **High Accuracy:** + - Grounds responses in your actual documents + - Provides sources for information + - Keeps responses consistent -- Encrypted communications -- PII detection and protection -- Compliance tools for HIPAA and GDPR -- Detailed audit logging -- Access controls and permissions +To learn more about using Datasphere, see our [Use Datasphere with curl](/rest/signalwire-rest/guides/datasphere/curl-usage) guide. + +--- + +## Security and compliance -These features let you automate sensitive communications while maintaining regulatory compliance. +SignalWire's AI platform incorporates a comprehensive security framework that includes encrypted communications, sophisticated PII detection and protection mechanisms, and dedicated compliance tools for HIPAA and GDPR requirements. The system maintains detailed audit logging capabilities and granular access controls and permissions, enabling you to automate sensitive communications while maintaining strict regulatory compliance. From 8540a83a7ad75a3cbf7480f470ddb19705fd902e Mon Sep 17 00:00:00 2001 From: Devon-White Date: Wed, 5 Feb 2025 07:33:22 -0500 Subject: [PATCH 15/18] removed redudant Datasphere section - added missing Mermaid diagram --- .../ai/get-started/capabilities/index.mdx | 45 ++++++++----------- 1 file changed, 18 insertions(+), 27 deletions(-) diff --git a/docs/home/products/ai/get-started/capabilities/index.mdx b/docs/home/products/ai/get-started/capabilities/index.mdx index a25bf4c..e19fa1d 100644 --- a/docs/home/products/ai/get-started/capabilities/index.mdx +++ b/docs/home/products/ai/get-started/capabilities/index.mdx @@ -63,7 +63,9 @@ The AI handles these context switches seamlessly while maintaining the original ### Dynamic context switching -One powerful way to structure conversations is through "contexts" - specialized mini-agents with their own skills, prompts, permissions, and access to tools. Instead of transferring callers between departments like a traditional system, your AI agent switches contexts internally to handle different parts of the conversation. +One powerful way to structure conversations is through +contexts. Instead of transferring callers between departments like a traditional system, your AI agent can switch context internally +to handle different topics & requests within the same conversation. Each context operates as an independent entity with its own specialized prompt, fresh conversation memory, and focused expertise in areas such as technical support, billing, or sales. This independence is maintained through strict information @@ -75,7 +77,21 @@ robust security boundaries for sensitive operations. The result is a system that prevents information bleed between different roles, and maintains clear compliance and security boundaries while delivering purpose-built responses for each domain. -For example, when a customer moves from technical support to billing questions, the AI creates a fresh agent focused solely on financial matters, leaving technical details in the previous context. This isolation maintains security while ensuring each interaction benefits from specialized expertise. +For example, when a customer moves from technical support to billing questions, the AI swaps context to focus solely on financial +matters, leaving technical details in the previous context. This isolation maintains security while ensuring each +interaction benefits from specialized expertise. + +Below is an example of a context switch in a customer support scenario for both a traditional IVR and a SignalWire AI Agent. + + + + + + + + + + ### Real-time analytics and monitoring @@ -277,31 +293,6 @@ SignalWire AI transforms the customer service experience by creating intelligent The platform excels at automating multi-step processes while maintaining natural, fluid interactions. In appointment scheduling scenarios, for example, the AI demonstrates sophisticated capabilities in understanding complex time and date requests, managing multiple calendar systems simultaneously, and handling schedule conflicts with grace. The system proactively sends confirmations and can accommodate changes when needed, all while maintaining a natural conversation flow that feels effortless to the user. -### SignalWire's RAG stack integration - Datasphere - -[Datasphere](/rest/signalwire-rest/endpoints/datasphere/documents) serves as SignalWire's built-in knowledge integration system, providing AI agents with seamless access to your organization's information. The system excels at finding and utilizing relevant information during conversations, ensuring responses remain accurate and current by drawing from your latest documentation. Every answer is backed by official documentation, providing confidence and reliability in every interaction. - -The system offers several key advantages: - -- **Always Current:** Your agents automatically use the latest information as you update your documentation - -- **Smart Information Use:** - - Combines conversation context with document searches - - References specific sources - - Maintains natural dialogue while using detailed info - -- **Flexible Organization:** - - Tag documents for easy finding - - Choose how to break up information - - Search using natural language - -- **High Accuracy:** - - Grounds responses in your actual documents - - Provides sources for information - - Keeps responses consistent - -To learn more about using Datasphere, see our [Use Datasphere with curl](/rest/signalwire-rest/guides/datasphere/curl-usage) guide. - --- ## Security and compliance From f640f1d0225cc5f336318365221e7130037f50e9 Mon Sep 17 00:00:00 2001 From: Devon-White Date: Wed, 5 Feb 2025 08:33:16 -0500 Subject: [PATCH 16/18] accessibility edits --- .../Extras/PreviewCard/Modal/index.tsx | 48 +++++++++++++++---- .../PreviewCard/Modal/styles.module.css | 44 +++++++++++------ 2 files changed, 68 insertions(+), 24 deletions(-) diff --git a/src/components/Extras/PreviewCard/Modal/index.tsx b/src/components/Extras/PreviewCard/Modal/index.tsx index 9a2e838..4e3df8c 100644 --- a/src/components/Extras/PreviewCard/Modal/index.tsx +++ b/src/components/Extras/PreviewCard/Modal/index.tsx @@ -1,7 +1,8 @@ -import React, { ReactNode, useEffect, isValidElement, useRef } from 'react'; +import React, { ReactNode, useEffect, isValidElement, useRef, useState } from 'react'; import { createPortal } from 'react-dom'; import Mermaid from '@theme/Mermaid'; import BrowserOnly from '@docusaurus/BrowserOnly'; +import clsx from 'clsx'; import styles from './styles.module.css'; export interface ModalProps { @@ -12,9 +13,24 @@ export interface ModalProps { const ModalContent: React.FC = ({ isOpen, onClose, children }) => { const overlayRef = useRef(null); + const contentRef = useRef(null); + const [isRendered, setIsRendered] = useState(false); + const [isAnimating, setIsAnimating] = useState(false); useEffect(() => { + let animationFrame: number; + let timeout: NodeJS.Timeout; + if (isOpen) { + setIsRendered(true); + + timeout = setTimeout(() => { + animationFrame = requestAnimationFrame(() => { + setIsAnimating(true); + contentRef.current?.focus(); + }); + }, 10); + document.body.style.overflow = 'hidden'; const handleEscape = (e: KeyboardEvent) => { @@ -27,36 +43,50 @@ const ModalContent: React.FC = ({ isOpen, onClose, children }) => { return () => { document.body.style.overflow = 'unset'; document.removeEventListener('keydown', handleEscape); + cancelAnimationFrame(animationFrame); + clearTimeout(timeout); }; + } else { + setIsAnimating(false); + timeout = setTimeout(() => { + setIsRendered(false); + }, 200); + return () => clearTimeout(timeout); } }, [isOpen, onClose]); - // Don't render anything if modal is not open and animation has finished - const overlayElement = overlayRef.current; - if (!isOpen && overlayElement?.style.opacity === '0') return null; + if (!isRendered) return null; const modalContent = (
e.stopPropagation()} + tabIndex={-1} >
+ {children}
diff --git a/src/components/Extras/PreviewCard/Modal/styles.module.css b/src/components/Extras/PreviewCard/Modal/styles.module.css index bc0ac08..302e155 100644 --- a/src/components/Extras/PreviewCard/Modal/styles.module.css +++ b/src/components/Extras/PreviewCard/Modal/styles.module.css @@ -5,23 +5,35 @@ left: 0; right: 0; bottom: 0; - background-color: rgba(0, 0, 0, 0.75); + background-color: rgba(0, 0, 0, 0); display: flex; align-items: center; justify-content: center; z-index: 1000; - backdrop-filter: blur(2px); + backdrop-filter: blur(0); transform: translateZ(0); - will-change: opacity; - /* Add smooth transition */ - opacity: 1; - transition: opacity 0.2s ease-out; + will-change: opacity, backdrop-filter; + transition: background-color 0.2s ease-out, backdrop-filter 0.2s ease-out; + pointer-events: none; } -/* Add enter/exit animations */ -.modalOverlay[aria-hidden="true"] { - opacity: 0; - pointer-events: none; +/* Utility class for screen reader only content */ +.visuallyHidden { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + +.modalVisible { + background-color: rgba(0, 0, 0, 0.75); + backdrop-filter: blur(2px); + pointer-events: all; } .modalContent { @@ -31,16 +43,18 @@ background: var(--ifm-background-surface-color); border: 1px solid var(--sw-card-border-color); border-radius: var(--ifm-card-border-radius); - transform: translateZ(0) scale(1); - will-change: transform; + transform: translateZ(0) scale(0.95); + opacity: 0; + will-change: transform, opacity; backface-visibility: hidden; perspective: 1000px; - transition: transform 0.2s ease-out; + transition: transform 0.2s ease-out, opacity 0.2s ease-out; overflow: hidden; } -.modalOverlay[aria-hidden="true"] .modalContent { - transform: translateZ(0) scale(0.95); +.modalContentVisible { + transform: translateZ(0) scale(1); + opacity: 1; } .modalContentWrapper { From e33a20af27f9f7a252d089971f5954c691899f86 Mon Sep 17 00:00:00 2001 From: Devon-White Date: Wed, 5 Feb 2025 08:34:42 -0500 Subject: [PATCH 17/18] edits --- src/components/Extras/PreviewCard/Modal/styles.module.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/Extras/PreviewCard/Modal/styles.module.css b/src/components/Extras/PreviewCard/Modal/styles.module.css index 302e155..554c477 100644 --- a/src/components/Extras/PreviewCard/Modal/styles.module.css +++ b/src/components/Extras/PreviewCard/Modal/styles.module.css @@ -61,7 +61,8 @@ flex: 1; width: 100%; height: 100%; - overflow: auto; + overflow-y: auto; + overflow-x: hidden; display: flex; flex-direction: column; -webkit-overflow-scrolling: touch; From adcf2d548d407578b1adde3c60f43d9daf140436 Mon Sep 17 00:00:00 2001 From: Devon-White Date: Thu, 6 Feb 2025 08:06:44 -0500 Subject: [PATCH 18/18] remove senetence --- docs/home/products/ai/get-started/capabilities/index.mdx | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/home/products/ai/get-started/capabilities/index.mdx b/docs/home/products/ai/get-started/capabilities/index.mdx index e19fa1d..6182de2 100644 --- a/docs/home/products/ai/get-started/capabilities/index.mdx +++ b/docs/home/products/ai/get-started/capabilities/index.mdx @@ -19,8 +19,6 @@ latency during live conversations, supported by a multi-threaded architecture fo With a global edge network featuring points of presence in every major region and enterprise-grade security, compliance, logging and analytics, the platform ensures reliable and secure operations worldwide. -You can use SignalWire AI as a complete agent development platform or as an orchestration layer for your existing AI solutions. - --- ## Core capabilities