Вы не устанавливаете никаких глобальных переменных!!!
Здесь: exten => s,n,Set(__TELNO=${CALLERID(num)}) - вы устанавливаете переменную канала. С двумя нижними подчеркиваниями она будет сохранятся в канале до его "окончания" (Hangup) . Т.е. - при всех переводах и т.д. ...
Все правильно, так и есть.
До тех пор, пока канал жив.
При переводе (attxfer) текущий канал ставится на удержание, и поднимается новый.
Тут я пока ничего не путаю? :)
[Q_incoming_calls_day]
exten => s,n,Set(__TELNO=${CALLERID(num)})
т.е., в "переведенный" канал переменная уже не передается, ибо канал в момент перевода прекратил свое существование.
В том вся и проблема..
В общем, курение манов и эксперименты привели к решению формирования имени файла уже после его записи.
Ибо переменная в контексте на этапе h все же появляется.