Skip to content

technovasuk/talkloop

Repository files navigation

TalkLoop - SIP Audio Calling App

A WhatsApp-themed Flutter app for SIP audio calling with power dialer functionality, built with Firebase and Siprix VoIP SDK.

Features

Core Functionality

  • SIP Audio Calls: Make and receive SIP calls with mute, hold, resume, and DTMF support
  • Firebase Authentication: Google and Microsoft sign-in
  • Power Dialer: Automated outbound calling with pacing and lead management
  • Call Notes: Take notes during calls with categorization
  • After-Call Wrap: Record outcomes and schedule recalls
  • Analytics & Crashlytics: Comprehensive event tracking and error reporting

Technical Features

  • Architecture: MVVM + Riverpod + BLoC for call state management
  • Security: TLS/SRTP, secure storage for SIP credentials
  • Platform Support: Android and iOS with native call handling
  • CI/CD: GitHub Actions with Firebase App Distribution

Project Structure

lib/
├── core/
│   ├── analytics/          # Analytics and Crashlytics
│   ├── config/            # Environment configuration
│   ├── routing/           # App navigation
│   └── theme/             # WhatsApp-like theming
├── features/
│   ├── auth/              # Firebase authentication
│   ├── call/              # SIP calling functionality
│   ├── dialer/            # Power dialer features
│   ├── notes/             # Call notes and wrap-up
│   ├── notifications/     # Push notifications
│   └── settings/          # App settings and testing
└── shared/                # Shared utilities and widgets

Getting Started

Prerequisites

  • Flutter SDK (stable channel)
  • Firebase project with Authentication, Analytics, and Crashlytics enabled
  • Siprix VoIP SDK license

Setup

  1. Clone the repository

    git clone <repository-url>
    cd talkloop
  2. Install dependencies

    flutter pub get
  3. Configure Firebase

    flutterfire configure
  4. Set environment variables

    # For development - Set your SIPRIX license key
    export SIPRIX_LICENSE="LicensedTo[Licensed_for_Talkloop]_Platforms[ANDR_IOS]_Features[V_MC_MA_MSG]_SupportTill[20260122]_UpdatesTill[20251031]_Key[MC0CFQCQZ3qnNR6BPcpvFlp3uLbMePIRpwIUBLQskVIDr1qHtgK+TJiXiAfAkHo=]"
    export SIP_SERVER="your-sip-server"
    export SIP_EXT="your-extension"
  5. Run the app

    flutter run

Configuration

Firebase Setup

  1. Create a Firebase project
  2. Enable Authentication (Google + Microsoft providers)
  3. Enable Analytics and Crashlytics
  4. Run flutterfire configure to generate config files

Siprix Configuration

  1. Obtain a Siprix VoIP SDK license
  2. Configure SIP server credentials in the app
  3. Set up push notifications for incoming calls

CI/CD Setup

  1. Add secrets to GitHub repository:
    • FIREBASE_TOKEN: Firebase CLI token
    • FIREBASE_ANDROID_APP_ID: Android app ID from Firebase
    • SIPRIX_LICENSE: Siprix license key

Usage

Authentication

  • Sign in with Google or Microsoft
  • User data is stored in Firebase

SIP Calling

  1. Add SIP account in Settings
  2. Use dial pad to make calls
  3. Answer incoming calls via native UI

Power Dialer

  1. Create campaigns with lead lists
  2. Set pacing between calls
  3. Start/stop dialing sessions
  4. Record call outcomes

Call Notes

  • Take notes during calls
  • Categorize notes (Price, Objection, etc.)
  • After-call wrap-up with outcomes
  • Schedule recalls

Analytics Events

The app tracks the following events:

  • auth_login_success, auth_login_fail
  • sip_register_ok, sip_register_fail
  • call_outgoing_start, call_incoming_show, call_answer, call_connected
  • call_hold, call_resume, call_mute, call_unmute, call_end, call_fail
  • dialer_start, dialer_pause, dialer_next_lead, dialer_wrap_submit
  • recall_scheduled, recall_triggered

Platform-Specific Setup

Android

  • Permissions for audio, internet, wake lock, notifications
  • Foreground service for active calls
  • FCM for push notifications

iOS

  • Background modes for audio and VoIP
  • CallKit and PushKit entitlements
  • APNs configuration for VoIP notifications

Security Considerations

  • SIP credentials stored in secure storage
  • No secrets in repository
  • TLS/SRTP for call encryption
  • User consent for recording/transcription

Development

Running Tests

flutter test

Code Analysis

flutter analyze

Building for Production

# Android
flutter build apk --release --dart-define=SIPRIX_LICENSE="LicensedTo[Licensed_for_Talkloop]_Platforms[ANDR_IOS]_Features[V_MC_MA_MSG]_SupportTill[20260122]_UpdatesTill[20251031]_Key[MC0CFQCQZ3qnNR6BPcpvFlp3uLbMePIRpwIUBLQskVIDr1qHtgK+TJiXiAfAkHo=]"

# iOS
flutter build ios --release --dart-define=SIPRIX_LICENSE="LicensedTo[Licensed_for_Talkloop]_Platforms[ANDR_IOS]_Features[V_MC_MA_MSG]_SupportTill[20260122]_UpdatesTill[20251031]_Key[MC0CFQCQZ3qnNR6BPcpvFlp3uLbMePIRpwIUBLQskVIDr1qHtgK+TJiXiAfAkHo=]"

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Run tests and analysis
  5. Submit a pull request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

For issues and questions:

  • Create an issue in the repository
  • Check the documentation
  • Review Firebase and Siprix SDK documentation

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •