Cisco Support Community
cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Community Member

Cascading Phone Notification UCCX 8.5(1)

I was curious if anyone has an example of an escalating/cascading phone notification script?  I know this can be done in Unity Connection much easier, however, my version of UCX currently contains 2 bugs which dial directly with notifications.  Therefore, I’m trying to provide a temporary solution using UCX until I get my UCX cluster upgraded.  The scenario is:

1.       Caller leaves a message (record prompt)

2.       Call sent to on-call cell 1 and the message is played

3.       User can press a button to “acknowledge the call”

4.       If caller does not acknowledge the call within x number of minutes:

             a.       Call sent to on-call cell 2 and the message is played

             b.      User can press a button to “acknowledge the call”

             c.       If caller does not acknowledge the call within x number of minutes:

                                                               i.      Call sent to on-call cell 3 and the message is played

                                                             ii.      User can press a button to “acknowledge the call”

                                                            iii.      If caller does not acknowledge the call within x number of minutes:

Just looking for an example.  I can modify to me needs.  Thanks for the help!

Thanks!

William

3 REPLIES
Community Member

Cascading Phone Notification UCCX 8.5(1)

I dont have an example, but would like to see one myself.

Question: would this need to have outbound dialing after a message is taken or would this be like a transfer situation with person on hold?

Re: Cascading Phone Notification UCCX 8.5(1)

This does not need outbound option, and therefore does not need Premium.  This uses the Place Call step.

Anthony Holloway

Please use the star ratings to help drive great content to the top of searches.

Anthony Holloway

Please use the star ratings to help drive great content to the top of searches.

Re: Cascading Phone Notification UCCX 8.5(1)

When you say "in X number of minutes" do you mean that the active call will be up that whole time?  Or did you mean, that the script will keep calling them back for X number of minutes, until the oncall person acks the call?  I think it's obvious that the voicemail answering on the on call cell will prevent an arbitrary length of waiting, so perhaps you did mean: call them, wait 5 seconds for them to acknowledge, and if they don't, call them back immediately.  If X minutes have expired trying to get an acknowledgement, then move to the next on call cell.  With that said, it's my opinion that calling back a quantity of times, versus a duration of time, is the better approach.

Anyway, here's some psuedo code to get you started.  It's bare bones, so make sure you add in the customer warm fuzzies and sanity checks.

Variables

Contact oncall_contact = null

String[] oncall_numbers = new String[] {"916125551212", "916125551313", "916121414"}

Iterator oncall_numbers_iter = com.cisco.util.EmptyIterator.iterator

String oncall_number = ""

Document recording = DOC[]

Prompt rec = P[rec.wav]

Prompt ack = P[ack.wav]

int oncall_retries = 0

int oncall_retry_limit = 3

Script

Start

/* Answer the call */

Accept (--Triggering Contact--)

/* To allow the caller to just hand up when finished recording, a la voicemail, catch hang up exception */

On Exception (ContactInactiveException) Goto Begin Cascade

/* Get a recording from the caller */

recording = Recording (--Triggering Contact--, rec, 30)

  Successful

    /* Hang up on the caller */

    Terminate (--Triggering Contact--)

  Unsuccessful

    /* Recording failed, play system problems */

    End

/* The caller has left a recording, time to start the cascade */

Begin Cascade:

/* Clear the hang up listener */

Clear Exception (ContactInactiveException)

/* If the call to the oncall number disconnects prematurely, see if we need to call it back */

On Exception (ContactInactiveException) Goto Check for Call Back

/* Setup the array iterator so we can go through the list of numbers */

Set oncall_numbers_iter = oncall_numbers.iterator

Get Next Cell Number:

/* Restart the retry counter for every oncall number */

Set oncall_retries = 0

/* If there is an oncall number to try, then try it, otherwise, we're done and no one answered */

If (oncall_numbers_iter.hasNext())

  True

    /* Store a reference to the current oncall number */

    Set oncall_number = oncall_number_iter.next()

    Make a Call:

    /* You'll need a valid CCG and CMG here in order to play media and capture DTMF */

    oncall_contact = Place Call (to oncall_number)

      Successful

        /* We were able to successfully call the oncall number and get an answer, let's ask for an ack */

        /* Set retires to 0, timeout to 5, and only enable option all keys for the ACK */

        Menu (oncall_contact, ack)

          Any Key - ACK

            /* If the call disconnects end the script, we're all done */

            On Exception (ContactInactiveException) Goto End of Script

            /* We have an ACK, play the message to this person and loop it indefinitely */

            Play Recording:

            Play Prompt (oncall_contact, recording + DP[1000])

            Goto Play Recording

          Timeout

            /* No ACK */

          Unsuccessful

            /* Wrong DTMF Key, how? */

        NoAnswer

          /* No answer in the timeout period, try again */

        Busy

          /* Cell was busy, try again */

        Invalid

          /* Oncall cell typed wrong, or no pattern in CUCM to match, no sense in trying again */

          Goto Get Next Cell Number

        NoResource

          /* System is too busy to process this call, delay 10 seconds and try again */

          Delay 10 sec

        Unsuccessful

          /* General UCCX failure, just give up */

          Goto End of Script

      Check for Call Back:

      /* Do we still have a retry left for this number? */

      If (++oncall_retries <= oncall_retry_limit)

        True

          /* Yes we do, retry the number */

          Goto Make a Call

        False

          /* No we don't, go to the next number */

          Goto Get Next Cell Number

  False

    Goto End of Script

End of Script:

End

Note that I use the cascading feature of the script to avoid some extra steps.  I.e., When the Menu times out on the ACK, it falls to the Cechk for Call Back label.

Again, this is puedo code to get you started.  It's not meant to be plug and play.  You'll need to test and tweak it.  I'll watch the thread if you have any questions or hang ups.  No pun intended.

EDIT: Code formatting because there was an issue with the rich text editor

Anthony Holloway

Please use the star ratings to help drive great content to the top of searches.

Anthony Holloway

Please use the star ratings to help drive great content to the top of searches.
420
Views
0
Helpful
3
Replies
CreatePlease to create content