ガイダンス送信pgm

【送信prg】

# nano /etc/asterisk/scripts/dmr_monitor3.sh

 中身は次の通り

#!/bin/bash

TTS_DIR="/tmp/asl-tts-root"
LOG_FILE="/var/log/mmdvm/MMDVM_Bridge-$(date -u +%Y-%m-%d).log"
echo "Monitoring $LOG_FILE (Displaying CALLSIGN and DURATION)..."
# 起動後の新規ログのみを監視
tail -n 0 -F "$LOG_FILE" | while read -r line; do

   # 1. Voice Header 検知
   if echo "$line" | grep -q "received network voice header"; then
       CALLSIGN=$(echo "$line" | sed -n 's/.*from \(.*\) to TG.*/\1/p')
       TIMESTAMP=$(echo "$line" | awk '{print $3}')
       echo -n "$CALLSIGN "
           # JH1BLT 以外の場合のみ音声を作成
           asl-tts -n 52984 -t "Welcome ${CALLSIGN}" > /dev/null 2>&1
           LATEST_FILE=$(ls -t "${TTS_DIR}"/*.ul 2>/dev/null | head -n 1)
          echo "$LATEST_FILE :"
       # 移動先パスを変数に格納
       DEST_FILE="/tmp/asl-tts-root/$CALLSIGN"

       # 移動元と移動先が異なる場合のみ mv を実行
       if [ "$LASTEST_FILE" != "$DEST_FILE" ]; then
           mv -f "$LATEST_FILE" "$DEST_FILE"
           LATEST_FILE="$DEST_FILE"
       fi
       echo "LATEST_FILE=$LATEST_FILE "

           LAST_TTS_PATH=$LATEST_FILE
           PLAY_NAME=`echo "$LATEST_FILE" | sed 's/\.ul$//'`

       LAST_CALL=$CALLSIGN
       LAST_TS=$TIMESTAMP
   fi

   # 2. End of transmission 検知
   if echo "$line" | grep -q "received network end of voice transmission"; then
       # 数字とドット以外を完全に除去して確実に数値化する
       DURATION=$(echo "$line" | sed -n 's/.* transmission, \(.*\) seconds.*/\1/p' | tr -d '[:space:]\r')

       # デバッグ表示(これで値を確認してください)
       echo "Check Duration: [$DURATION]"

       # 再生判定: bc の結果を確実に変数に格納してから比較
       IS_SHORT=$(echo "$DURATION < 2.0" | bc)
       echo "IS_SHORT = $IS_SHORT "
       if [ "$IS_SHORT" -eq 1 ]; then
           echo "Short key detected ($DURATION s). Playing..."
           # PLAY_NAME がフルパスであることを確認
           asterisk -rx "rpt playback 52984 $PLAY_NAME"
           asterisk -rx "rpt playback 52984 /tmp/asl-tts-root/at-jj1yeg"
           rm "${LAST_TTS_PATH}" 2>/dev/null
       fi
  fi

done

 コマンドとして実行できるように

# chmod 755 /etc/asterisk/scripts/dmr_monitor3.sh

 次のサービスとして登録し自動起動とする

# nano /etc/systemd/system/dmr-monitor.service

 中身は

[Unit]

Description=DMR Monitor and ASL3 TTS Playback Service
After=asterisk.service

[Service]
ExecStart=/etc/asterisk/scripts/dmr_monitor3.sh
Restart=always
RestartSec=5
User=root
StandardOutput=append:/var/log/dmr_monitor.log
StandardError=inherit

[Install]
WantedBy=multi-user.target

 これを起動させるが、その前に音声ファイルを作成しておくこと。

/tmp/asl-tts-root/at-jj1yeg

 
以下まだ工事中


リロード   新規 下位ページ作成 凍結解除 差分 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS