Une fonction envoyer_sms plus souple encore : reconnaitre dans le texte les liens et les transformer en liens courts (avec SMS Factor). Avoir un log plus précis dans l'indication du statut du message envoyé.

pull/2/head
thrax 9 months ago
parent d07a8fe194
commit 6a05041787

@ -2,6 +2,7 @@
class SendSMSclass
{
//input parameters ---------------------
@ -48,7 +49,7 @@ class SendSMSclass
function prepareXMLdata()
{
$this->xmldata = "<sms><authentification><username>" . $this->username . "</username><password>" . $this->password . "</password></authentification><message><sender>" . $this->sender . "</sender><text>" . $this->message . "</text></message><recipients>" . $this->XMLgsmnumbers . "</recipients></sms>";
$this->xmldata = "<sms><authentification><username>" . $this->username . "</username><password>" . $this->password . "</password></authentification><message><sender>" . $this->sender . "</sender>" . $this->texte_avec_liens_courts() . "</message><recipients>" . $this->XMLgsmnumbers . "</recipients></sms>";
$this->request_data = 'XML=' . $this->xmldata;
}
@ -65,6 +66,37 @@ class SendSMSclass
return $response;
}
}
?>
/**
* Méthode privée pour permettre l'usage de liens courts
*
* Il faut identifier les liens dans le texte et les substituer par le tag prévu ```<-short->```,
* puis indiquer à l'API les liens devant être raccourcis ```<links>lien</links>```,
* que l'API calculera et placera à la place du tag ```<-short->```.
*
* @link https://dev.smsfactor.com/fr/api/sms/envoi/liens-courts
*
* @param string $message
* Le texte du SMS
* @return string $message
* Un nouveau formatage du texte et l'ajout de balises si nécessaire
*/
private function texte_avec_liens_courts() {
// Masque
$masque = '#'; // début du masque
$masque .= '([http|ftp|https]+://'; // un lien débute par http:// ou ftp:// ou https://
$masque .= '[www\.]?'; // et peut être suivi de www.
$masque .= '[a-zA-Z]+:[0-9]+'; // ou localhost:8888 par exemple si on test en local
$masque .= '[\?/\=\&\-_.a-zA-Z0-9]+)'; // et de caractères alphabétiques ou numériques y compris certains autres caractères spéciaux
$masque .= '#i'; // fin du masque où l'on précise que l'on se moque de la casse
preg_match_all($masque,$this->message,$trouvaille,PREG_SET_ORDER);
$links = '';
if ($trouvaille){
foreach ($trouvaille as $key => $value) {
$links .= "<links>$value[0]</links>";
$reformatage = str_replace($value[0], '<-short->', $this->message);
}
return "<text><![CDATA[${reformatage}]]></text>" . $links;
}
return $this->message;
}
}

@ -93,11 +93,11 @@ function smsfactor($message,$destinataire,$arg) {
}
return true;
} else {
spip_log('le message '.$message.' pour ' . implode(',' , $destinataire) . 'est en erreur' , 'sms_error');
spip_log('Le message ' . $message . ' pour ' . implode(',', $destinataire) . ' à le statut :' . $reponse->message, 'sms_error');
return false;
}
} catch (Exception $e){
spip_log('le message '.$message.' pour ' . implode(',' , $destinataire) . 'est en erreur' , 'sms_error');
spip_log('le message '.$message.' pour ' . implode(',' , $destinataire) . ' est en erreur' , 'sms_error');
spip_log($e , 'sms_error');
}

Loading…
Cancel
Save