Open Source Training Seminar FreePBX Paid Support

Ticket #1119 (closed Bugs: fixed)

Opened 2 years ago

Last modified 2 years ago

Transferring a queue-originated call to another extension bypasses voicemail

Reported by: vocalnet Assigned to: RobThomas
Priority: major Milestone:
Component: Queues Version: 2.2 branch
Keywords: Cc:
Confirmation: SVN Revision (if applicable):
Backend Engine: All Backend Engine Version:

Description

Greetings...

One of our customers is reporting a problem when transferring calls. All of their calls come in via queue, and when the call needs to be transferred to another extension, the call never goes to voicemail. I think the problem is in extensions.conf around macro-exten-vm,dolocaldial,1 -- this is getting called from a GotoIf? in the s exten, which probably serves a particularly important purpose yet doesn't work well in this particular place.

I've implemented a quick extensions_custom.conf workaround, but can't think of a good way to fix this in extensions.conf.

Here's what the console says. Thanks! -rt

    -- Executing Set("SIP/xxx.xxx.xxx.35-b69f71e8", "FROM_DID=1npanxxxx20") in new stack
    -- Executing Goto("SIP/xxx.xxx.xxx.35-b69f71e8", "ext-queues|505|1") in new stack
    -- Goto (ext-queues,505,1)
    -- Executing Answer("SIP/xxx.xxx.xxx.35-b69f71e8", "") in new stack
    -- Executing GotoIf("SIP/xxx.xxx.xxx.35-b69f71e8", "0?USERCID:SETCID") in new stack
    -- Goto (ext-queues,505,4)
    -- Executing Set("SIP/xxx.xxx.xxx.35-b69f71e8", "CALLERID(name)=Test:ISP Direct") in new stack
    -- Executing Set("SIP/xxx.xxx.xxx.35-b69f71e8", "MONITOR_FILENAME=/var/spool/asterisk/monitor/q505-20060914-084949-1158238189.89897") in new stack
    -- Executing Queue("SIP/xxx.xxx.xxx.35-b69f71e8", "505|t||") in new stack
    -- Started music on hold, class 'default', on SIP/xxx.xxx.xxx.35-b69f71e8
    -- Called Local/20@from-internal/n
    -- Executing Macro("Local/20@from-internal-783c,2", "exten-vm|20|20") in new stack
    -- Executing Macro("Local/20@from-internal-783c,2", "user-callerid") in new stack
    -- Executing GotoIf("Local/20@from-internal-783c,2", "1?report") in new stack
    -- Goto (macro-user-callerid,s,9)
    -- Executing NoOp("Local/20@from-internal-783c,2", "Using CallerID "Test:ISP Direct" <npanxxxx00>") in new stack
    -- Executing Set("Local/20@from-internal-783c,2", "FROMCONTEXT=exten-vm") in new stack
    -- Executing Set("Local/20@from-internal-783c,2", "VMBOX=20") in new stack
    -- Executing Set("Local/20@from-internal-783c,2", "EXTTOCALL=20") in new stack
    -- Executing Set("Local/20@from-internal-783c,2", "CFUEXT=") in new stack
    -- Executing Set("Local/20@from-internal-783c,2", "RT=15") in new stack
    -- Executing Macro("Local/20@from-internal-783c,2", "record-enable|20|IN") in new stack
    -- Executing GotoIf("Local/20@from-internal-783c,2", "0 > 0?2:4") in new stack
    -- Goto (macro-record-enable,s,4)
    -- Executing AGI("Local/20@from-internal-783c,2", "recordingcheck|20060914-084949|1158238189.89899") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/recordingcheck
  recordingcheck|20060914-084949|1158238189.89899: Inbound recording not enabled
    -- AGI Script recordingcheck completed, returning 0
    -- Executing NoOp("Local/20@from-internal-783c,2", "No recording needed") in new stack
    -- Executing GotoIf("Local/20@from-internal-783c,2", "1?dolocaldial|1") in new stack
    -- Goto (macro-exten-vm,dolocaldial,1)
    -- Executing Macro("Local/20@from-internal-783c,2", "dial||trwW|20") in new stack
    -- Executing AGI("Local/20@from-internal-783c,2", "dialparties.agi") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/dialparties.agi
  dialparties.agi: Starting New Dialparties.agi
    --  dialparties.agi: priority is 1
  dialparties.agi: Caller ID name is 'Test:ISP Direct' number is 'npanxxxx00'
  dialparties.agi: Methodology of ring is  'none'
    --  dialparties.agi: Added extension 20 to extension map
    --  dialparties.agi: Extension 20 cf is disabled
    --  dialparties.agi: Extension 20 do not disturb is disabled
  == Parsing '/etc/asterisk/manager.conf': Found
  == Parsing '/etc/asterisk/manager_additional.conf': Found
  == Parsing '/etc/asterisk/manager_custom.conf': Found
  == Manager 'admin' logged on from 127.0.0.1
  == Manager 'admin' logged off from 127.0.0.1
    --  dialparties.agi: Checking CW and CFB status for extension 20
    --  dialparties.agi: DbSet CALLTRACE/20 to npanxxxx00
    -- AGI Script dialparties.agi completed, returning 0
    -- Executing Dial("Local/20@from-internal-783c,2", "SIP/20||trwW") in new stack
    -- Called 20
    -- Local/20@from-internal-783c,1 is ringing
    -- SIP/20-094dd900 is ringing
    -- Playing 'vm-intro' (language 'en')
    -- SIP/20-094dd900 answered Local/20@from-internal-783c,2
    -- Local/20@from-internal-783c,1 answered SIP/xxx.xxx.xxx.35-b69f71e8
    -- Stopped music on hold on SIP/xxx.xxx.xxx.35-b69f71e8
    -- Started music on hold, class 'default', on Local/20@from-internal-783c,2
    -- Playing 'beep' (language 'en')
    -- Recording the message
    -- x=0, open writing:  /var/spool/asterisk/voicemail/default/304/tmp/RrheU4 format: wav49, 0x9466f78
    -- x=1, open writing:  /var/spool/asterisk/voicemail/default/304/tmp/RrheU4 format: wav, 0x94dc2f8
    -- Stopped music on hold on Local/20@from-internal-783c,2
  == Spawn extension (from-internal, 300, 0) exited non-zero on 'Local/20@from-internal-783c,2' in macro 'dial'
  == Spawn extension (from-internal, 300, 0) exited non-zero on 'Local/20@from-internal-783c,2' in macro 'exten-vm'
  == Spawn extension (from-internal, 300, 0) exited non-zero on 'Local/20@from-internal-783c,2'
    -- Executing Macro("Local/20@from-internal-783c,2", "exten-vm|300|300") in new stack
    -- Executing Macro("Local/20@from-internal-783c,2", "user-callerid") in new stack
    -- Executing GotoIf("Local/20@from-internal-783c,2", "1?report") in new stack
    -- Goto (macro-user-callerid,s,9)
    -- Executing NoOp("Local/20@from-internal-783c,2", "Using CallerID "Test:ISP Direct" <npanxxxx00>") in new stack
    -- Executing Set("Local/20@from-internal-783c,2", "FROMCONTEXT=exten-vm") in new stack
    -- Executing Set("Local/20@from-internal-783c,2", "VMBOX=300") in new stack
    -- Executing Set("Local/20@from-internal-783c,2", "EXTTOCALL=300") in new stack
    -- Executing Set("Local/20@from-internal-783c,2", "CFUEXT=") in new stack
    -- Executing Set("Local/20@from-internal-783c,2", "RT=15") in new stack
    -- Executing Macro("Local/20@from-internal-783c,2", "record-enable|300|IN") in new stack
    -- Executing GotoIf("Local/20@from-internal-783c,2", "15 > 0?2:4") in new stack
    -- Goto (macro-record-enable,s,2)
    -- Executing ResetCDR("Local/20@from-internal-783c,2", "w") in new stack
    -- Executing StopMonitor("Local/20@from-internal-783c,2", "") in new stack
    -- Executing AGI("Local/20@from-internal-783c,2", "recordingcheck|20060914-085000|1158238189.89899") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/recordingcheck
  recordingcheck|20060914-085000|1158238189.89899: Inbound recording not enabled
    -- AGI Script recordingcheck completed, returning 0
    -- Executing NoOp("Local/20@from-internal-783c,2", "No recording needed") in new stack
    -- Executing GotoIf("Local/20@from-internal-783c,2", "1?dolocaldial|1") in new stack
    -- Goto (macro-exten-vm,dolocaldial,1)
    -- Executing Macro("Local/20@from-internal-783c,2", "dial||trwW|300") in new stack
    -- Executing AGI("Local/20@from-internal-783c,2", "dialparties.agi") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/dialparties.agi
  dialparties.agi: Starting New Dialparties.agi
    --  dialparties.agi: priority is 1
  dialparties.agi: Caller ID name is 'Test:ISP Direct' number is 'npanxxxx00'
  dialparties.agi: Methodology of ring is  'none'
    --  dialparties.agi: Added extension 300 to extension map
    --  dialparties.agi: Extension 300 cf is disabled
    --  dialparties.agi: Extension 300 do not disturb is disabled
  == Parsing '/etc/asterisk/manager.conf': Found
  == Parsing '/etc/asterisk/manager_additional.conf': Found
  == Parsing '/etc/asterisk/manager_custom.conf': Found
  == Manager 'admin' logged on from 127.0.0.1
  == Manager 'admin' logged off from 127.0.0.1
    --  dialparties.agi: Checking CW and CFB status for extension 300
    --  dialparties.agi: DbSet CALLTRACE/300 to npanxxxx00
    -- AGI Script dialparties.agi completed, returning 0
    -- Executing Dial("Local/20@from-internal-783c,2", "SIP/300||trwW") in new stack
    -- Called 300
    -- SIP/300-094e36a8 is ringing
    -- User hung up
  == Spawn extension (macro-vm, s-NOANSWER, 2) exited non-zero on 'SIP/4.68.250.81-b6799800' in macro 'vm'
  == Spawn extension (macro-vm, s-NOANSWER, 2) exited non-zero on 'SIP/4.68.250.81-b6799800' in macro 'exten-vm'
  == Spawn extension (macro-vm, s-NOANSWER, 2) exited non-zero on 'SIP/4.68.250.81-b6799800'

Change History

09/15/06 04:24:32 changed by vgster

  • priority changed from 5 to 2.

09/15/06 20:09:33 changed by RobThomas

  • status changed from new to closed.
  • resolution set to invalid.

Did you notice you've set your call timeout to be 5 minutes? That's why it's not going to voicemail. Shorten it down a bit. -- Executing Macro("Local/20@from-internal-783c,2", "dial||trwW|300")

--Rob

09/18/06 06:23:37 changed by vocalnet

  • status changed from closed to reopened.
  • resolution deleted.

Actually, that'd be the extension. From extensions.conf:

; Use a Macro call such as the following:
;  Macro(dial,$DIAL_TIMER,$DIAL_OPTIONS,$EXT1,$EXT2,$EXT3,...)

So, whatever's calling macro-dial is leaving the dial-timer blank.

Re-opening ticket, as it was erroneously closed... -rt

09/26/06 03:39:02 changed by RobThomas

Indeed. I do apologise for leaping erroneously to that conclusion, especially as I was the one who changed the dial macro's parameters! However, this is the problem:

{{{ -- Executing Dial("Local/20@from-internal-783c,2", "SIP/300trwW") in new stack

-- Called 300 -- SIP/300-094e36a8 is ringing -- User hung up

}}}

There's _no_ timeout on the Dial string - this is correct. You don't want an Agent going to Voicemai. However, I'm confused as to how you got there whilst trying to do a transfer. Can you tell me exactly what the user is doing? (Eg, phone rings, they pick it up, push hold, dial the number, talk, push transfer)

--Rob

09/26/06 03:39:19 changed by RobThomas

  • owner set to RobThomas.
  • status changed from reopened to new.

09/26/06 06:53:01 changed by vocalnet

Here's the order of reproduction:

- Agent logs into queue dynamically

- External caller gets into the queue via either Inbound Route or IVR

- Call goes to the agent, who is using a SIP device (customer is using Cisco 7940s, we're using Polycom IP501s)

- Agent uses the phone's user interface to perform a transfer

I'm not 100% sure if it's a blind transfer or attended transfer, but I believe it happens either way. I'll double-check on it though, if necessary.

10/29/06 04:27:01 changed by Darkearth56

Simular problem is reported in ticket 1196

11/03/06 02:18:20 changed by Darkearth56

Have been looking at this and have found this so far

Stored in queues_additional.conf

would be somthing like the following

[14] announce-frequency=15 queue-callswaiting= queue-thankyou=custom/tamuch queue-thereare= queue-youarenext= retry=5 rtone=0 strategy=ringall timeout=15 music=default monitor-join=yes monitor-format= announce-holdtime=no context=ivr-6 eventmemberstatusoff=Yes eventwhencalled=no joinempty=Yes leavewhenempty=no maxlen=0 member=Local/202@from-internal/n,0 wrapuptime=0

If i change the member=Local/202@from-internal/n,0 to member=SIP/202,0

so the whole config for queue 14 looks like

[14] announce-frequency=15 queue-callswaiting= queue-thankyou=custom/tamuch queue-thereare= queue-youarenext= retry=5 rtone=0 strategy=ringall timeout=15 music=default monitor-join=yes monitor-format= announce-holdtime=no context=ivr-6 eventmemberstatusoff=Yes eventwhencalled=no joinempty=Yes leavewhenempty=no maxlen=0 member=SIP/202,0 wrapuptime=0

it works as expected and also the call pickup also works I dont know if it will break anything else.

11/04/06 19:39:38 changed by RobThomas

  • status changed from new to assigned.
  • version changed from 2.1 to 2.2 branch.
  • component changed from Core to Queues Module.

Sigh. This is getting quite complex. Need to build a lab of enough phones to debug this properly. Probably after 2.2's out.

11/05/06 00:24:52 changed by Darkearth56

Just a followup

Tested this in a live environment for 6 Hours with the following phones

aastra 480i Grandstream GXP200 Ploycom IP500

Plus link sys pap 2 box

All worked ok if I changed the config back to Local/202@from-internal/n,0

Then calls trasfered from a queue will just ring and ring and ring then hangup

11/05/06 18:46:36 changed by gregmac

#1196 marked as duplicate. There was discussion on that report as well that is relevant

11/21/06 19:34:23 changed by p_lindheimer

  • priority changed from crash to major.
  • status changed from assigned to closed.
  • resolution set to worksforme.

I just tested this and it appears to be working fine, agent answered phone and transfered the call to another extension where it rang as appropriate and then went to voicemail.

I'll close this bug but if there really is something going on still then please re-open with more information. I don't want to be too trigger happy.

11/22/06 05:49:35 changed by vocalnet

Which version was this fixed in? Just curious.

Thanks! -rt

11/23/06 01:09:56 changed by Darkearth56

I was still having the same problem until this morning

I change my zapata.conf file and my zaptel.conf file

restarted the machine tested the calls from a queue and it works

Tim

11/24/06 00:36:27 changed by gregmac

  • status changed from closed to reopened.
  • resolution deleted.

11/24/06 09:26:10 changed by p_lindheimer

  • status changed from reopened to closed.
  • resolution set to fixed.
Donate



Support
Download
Develop
Forums
News
Documentation
Paid Support
About

Paid Ads