4.1 KiB
Дифы для АТС (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