Help with remote control add response

More
8 months 1 day ago #162807 by jsibley
jsibley created the topic: Help with remote control add response
Hi,

I have some questions about using add_response.

First, is SGQA still the only or best way to identify questions when using remote control and, specifically, add_response?

Second, is the subquestion code, what shows as qid, with the question code as the parent_qid? In the example given at manual.limesurvey.org/SGQA_identifier/en...Array_question_types , the subquestion code is "ber1", while my "qid" is a number.

Third, if I am using an array with answer options that are on a scale of 1 to 5, is the actual response simply the number from 1 to 5?

Many thanks!

Please Log in or Create an account to join the conversation.

More
8 months 1 day ago #162808 by jsibley
jsibley replied the topic: Help with remote control add response
I forgot to add to my questions:

If it is a token-based survey, where does the token information go in the add_response request? I haven't seen that documented (and sorry if I missed that).

Please Log in or Create an account to join the conversation.

More
8 months 18 hours ago - 8 months 18 hours ago #162815 by tpartner
tpartner replied the topic: Help with remote control add response
1) You must use the SGQ, not the question code to identify the questions. It is the column name in the database.

2) Sub-questions are identified by their code (also in the column name). So, a sub-question identifier might look like:
11111X222X333SQ001

3) Answers are identified by their codes. So, if your codes are simple numerics, yes, otherwise they would be something like "A1".

4) The token can be included in the $aResponseData array as seen below.

Here is a quick example using JSON-RPC that will set 3 rows of an array to 2, 5 and 3 respectively and then update the token as "Completed":

<?php
 
	require_once 'jsonRPCClient.php';
 
	define( 'LS_BASEURL', 'http://pathTo/limeSurvey/');  
	define( 'LS_USER', 'username' );
	define( 'LS_PASSWORD', 'password' );
 
	$iSurveyID = 11111;
	$group1ID = 222;
	$question1ID = 333;
	$question1SGQ = $iSurveyID.'X'.$group1ID.'X'.$question1ID;
	$token = 'asdf';
 
 
	if(ctype_alnum($iSurveyID) && (strlen($iSurveyID) == 5 || strlen($iSurveyID) == 6)) { // Valid SID format
 
		// Instantiate a new RPC client
		$myJSONRPCClient = new jsonRPCClient( LS_BASEURL.'/index.php/admin/remotecontrol' );
 
		// Get a session key
		$sSessionKey= $myJSONRPCClient->get_session_key( LS_USER, LS_PASSWORD );
 
		if(is_array($sSessionKey)) { // Invalid session
			echo $sSessionKey['status'];
		}
		else if($sSessionKey) { // Valid session			
 
			// Get token properties (to check if already used)
			$aTokenQueryProperties = array('token'=>$token);
			$aTokenProperties = array('email', 'firstname', 'lastname', 'token', 'tid', 'completed');
			$participantProperties = $myJSONRPCClient->get_participant_properties( $sSessionKey, $iSurveyID, $aTokenQueryProperties, $aTokenProperties);
 
			if($participantProperties['completed'] != 'N') { // Token already used
				echo 'This token has already been used!';
			}
			else { // Token not used
 
				// Set a new response
				$aResponseData = array('token'=>$token, $question1SGQ.'SQ001'=>2, $question1SGQ.'SQ002'=>5, $question1SGQ.'SQ003'=>3);
				$newResponse = $myJSONRPCClient->add_response($sSessionKey, $iSurveyID, $aResponseData);
 
				// Set the token as "used"
				$aTokenData = array('completed'=>date('Y-m-d h:m'), 'usesleft'=>0);
				$newTokenProperties = $myJSONRPCClient->set_participant_properties($sSessionKey, $iSurveyID, $aTokenQueryProperties, $aTokenData);
			}
		}
 
		// Release the session key
		$myJSONRPCClient->release_session_key( $sSessionKey );
	}
	else { // Invalid SID format
		die( 'Invalid format!' );
	}
 
?>

Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Last Edit: 8 months 18 hours ago by tpartner.
The following user(s) said Thank You: LouisGac, jsibley

Please Log in or Create an account to join the conversation.

More
7 months 4 weeks ago #162934 by jsibley
jsibley replied the topic: Help with remote control add response
That is incredibly helpful. Thank you!

Please Log in or Create an account to join the conversation.

More
2 weeks 2 days ago - 2 weeks 2 days ago #173494 by afocal
afocal replied the topic: Help with remote control add response
Thank you so much. Could you explain too: what is 'seed', and how can we generate it or get it, in order to set it in the add_response request? Because when using remote control api, 'seed' is not set with your example...

Should we use this code?
function setSeed($surveyid)
{
 
    if (isset($_SESSION['survey_'.$surveyid]['srid'])) {
        $oResponse = \Response::model($surveyid)->findByPk($_SESSION['survey_'.$surveyid]['srid']);
        $seed = $oResponse->seed;
    } else {
        $seed = mt_rand();
        $_SESSION['survey_'.$surveyid]['startingValues']['seed'] = $seed;
 
    }
	return($seed); 
}
 
$aResponseData = array("seed" => setSeed(123456), ...
 
Last Edit: 2 weeks 2 days ago by afocal.

Please Log in or Create an account to join the conversation.

More
2 weeks 2 days ago #173501 by Joffm
Joffm replied the topic: Help with remote control add response
Hi,
"seed" is the "initial value of randomization".

Because you do not run the survey, but enter the response data, this value is irrelevant.
Nice to see, but more or less useless.
Not necessary to generate or enter in the answer table.

Something to read about it:
https://en.wikipedia.org/wiki/Random_seed

https://stackoverflow.com/questions/14914595/what-is-a-seed-in-terms-of-generating-a-random-number

Best regards
Joffm


Volunteers are not paid.
Not because they are worthless, but because they are priceless
The following user(s) said Thank You: tpartner

Please Log in or Create an account to join the conversation.

More
2 weeks 1 day ago - 2 weeks 1 day ago #173523 by afocal
afocal replied the topic: Help with remote control add response
Thank you. We use Limesurvey in order to record and analyse data from some html / php survey which don't use the Limesurvey Interface / ergonomy. For us, that is easier / faster than study an umpteenth templates / themes system... We don't need to identify users (anonym surveys). So, thousands users will participate to our surveys (thus we 'run the survey'), and we are going to use 'tokens' in order to prevent from duplicated answers. Therefore, do you confirm me that 'seeds' are not relevant for us? Is it only a technical data for developpers of Limesurevey's team?
Last Edit: 2 weeks 1 day ago by afocal.

Please Log in or Create an account to join the conversation.

More
2 weeks 1 day ago #173563 by jelo
jelo replied the topic: Help with remote control add response

Joffm wrote: "seed" is the "initial value of randomization".

Are you aware of a explanation of the exact purpose in LS3?

I only found this in the release notes:

New feature: Store random seed with each response, making it possible to render the exact same order of questions and groups when respondent loads survey.


Are you a student conducting a survey? If yes, tell me why you use LimeSurvey?
www.limesurvey.org/forum/development/116...y-you-use-limesurvey
The following user(s) said Thank You: DenisChenu

Please Log in or Create an account to join the conversation.

More
2 weeks 1 day ago #173568 by tpartner
tpartner replied the topic: Help with remote control add response
@afocal, to answer your question: yes, if you are loading data via the API, you can ignore the seed.

Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.

Please Log in or Create an account to join the conversation.

More
2 weeks 1 day ago #173572 by afocal
afocal replied the topic: Help with remote control add response
Thank you!

Please Log in or Create an account to join the conversation.

Start now!

Just create your account and start using Limesurvey today.

Register now
Join our Newsletter!