AskiaDesign 5.4.9
This article summarises some of the new features available in AskiaDesign 5.4.9.
Query Web Service routing
We added a new routing Query a web service where the Web Service is called from the server and not from the browser – effectively hiding the call from the interviewee. The interface allows you to run different scripts depending on the success of the call and to manipulate and store the different parts of the response. We can manipulate XML or JSON response format directly using these AskiaScripts. If you want to know more about it, read the related blog post here.
Script Keywords
New Global keywords:
- CurrentHttpResponse- Returns the response of a query web service routing.
New HttpResponse Object properties and methods:
- Headers- Returns a dictionary with all the headers of the response.
- StatusCode- Returns the status code of the response as number.
- Body- Returns the body of the response as string.
New MethodResult Object properties:
- Success- Returns
True
when the operation succeed, otherwise it returnFalse
and chance is to have anErrorMessage
which indicates the reason of failure. - ErrorCode- Returns the code of failure. It's always
DK
when theSuccess
isTrue
, or when there is no error code provided by the API that throw the exception. - ErrorMessage- Returns the reason of failure. It's always empty when the
Success
isTrue
, and most of time non-empty when it'sFalse
New Variant basic type methods:
- LoadJSON()- Use the JSON string in argument to initialize the value of the variant.
- ToBoolean()- Converts whatever value is inside the variant to a Boolean.
- ToNumber()- Converts whatever value inside the variant to a number.
- ToDate()- Converts whatever value inside the variant to a date.
- ToString()- Converts whatever value inside the variant to a string.
- ToArray()- Converts whatever value is inside the variant to an array of variants.
- ToNumberArray()- Converts whatever value is inside the array to an array of numbers.
- ToStringArray()- Converts whatever value is inside the array to an array of strings.
- ToDictionary()- Converts whatever value is inside the variant to a dictionary.
- InnerTypeOf()- Returns the type of the basic value hold by the variant.
New Array Object methods:
- LoadJSON()- Use the JSON string in argument to initialize the value of the variant array.
- RemoveDuplicates()- Remove the duplicates values of the array.
New Dictionary Object properties and methods:
- Count- Returns the number of key/value pairs within the dictionary.
- Keys- Returns the list of sorted keys within the dictionary.
- Values- Returns the list of values within the dictionary.
- ContainsKey()- Indicates if the key exist in the dictionary.
- RemoveKey()- Remove the key/value pair associated with the specified key.
- Set()- Add or update the dictionary with the specified key and value.
- LoadXML()- Use the XML string in argument to set or reset all the dictionary keys.
- LoadJSON()- Use the JSON string in argument to initialize the value of the dictionary.
Default ADCs
In the screen generation options, we have added the possibility to set the default ADCs to use for numeric, open ended and date questions . . .
Open live survey
You can now open a live survey directly from design (File menu->Open live survey) without the need of usage of supervisor in order to apply modifications to a survey present in the CCA.
Note: To do this, you need to create a Module Design in the supervisor and allow the user to have multiple logins and in the restrictions of the user, allow the module Design.
Platform One - choose community
Whenever you add P1 questions to the survey, the system checks if the survey has already got some questions defined and associated to P1.
If no question has been defined, the system lets you choose from a list of predefined communities.
These communities are stored in the file defined in the options under File path for storing P1 communities.
Dynamic libraries
We have added some new functionalities to the dynamic libraries.
Text substitution
Use ## as a delimiter anywhere in your survey (including routings or screens) to have a text substitution:
##Keyword=value1;value2;..|Long message to display|option1;option2;option3|Short message to display##
This offers a text substitution - either an open edit or a combo box if you specify some possible values.
- Option:
closed => means the combo-box has a fixed list.
- Examples:
##ProductName|Please enter the name of the product you want to test##
##ProductType=beer;soda;wine;mineral water|Please enter the type of the product |closed|Type of product:##
Entering a list of responses
If you want to offer a list of responses, create a dummy response with the @@ delimiter:
@@Keyword|Long message to display|option1;option2;option3|Short message to display@@
- Option:
nologo=> means you should not enter a logo for the responses.
- Example:
@@Brand|Enter the list of brands|nologo|List of brands:@@
Uploading a resource
The resource must exist and you must use ~~ as a delimiter in the name
~~ Long message to display|extension1;extension12;extenstion3|Short message to display~~
- Example:
~~ Please upload a logo for the brand|bmp;jpg;png|Logo:~~
Conditional selection of questions / responses / routings
You can decide if a question / response / routing is going to be included depending on the entered settings.
You must use the && delimiter in the shortcut for the questions, in the caption of the response or in the commentary of a routing:
&&Setting1=Value1;Value2;...,Setting2=Value21;Value22;..&&
The object will be kept if Setting1 has any of the values indicated and if Setting2 has any of the values indicated.
If the Setting starts by # (as in #Setting1), the number of items in that setting will be taken in account - this lets you do something n function of the number of brands entered.
- Example:
&&TypeOfProduct=beer;wine,#Brands=2&&
Import a list of responses & corresponding entry codes from an external DB
The database must exist and you must use @@ as a delimiter in the name. Put the code in a response caption of your template.
@@List_items|Wizard_description|||database|connection string|SQL query@@
- Example:
@@brandlist|Insert list of brands|||database|Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Askia\Suite5490\BrandList.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES"|SELECT Brand,ID,Country FROM [Sheet1$] WHERE Country="##Country##" Order by Brand@@
Import a whole survey somewhere in a master template
The QEX file must exist and you must use ~~ as a delimiter in the name. Put the code in a long caption of a chapter in your master template.
~~Survey file|qex|Survey:|path of the qex file~~
- Example:
~~Survey file|qex|Survey:|C:\Askia\Suite5490\BrandTemplate.qex~~
Use ADO connection string with Fast finder (January 2019)
Up to now Fast finder only worked with a DSN (and ODBC database).
We have made sure you could now use ADO (so refer to any connection string including DSN).