Integrating with external call management system

Hi

I am looking to integrate Asterisk with an external system (workflow) that will need to decide which user is to take the call based on previous history (Claim manager who handling case etc…)

I have set up a queue for incoming claims calls based on the choice made by the called via the automated attendant (1 for sales, 2 for claims etc…) I will be adding an IVR to get the customer to enter their policy or claim number or choose new claim.

I have added a CURL function to the dialplan to send a http post to tell the workflow system that a new call exists and have passed the choice from the AA (yet to get the IVR working) and I can pass back the queue or channel that I want to pass the call to. So far great.

The problem I have is the claim manager needs a few seconds to view the claim record before taking the call, so what I want to do is have the call on hold until the claim manager clicks on the accept call button and then have their phone ring.

What I am looking for is a way to either hold/unhold the call until the claim manager is ready or place it in a queue that has no members and when the claim manager is ready for the call take the call out of the queue and transfer it to their channel.

Do we think this is possible.

Thanks

Martyn

I have found a dirty solution which involves having a queue for the user and using PauseQueueMember and UnPauseQueueMember when the user is ready.

Obviously this wont work in the long run as we don’t want queues for each user unless we can avoid it.

So if anyone can think of a way of routing a call to a extn and having it on hold until we send a AMI command without using a queue it would be greatly appreciated.

Thanks

Martyn

Can you explain why calling Wait() before Queue() is not enough?

Because Wait() has no external trigger to continue, the time taken for the user to be ready to take the call will be different every time, based on he time it took them to open the task in the wf system, then review the claim history etc…

This needs to be interactive rather than just a fixed wait period.

Martyn

Hi You could look at using a macro on answer, this way the agent is called and the they hit a key to take the call similar to below.

[dial_user]
exten => _1XXX,1,Wait(0.2)
exten => _1XXX,n,Set(CALLERID(name)=${CALLERID(num)})
exten => _1XXX,n,Dial(SIP/${EXTEN},25,tTgM(accept))
exten => _1XXX,n,Noop(${MACRO_RESULT})
exten => _1XXX,n,Busy
exten => _1XXX,n,Hangup()
exten => h,1,Hangup()
[macro-accept]
exten => s,1,Wait(0.2)
exten => s,n,Playback(beep)
exten => s,n,Read(ACCEPT,beep,1,,1,6) ;adjust timing to suit
exten => s,n,Noop(PRESSED ${ACCEPT} .. ${READSTATUS})
exten => s,n,GotoIf($["${ACCEPT}" = "2" ] ?yes:no)
exten => s,n(no),SET(__MACRO_RESULT=CONTINUE)
exten => s,n(no),Wait(1)
exten => s,n(no),Hangup()
exten => s,n,Noop(NO PRESSED ${MACRO_RESULT})
exten => s,n,Goto(done)
exten => s,n(yes),Wait(0.2)
exten => s,n(yes),Noop(YES PRESSED)
exten => s,n(yes),Playback(beep)
exten => s,n(done),Noop(ALL Finsihed here)
exten => h,1,Noop(NO PRESSED ${MACRO_RESULT})
exten => h,n,SET(__MACRO_RESULT=CONTINUE)
exten => i,1,Noop(ALL Finsihed here)
exten => t,1,Noop(ALL Finsihed here)

[quote=“ianplain”]Hi You could look at using a macro on answer, this way the agent is called and the they hit a key to take the call similar to below.

[dial_user] exten => _1XXX,1,Wait(0.2) exten => _1XXX,n,Set(CALLERID(name)=${CALLERID(num)}) exten => _1XXX,n,Dial(SIP/${EXTEN},25,tTgM(accept)) exten => _1XXX,n,Noop(${MACRO_RESULT}) exten => _1XXX,n,Busy exten => _1XXX,n,Hangup() exten => h,1,Hangup() [macro-accept] exten => s,1,Wait(0.2) exten => s,n,Playback(beep) exten => s,n,Read(ACCEPT,beep,1,,1,6) ;adjust timing to suit exten => s,n,Noop(PRESSED ${ACCEPT} .. ${READSTATUS}) exten => s,n,GotoIf($["${ACCEPT}" = "2" ] ?yes:no) exten => s,n(no),SET(__MACRO_RESULT=CONTINUE) exten => s,n(no),Wait(1) exten => s,n(no),Hangup() exten => s,n,Noop(NO PRESSED ${MACRO_RESULT}) exten => s,n,Goto(done) exten => s,n(yes),Wait(0.2) exten => s,n(yes),Noop(YES PRESSED) exten => s,n(yes),Playback(beep) exten => s,n(done),Noop(ALL Finsihed here) exten => h,1,Noop(NO PRESSED ${MACRO_RESULT}) exten => h,n,SET(__MACRO_RESULT=CONTINUE) exten => i,1,Noop(ALL Finsihed here) exten => t,1,Noop(ALL Finsihed here) [/quote]
Thanks Ill take a look at that