mirror of
https://github.com/dograh-hq/dograh.git
synced 2026-06-07 07:55:16 +02:00
* fix(ari): pre-register ext channel id and defer bridge to its StasisStart Two race conditions in the inbound ARI flow could leave a call silent: 1. Bridging both channels immediately after creating the ext media leg raced against the ext channel entering the Stasis application; slow chan_websocket handshakes produced "Channel not in Stasis application" 422 errors on addChannel. 2. Asterisk could fire StasisStart for the ext channel before the externalMedia POST response returned, so _is_ext_channel returned False and the event was dropped as an unknown outbound call. Fixes: - Generate the ext channel id as dograh-ext-<uuid> client-side and pass it to Asterisk via the channelId query param. Mark the ext channel, set its channel->run mapping, register the pending bridge entry, and persist gathered_context.ext_channel_id all before the POST. - Defer the bridge to a new _complete_bridge_after_ext_ready handler triggered by the ext channel's own StasisStart. Both channels are guaranteed in Stasis by then, so addChannel cannot 422. - On POST failure or channelId mismatch, roll back the pending entry and ERROR loudly. * fix: replace in-memory dict with redis storage |
||
|---|---|---|
| .. | ||
| auth | ||
| campaign | ||
| configuration | ||
| filesystem | ||
| gen_ai | ||
| gender | ||
| integrations | ||
| looptalk | ||
| pipecat | ||
| pricing | ||
| reports | ||
| smart_turn | ||
| telephony | ||
| worker_sync | ||
| workflow | ||
| mps_service_key_client.py | ||
| posthog_client.py | ||
| quota_service.py | ||
| storage.py | ||