Final project Communication System in Corporate Networks' subject, erasmus 2023-2024
This project involves the creation of a small information system using Asterisk PBX within Docker containers. Below is an outline of the system architecture and components.
The system consists of the following components:
- 3 Docker Containers:
- Asterisk
- Backend (FastAPI)
- HTTPS Proxy
-
Asterisk Server (
asterisk.vsb.cz
):- Phones with numbers
10
and11
connected to Asterisk via port5060
using thePJSIP
protocol. - Phones communicate with Asterisk using RTP protocol over ports
10000-10100
.
- Phones with numbers
-
Backend:
- Bidirectional communication with Asterisk through the Asterisk Manager Interface (AMI).
-
HTTPS Proxy:
- Communicates bidirectionally with the Backend via HTTP.
- HTTPS Proxy listens on port
443
.
Using Asterisk version alpine-20.5.2
, you will configure the following:
-
PJSIP Accounts:
- Phone 10 (
number 10
) - Phone 11 (
number 11
)
- Phone 10 (
-
Conference:
- Conference reachable on number
18
.
- Conference reachable on number
-
Simple IVR (Autoattendant):
- Multi-level IVR system with at least two levels.
-
Trunk Connection:
- Establish a trunk connection to
asterisk.vsb.cz
, which is the university's Asterisk server.
- Establish a trunk connection to
The backend will be built using FastAPI. The main functionality of the backend will include a simple interface, allowing users to perform operations like making calls (from one number to another).
The system will run within Docker Desktop, with three containers configured as follows:
-
Asterisk Container:
- Handles phone communication, IVR, and conference calls.
-
Backend Container (FastAPI):
- Provides an API interface for interaction with the Asterisk PBX.
-
Proxy Container (HTTPS Proxy):
- Manages HTTPS communication between the Backend and external systems, using port
443
.
- Manages HTTPS communication between the Backend and external systems, using port
The system integrates Asterisk PBX with a FastAPI backend and an HTTPS proxy, facilitating communication between phones, handling IVR and conference calls, and providing a simple API for managing calls.