Transfer from one queue to another

An external customer rings customer support who can then transfer the call to another department/queue which is 777.

With my current setup it’s the customer service agent who is put in the queue not the external caller:
exten => 777,1,Goto(14_day,s,1)

How do I put the external caller into the queue, thanks.

Please provide your dialplan, identify the channel technology, and, if SIP, indicate whether transfers are done with features.conf, SIP REFERs (some blind transfer implementations) or SIP REFER/Replaces (attended transfers and other blind transfers).

In /etc/asterisk/includes/internal_dial.conf
in the [internal] section there is: exten => 777,1,Goto(14_day,s,1)

Which when 777 is dialed by the customer service agent, the agent goes to the 14_day queue in /etc/asterisk/includes/campaigns.conf
[14_day]
exten => 2,1,Noop(pressed2)
same => n,Goto(14_day_callback,2,1)

exten => s,1,Answer()
same => n,Playback(ivr/retentions/retentions1)
same => n(loop),Queue(14_day,tT,30)
same => n,Background(ivr/retentions/retentions2)
same => n,Queue(14_day,tT,30)
same => n,Background(ivr/retentions/retentions2)
same => n,Queue(14_day,tT,30)
same => n,Background(ivr/retentions/retentions2)
same => n,Queue(14_day,tT,30)

same => n,Goto(14_day_callback,s,1)

[14_day_callback]
exten => s,1,Background(ivr/retentions/retentions3)
same => n,WaitExten(5)
same => n,Goto(14_day,s,loop)

exten => 2,1,Noop(pressed2)
same => n,System(/usr/bin/sendEmail -f email@email.com -u 14 Day CallBack Request From “${CALLERID(NUM)}” -m Can you call them back on “${CALLERID(NUM)}”)

same => n,PlayBack(ivr/ppi/we_will_call_you_soon)

We use SIP, I don’t know where the transfers are done, I’ve just taken over this from someone else who I can’t contact.
I just want to transfer the calling number to a queue, I thought this would be easy.

I’ve worked out that if we transfer via a soft phone that does a blind transfer which is what I want.

Transferring through a desk phone always does an attended transfer which isn’t what we want.

We’ll either use soft phones to blind transfer or I’ll look at configuring the desk phones for this.

I thought asterisk might have had a blind transfer feature that would override this.

SIP transfers are done in a way in which the PABX doesn’t know that there is a transfer until the transfer is completed. Some phones do blind transfers using the attended transfer process, but automatically connecting when the callee answers.

Asterisk can also do transfers by entering a code defined in /etc/asterisk/features.conf.

Thanks, still not working as required.

If I call a soft phone directly from a desk phone I get transferred to the 14_day queue which plays a message.
Console: Executing [777@internal:1] Goto(“SIP/240-0000f54e”, “14_day,s,1”) in new stack

If I call our customer services 0845 number I’m put into their customer_services queue but when they transfer me on their soft phone to 777 all I get is hold music not the 14_day queue message.
My number 240 is now an ip address:
Executing [777@internal:1] Goto(“SIP/ipaddress-0000f502”, “14_day,s,1”) in new stack

What’s going on?

Need the dialplan leading to the customer support phone, and the queue member definition for them. There may well be a local channel or an agent channel between them and the caller.

/etc/asterisk/includes/inbound.conf
exten => _448451234567,1,Goto(dundi-pass,${EXTEN},1)

/etc/asterisk/includes/dundi-local-ext.conf
exten => _448451234567,1,Goto(inbound_cust,s,1)

/etc/asterisk/includes/queues/inbound_cust.conf
[inbound_cust]
;Music to play to agents waiting
music=cs
;How long to try calling an agent for
timeout=10
;Retry failed agents after
retry=5
;Maximum length of the queue
maxlen=0
;Don’t ring people on the phone
ringinuse=no
;Thank you for waiting, announce position and estimated hold time
announce-frequency=90
;announce-holdtime=yes
;Strategy
strategy=leastrecent
;If an agent doesn’t answer when we call them, auto pause them
autopause=no
;Lets record the call once connected
monitor-type = MixMonitor
monitor-format = wav
;Service level stats
servicelevel = 120
periodic-announce= ivr/cs/thankyou_for_waiting

/etc/asterisk/includes/campaigns.conf
[inbound_cust]
;Answer call
exten => s,1,Answer()
exten => s,2,Wait(2)
;To increase the volume for our agents
exten => s,3,Set(VOLUME(RX)=3)
;exten => s,2,MixMonitor(inbound_cust/${STRFTIME(${EPOCH},%Y-%m-%d)}/${EXTEN}-${STRFTIME(${EPOCH},%Y%m%d-
exten => s,4,Set(MONITOR_FILENAME=inbound_cust/${STRFTIME(${EPOCH},%Y-%m-%d)}/${EXTEN}-${STRFTIME(${EPOCH},%Y%m%d-%H%M%S)}-${CALLERID(num)})
exten => s,5,Set(CDR(userfield)=${MONITOR_FILENAME})
exten => s,6,Set(CDR(accountcode)=inbound_cust)

;Bank Holiday
exten => s,7,GotoIfTime(00:00-23:59|*|25|aug?special,s,15)
exten => s,8,NoOp()

exten => s,9,Noop(“Calltimers_inbound_cust”)
exten => s,10,Noop(“Calltimers_inbound_cust”)
exten => s,11,Noop(“Calltimers_inbound_cust”)
exten => s,12,Noop(“Calltimers_inbound_cust”)

;exten => s,13,NoOp()

;Are we in or out of office
;Weekday hours
exten => s,13,GotoIfTime(09:00-19:00|mon-fri||?s,25)
;Saturday hours
exten => s,14,GotoIfTime(10:00-15:00|sat||?s,25)

;Didn’t match… must be out of hours
exten => s,15,Background(ivr/cs/shelby_ivr_ooh,italkfaults)
exten => s,16,Goto(italkfaults,s,1)
exten => s,17,Hangup()

;Snow day
exten => s,20,Background(ivr/cs/closed,italkfaults)
exten => s,21,Goto(italkfaults,s,1)

exten => s,23,Background(ivr/cs/italk_IVR_HappyNY,italkfaults)
exten => s,24,Goto(italkfaults,s,1)

;IVR Welcome
exten => s,25,Background(ivr/cs/shelby_ivr_2013,m)
exten => s,26,Wait(1)
exten => s,27,Queue(inbound_cust,newbeep)

exten => s,30,Background(ivr/cs/shelby_ivr_ooh)
exten => s,31,Goto(italkfaults,s,1)
exten => s,32,Hangup()

exten => s,33,Hangup()
exten => s,33,Hangup()

;Results

;Playagain
exten => 3,1,Goto(s,13)

;press 2 for faults
exten => 2,1,Goto(italkfaults,s,1)

Lastly in /etc/asterisk/includes/internal_dial.conf
[internal]
exten => 777,1,Goto(14_day,s,1)

which then is supposed to go to the 14_day queue, this happens when customer service agent is directly dialled but not when first in customer_services queue, just hear holding music.

Does no one know the answer to this???

I just want a caller to ring one queue where an agent answers and then pass that caller into another queue!

I thought this would be simple to do but ti seems not, please can somebody help me here thanks.

According to the information provided, your customer support queues have no members. That is clearly wrong and indicates you haven’t provided all the necessary information.

Also, explicitly numbering priorities is rarely done today, which suggest you may have a very old version of Asterisk. I can’t find any mention of the version.

Where local channels or agents are involved, some of the details of the masquerading process that underlies doing a transfer are quite tricky, and I don’t want to have to trawl the code unless I know exactly which case I’m considering.

Thank you David for responding.
When our agents login to our CRM, they are automatically in the customer services (inbound_cust) queue.
This is programmed in astman classes which has the queue and answer/transfer controls embedded on the CRM, which makes calls through X-Lite.
I know numbering isn’t used now, but this is an old script written by someone else. I’ve noticed the version is 1.6.
I am reluctant to do such a big upgrade in case it affects existing working operations.

Like I said, if the agent is called directly inhouse from say extension 272 to 3004 they can transfer to the other queue no problem.
But a call comes externally into the customer services queue, if the agents answers then transfers, doesn’t work.

Thank you.

How are the agents made members. Are they added directly, or or they done as an agent., or via a local channel. If as an agent, are they call back agents or always connected agents.

If, for example, there is a local channel involved as typically recommended as a replacement for the, deprecated, call back agent functionality, the transfer will be directed at the local channel not the original caller. However, there is special code that re-targets masquerades on local channels… Understanding that is a bit difficult, and I won’t even consider trying unless I am certain that is the case in question.