Desktop User Guides > Professional > Interview scripting > Writing interview scripts > Interactive Voice Response interviews > Writing an IVR hand-off function > Passing information to the IVR system > Passing answers to IVR
 
Passing answers to IVR
You can pass responses to UNICOM Intelligence Interviewer - Server questions to IVR. You might do this if you want to save the answers to some of the screening questions in the IVR data or if you want the IVR questionnaire to follow different paths dependent on respondents’ characteristics. However, do not pass data that is not needed in the IVR interview as this just wastes time. If you want to analyze the UNICOM Intelligence Interviewer - Server and IVR data together you can merge the two datasets once interviewing is over.
Because the respondent answers the IVR questions using the keys on the telephone handset, most questions in an IVR questionnaire have to be answered using the digits 0 to 9. This restriction affects which responses you can pass from UNICOM Intelligence Interviewer - Server, because you have to be able to set up a suitable question in the IVR questionnaire to receive the UNICOM Intelligence Interviewer - Server data. It means that you can pass numeric (integer) and single categorical responses but not real or open-ended data. To pass multiple-choice categorical data you have to convert it to single-choice format first.
The most important thing about passing data from UNICOM Intelligence Interviewer - Server to IVR is the number of digits in a response or response code. IVR is not concerned with whether the digits are numeric values or response positions in a list. Instead, it is concerned with whether a question can be answered by a single digit, by a fixed number of digits, or by a variable number of digits. Examples of UNICOM Intelligence Interviewer - Server response lists that result in a single digit being passed to IVR are as follows:
long [1..9]
categorical [1..1] with up to ten responses (responses can be numbered from 0 depending on how you obtain their values).
An UNICOM Intelligence Interviewer - Server response list that results in a fixed number of digits being passed to IVR is:
long [18..99]
Examples of UNICOM Intelligence Interviewer - Server response lists that result in a variable number of digits being passed to IVR are as follows:
long [1..99]
categorical [1..1] with more than ten responses.
When passing data to IVR, you must pass the questions in the order they appear in the IVR questionnaire as the allocation of responses to questions is positional rather than by question name.
Numeric answers consisting of a fixed number of digits
When the answer to a question is always the same number of digits in UNICOM Intelligence Interviewer - Server, you can pass the answer to IVR by placing the question name in the DTMF string. For example, if the metadata contains:
Children "How many children do you have?" long [0..9]
the DTMF string would be:
DTMF = IOM.Children + "#"
This example (and others in this section) assumes that the IVR system requires a # character to jump to the first (or next) unanswered question in the script. Your system might require a different character or no character at all.
To be strictly correct, you should refer to answers as IOM.QuestionName.Response.Value, but because Response.Value is the default property, IOM.QuestionName is equivalent to IOM.QuestionName.Response.Value.
The IVR questionnaire must contain a blank Get Value command with the minimum and maximum number of digits set to the same value (1 in this example).
You can pass lists of answers in the same way. For example, if the metadata is:
Age "And how old are you now?" long [18 .. 99];
Children "How many children do you have?" long [0 to 9]
you could pass these two answers to IVR by typing:
DTMF = IOM.Age + IOM.Children + "#"
If Age is defined in IVR as requiring two digits, the first two characters of the DTMF string will be assigned to the first blank question in the IVR questionnaire and the third character will be assigned to the second blank question.
Numeric answers with variable numbers of digits
If the number of digits in an answer might vary, you must send a symbol (#, for example) after each answer to mark the end of that answer. For example, suppose you want to pass the respondent serial number, and the respondent’s age (18+) to IVR. You would type:
DTMF = IOM.Info.RespondentID + "#" + IOM.Age + "#"
The respondent serial number can be anywhere between one and five digits long so you must send a terminating symbol such as # to mark the end of the serial number. Age is a numeric two-digit value, but because it comes at the end of the string it is followed by an end-of-DTMF # symbol.
Categorical answers
You cannot pass categorical values direct to the IVR system, but you can pass responses' positions in the response list (also known as their index) and IVR will recognize these as valid answers. If the question is defined as:
Prefer "Which flavor do you like best?" categorical [1..1]
{
Peach, Pineapple, Apricot, Raspberry
Mango, Vanilla, Banana, Blackcurrant, Rhubarb,
AppleBlackberry "Apple and Blackberry",
ForestFruits "Forest Fruits",
BlackCherry "Black Cherry",
OtherFlavor "Other" other
};
you can pass the answer to IVR by typing:
DTMF = IOM.Prefer.DefinedCategories().Find(IOM.Prefer) + "#"
Response indexing starts at 0 for the first response in the list, and there are more than ten responses in the list so the answer must be terminated by # in the DTMF string.
The IVR questionnaire must contain a blank Get Value or Get Response command to receive the categorical data. Use Get Response for ten or fewer responses and Get Value for more than ten responses.
See Creating an IVR script to receive UNICOM Intelligence Interviewer - Server data for further information about the Get Value and Get Response commands.
No answer, don't know, and refused in numeric response lists
Be careful if a numeric response list contains any of the special responses na, dk, or ref as these responses insert non-digits in the DTMF string, causing the IVR questionnaire to fail. It is therefore best to avoid these keywords in numeric responses lists if you can. If you cannot — for example, you want to allow respondents not to give their age — you should write some additional code to process the response before it is added to the DTMF string. For example:
Dim agestr
If IOM.Age.Response.Coded = {Refused} Then
agestr = "00"
Else
agestr = IOM.Age
End If
Later, when collecting the SQL data from IVR, you can convert 00 back to Refused.
You could expand this example to cater for other special responses simply by allocating a different code to each one.
All unanswered questions have a null value even if null is not defined as a valid response for the question. You must test your scripts thoroughly to ensure that you do not pass these values to IVR.
Pause symbols
When testing your UNICOM Intelligence Interviewer - Server script, you might find that you need to wait a few seconds after dialing the IVR system before passing information to it. You can achieve whatever delay you need by starting the DTMF string with a comma for a one-second pause or a dot/period for a five-second pause. You can use any combination of these characters to achieve the delay you want. The following example shows how to send a one-second pause followed by the respondent’s serial number, age and gender:
DTMF = "," + IOM.Info.RespondentID + "#" + IOM.Age + _
  IOM.Gender.DefinedCategories().Find(Gender) + "#"
See also
Passing information to the IVR system