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+