接続局読み上げ

自ノード(53197) に接続している局名を読み上げる。←これは内部コマンドです。
【概要】
AllStarLinkは、自ノードに直接接続しているノードがたとえ1つでも、そのノードが複数のノードと接続している場合は
その接続局リストも自ノードまでノード番号が流れてくる仕組みになっているので、そのリストを出力して
そのリスト(ノード番号)から/var/lib/asterisk/astdb.txtを利用してコールサインを抽出して読み上げる。

  1. list_links.sh
    $ sudo nano /etc/asterisk/scripts/list_links.sh
     #!/bin/bash
    
    # --- 設定項目 ---
    TARGET_NODE="53197"
    AST_DB="/var/lib/asterisk/astdb.txt"
    
    # 1. リンク中のノード番号一覧を取得
    RAW_NODES=$(asterisk -rx "rpt nodes $TARGET_NODE" | grep "T[0-9]")
    LINKED_NODES=$(echo "$RAW_NODES" | sed 's/T//g' | sed 's/,//g')
    
    # 2. コールサインを抽出し、2000以下を除外して重複を消す
    declare -A SEEN_CALLS
    CALL_LIST=()
    
    for NODE in $LINKED_NODES
    do
       [ "$NODE" == "$TARGET_NODE" ] && continue
       [ "$NODE" -le 2000 ] && continue
    
       CALLSIGN=$(grep "^${NODE}|" "$AST_DB" | cut -d'|' -f2)
       [ -z "$CALLSIGN" ] && CALLSIGN="$NODE"
    
       if [ -z "${SEEN_CALLS[$CALLSIGN]}" ]; then
           CALL_LIST+=("$CALLSIGN")
           SEEN_CALLS[$CALLSIGN]=1
       fi
    done
    
    TOTAL_COUNT=${#CALL_LIST[@]}
    
    # 3. 音声アナウンス開始
    if [ "$TOTAL_COUNT" -eq 0 ]; then
        asl-tts -n "$TARGET_NODE" -t "No links."
    else
       # 冒頭文を短くしてテンポアップ
       asl-tts -n "$TARGET_NODE" -t "$TOTAL_COUNT stations linked."
    
       # 待ち時間をさらに短縮 (0.8 -> 0.4)
       sleep 0.4
    
       for CALL in "${CALL_LIST[@]}"
       do
           # 【改良】カンマを消して「スペースのみ」に。これでポーズが最小限になります。
           SPACED_CALL=$(echo "$CALL" | tr '[:lower:]' '[:upper:]' | sed 's/./& /g')
    
           echo "Announcing: $CALL"
           # 標準オプションのみ使用
           asl-tts -n "$TARGET_NODE" -t "$SPACED_CALL"
    
           # 次の局までの待ち時間を最短に (0.8 -> 0.4)
           sleep 0.4
       done
    fi
  2. list_links.sh をDTMF で実行
    /etc/asterisk/rpt.conの[functions] に以下のように追加する。
    [functions]
    ;;;;;;;;;;;;;;;;;;; functions stanza ;;;;;;;;;;;;;;;;;;;
    ; Prefix    Functions
    ; *1        Disconnect Link
    ; *2        Monitor Link
    83 = cmd,/etc/asterisk/scripts/list_links.sh
     
  3. DTMFの実行
     *83 でノード内に現在の接続ノード数とコールサインを読み上げる。
     

    URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White


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