Add chimes

This commit is contained in:
Christopher Cookman 2024-06-27 23:34:44 -06:00
parent 36d2b23ee3
commit 26779e0c0d
Signed by: ChrisChrome
GPG key ID: A023A26E42C33A42
4 changed files with 55 additions and 0 deletions

View file

@ -1,2 +1,5 @@
# fpbx-stuff
## A big ol' collection of FreePBX scripts and configurations I've made or found useful.
### [chimes](chimes)
This is a simple setup to make your phone system page a page group and play a chime at noon in any number of timezones.

17
chimes/README.md Normal file
View file

@ -0,0 +1,17 @@
# Noon Chimes
This is a simple setup to make your phone system page a page group and play a chime at noon in any number of timezones.
## Installation
1. Choose a chime sound and upload it to FreePBX through Admin > System Recordings.
2. Set up a custom context in Admin > Config Edit. Paste the contents of `custom-context.conf` into the file, save, and apply the config.
3. Set up a Custom Dest in Admin > Custom Destinations. Set the target to `chimes,s,1` and give it any description.
4. Set up the script `chimes.sh` in `/root/chimes.sh` and make it executable with `chmod +x /root/chimes.sh`.
5. Set up crontab with the following line: `0 * * * * /root/chimes.sh`.
## Configuration
There really isn't any, other than modifying the shell script to set what timezones you want to make chime at noon.
If you want to trigger the chime at a specific time, use cron to run `/var/lib/asterisk/bin/callback "page-group-number-here" chimes.s.1 0 0 "Ik5vb24gQ2hpbWUiIDw+"` at the desired time. I think you should be able to look up how to set up a cron job for that.
If you want to change the Caller ID it uses, base64 encode the callerid string you want to use and replace that at the end of the callback command.
A valid caller id looks like `"NAME" <NUMBER>`, or just `"NAME"` or `<NUMBER>`. The base64 encoded string for `"Noon Chime" <1234>` is `Ik5vb24gQ2hpbWUgPDEyMzQ+`.

27
chimes/chimes.sh Normal file
View file

@ -0,0 +1,27 @@
#!/bin/bash
# Define time zone names
declare -A time_zone_names
# Time Zone page group array
time_zone_names=( ["1234"]="America/New_York" ["5678"]="America/Denver" )
# Function to check if it's noon in a specific time zone and trigger the callback command
check_noon() {
number="$1" # Get the time zone number
time_zone="${time_zone_names["$number"]}" # Get the corresponding time zone name
TZ="$time_zone" # Set the time zone
current_time=$(TZ="$time_zone" date +'%H') # Get the current hour in the specified time zone
if [ "$current_time" -eq 12 ]; then
echo "It's noon in $time_zone"
/var/lib/asterisk/bin/callback "$number" chimes.s.1 0 0 "Ik5vb24gQ2hpbWUiIDw+"
else
echo "It's not noon in $time_zone"
fi
}
# Loop through the time zone numbers and check if it's noon
for number in "${!time_zone_names[@]}"; do
check_noon "$number"
done

View file

@ -0,0 +1,8 @@
[chimes]
exten => s,1,Wait(1)
exten => s,n,Playback(custom/my-chime-file)
; exten => s,n,SayUnixTime(STRFTIME(),,IMp)
; exten => s,n,Playback(digits/12)
; exten => s,n,Playback(digits/oclock)
; exten => s,n,Playback(digits/p-m)
exten => s,n,Hangup()