Vérifier la validité d'un numéro


Cette fonctionnalité permet de vérifier qu'un numéro de portable existe réellement.

URL

POST https://api.smspartner.fr/v1/hlr/notify

Paramètres

Chaque requête d'API prend en charge les paramètres suivants :

apiKeyClé API de votre compte. Vous l'obtenez dans votre compte SMS Partner
phoneNumbers Numéros de mobile à vérifier.
Ils doivent être au format international (+336xxxxxxxx).
Pour l'envoi de plusieurs vérifications les numéros doivent être séparés par des virgules.
500 numéros peuvent être vérifiés par requête.
Paramètres optionnels
notifyUrl Permet de récupérer le résultat de la requête HLR vers une URL de votre choix.
Le résultat est envoyé en POST.

Exemple de notification d'une requête HLR

_formatFormat de la réponse. Vous pouvez choisir entre JSON ou XML. Par défaut, le format de réponse est JSON.

Requête

Exemple de requête :

<?php
        // Prepare data for POST request
        $fields = array(
            'apiKey'=> 'YOUR API KEY',
            'phoneNumbers'=> '+336xxxxxxxx',
            'notifyUrl'=>'http://...'
        );


        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL,'https://api.smspartner.fr/v1/hlr/notify');
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_TIMEOUT, 10);
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS,json_encode($fields));

        $result = curl_exec($curl);
        curl_close($curl);

        // Process your response here
        echo $result;
?> 
Imports System.IO
Imports System.Net

Module Module1

  Sub Main()

    Dim base_url As String = "http://api.smspartner.fr/v1/"
    Dim apiKey As String = "VOTRE_APIKEY"

    #send sms
    url = base_url & "hlr/notify"
    #note : utiliser une librairie JSON en production, par exemple :
    #https//www.nuget.org/packages/Newtonsoft.Json/
    Dim parameters As String = String.Format(
        "{{""apiKey"":""{0}"",""phoneNumbers"":""{1}"",""notifyUrl"":""{2}""}}",
        apiKey,
        "+33XXXXXXXXX",
        "http://...")
    Console.Write(parameters)
    apiRequest("POST", url, parameters)

  End Sub

  Function apiRequest(method As String, url As String, parameters As String) As String

    Dim request As HttpWebRequest
    request = WebRequest.Create(url)
    request.Method = method
    request.Timeout = 10000   # timeout in ms
    request.ContentType = "application/json; charset=utf-8"
    request.ContentLength = 0

    #set POST data
    If Not String.IsNullOrEmpty(parameters) Then
      request.ContentLength = parameters.Length
      Using reqStream As StreamWriter = New StreamWriter(request.GetRequestStream())
        reqStream.Write(parameters)
      End Using
    End If

    #get response
    Dim returnValue As String = Nothing
    Using response As HttpWebResponse = request.GetResponse()
      If response.StatusCode = HttpStatusCode.OK Then
        Using resStream = response.GetResponseStream()
          If resStream IsNot Nothing Then
            Using reader As New StreamReader(resStream)
              returnValue = reader.ReadToEnd()
            End Using
          End If
        End Using
      End If
    End Using
    apiRequest = returnValue

  End Function

End Module
# std
import logging
import json
from collections import OrderedDict

# 3p
import requests

API_KEY = "MY API KEY"
URL = "https://api.smspartner.fr/v1"

class SMSPartner():
    def add_stop(self,phone_numbers):

		data = OrderedDict([
			("apiKey", API_KEY),
			("phoneNumbers", phone_numbers,
			"notifyUrl", notify_url)
		])

		url = URL + "/hlr/notify"
		r = requests.post(url, data=json.dumps(data), verify=False)

		r_json = r.json()
		if r_json.get("success") == True:
			print(r_json)
			status = True
		else:
			print(r_json)
			status = False
		return status
	
curl -H  "Content-Type: application/json" -X POST -d '{"apiKey":"xxxxx","phoneNumbers":"xxxx","notifyUrl":"http://..."}' https://api.smspartner.fr/v1/hlr/send

Réponses

<?xml version="1.0" encoding="UTF-8"?>
<result>
    <entry>true</entry>
    <entry>200</entry>
    <entry>
        <![CDATA[HLR0000000]]>
    </entry>
    <entry>1</entry>
    <entry>0.004</entry>
    <entry>
        <![CDATA[EUR]]>
    </entry>
</result>
{
    "success": true,
    "code": 200,
    "campaign_id": "HLR000000",
    "number": 1,
    "cost": 0.004,
    "currency": "EUR"
}

Erreurs

Exemple de message d'erreur :

{
    "success": false,
    "code": 10,
    "message": "Clé API incorrecte"
}
            
<?xml version="1.0" encoding="UTF-8"?>
<result>
    <entry>false</entry>
    <entry>10</entry>
    <entry>
        <![CDATA[Clé API incorrecte]]>
    </entry>
</result>
                    

Code de contrôle

Réponse
1La Clé API est requise
2Le numéro de téléphone est requis
3Les numéros doivent être séparés par une virgule
10Clé API incorrecte
200Tout s'est bien passé !

Exemple de notification d'une requête HLR

Array(
    'phone' => '3300000000',
    'messageId'=>'1234-12344-1234-1234',
    'errorGrpId'=> 0,
    'errorName'=> 'NO_ERROR ',
    'errorDesc'=>'No Error' ,
    'date'=>'2018-03-05T10:34:52.355+0000'
) 

Codes erreur HLR

errorGrpIderrorName
0NO_ERRORAucune erreur.
1EC_UNKNOWN_SUBSCRIBERLe numéro n'existe pas ou n'a été attribué à aucun abonné actif dans la base de données utilisateur de l'opérateur.
5EC_UNIDENTIFIED_SUBSCRIBERAbonné non identifié.
6EC_ABSENT_SUBSCRIBER_SMComme il n'y avait pas de réponse, l'abonné a été détecté comme indisponible. Cela est souvent dû au fait que le combiné est éteint ou dans une zone de faible signal.
7EC_UNKNOWN_EQUIPMENTLe périphérique mobile n'a pas été reconnu par EIR (Equipment Identity Register) lors de la vérification du périphérique au niveau du protocole MAP sur l'infrastructure de l'opérateur.
8EC_ROAMING_NOT_ALLOWEDL'abonné est actuellement en itinérance dans un autre pays ou utilise l'infrastructure d'un autre opérateur - la livraison en itinérance n'est pas garantie en raison de l'absence d'accords d'itinérance entre de nombreux opérateurs différents.
9EC_ILLEGAL_SUBSCRIBERAbonné illégal.
12EC_ILLEGAL_EQUIPMENTÉquipement illégal.
13EC_CALL_BARREDL'abonné est configuré sur le service NPD (Ne pas déranger), et ne reçoit aucun trafic de service vers son numéro.
27EC_ABSENT_SUBSCRIBERL'abonné est hors ligne. Cela est souvent dû au fait que le combiné est éteint.
255EC_UNKNOWN_ERRORErreur inconnue.