Scénarios : Petits codes entre amis

Bonsoir,

J’édite mon post (même s’il est vieux) car la fonction que j’avais trouvée ne fonctionnait plus correctement depuis une MAJ du core. La fonction fonctionnait toujours avec du « oui;non » classique mais pas avec autre chose comme par exemple « oui;non;déjà fait » comme choix de réponse.

Il faut ajouter maintenant cette ligne dans le code de la fonction : $cmd->setCache(‹ ask::answer ›, $options_cmd[‹ answer ›])

$name_variable = xxxx; // nom de la variable qui stockera la réponse
$time_limit = yy; // time out pour la réponse 
$cmd_ask = '#[zzzzzzz][zzzzzzzzzzz][Notification]#'; // nom de la commande
$scenario->setData($name_variable,'');
$options_cmd = array('title' => 'Un titre à la notif', 
							'message' => 'Un message ou question ? ', 
							'answer' => explode(';', 'Oui;Non'), 
							'timeout' => $time_limit, 
							'variable' =>$name_variable);
$cmd = cmd::byString($cmd_ask);
$cmd->setCache('ask::variable', $name_variable);
$cmd->setCache('ask::answer', $options_cmd['answer']);
$cmd->setCache('ask::endtime', strtotime('now') + $time_limit);
$cmd->execCmd($options_cmd);
$scenario->setLog('Notification envoyée. Maintenant on surveille le retour...');
$occurence = 0;
$value = '';
$txt_log='';
 while (true) 
       	{
		$dataStore = dataStore::byTypeLinkIdKey('scenario', -1, $name_variable);
		if (is_object($dataStore)) 
			{
				$value = $dataStore->getValue();
 			}                          
                $txt_log += '...'.$value ;
                if ($value != '') 
                       	{
                            	break;
                         }
                if ($occurence > $time_limit) 
                         {
                                break;
                         }
                $occurence++;
                 sleep(1);
         }
$scenario->setLog($txt_log);
if ($value == '') 
	{
		$value = 'Aucune réponse';
		$cmd->setCache('ask::variable', 'none');
		$dataStore = dataStore::byTypeLinkIdKey('scenario', -1, $name_variable);
		$dataStore->setValue($value);
		$dataStore->save();
         }

Trouvé dans ce post : Intérations dans scénario via un bloc code - depuis 4.3.X (6-8)?
A+

2 « J'aime »