[asterisk-dev] MixMonitor doesn't work right with SIP and Zap/Flash transfers
Vinicius Fontes
vinicius at canall.com.br
Tue Jan 8 12:45:59 CST 2008
Hey guys, I don't know if this is the right place to ask this. I was
thinking about reporting a bug, but maybe it's better to sort out if
this is really a bug or just me being lame.
I want to record *every* call in my Asterisk box, so I use the
MixMonitor() application like this is my extensions.conf:
exten => _0X.,1,Answer()
exten => _0X.,n,MixMonitor(${CALLERID(num)}-${STRFTIME($
{EPOCH},America/Sao_Paulo,%Y-%m-%d-%H-%M-%S)}-${EXTEN}.wav)
exten => _0X.,n,Dial(IAX2/pabx-canall/${EXTEN},60,tT)
exten => _2XX,1,Answer() exten => _2XX,n,MixMonitor(${CALLERID(num)}-$
{STRFTIME(${EPOCH},America/Sao_Paulo,%Y-%m-%d-%H-%M-%S)}-${EXTEN}.wav)
exten => _2XX,n,Dial(SIP/${EXTEN},60,tT)
The scenario is as following:
1) 201 asks operator for an external call, hangs up. The audio file is
stored correctly. From the CLI:
[Jan 8 16:20:19] -- Executing [200 at default:1] Answer("SIP/
201-081d8740", "") in new stack
[Jan 8 16:20:19] -- Executing [200 at default:2] MixMonitor("SIP/
201-081d8740", "201-2008-01-08-16-20-19-200.wav") in new stack
[Jan 8 16:20:19] -- Executing [200 at default:3] Dial("SIP/201-081d8740",
"SIP/200|60|tT") in new stack
[Jan 8 16:20:19] == Begin MixMonitor Recording SIP/201-081d8740
[Jan 8 16:20:19] -- Called 200
[Jan 8 16:20:19] -- SIP/200-081fac90 is ringing
[Jan 8 16:20:23] -- SIP/200-081fac90 answered SIP/201-081d8740
[Jan 8 16:20:27] == Spawn extension (default, 200, 3) exited non-zero
on 'SIP/201-081d8740'
[Jan 8 16:20:27] == End MixMonitor Recording SIP/201-081d8740
2) 200 dials to the PSTN. So far so good.
[Jan 8 16:20:35] -- Executing [021047020 at default:1] Answer("SIP/
200-081d8740", "") in new stack
[Jan 8 16:20:35] -- Executing [021047020 at default:2] MixMonitor("SIP/
200-081d8740", "200-2008-01-08-16-20-35-021047020.wav") in new stack
[Jan 8 16:20:35] -- Executing [021047020 at default:3] Dial("SIP/
200-081d8740", "IAX2/pabx-canall/021047020|60|tT") in new stack
[Jan 8 16:20:35] == Begin MixMonitor Recording SIP/200-081d8740
[Jan 8 16:20:35] -- Called pabx-canall/021047020
[Jan 8 16:20:35] -- Call accepted by 200.248.136.140 (format alaw)
[Jan 8 16:20:35] -- Format for call is alaw [Jan 8 16:20:35] -- IAX2/
pabx-canall-16384 answered SIP/200-081d8740
3) Extension 200 is a Polycom SoundPoint 301 IP phone. It presses the
Transfer button, putting 021047020 in hold and dialing to 201 who
answers the call:
[Jan 8 16:20:45] -- Started music on hold, class 'default', on IAX2/
pabx-canall-16384
[Jan 8 16:20:51] -- Executing [201 at default:1] Answer("SIP/
200-081fac90", "") in new stack
[Jan 8 16:20:51] -- Executing [201 at default:2] MixMonitor("SIP/
200-081fac90", "200-2008-01-08-16-20-51-201.wav") in new stack
[Jan 8 16:20:51] -- Executing [201 at default:3] Dial("SIP/200-081fac90",
"SIP/201|60|tT") in new stack
[Jan 8 16:20:51] -- Called 201
[Jan 8 16:20:51] == Begin MixMonitor Recording SIP/200-081fac90
[Jan 8 16:20:51] -- SIP/201-081edf80 is ringing
[Jan 8 16:20:54] -- SIP/201-081edf80 answered SIP/200-081fac90
4) The operator says "here's your call" to 201 and presses Transfer on
the phone once more. The call is transferred correctly, but:
[Jan 8 16:20:57] -- Stopped music on hold on IAX2/pabx-canall-16384
[Jan 8 16:20:57] == Spawn extension (default, 021047020, 3) exited non-
zero on 'SIP/200-081d8740'
[Jan 8 16:20:57] == End MixMonitor Recording SIP/200-081d8740
[Jan 8 16:20:57] == End MixMonitor Recording SIP/200-081fac90
Notice that all the MixMonitor processes stopped!
5) 201 finally hangs up the phone:
[Jan 8 16:21:45] == Spawn extension (default, 201, 3) exited non-zero
on 'IAX2/pabx-canall-16384'
[Jan 8 16:21:45] -- Hungup 'IAX2/pabx-canall-16384'
So, all the audio regarding the important part -- the call to the PSTN
itself -- is simply lost.
I noticed that if I use Asterisk's built-in transfer features (atxfer,
blindxfer) everything works fine. Too bad the users are so used to
that Transfer button. I tried it using FXS channels and the FLASH
button on the phone, same results.
Is there any workaround for this? I'm running these from a separate
box so any procediment you guys could suggest will be tried as it is
not in production. I'm also willing to give you any information needed.
Thanks in advance.
Att
Vinícius Fontes
Desenvolvimento
Canall Tecnologia em Comunicações
More information about the asterisk-dev
mailing list