Skip to content

Conversation

@Netzvamp
Copy link
Contributor

@Netzvamp Netzvamp commented Jun 2, 2025

This will be WIP for a while, since it has breaking changes and needs good testing.

Implementation to this discussion: #34

In short:

We separate the different channels of a freeswitch session to python objects, so that we can apply command directly to single them. That way we can wrap complex dialplan logic in readable python code.

https://github.com/Netzvamp/Genesis/tree/channels/examples

Currently open:

  • bgapi for most of the api calls for more async behavior. For originate this is a must.
    • Implement robust bgapi object tracking like we do for execute
  • more and better exceptions and hangup detection
  • mod_conference implementation, to mix 3 or more channels
  • implement spy/evesdrop
  • Update tests to new structure
    • More robust tests with explicit stop of all handler, consumers, ...
  • More and better examples
  • Update cli tools
  • Sphinx docs + pages with examples and tutorials
    • Generate with github actions
  • A router to send calls to different handlers based regex and call variables (e.g. destination number)
  • Example that rebuilds fs_ctl in python, to show the capabilities of genesis

I aim to make this as pythonic as possible while keeping the ability to send custom api commands as needed.

Timeline is unknown for now.

Netzvamp and others added 10 commits May 28, 2025 17:18
…op all consumers, producers and tasks.

Same for the Mockserver. We also use 127.0.0.1 for Mockserver IP to prevent firewall issues.
Protocol.send has now a timeout parameter to prevent hanging, but this makes much more sense if we constantly use bgapi.
fix: improve error handling in Channel.originate method
…ocking operations

Added dedicated BackgroundAPI implementation for FreeSWITCH background commands with custom Job-UUIDs and job tracking
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant