Much of the code that interfaces with the modem was taken from SXMO. Calling now works for both incoming and outgoing calls
75 lines
1.9 KiB
Bash
Executable file
75 lines
1.9 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
|
source "$DIR/common"
|
|
|
|
# This is largely borrowed from:
|
|
# https://git.sr.ht/~mil/sxmo-utils/tree/master/item/scripts/modem/sxmo_modemmonitor.sh
|
|
|
|
# This is where sms messages will be stored
|
|
|
|
usage(){
|
|
echo "checkSMS [options]"
|
|
echo "Options:"
|
|
echo " -h|--help Display this help text"
|
|
echo " -m|--modem Specify a modem"
|
|
echo " --dry-run Don't actually send the message"
|
|
}
|
|
|
|
|
|
mkdir -p "$SMS_DIR"
|
|
|
|
dryrun="false"
|
|
|
|
# Assume we want the first modem
|
|
# can be overwritten by the -m option
|
|
modem="$(mmcli -L | grep -oE 'Modem\/[0-9]+' | head -n 1 | cut -d'/' -f2)"
|
|
|
|
|
|
# Read the options and set stuff
|
|
while [[ $1 = -?* ]]; do
|
|
case $1 in
|
|
-h|--help) usage; exit;;
|
|
-m|--modem) modem="$2"; shift ;;
|
|
--dry-run) dryrun="true" ;;
|
|
--) shift; break ;;
|
|
*) die "invalid option: '$1'." ;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
# Get the ids of new texts
|
|
ids="$( mmcli -m "$modem" --messaging-list-sms |
|
|
grep -Eo '/SMS/[0-9]+ \(received\)' | grep -Eo '[0-9]+' )"
|
|
|
|
count="$(echo "$ids" | deleteEmptyLines | wc -l)"
|
|
|
|
[ "$count" -eq 0 ] && exit
|
|
|
|
echo "$ids" | while read -r id; do
|
|
# Get the details of the message
|
|
details="$(mmcli -m "$modem" -s "$id" -K)"
|
|
number="$(echo "$details" | grep "sms.content.number" | cut -d':' -f2- |
|
|
trimWhitespace)"
|
|
text="$(echo "$details" | grep "sms.content.text" | cut -d':' -f2- |
|
|
trimWhitespace)"
|
|
time="$(echo "$details" | grep "sms.properties.timestamp" | cut -d':' -f2- |
|
|
trimWhitespace)"
|
|
|
|
# Make a directory if necesary
|
|
mkdir -p "$SMS_DIR/$number"
|
|
|
|
log="$SMS_DIR/$number/sms.log"
|
|
|
|
# Store the message in the log file
|
|
echo "RECIEVED"
|
|
echo "SENDER: $number" >> $log
|
|
echo "TIME: $(date -d "$time")" >> $log
|
|
echo "----" >> $log
|
|
echo -e "$text" >> $log
|
|
printf '\00\n' >> $log
|
|
|
|
mmcli -m "$modem" --messaging-delete-sms="$id"
|
|
done
|
|
|
|
echo "$count new messages"
|