82 lines
4.1 KiB
Markdown
82 lines
4.1 KiB
Markdown
# Дифы для АТС (Asterisk 13.18.5) — автодозвон SuperSam
|
||
# Показываются Паше ДО применения. Все правки аддитивные, существующие звонки не трогают.
|
||
|
||
=====================================================================
|
||
## ПРАВКА 1 — Новый контекст диалплана `[SS-Autocall-Slot]`
|
||
=====================================================================
|
||
Файл: /etc/asterisk/extensions.conf (добавить в конец, после [mmedia-Incoming])
|
||
|
||
[SS-Autocall-Slot]
|
||
; Автодозвон SuperSam: робот (Vivienne) опрашивает клиента по DTMF.
|
||
; Вызывается из call-файла планировщика (Context: SS-Autocall-Slot).
|
||
; Переменные SCENARIO/CALLTYPE/GROUP_ID/ATTEMPT/API_URL/API_KEY/TEST_MODE
|
||
; приходят из call-файла через Setvar.
|
||
exten => s,1,NoOp(SS-Autocall-Slot: scenario=${SCENARIO} group=${GROUP_ID} attempt=${ATTEMPT})
|
||
same => n,Answer()
|
||
same => n,Wait(1)
|
||
same => n,AGI(ss-dialog.agi,${SCENARIO},${CALLTYPE})
|
||
same => n,Hangup()
|
||
|
||
; --- конец правки 1 ---
|
||
|
||
=====================================================================
|
||
## ПРАВКА 2 — curl результата в конец ss-dialog.agi
|
||
=====================================================================
|
||
Файл: /var/lib/asterisk/agi-bin/ss-dialog.agi
|
||
Вставляется ПОСЛЕ строки 160 (после `echo "finished_at=..." >> "$OUT"`),
|
||
ПЕРЕД `say "HANGUP"`. Не меняет логику диалога — только отправляет итог в БД.
|
||
|
||
# ─── отправка результата в БД (edge function autocall-result) ───────
|
||
# Переменные приходят из call-файла (Setvar). При потере сети звонок не
|
||
# валится: curl с таймаутом, результат всё равно остался в $OUT.
|
||
if [ -n "$API_URL" ] && [ -n "$API_KEY" ]; then
|
||
curl -s --max-time 5 -X POST "$API_URL" \
|
||
-H "Content-Type: application/json" \
|
||
-H "x-webhook-secret: $API_KEY" \
|
||
-d "{
|
||
\"asterisk_uniqueid\":\"$UNIQ\",
|
||
\"order_group_id\":\"${GROUP_ID:-}\",
|
||
\"campaign_type\":\"autocall_slot\",
|
||
\"customer_phone\":\"${CUSTOMER_PHONE:-}\",
|
||
\"attempt_no\":${ATTEMPT:-1},
|
||
\"scenario\":\"$SCENARIO\",
|
||
\"call_started_at\":\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\",
|
||
\"answered_at\":\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\",
|
||
\"duration_sec\":0,
|
||
\"sip_code\":200,
|
||
\"channel_state\":\"Up\",
|
||
\"dtmf_day\":${CONF_DAY:-null},
|
||
\"dtmf_half\":${CONF_HALF:-null},
|
||
\"changed\":\"$CHANGED\",
|
||
\"outcome\":\"$OUTCOME\",
|
||
\"was_test_mode\":${TEST_MODE:-0}
|
||
}" >/dev/null 2>&1 || echo "curl result failed (network?)" >> "$LOG"
|
||
fi
|
||
|
||
; --- конец правки 2 ---
|
||
|
||
=====================================================================
|
||
## ПРАВКА 3 — Автозагрузка pbx_spool.so и res_agi.so
|
||
=====================================================================
|
||
Файл: /etc/asterisk/modules.conf (в секцию Core/PBX добавить)
|
||
|
||
; --- в секцию "Core/PBX" ---
|
||
load = pbx_spool.so
|
||
load = res_agi.so
|
||
|
||
; --- конец правки 3 ---
|
||
; Это чинит ночной reboot 03:33: сейчас autoload=no, pbx_spool грузится
|
||
; вручную и после ребута слетает — автодозвон молча умирает.
|
||
|
||
=====================================================================
|
||
## ПРОВЕРКА ПОСЛЕ ПРИМЕНЕНИЯ (на АТС)
|
||
=====================================================================
|
||
asterisk -rx "dialplan reload"
|
||
asterisk -rx "module load pbx_spool.so"
|
||
asterisk -rx "module load res_agi.so"
|
||
asterisk -rx "dialplan show SS-Autocall-Slot" # должен показать контекст
|
||
asterisk -rx "module show like pbx_spool" # Running
|
||
asterisk -rx "module show like res_agi" # Running
|
||
# Тестовый звонок:
|
||
bash /tmp/ss-testcall3.sh A 09067029953
|