#!/bin/bash # Применение правок автодозвона SuperSam на АТС. Идемпотентно, с проверкой. set -e cd /root/ats-patch echo "=== 1. extensions.conf: добавить контекст SS-Autocall-Slot ===" if grep -q '^\[SS-Autocall-Slot\]' /etc/asterisk/extensions.conf; then echo " уже есть, пропускаю" else cat ss-autocall-context.txt >> /etc/asterisk/extensions.conf echo " добавлен" fi echo "=== 2. modules.conf: автозагрузка pbx_spool + res_agi ===" if grep -q '^load = pbx_spool.so' /etc/asterisk/modules.conf; then echo " pbx_spool уже есть" else # вставить после 'load = pbx_config.so' в секции Core/PBX sed -i '/^load = pbx_config.so/a load = pbx_spool.so\nload = res_agi.so' /etc/asterisk/modules.conf echo " добавлены pbx_spool + res_agi" fi echo "=== 3. ss-dialog.agi: вставить curl результата перед HANGUP ===" if grep -q 'отправка результата в БД' /var/lib/asterisk/agi-bin/ss-dialog.agi; then echo " curl уже есть" else # вставить блок перед строкой 'say "HANGUP"' python3 - <<'PY' import re p = '/var/lib/asterisk/agi-bin/ss-dialog.agi' src = open(p).read() block = open('/root/ats-patch/ss-agi-curl.txt').read() if 'say "HANGUP"' in src and 'отправка результата в БД' not in src: src = src.replace('say "HANGUP"', block + '\nsay "HANGUP"', 1) open(p, 'w').write(src) print(' curl вставлен') else: print(' пропуск (HANGUP не найден или уже есть)') PY fi echo "=== 4. проверка синтаксиса ===" asterisk -rx "dialplan reload" 2>&1 | tail -3 asterisk -rx "module load pbx_spool.so" 2>&1 | tail -1 asterisk -rx "module load res_agi.so" 2>&1 | tail -1 echo "--- dialplan show SS-Autocall-Slot ---" asterisk -rx "dialplan show SS-Autocall-Slot" 2>&1 | head -10 echo "--- module show like pbx_spool ---" asterisk -rx "module show like pbx_spool" 2>&1 | grep -i running echo "--- module show like res_agi ---" asterisk -rx "module show like res_agi" 2>&1 | grep -i running echo "--- bash syntax ss-dialog.agi ---" bash -n /var/lib/asterisk/agi-bin/ss-dialog.agi && echo " bash -n OK" echo "=== DONE ==="