This repository contains a collection of Python packages for OpenSIPS. These modules are designed to be as lightweight as possible and provide a simple interface for interacting with OpenSIPS. Alongside the source code, the repository also contains a Docker image that comes with the OpenSIPS Python packages pre-installed.
Currently, the following packages are available:
mi
- can be used to execute OpenSIPS Management Interface (MI) commands.event
- allows you to use OpenSIPS Event Interface subscriptions.
-
Install the package from source code:
git clone cd python-opebsips pip install .
or from PyPI:
pip install opensips
-
Import the package in your Python code:
from opensips.mi import OpenSIPSMI, OpenSIPSMIException from opensips.event import OpenSIPSEvent, OpenSIPSEventException, OpenSIPSEventHandler
-
Use the methods provided by the modules:
mi = OpenSIPSMI('http', url='http://localhost:8888/mi') try: response = mi.execute('ps') # do something with the response except OpenSIPSMIException as e: # handle the exception
mi_connector = OpenSIPSMI('http', url='http://localhost:8888/mi') hdl = OpenSIPSEventHandler(mi_connector, 'datagram', ip='127.0.0.1', port=50012) def some_callback(message): # do something with the message (it is a JSON object) pass ev: OpenSIPSEvent = None try: event = hdl.subscribe('E_PIKE_BLOCKED', some_callback) except OpenSIPSEventException as e: # handle the exception try: ev.unsubscribe('E_PIKE_BLOCKED') except OpenSIPSEventException as e: # handle the exception
- MI - contains information about supported MI communication types and required parameters for each type.
- Event Interface - lists the supported event transport protocols and provides information about the required parameters for each protocol.
- Docker - provides information about the Docker image that contains the OpenSIPS Python packages.
After installing the package, you can use the provided opensips-mi script to run MI commands. This script takes the following arguments:
-t
or--type
- the type of the MI communication (http
,datagram
orfifo
).-i
or--ip
- the IP address of the OpenSIPS server.-p
or--port
- the port of the OpenSIPS MI.-f
or--fifo-file
- the path to the FIFO file.-fb
or--fifo-fallback
- the path to the FIFO fallback file.-fd
or--fifo-reply-dir
- the directory where the FIFO reply files are stored.
# general usage
opensips-mi -t datagram -p 8080 command_name [command_args ...]
# this will execute get_statistics command
opensips-mi -t datagram -p 8080 -s core: shmem:
# you can pass json string as argument with -j flag for commands that require arrays as arguments
opensips-mi -t datagram -p 8080 get_statistics -j "{'statistics': ['core:', 'shmem:']}"
You can use the provided opensips-event script to subscribe for OpenSIPS events. This script takes the following arguments:
- all the above arguments for the MI communication
-T
or--transport
- the transport protocol to use (datagram
,stream
).-li
or--listen-ip
- the IP address to listen on.-lp
or--listen-port
- the port to listen on.-e
or--expire
- the expiration time for the subscription.- the event name to subscribe for.
opensips-event -t datagram -p 8080 -T datagram -lp 50012 -e 3600 E_PIKE_BLOCKED
The python-opensips
source code is licensed under the GNU General Public License v3.0
All documentation files (i.e. .md
extension) are licensed under the Creative Common License 4.0
© 2024 - OpenSIPS Solutions