Dysfonctionnement scénario Appels manqués

Bonjour,

J’ai un scénario qui me permet de recevoir des notifs télégram lorsque je loupe un appel et qu’il tombe dans les appels manqués Ce scénario fonctionnait bien, mais je viens de m’apercevoir par un concours de circonstance qu’il dysfonctionne car le numéro et l’heure du dernier appel sont erronés alors que dans le dashboard ces infos sont correctes.
Le scénario est déclenché toutes les 15mns et si je suis absent , le code me permet de m’envoyer le numéro du dernier appelant et l’heure de l’appel.
Voici le code :

$cmd  = cmd::byString("#[Technique][Livebox 4][Liste des appels manqués]#");
$value = $cmd->execCmd();
$heure=substr ( $value, 343, 18);
$scenario->setData("Dernier_appel_heure", $heure);
$numero=substr ( $value, 316, 14);
$scenario->setData("Dernier_appel_numero", $numero);

Le souci est que je me retrouve avec ceci où on voit bien que le n° est erroné et l’heure pareil :

] Exécution de la commande [Technique][Telegram_xxxxxxxx][Tous] avec comme option(s) : {"background":"0","title":"Appel telephonique en absence","message":"Notification appel en absence
Le numero 82 91 66<\/td>< a appele le boxL\">Sat 29 May 1"}

On voit que le n° et l’heure sont tronqués et remplacés par d’autres caractères.
Comme c’est un code que j’avais récupéré, je n’ai pas les compétences pour le corriger :frowning: est ce qu’il faut modifier les valeurs ¤value dans les parathèses suivantes le champ =substr ou cela n’a rien à voir?

Merci

Bonjour @lr3674

C’est bien le substr qui coupe l’heure et le numéro.

Depuis quelque temps, il y a dans le plugin, une commande qui contient le numéro et l’heure du dernier appel manqué:
Dernier appel manqué qu’il faut utiliser plutôt que Liste des appels manqués car celle ci est une table html avec des balises de formatage du texte.

Exemple de résultat de la commande Dernier appel manqué:
0553661154 le Ven. 04 Juin 10:44:26 de Oups. Durée: 3s

Les codes suivants devraient permettre de décomposer le numéro et l’heure comme dans votre scénario:
Version courte sans traitement des erreurs de format de la commande:

$cmd  = cmd::byString("#[Technique][Livebox 4][Dernier appel manqué]#");
$value = $cmd->execCmd();
$pos1 = strpos($value,' le '); // recherche ' le ' dans la valeur. ( ' le ' sépare le numero et la date )
$pos2 = strpos($value,' de '); // recherche ' de ' dans la valeur. ( ' de ' sépare la date de la suite du message )
$heure=substr ( $value, ($pos1+4), ($pos2 - $pos1 -4));
$scenario->setData("Dernier_appel_heure", $heure);
$numero=substr ( $value, 0, $pos1);
$scenario->setData("Dernier_appel_numero", $numero);

Version longue. Si la chaine est mal formatée, le dernier numéro sera — et la dernière heure aussi

$cmd  = cmd::byString("#[Technique][Livebox 4][Dernier appel manqué]#");
$value = $cmd->execCmd();
$pos1 = strpos($value,' le '); // recherche ' le ' dans la valeur. ( ' le ' sépare le numero et la date )
$pos2 = strpos($value,' de '); // recherche ' de ' dans la valeur. ( ' de ' sépare la date de la suite du message )
if($pos1 !== false) {
  $numero=substr ( $value, 0, $pos1);
  $scenario->setData("Dernier_appel_numero", $numero);
  if($pos2 !== false) {
    $heure=substr ( $value, ($pos1+4), ($pos2 - $pos1 -4));
    $scenario->setData("Dernier_appel_heure", $heure);
  }
  else {
    $scenario->setData("Dernier_appel_heure", '---');
  }
}
else {
  $scenario->setData("Dernier_appel_numero", '---');
  $scenario->setData("Dernier_appel_heure", '---');
}
3 « J'aime »

Merci @jpty pour ta réponse claire, rapide et efficace ! Maintenant tout refonctionne :slight_smile:

Pour les autres qui liront , n’hésitez pas à mettre son code dans un scénario si vous voulez être notifié des appels en absence :slight_smile:

1 « J'aime »

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.