Это макросы freePBX.
На втором шаге затирается текущее значение CALLERID(number) командой
Set("SIP/PROV-0000007b", "CALLERID(number)=")
Вот кусок этого макроса (он у вас тоже есть) с метки continue. Шаги отличаются немного, я взял с другой версии, но это не важно.
Код: Выделить всё
'continue' => 1. GotoIf($["${OUTFAIL_${ARG1}}" = ""]?noreport) [pbx_config]
2. AGI(${OUTFAIL_${ARG1}}) [pbx_config]
[noreport] 3. Noop(TRUNK Dial failed due to ${DIALSTATUS} HANGUPCAUSE: ${HANGUPCAUSE} - failing through to other trunks) [pbx_config]
4. Set(CALLERID(number)=${AMPUSER}) [pbx_config]
Тут видно, что при событии TRUNK Dial failed со статусом HANGUPCAUSE в переменную CALLERID(number) передаётся содержи мое переменной ${AMPUSER}
Если там пусто, то это, конечно, может быть баг, но я сильно-сильно сомневаюсь. Вижу просто чьи то руки/действия.
Если люди не понимают логику freePBX, как настроить через вэб интерфейс все тонкости, указать на транке нужный Caller ID, то начинают ругать "дебильный интерфейс, или переписывать под себя макрос macro-dialout-trunk, это тоже можно сделать в рамках гибкости freePBX, но только всё это не правильно.
Объяснять "как надо сделать правильно" через форум затратно по времени в 3-4 раза, чем просто молча сделать "как надо". И в 10-20 раз менее эффективно, потому что люди ленятся искать, ленятся копаться в закрученых пружинках, проще написать на форуме "Что, неужели никто не знает почему это так у меня происходит?"