dograh/api/services/campaign
Abhishek Kumar 6d93be3ef6 fix: number pool initialization in multi telephony setup
If there are multiple telephony configurations, the form number should be initialized from the campaigns given telephonic configuration rather than the organization default telephonic configuration.
2026-05-08 14:48:53 +05:30
..
sources feat: limit campaign concurrency to number of CLIs 2026-02-07 13:45:21 +05:30
__init__.py Initial Commit 🚀 🚀 2025-09-09 14:37:32 +05:30
campaign_call_dispatcher.py fix: number pool initialization in multi telephony setup 2026-05-08 14:48:53 +05:30
campaign_event_protocol.py Feat/campaign enhancements (#163) 2026-02-17 21:04:15 +05:30
campaign_event_publisher.py Feat/campaign enhancements (#163) 2026-02-17 21:04:15 +05:30
campaign_orchestrator.py feat: add logs in campaigns for failure or pausing (#265) 2026-05-05 19:23:50 +05:30
circuit_breaker.py feat: add logs in campaigns for failure or pausing (#265) 2026-05-05 19:23:50 +05:30
errors.py feat: limit campaign concurrency to number of CLIs 2026-02-07 13:45:21 +05:30
rate_limiter.py fix: number pool initialization in multi telephony setup 2026-05-08 14:48:53 +05:30
readme.md fix: make campaign process batch thread safe (#141) 2026-01-30 14:48:00 +05:30
runner.py feat: add redial option in campaigns 2026-04-13 23:25:43 +05:30
source_sync.py feat: campaign create error on missing template variables 2026-03-19 17:52:04 +05:30
source_sync_factory.py feat: add csv upload functionality for OSS (#29) 2025-10-09 17:54:31 +05:30

campaign_orchestrator.py (CampaignOrchestrator)

  • Listens to retry events, batch completed event, sync completed events from redis pubsub, and schedules batches
  • Monitors stale campaigns and schedules batches if one is not already scheduled
  • Marks campaign as completed if no more tasks pending

runner.py (CampaignRunnerService)

  • Service layer to handle router requests, like run campaign, pause campaign, resume campaign, get campaign status etc.

call_dispatcher.py (CampaignCallDispatcher)

  • Ensures rate limit and concurrency limits and dispatches call using telephony provider

campaign_tasks.py

  • sync campaign from source
  • process campaign batch