Ситуация:
Потребовалось при входящем звонке звонящему проиграть сообщение(только при условии поднятия трубы вызываемого).
Реализовал это через через разрыв каналов.
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
направление звонка на оператора: DAHDI/g2/799,30,G(welcome,,1)
[welcome]
exten => s,1,Macro(client-channel)
exten => s,n,Macro(operator-channel)
exten => s,n,Hangup
[macro-operator-channel]
exten => s,1,Set(GLOBAL(operator_channel)=${CDR(channel)})
exten => s,n,Set(CHANNEL(language)=ru)
exten => s,n,Playback(ozhidajte-soedinenija)
exten => s,n,Wait(10)
exten => s,n,Hangup
[macro-client-channel]
exten => s,1,Set(CHANNEL(language)=ru)
exten => s,n,Playback(IVR/welcome_1)
exten => s,n,Set(__TRANSFER_CONTEXT=transfer-custom)
exten => s,n,MixMonitor(/var/spool/asterisk/monitor/${UNIQUEID}_(${STRFTIME(${EPOCH},,%d-%m-%Y)}_${STRFTIME(${EPOCH},,%H-%M)})_SRC(${CDR(src)})-DST(${CDR(dst)}).wav,b) ;
exten => s,n,Bridge(${operator_channel},p)
exten => s,n,Hangup
[welcome]
exten => s,1,Macro(client-channel)
exten => s,n,Macro(operator-channel)
exten => s,n,Hangup
[macro-operator-channel]
exten => s,1,Set(GLOBAL(operator_channel)=${CDR(channel)})
exten => s,n,Set(CHANNEL(language)=ru)
exten => s,n,Playback(ozhidajte-soedinenija)
exten => s,n,Wait(10)
exten => s,n,Hangup
[macro-client-channel]
exten => s,1,Set(CHANNEL(language)=ru)
exten => s,n,Playback(IVR/welcome_1)
exten => s,n,Set(__TRANSFER_CONTEXT=transfer-custom)
exten => s,n,MixMonitor(/var/spool/asterisk/monitor/${UNIQUEID}_(${STRFTIME(${EPOCH},,%d-%m-%Y)}_${STRFTIME(${EPOCH},,%H-%M)})_SRC(${CDR(src)})-DST(${CDR(dst)}).wav,b) ;
exten => s,n,Bridge(${operator_channel},p)
exten => s,n,Hangup
т.к. CDR(dst) только для чтения.
Можно конечно через sql, но как то не верится что нет решения при помощи *.