In this article
Several CATI specific functions are available in the system to set or retrieve system data that is used to control the CATI interviewing process. The most common functions are:
GetSurveyChannel() - this is used if you are running a multimode project (CAPI, CATI, CAWI). It returns “Capi”, “Cawi” or “Cati”
Figure 1 - Using GetSurveyChannel Function
It is recommended that you always check for CATI as the survey channel even if the project is meant to be for CATI collection, in case the CAWI collection mode is required later.
Redo() - can be used together with SetErrorMessage to provide a redo-context sensitive error message (this can be defined per language).
Example:
Redo(‘q1’)
SetErrorMessage(LangIDs.en, 'Error Message')
GetExtendedStatus() and SetExtendedStatus() - The extended status types each have a corresponding numeric value (go to Survey Dispositions (Status Codes) for more information).
Note: The status list is also available for supervisors to view within the CATI Supervisor console (under Resources – Extended Status Codes).
GetExtendedStatus() will return the value of the current interview's extended status value (integer). If no value is set 0 will be returned.
A typical example of where this may be used is in the End block of a CATI interview. When an interviewer terminates the interview during an interview, the interview is immediately given a GetExtendedStatus() value of 6. The End block can then be used to react to this termination. In the example below, for interview terminations the type of termination is sub-classified by a termination question and then the interview is further allocated a new extended status value depending on the termination type:
Figure 2 - Using GetExtendedStatus function to classify the termination type
It is also possible to define the extended status value for an interview. This can be achieved using a script node. Here SetExtendedStatus(value) can be used to set the value of the extended status, where value is a valid integer extended status value between 1 and 120.
Figure 3 - Using a script node to set the Extended Status
The s1 (script node) contains: SetExtendedStatus(f('Dial_Outcome'));
Where Dial_Outcome is defined as a hidden question with precodes:
Figure 4 - Precode values are used to assign extended status codes
The initial contact screen that is used to record the call outcome of the call demonstrates the use of this function. Here we can see the Dial_Outcome question where the call outcome is recorded.
The precodes here correspond to the extended status code list within the CATI supervisor. Therefore the following script node is used to disposition the interview with a SetExtendedStatus() value corresponding to the precode for the selected category in the Dial_Outcome question.
The stop node will have a “No change” status
Figure 5 - Applying the “No change” status to a stop node when no other default status is applicable
GetCatiInterviewerID() - returns the ID corresponding to the CATI interviewer as defined by the ID column in the CATI interviewer list in the CATI supervisor. This function can be used to set (store) the interviewers unique ID to a hidden question in the survey.
Example:
f(‘Inter_ID’).set(GetCatiInterviewerId());
Note: If the variable “Inter_ID” is contained in a loop then the following should be used:
f(‘Inter_ID’,iter).set(GetCatiInterviewerId());
GetCatiInterviewerName() - returns the username of the current CATI Interviewer working on the interview. It can be captured to a hidden variable or displayed on screen.
Example, to display it on the screen:
Hi, my name is ^GetCatiInterviewerName()^, I am calling on behalf of...
Example, to set (store) the interviewers name to a hidden question in the survey named ‘Inter_Name’:
f(‘Inter_Name’).set(GetCatiInterviewerName());
Note: If the variable “Inter_Name” is contained in a loop then the following should be used:
f(‘Inter_Name’,iter).set(GetCatiInterviewerName());
GetCallAttemptCount() - this is used to return the number of call attempts made to this respondent. For example, if we want to stop calling a number after 5 unsuccessful attempts, we could write
Figure 6 - Disposition a call after 5 call attempts
Where the STOP node object is
Figure 7 - Applying an Extended Status using a stop node
In this case, the record will be given an Extended Status code 31, which is defined as “More than 5 attempts” in the Supervisor console.
Note: It is also possible to restrict the number of call attempts via scheduling rules. The advantage of this is that Supervisors can adjust the number of call attempts as a variable parameter on a project basis (go to Restricting Call Attempts with Scheduling Parameters for more information).
Other Useful CATI Functions
The following functions are also available. Refer to the separate Forsta Scripting documentation for details.
GetTelephoneNumber() and SetTelephoneNumber(value)
GetExtensionNumber() and SetExtensionNumber(value)
GetTimeZoneId() and SetTimeZoneId(value)
GetLastInterviewStart()
GetLastChannelID()
GetCatiAppointmentTime()
GetTotalAttempts()
GetTotalDuration()
GetCatiRespondentUrl()
AddToCatiBlacklist()