На номер очереди(200) поступает вызов, например с номера 300:
exten => 200,1,Set(CDR(userfield)=${CDR(uniqueid)}) - задаем uniqueid
exten => 200,2,NoOp(CDR(userfield) is ${CDR(userfield)}) - записаваем uniqueid в CDR
exten => 200,3,SIPAddHeader(X-AsterMetka: ${CDR(uniqueid)}) - создаем метку с uniqueid, запаковываем в SIP заголовок
exten => 200,4,Queue(test) - попадаем в очередь с номером 201
Оператор(номер 201) принимает вызов, ставит 300 на удержание, далее вызывает номер 400:
exten => 400,1,Set(CDR(userfield)=${SIP_HEADER(X-AsterMetka)}) - проверяем метку
exten => 400,2,NoOp(CDR(userfield) is ${CDR(userfield)}) - записываем метку в CDR
exten => 400,3,Dial(SIP/400) - вызываем номер 400
Для агента создается новый канал, метка не передается:
exten => 400,1,Set(CDR(userfield)=${SIP_HEADER(X-AsterMetka)}) - пусто, т.к. новый канал ничего не запаковано
exten => 400,2,NoOp(CDR(userfield) is ${CDR(userfield)})
Ищите другие способы передачи переменной между серверами.
Или сохраняйте в момент ответа связку "метка - ответивший" в базу, а при звонке ответившего смотрите в эту базу и подмешивайте в звонок метку. А при hangup очищайте связку.
Если мы в команде Set присоединим спереди к имени переменной одиночный символ _ , то в этом случае эта переменная будет унаследована каналом, который будет создан основным каналом, например, при использовании команды Dial(Local/...);
Даже без переадрессации не пробрасывает, если с телефона на телефон совершить вызов:
Если так прописать в диалплане с вызываемого номера 100 перестает работать переадресация по решетке, звездочке или все что укажу в features.conf для условной или безусловной переадресации: