посмотрите на опцию g комманды Dial()
g: Когда вызываемый абонент вешает трубку, продолжить выполнение команд далее по текущему контексту.
G: G(context^exten^pri) - Если на вызов ответили, перекидываем обоих абонентов в заданное место плана набора; однако, имеется в виду, что вызывающий (звонящий) абонент будет отправлен к приоритету x, а вызываемый (отвечающий) - к приоритету x+1 (новая опция в версии v1.2)
http://asterisk.ru/knowledgebase/Asterisk+cmd+Dial
;ARG1=${CALLERID(NUM}
[macro-SuperDial1]
exten=>s,1,NoOp()
exten=>s,n,Set(COUNT=2)
exten=>s,n,Dial(${ARG1},60,tThHgGo)
exten=>s,n,GotoIf($["${DIALSTATUS}" = "ANSWER"]?answer)
exten=>s,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?busy)
exten=>s,n,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?noanswer)
exten=>s,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?chanunavail)
exten=>s,n,GotoIf($["${DIALSTATUS}" = "CONGESTION"]?congestion)
exten=>s,n,Goto(end)
exten=>s,n(answer),NoOp(answer)
exten=>s,n(busy),NoOp(busy)
exten=>s,n(noanswer),NoOp(no-answer)
exten=>s,n(chanunavail),NoOp(chanunavail)
exten=>s,n(congestion),NoOp(congestion)
exten=>s,n(end),NoOp(Continue)
exten=>s,n,MacroExit()