AutoProvision IP Telephony
This project aims to automatically provision IP telephony systems for approximately 300 different branches. The SIP provider, Cloudtalk, supplies the closest SIP server URL, SIP username, and password for each agent (account). The IP telephony platform hardware management vendor is Grandstream.
Both Grandstream and Cloudtalk portals are cloud-based services and support API integration, allowing us to automate the provisioning process.
The provisioning process consists of the following steps:
- Collect SIP configuration details from Cloudtalk.
- Generate the IP telephony configurations in XML format using the Jinja2 templating language.
- Upload the configuration files to the Grandstream portal.
- Once the IP telephony device reboots and obtains an IP address with an internet connection, it connects to the Grandstream portal, retrieves/downloads its configuration file, and reboots again with the correct configuration parameters.
- The telephones are provisioned and ready to talk
Authentication:
Step-1: Requesting API Key for Branch Number "X"
Step-2: Cerberus verifies user permissions with Okta.
Step-3: User authenticates with Okta
Step-4: Okta confirms to Cerberus that the user has been successfully authenticated.
Step-5: Cerberus Vault responds to client with API Key for CloudTalk Portal
Provisioning IP Telephony:
Step-6: HTTP POST for Generate Configuration endpoint: /generate_configuration
Step-7: The API Gateway is authenticated with the Cloudtalk Portal and retrieves SIP details for each IP telephony device with requested Branch Number.
Step-8: IP Telephony configuration is generated and uploaded to Grandstream Portal
Step-9: IP Telephony configuration is also uploaded to BOX
We have at least 5-10 telephones in each branch, and with approximately 300 branches, this results in around 1500-2000 telephones to be provisioned. Performing this operation manually would be time-consuming and costly.
In conclusion, I am unable to share any code as it was developed for a company I worked for, and it is proprietary to their environment. However, I wanted to provide a high-level overview of the project flows and algorithm to give you a conceptual understanding.