Details

    • Type: New Feature New Feature
    • Status: Closed
    • Severity: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Target Release Version/s: None
    • Component/s: Core/General
    • Labels:
      None
    • Mantis ID:
      509
    • Regression:
      No

      Description

      Allows ability to camp-on a caller with MOH, when the extension is busy. Caller can break out of camp-on by pressing 1 or 2. Drops back onto the dialplan with different priority. This is transferred from the ACD section.

                • ADDITIONAL INFORMATION ******

      Sample extensions.conf
      [macro-ext]
      ;
      ; Standard extension macro:
      ; $

      {ARG1} - Technology/Number
      ;
      exten => s,1,Dial(${ARG1}

      ,30|tr)
      exten => s,2,Voicemail(u$

      {MACRO_EXTEN})
      exten => s,102,Campon(${ARG1}) ; phone busy camp the caller on
      exten => s,103,Voicemail(b${MACRO_EXTEN}

      ) ; caller decides to leave voicemail by pressing 1
      exten => s,203,Directory(Default) ; caller decides to call another extension by pressing 2

      You have to record "campon" voice file to instruct the caller ie "extension in busy, press 1 for voicemail, 2 for directory, or hold the line to wait". A repeat voice file "campon-repeat" is used for subsequent instructions every 45 seconds (default). The default MOH used is "default". You can change these by adding to file:

      campon.conf
      [general]
      music => default
      recall => 30
      reponsetime => 5

      I'll upload some demo voice files for "campon.gsm" when I've finished splicing something together

      1. 0000509-app_campon.c
        22 kB
      2. 0000509-campon.conf
        0.2 kB
      3. 0000509-campon.gsm
        9 kB
      4. 0000509-Makefile.diff
        0.5 kB
      No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

        Hide
        Brian West added a comment -

        I think the only part of this thats needed is the try_calling portion of app_queue.c Its such a basic task thats all it does.. is loop, play file...try_calling.. loop, play file.. and so on.

        Show
        Brian West added a comment - I think the only part of this thats needed is the try_calling portion of app_queue.c Its such a basic task thats all it does.. is loop, play file...try_calling.. loop, play file.. and so on.
        Hide
        cypromis added a comment -

        it's fantastic. the queue stuff is much to complex for this and this just solved the non support part of my pbx system

        Show
        cypromis added a comment - it's fantastic. the queue stuff is much to complex for this and this just solved the non support part of my pbx system
        Hide
        pliew added a comment -

        I've just added a demo voice file for "campon.gsm". Its spliced together from various sources. Thanks to John Todd for some of his files. Make a copy of this for "campon-repeat.gsm". I've only allowed for the option of leaving voice mail.

        Show
        pliew added a comment - I've just added a demo voice file for "campon.gsm". Its spliced together from various sources. Thanks to John Todd for some of his files. Make a copy of this for "campon-repeat.gsm". I've only allowed for the option of leaving voice mail.
        Hide
        Brian West added a comment -

        An app for this is over kill but I have put this conf file example to show that this can be done in extension logic.

        exten => 765,1,SetVar(CALLEDEXTEN=$

        {EXTEN}

        )
        exten => 765,2,Dial(SIP/20,20,m)
        exten => 765,3,Goto(campon,camp,1)
        exten => 765,103,Goto(campon,camp,1)

        [campon]
        exten => camp,1,Answer
        exten => camp,2,Wait(1)
        exten => camp,3,Background(campon)
        exten => camp,4,Background(silence/3)
        exten => camp,5,WaitMusicOnHold(30)
        exten => camp,6,Goto(default,$

        {CALLEDEXTEN},1)

        exten => 1,1,Wait(1)
        exten => 1,2,VoiceMail(b${CALLEDEXTEN}

        )
        exten => 1,3,Hangup

        Show
        Brian West added a comment - An app for this is over kill but I have put this conf file example to show that this can be done in extension logic. exten => 765,1,SetVar(CALLEDEXTEN=$ {EXTEN} ) exten => 765,2,Dial(SIP/20,20,m) exten => 765,3,Goto(campon,camp,1) exten => 765,103,Goto(campon,camp,1) [campon] exten => camp,1,Answer exten => camp,2,Wait(1) exten => camp,3,Background(campon) exten => camp,4,Background(silence/3) exten => camp,5,WaitMusicOnHold(30) exten => camp,6,Goto(default,$ {CALLEDEXTEN},1) exten => 1,1,Wait(1) exten => 1,2,VoiceMail(b${CALLEDEXTEN} ) exten => 1,3,Hangup
        Hide
        Alec Davis added a comment -

        Keeping this closed as it's a feature, and a great one, but documenting here the direction forward should this be picked up again.

        The issue with the dialplan in ~4235 is that it doesn't keep the order of the callers, IE. Should the destination extension become free, a new caller beats a caller that's been campedon for 25 seconds.

        I've recently brought this up on IRC and the preffered method in trunk (post 1.8) would be to use new CCSS methods and events that are now available. Although CCSS calls back at the moment, an extension of CCSS would be to put an external caller into MOH and connect the parties when the destination extension becomes free.

        For Asterisk 1.8 and prior, it would still be useful to have this patch maintained using the dynamic queues that this originally introduced.

        Show
        Alec Davis added a comment - Keeping this closed as it's a feature, and a great one, but documenting here the direction forward should this be picked up again. The issue with the dialplan in ~4235 is that it doesn't keep the order of the callers, IE. Should the destination extension become free, a new caller beats a caller that's been campedon for 25 seconds. I've recently brought this up on IRC and the preffered method in trunk (post 1.8) would be to use new CCSS methods and events that are now available. Although CCSS calls back at the moment, an extension of CCSS would be to put an external caller into MOH and connect the parties when the destination extension becomes free. For Asterisk 1.8 and prior, it would still be useful to have this patch maintained using the dynamic queues that this originally introduced.

          People

          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: