Walkthrough: Set-up Team Bulletin Board with Rotating Sponsor Message

In this walkthrough the caller will hear a sponsor message, input a fixed length number identifying their team, listen to their team leader's message with the option to leave a message.  The team leader will have the option to log in to change the team message at any time and will be notified when a team member has left a message. 

The Sponsor list will be incremented sequentially to determine the current Sponsor Number to use.  Each Sponsor will be set-up with a Mailbox record whose Mailbox # is set to the Sponsor Number, Type is Announcement and Greeting is the Sponsor's message.  Each Sponsor message will be played sequentially at the start of a call across all lines.

This Sample Application is available for download.  Use link at the end of this walkthrough to download and install sample application.

Walkthrough Overview

In this walkthrough, you will:

  1. Create Mailbox Records;
  2. Verify System Parameters;
  3. Create Notification Records;
  4. Create Audiotex Records/Modules and Associated Scripts.
  5. Define entry in the IVR Application List for the new custom IVR;
  6. Set Ports.

During this walkthrough, you will learn to do the following:

Prerequisites and Assumptions

Create Mailbox Records

Sponsor Mailboxes - For this walkthrough we will reserve Mailboxes 9900 thru 9999 for Sponsors.  The first Sponsor Number will be 9900 and 9905 as the last Sponsor Number.  There must be a sequentially numbered mailbox records set-up and used.  
For each Mailbox record, the Mailbox # will be equal to the Sponsor Number, the Type set to Announcement.  Each mailbox will have Settings UL3 (limit owner options to 3) and NGN (do not require mailbox name and greeting for first time login).  Add any other optional information as desired. 

Team Mailboxes - You can use any other Mailbox range for the Team mailboxes.  We will set-up 3 Team mailbox records with Mailbox #  1000, 1001, 1002.  As we want to give the Team member the option to leave a message, we will set the Type to Option to Leave Msg.

Administrator Mailbox - Keep Mailbox record 0000 with the default settings as CALLMaster requires it.  You should change the password for this record to maintain security.

If the mailbox owner wishes to receive email notification of messages or faxes received in their mailbox, enter their email address in the Email field.

Open the CALLMaster Manager. Click on Manage, then select Mailboxes.  Let's add the records in this walkthrough as follows:

Mailbox Records
Mailbox # Password Last Name Settings Email Type Notification Enabled Notify per Msg
1000 1000 Team 1000 UL3 Team1000@abc.com Option to Leave Msg Yes Yes
1001 1001 Team 1001 UL3 Team1001@cbc.com Option to Leave Msg    
1002 1002 Team 1002 UL3 Team1000@dcs.com Option to Leave Msg    
9900 9900 Sponsor 9900 UL3   Announcement    
9901 9901 Sponsor 9901 UL3   Announcement    
9902 9902 Sponsor 9902 UL3   Announcement    
9903 9903 Sponsor 9903 UL3   Announcement    
9904 9904 Sponsor 9904 UL3   Announcement    
9905 9905 Sponsor 9905 UL3   Announcement    

As the mailbox has Setting UL3, only the first 3 Set Personal Option Features will be available.  The changes made will take effect as soon as the owner logs out.

Verify System Parameters

As we are using Notification, we need to make sure that the System Parameters - Local Dialing Prefix, Long Distance Dialing Prefix, System's Area Code and System's Phone Number have the correct values for your environment.

Open the CALLMaster Manager. Click on Parameters, then select System.  Double click on each of the parameters mentioned above  to change their values as needed.  Remember, CALLMaster will use this information with the Notification data input below to make notification calls. See System Parameters for details.

For this walkthrough we will assume the following values:

Create Notification Records

As we have enabled the Notification On indicator for Mailboxes 1000, we need to create Notification record(s) for the mailbox.

Open the CALLMaster Manager. Click on Manage, then select Notification to add the records specified below.  For each record, set the Earliest Hour to Call, Latest Hour to Call, Days to Call and the Call Attempt Schedule as desired.  See Notification for details.

Notification Records
Mailbox # Record # Call Type Area Code Phone Number
1000 1 Human 914 1111111
1000 2 Human 914 2222222

Create Audiotex Records/Modules and Associated Scripts

As all calls will be starting in Audiotex mode in this walkthrough, the Audiotex Modules will determine the call flow.

In the Audiotex set-up, the caller will hear a Sponsor message.  There will be a sequential rotation thru the list of Sponsors, with each Sponsor having the ability to record their message at any time.

We will need to create several Audiotex records as shown below.  The Label field provides a brief description of each module.  

Audiotex Records 
Module ID Label Write Label
to Log File
Module
Action
Next Module ID Fail Module ID Response
Length
Script File to Run
(Must include full path name)
(c:\Program Files\CALLMaster\Scripts\SampleApp-TeamBulletinBoard\)
Touch Tone Table
1 2 3 4 5 6 7 8 9 0
10 Start call and Initialize values Yes Next Module 100 9900 0 InitializeVal.bas                    
100 Send caller to associated Sponsor Mailbox Yes Mailbox 1000 9900 0 GetSponsorNo.bas                    
1000 Get fixed length input (Mailbox #) from caller Yes Next Module 1100 9900 0 GetDTMF-FixLen.bas                    
1100 Press 1 to hear team information or 2 if you are a team leader Yes Touch Tone Table 9999 9900 1   2000 2100 1192 1192 1192 1192 1192 1192 1192 1192
1190 Number must be 4 digits  Yes Next Module 1191 9900 0 CheckTryCount.bas                    
1191 Try again. Yes Next Module 1000 9900 0                      
1192 Invalid input.  Yes Next Module 1193 9900 0 CheckTryCount.bas                    
1193 Try again. Yes Next Module 1100 9900 0                      
2000 Send team member to associated Mailbox to hear message Yes Mailbox 9998 9900 0 ReturnMailbox.bas                    
2100 Send team leader to associated Mailbox to log in Yes Login 9998 9900 0 ReturnMailbox.bas                    
9900 Call Failure Detected Yes Next Module 9999 9999 0 SetCallFailure.bas                    
9910 Caller Hang-up Detected Yes Next Module 9999 9999 0 SetCallerHangup.bas                    
9920 Maximum tries attempted Yes Next Module 9999 9999 0 SetMaxAttempts.bas                    
9998 Thank you for using the CALLMaster Team Bulletin Board Yes Next Module 9999 9999 0                      
9999 Last Module - End call Yes Last Module                            

Audiotex Module Description

Based on the Audiotex modules shown above, we will need 4 scripts as well as the Entry.bas script.  Let's make a Scripts sub-folder (Program Files\CALLMaster\Scripts\SampleApp-TeamBulletinBoard folder) to save the custom scripts.

Create the scripts first.  Open Notepad and create scripts following code examples below.  Remember to save them as .bas type files in the Program Files\CALLMaster\Scripts\SampleApp-TeamBulletinBoard folder. 

The Entry.bas script must be save in the root Program Files\CALLMaster\Scripts folder.

CALLBasic Script - Entry.bas Copy to Clipboard
Program
'*******************************************************************************************************************
'     Script:  Entry.bas
'     Function:  Runs at CALLMaster Service start-up.  Used to initialize global variables.
'*******************************************************************************************************************

     Print "CM Entry Script started on "
     PrintNL $today

     ' @intSponsorNo set to the first Sponsor Number
     @intSponsorNo = 9900

EndProgram

CALLBasic Script - InitializeVal.bas Copy to Clipboard
Program
'******************************************************************************************************************
'     Script:  InitializeVal.bas
'     Function:  This script is used to initialize values
'******************************************************************************************************************

     strYes = "Yes"
     strNo = "No"
     intYes = 1
     intNo = 0
     strCallFailure = strNo
     strCallerHangup = strNo
     strMaxAttempts = strNo
     intOne = 1

     ' Set retry counter and maximum attempts allowed
     intTryCount = 1
     intMaxAttemptsAllowed = 3

     ' Assign the starting and ending sponsor numbers
     intFirstSponsorNo = 9900
     intLastSponsorNo = 9905
     intCurrSponsorNo = 0

     ' Set intMaxInputLen to include maximum number allowed plus the termination digit
     intMBInputLen = 4

     ' Mailbox record values
     MBMatchExists = intNo
     MBDBOpen = intNo
     MB-intNewMsgCount = 0


     ' Set the module to return to if caller hangs up
     lctrap = 9910

     ' Convert system variable $channel from integer to string to be used in concatenated print statement.
     IntegerToString strchannel $channel

     pline = "***** For channel=" & strchannel
     pline = pline & " Started initialization process "
     PrintNL pline

EndProgram

CALLBasic Script - GetSponsorNo.bas Copy to Clipboard
Program
'*************************************************************************************************************************************
'     Script:  GetSponsorNo.bas
'     Function:  This script checks the value of global variable @intSponsorNo to create the current Sponsor ID.
'*************************************************************************************************************************************


     ' If the global variable @intSponsorNo is greater than the last Sponsor Number (intLastSponsorNo), reset the global variable @intSponsorNo to the first Sponsor No (intFirstSponsorNo); if not then it is incremented by 1.
     If @intSponsorNo = intLastSponsorNo Then
        @intSponsorNo = intFirstSponsorNo
     Else
        @intSponsorNo = @intSponsorNo + 1
     EndIf

     ' The local variable intCurrSponsorMBNo is set as the current Sponsor Number.
     intCurrSponsorMBNo = @intSponsorNo

     ' Convert local variable intCurrSponsorMBNo from integer to string to be used in concatenated print statement.
     IntegerToString strCurrSponsorMBNo intCurrSponsorMBNo
     pline = "***** For channel=" & strchannel
     pline = pline & " Caller sent to current Sponsor mailbox "
     pline = pline & strCurrSponsorMBNo
     PrintNL pline

     ' The Return command is used to send caller to the Sponsor's mailbox.
     Return intCurrSponsorMBNo

EndProgram

CALLBasic Script - GetDTMF-FixLen.bas Copy to Clipboard
Program
'*************************************************************************************************************
'     Script:  GetDTMF-FixLen.bas
'     Function:  This script gets a fixed length input from the caller. 
'*************************************************************************************************************

     '  Set up parameters for GetDTMF command
     strNoInput = ""
     strMBNoInput = ""
     tmask = ""
     ndigits = intMBInputLen
     timeout = 15

     GetDTMF strNoInput tmask ndigits timeout

     ' Get length of input
     StringLength intlen strNoInput

     pline = "***** For channel=" & strchannel
     pline = pline & " strNoInput entered is "
     pline = pline & strNoInput
     PrintNL pline

     ' Check caller input.  The caller must enter the number of digits defined by variable intMBInputLen.
     ' If valid input then save number entered

     If intlen <> intMBInputLen Then
        pline = "***** For channel=" & strchannel
        pline = pline & " Invalid strNoInput entered. Return to 1190 for error and retry"
        PrintNL pline
        Return 1190
     Else
        intTryCount = 0
        strMBNo = strNoInput
     EndIf

EndProgram

CALLBasic Script - CheckTryCount.bas Copy to Clipboard
Program
'******************************************************************************************************************
'     Script:  CheckTryCount.bas
'     Function:  This script checks the number of invalid input attempts. 
'******************************************************************************************************************

     '  If the caller has reached the maximum attempts allowed then the call is routed to module 9920. 
     '  If not then they are returned back to module 1000 to retry input based on Next Module ID.
     If intTryCount > intMaxAttemptsAllowed Then
        Return 9920
     Else
        intTryCount = intTryCount + 1
     EndIf

     ' Convert system variable intTryCount from integer to string to be used in concatenated print statement.
     IntegerToString strTryCount intTryCount

     pline = "***** For channel=" & strchannel
     pline = pline & " TryCount = "
     pline = pline & strTryCount
     PrintNL pline

EndProgram

CALLBasic Script - ReturnMailbox.bas Copy to Clipboard
Program
'************************************************************************************************************
'     Script:  ReturnMailbox.bas
'     Function:  This script uses the Return command with a variable. 
'                     When used with an Audiotex module whose Module Action is Mailbox,
'                     the caller will be forwarded to the mailbox whose value is in variable strMBNo.
'************************************************************************************************************

     Return strMBNo

EndProgram

CALLBasic Script - SetCallFailure.bas Copy to Clipboard
Program
'****************************************************************************************************************
'     Script:  SetCallFailure.bas
'     Function:  This script sets the strCallFailure variable to yes and prints information in the call log file.
'****************************************************************************************************************
 
     strCallFailure = strYes

     'Print information to log file for reference and debugging
     pline = "***** Call Failure. *****"
     PrintNL pline

EndProgram

CALLBasic Script - SetCallerHangup.bas Copy to Clipboard
Program
'******************************************************************************************************************
'     Script:  SetCallerHangup.bas
'     Function:  This script sets the strCallFailure variable to yes and prints information in the call log file. 
'*******************************************************************************************************************

     strCallerHangup = strYes

     'Print information to log file for reference and debugging
     pline = "***** Caller Hangup. *****"
     PrintNL pline

EndProgram

CALLBasic Script - SetMaxAttempts.bas Copy to Clipboard
Program
'*******************************************************************************************************************
'     Script:  SetMaxAttempts.bas
'     Function:  This script sets the strMaxAttempts variable to yes and prints information in the call log file. 
'*******************************************************************************************************************

     strMaxAttempts  = strYes

     'Print information to log file for reference and debugging
     pline = "***** For channel=" & strchannel
     pline = pline & "***** Maximum Attempts reached to enter valid input *****"
     PrintNL pline

EndProgram

Now you can create the Audiotex modules and reference the scripts above.  Open the CALLMaster Manager, click on Manage, then select Audiotex to add the Audiotex records shown above.

Define IVR Application List Entry

We need to define the custom IVR in the IVR Application List and set it to Audiotex Start Module 10.  Open CALLMaster Manager and select Manage | IVR Application List.  Let's add a new record as follows:

IVR Application List
Audiotex Start Module Application Name
10 Team Bulletin Board Sample

Set Ports

As a last step, we need set the port(s) to the new IVR Application entry created above.  Make sure the Audiotex Start Module field (read only) correctly points to module 10.

As this walkthrough uses Notification, make sure at least one port is enabled for Type Outbound; by default, all the ports are enabled for Inbound. Set the Port Greeting File IDs to the main greeting for all calls if you have recorded one.  If you do not want a main greeting then set the Greeting File IDs to zero. Leave all other fields to the default values.

If you are working with a demo license or have only one line connected, then make sure the connected port is set as specified below.  All other ports should be set to Application 'Disabled'.

Port Records
Port # Application Audiotex Start Module Port Type
Outbound
Port Greeting File IDs
(Morning, Afternoon, Evening, Closed, Holidays)
1 Team Bulletin Board Sample 10 No 0, 0, 0, 0, 0
2 Team Bulletin Board Sample 10 No 0, 0, 0, 0, 0
3 Team Bulletin Board Sample 10 Yes 0, 0, 0, 0, 0
4 Team Bulletin Board Sample 10 Yes 0, 0, 0, 0, 0

Test the custom application

Save all your work. 

Stop CALLMaster service.

Make Audiotex Recordings:

-  Set Port 1 to Application Voice Mail.

-  Start CALLMaster service.

-  Make a call using Port 1.

Log in as the Administrator using the Voice Mail Main Menu and make recordings for the Audiotex modules below.

Audiotex Module ID Proposed Recording
1000 Please enter your 4 digit team id.
1100 Press 1 to hear team information or 2 if you are a team leader
1190 Team ID must be 4 digits 
1191 Please try again
1192 Invalid input
1193 Please try again
9900 We are unable to process your call.  Please contact the system administrator for further assistance.
9920 You have reached the maximum attempts allowed for a valid input.  Please contact the system administrator for further assistance.
9998 Thank you for using the CALLMaster Team Bulletin Board

Tip: See Walkthrough: Change Application Without Restarting CALLMaster Service to set port to Voice Mail for ongoing recording changes.

Reset Port 1 to Application Audiotex.  Set the Port Greeting File IDs to zeros.

Stop and Start CALLMaster service.

Make a phone call to test the application.

Make Mailbox Greetings.

- The Team leader and Sponsor can call in to the system and use option 2 to record team messages and retrieve messages.

 

To download and install, see Sample Applications.