The engine is implemented in Python using Asyncio co-routines in order to ensure I/O operations efficiency.
Communication to OpenSIPS is being done over Datagram. The engine subscribes to OpenSIPS over the MI Datagram interface and exposes an Event Datagram socket for the E_UA_SESSON event.
The engine requires each AI Flavor to implement the AIEngine abstract class.
The engine needs the ability to perform decapsulation and framing for the codecs that are being used in a call. It is currently able to handle the following codecs:
- g711 mulaw - PCMU
- g711 alaw - PCMA
- Opus
New codecs can be easily handled by implementing the GenericCodec class.
Particularities of each AI engine is treated by its implementation.