Hi,

I am trying to implement the callback feature of our old phone system. This feature may go by a different name in asterisk?

It worked as follows. If phone A called phone B and it was BUSY, you press a button to enable a callback.
User A is free to continue work or make other calls.
What this meant is that when both phones became free, phone A would ring, on answer it would call phone B automatically.

Here is how I have tried to achieve this with asterisk.

When A calls B and B is busy you get a menu, 1 to set callback and 2 to leave voicemail.
The set of the callback is done via AGI call to PHP script to set the details in MySQL DB.

On all call hangups I check to see if there is a pending Callback via another AGI script.
The script sets a couple of variables which I check in my Dialplan. If there is a callback pending for the
phone that just hung up, I need to check that the other phone involved  is FREE. This is what I can not get to work.

I have tried ChanIsAvail which does not appear to work.
I have hints setup for each SIP phone. Which would be perfect, however it does not appear that you can check the HINT STATE in the dialplan.
I have done plenty of googling and have found this http://bugs.digium.com/view.php?id=10635 which appears that this kind of functionality was placed in 1.4.11. (DEVICE_STATE(), EXTENSION_STATE())
I have 1.4.21.2 and do not have these features.

To continue with the rest of the feature. If the ChanIsAvail says all is good. I then launch another AGI to write a CALLFILE and remove the pending callback request from the DB.
This all works if A is not busy when B finishes their call etc.

I am sure that others have implemented this kind of feature. If you could share your implementation or give me some pointers or even the correct asterisk name so I can google and get the help I need, that would be great.
I am considering trying out 1.6 which should have these features, however not sure if stability is going to be a problem.

I have based my implantation based of a previous message to the list:

On Tue, Jun 10, 2008 at 5:34 PM, Phil Knighton <phil.knigh...@mjog.com> wrote:
> Hello
>
> I'm looking for a way to do the following using my Asterisk system and Snom
> SIP phones...
>
> Scenario:
>
> Caller on Internal Phone 1 calls internal phone2.  Phone 2 is busy (or more
> accurately goes straight to voicemail).
> Caller on internal phone 1 can press a button / dial a code (explained in
> next step) and hangup
> When phone 2 is free, phone 1 rings and on answer dials phone 2
>
> I was sure this was called "camping" - but all the camping stuff I can find,
> refers to the caller having to hang on the phone and wait.  Am I missing
> something?
>
> Anyone have a solution?
>
  

Quick solution that comes into mind:

Set(exten_copy = ${EXTEN});
Dial(SIP/${EXTEN})
if ("${DIALSTATUS}"="BUSY") {
  // prompt for camp
  Set(DB(camp/${EXTEN}/call_to)=${CALLERID(num));
}

h => {
  Set(call_to=${DB(camp/${exten_copy}/call_to)});
  if ("${call_to}"!="") {
    Set(DB(camp/${exten_copy}/call_to)=);
    System(call_to ${exten_copy} ${call_to});
  }
}

So, in case if phone2 is busy, store callerid of phone1 in database,
so when phone2 will hangup it will triger a script "call_to" which
however can originate call trough manager or call-file.

Of course you will need some additional handling in case if multiple
callers decide to camp, or diferent protocols are used, etc.

Regards,
Atis
 

Thanks in Advance for any help.

Regards

Daniel Johnson
Systems Administrator / Systems Development
Scanning Systems Australia

Scanning Systems Australia

Office: +61 7 3387 5555
Facsimile: +61 7 3387 5588
E-mail: da...@scanningsystems.com.au
Website: http://www.scanningsystems.com.au

_______________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

Reply via email to