3 votes

Onlinecity SMPP - ajouter de nouveaux paramètres tlv

Je suis en train d'utiliser la librairie client SMPP d'OnlineCity pour l'envoi de SMS. Tout fonctionnait bien. Mais selon la nouvelle directive de TRAI, nous devons ajouter les nouveaux paramètres TLV suivants lors de l'envoi de SMS

groupe = smpp-tlv

nom = EntityID

étiquette = 0x1400

type = octetstring

longueur = 30

smsc-id = ***

J'ai essayé cela

// Préparer le message
    $ENTITY_ID = new SmppTag(0x1400, '****************');
    $tags = array($ENTITY_ID);
    $from = new SmppAddress($SMS_Params['senderid'],SMPP::TON_ALPHANUMERIC);
    $to = new SmppAddress($SMS_Params['phone'],SMPP::TON_INTERNATIONAL,SMPP::NPI_E164);
    $encodedMessage = utf8_encode($SMS_Params['message']);
     // Envoyer
    $return_data = $smpp->sendSMS($from,$to,$encodedMessage,$tags);

J'ai reçu une réponse positive mais je n'ai pas reçu de SMS. J'ai vérifié avec mon fournisseur SMPP. Ils ont dit que le paramètre TLV supplémentaire n'était pas là et c'est pourquoi le SMS n'est pas envoyé.

Avez-vous une idée, pouvons-nous le faire dans mon code actuel basé sur la bibliothèque onlinecity ou devrais-je faire quelque chose d'autre?

0voto

vikas Points 18

Vous devez vérifier si vos chaînes d'octets sont terminées par null ou non, par défaut la bibliothèque suppose que c'est le cas. Donc il existe une variable $sms_null_terminate_octetstrings qui doit être réinitialisée si votre fournisseur ne se termine pas par null.

La modification de code ci-dessus que l'intégrateur d'Asterisk a recommandée dit la même chose. Plutôt que de changer le code, si vous pouvez réinitialiser le drapeau en fonction de vos besoins, cela devrait résoudre le problème.

Pour les autres qui souhaitent ajouter de nouveaux paramètres obligatoires devraient le faire comme ceci en utilisant la bibliothèque smpp-php.

$tags = array(
            new SmppTag(0x1400, votre_id_pe),
            new SmppTag(0x1401, votre_id_template)
        );
$message_id = $smpp->sendSMS($from, $to, $encodedMessage, $tags);

-1voto

Supprimez "+(self::$sms_null_terminate_octetstrings ? 1 : 0)" du fichier smppclient.class.php

Code actuel : $pdu = pack('a1cca'.(strlen($source->value)+1).'cca'.(strlen($destination->value)+1).'ccc'.($scheduleDeliveryTime ? 'a16x' : 'a1').($validityPeriod ? 'a16x' : 'a1').'ccccca'.(strlen($short_message)+(self::$sms_null_terminate_octetstrings ? 1 : 0))

Code mis à jour :
$pdu = pack('a1cca'.(strlen($source->value)+1).'cca'.(strlen($destination->value)+1).'ccc'.($scheduleDeliveryTime ? 'a16x' : 'a1').($validityPeriod ? 'a16x' : 'a1').'ccccca'.(strlen($short_message))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X