Login to Queue from external phone

I login cellphone numbers to my queue using their interface as local@{cellphone_num}@queue-agents-dial
I’m using the manager QueueAdd command to add them to the queue,
so far everything is good, the queue send calls to my agents cell phone number from the queue-agents-dial context,
there is only one problem:
the queue does not recognize when the members are talking, and he send them more calls when they are already with a customer,
I read on the queue application that ringinuse=no is only supported for SIP devices,
I tried overcoming this by setting the interface as SIP/{trunk}/{cellphone_num} but the member status is invalid and not receiving calls at all from the queue.
I’m using asterisk 11.3, in the past, using asterisk 1.4 I was able to achieve this via agentCallbackLogin application which does not exists anymore.

Anyone has a solution for this?

I managed to solve this problem by pausing the agent when dialing him, and unpausing him when call ends, it seems to work pretty well, I would still like a cleaner solution, here is the dialplan if anyone interested:

exten => s,1,noop(new advice line call)
exten => s,n,Answer()
exten => s,n,Set(CHANNEL(language)=he)
exten => s,n,Agi(ivr_start.php,${FROM_DID},${UNIQUEID},${CALLERID(number)}) ;queue is dialed from here
exten => s,n(hangup),hangup

exten => h,1,noop(hang up advice line)
exten => h,n,gotoif($["${CDR(dstchannel)}" = “”]?skip_unpause)
exten => h,n,Set(AGENT_INTERFACE=${CUT(CDR(dstchannel),1)})
exten => h,n,noop(Unpause agent after answered call - ${AGENT_INTERFACE})
exten => h,n,UnpauseQueueMember(,${AGENT_INTERFACE})
exten => h,n(skip_unpause),noop()
exten => h,n,Agi(call_finish.php,${FROM_DID},${UNIQUEID},${CALLERID(number)},${EPOCH},${DIALSTATUS},${ANSWEREDTIME})

exten => _X.,1,noop(dialing agent: ${EXTEN})
exten => _X.,n,Set(AGENT_INTERFACE=Local/${EXTEN}@advice_line_agent_call)
exten => _X.,n,PauseQueueMember(,${AGENT_INTERFACE})
exten => _X.,n,Dial(SIP/sip-trunk-out/${EXTEN},15,eg)

exten => h,1,noop(agent call finished, unpause agent if call was not answered, Dial status: ${DIALSTATUS})
exten => h,n,gotoif($["${DIALSTATUS}"=“CANCEL”]?unpause:finish)
exten => h,n,noop(Unpause agent after not answered call - ${AGENT_INTERFACE})
exten => h,n(unpause),UnpauseQueueMember(,${AGENT_INTERFACE})
exten => h,n(finish),noop()