101 lines
3.1 KiB
Markdown
101 lines
3.1 KiB
Markdown
# FreePBX Manager
|
|
|
|
[](https://github.com/ChrisChrome/discord-freepbx-manager/blob/main/LICENSE)
|
|
|
|
## Description
|
|
FreePBX Manager is a Discord bot designed to manage FreePBX configurations. Please note that this project is currently a hot mess and may not be suitable for production use.
|
|
|
|
## Pre-requisites
|
|
- [Node.js](https://nodejs.org/en/download/)
|
|
- [FreePBX](https://www.freepbx.org/)
|
|
- [A Discord Bot](https://discord.com/developers/applications)
|
|
|
|
## Features
|
|
- [x] User-created extensions
|
|
- [x] Automatic extension creation
|
|
- [x] Extension deletion
|
|
- [x] Extension status
|
|
- [x] Extension list
|
|
|
|
- Probably some more stuff that I forgot to write down lol
|
|
|
|
## Setup
|
|
To set up the config file, follow the steps below:
|
|
|
|
1. Clone the repository:
|
|
```shell
|
|
git clone https://github.com/ChrisChrome/discord-freepbx-manager.git
|
|
|
|
cd discord-freepbx-manager
|
|
```
|
|
2. Install the required dependencies:
|
|
```shell
|
|
npm install --save
|
|
```
|
|
|
|
3. Create a new file named `config.json` in the root directory of the project and fill it with the following content:
|
|
```json
|
|
{
|
|
"ntfyUrl": "ntfy-url",
|
|
"freepbx": {
|
|
"server": "sip-server-ip",
|
|
"url": "pbx-api-url",
|
|
"clientid": "gql-client-id",
|
|
"allowedscopes": "gql",
|
|
"secret": "gql-secret",
|
|
"startExt": 1000
|
|
},
|
|
"discord": {
|
|
"token": "bot-token",
|
|
"guildId": "guild-id",
|
|
"roleId": "user-role",
|
|
"logId": "log-channel",
|
|
"extList": "extension-list-channel",
|
|
"developers": [
|
|
"your-user-id"
|
|
]
|
|
},
|
|
"mariadb": {
|
|
"host": "db-hostname0here",
|
|
"user": "bot",
|
|
"password": "bot",
|
|
"database": "asterisk",
|
|
"connectionLimit": 5
|
|
},
|
|
"cdrdb": {
|
|
"host": "db-hostname-here",
|
|
"user": "bot",
|
|
"password": "bot",
|
|
"database": "asteriskcdrdb",
|
|
"connectionLimit": 5
|
|
},
|
|
"status": {
|
|
"interval": 60,
|
|
"url": "uptime-kuma-link"
|
|
}
|
|
}
|
|
```
|
|
4. Replace the placeholders with your own values:
|
|
- `ntfyUrl`: The URL of the NTFY server.
|
|
- `sip-server-ip`: The IP address of the SIP server.
|
|
- `pbx-api-url`: The URL of the FreePBX API.
|
|
- `gql-client-id`: The client ID for the GraphQL API.
|
|
- `gql-secret`: The secret for the GraphQL API.
|
|
- `bot-token`: The token of the Discord bot.
|
|
- `guild-id`: The ID of the Discord guild.
|
|
- `user-role`: The ID of the role that users must have to use the bot.
|
|
- `log-channel`: The ID of the channel where logs will be sent.
|
|
- `extension-list-channel`: The ID of the channel where the extension list will be sent.
|
|
- `your-user-id`: Your Discord user ID.
|
|
- `db-hostname-here`: The hostname of the MariaDB server.
|
|
- Use `mysql -u root -p -e "CREATE USER 'bot'@'localhost' IDENTIFIED BY 'bot';"` to create a new user. Change `localhost` to the IP of the server running the bot if you aren't running the bot on the PBX server.
|
|
- `uptime-kuma-link`: The URL of the Uptime Kuma instance.
|
|
5. Run the bot:
|
|
```shell
|
|
node .
|
|
```
|
|
6. Invite the bot to your Discord server using the following link:
|
|
```
|
|
https://discord.com/oauth2/authorize?client_id=YOUR_BOT_ID&scope=bot&permissions=8
|
|
```
|
|
7. You're all set! The bot should now be up and running. |