Aller au contenu principal

Exemples d'utilisation de l'API

← Retour à la référence de l'API


Table des matières​


Provisionnement complet des abonnés​

Cet exemple démontre le flux de travail complet pour le provisionnement d'un nouvel abonné à partir de zéro. Le processus implique la création de tous les profils et composants nécessaires avant de créer l'abonné.

Prérequis : Cet exemple utilise jq pour l'analyse JSON. Installez avec apt-get install jq ou brew install jq.

Sections connexes :

# 1. Créer l'ensemble de clés
KEY_SET_ID=$(curl -k -X POST https://hss.example.com:8443/api/key_set \
-H "Content-Type: application/json" \
-d '{
"ki": "0123456789ABCDEF0123456789ABCDEF",
"opc": "FEDCBA9876543210FEDCBA9876543210",
"authentication_algorithm": "milenage",
"amf": "8000",
"sqn": 0
}' | jq -r '.response.id')

# 2. Créer le profil QoS APN
APN_QOS_ID=$(curl -k -X POST https://hss.example.com:8443/api/apn/qos_profile \
-H "Content-Type: application/json" \
-d '{
"name": "Default Internet QoS",
"allocation_retention_priority": 8,
"apn_ambr_dl_kbps": 50000,
"apn_ambr_ul_kbps": 25000,
"pre_emption_capability": true,
"pre_emption_vulnerability": true,
"qci": 9
}' | jq -r '.response.id')

# 3. Créer l'identifiant APN
APN_ID=$(curl -k -X POST https://hss.example.com:8443/api/apn/identifier \
-H "Content-Type: application/json" \
-d '{
"apn": "internet",
"ip_version": "ipv4v6"
}' | jq -r '.response.id')

# 4. Créer le profil APN
APN_PROFILE_ID=$(curl -k -X POST https://hss.example.com:8443/api/apn/profile \
-H "Content-Type: application/json" \
-d "{
\"apn_identifier_id\": \"$APN_ID\",
\"apn_qos_profile_id\": \"$APN_QOS_ID\",
\"name\": \"Internet APN\"
}" | jq -r '.response.id')

# 5. Créer le profil EPC
EPC_PROFILE_ID=$(curl -k -X POST https://hss.example.com:8443/api/epc/profile \
-H "Content-Type: application/json" \
-d "{
\"apn_profiles\": [$APN_PROFILE_ID],
\"name\": \"Standard Data Plan\",
\"network_access_mode\": \"packet_only\",
\"tracking_area_update_interval_seconds\": 600,
\"ue_ambr_dl_kbps\": 100000,
\"ue_ambr_ul_kbps\": 50000
}" | jq -r '.response.id')

# 6. Créer l'abonné
SUBSCRIBER_ID=$(curl -k -X POST https://hss.example.com:8443/api/subscriber \
-H "Content-Type: application/json" \
-d "{
\"imsi\": \"001001123456789\",
\"key_set_id\": \"$KEY_SET_ID\",
\"epc_profile_id\": \"$EPC_PROFILE_ID\"
}" | jq -r '.response.id')

echo "Abonné provisionné avec succès avec l'ID : $SUBSCRIBER_ID"

Ce que cela crée :

Ce flux de travail de provisionnement crée un abonné complet avec :

  1. Clés cryptographiques (Ensemble de clés) - Pour l'authentification
  2. Profil de service de données (Profil EPC) - Paramètres de bande passante et d'accès au réseau
  3. Configuration APN (Profil APN) - Point d'accès avec QoS
  4. Enregistrement de l'abonné (Abonné) - L'entité abonnée réelle

Prochaines étapes :

Voir aussi :


Pré-provisionnement des abonnés dormants​

Utilisez ce flux de travail pour charger des abonnés en masse à partir d'un fichier de sortie d'un fournisseur de SIM, et pour activer chaque abonné plus tard. C'est le modèle recommandé pour la plupart des opérateurs.

Un abonné dormant ne conserve que son identité et ses clés d'authentification. Vous ajoutez le numéro de téléphone et les profils de service lors de l'activation. Cela correspond aux données qu'un fournisseur de SIM vous envoie. Le fichier du fournisseur de SIM contient l'ICCID, le PIN, les codes PUK et ADM, et les cl��s d'authentification (Ki, OPc). Le fichier ne contient pas de numéro de téléphone ni de plan de service.

La base de données a seulement besoin de l'IMSI et de l'ensemble de clés pour insérer un abonné. C'est ce qui rend un enregistrement dormant possible. Cela ne signifie pas que les autres objets sont optionnels pour le service. Chaque objet est requis pour son propre service : le profil EPC pour les données, le profil IMS et un MSISDN pour la voix, et une SIM pour l'authentification. Un abonné dormant ne fonctionne pas sur le réseau tant que vous n'avez pas assigné l'objet correspondant. Vous assignez ces objets lorsque le client active le service. Pour la raison que la SIM, l'ensemble de clés et l'abonné sont des objets séparés, voir Ensemble de clés, SIM et abonné.

Cycle de vie du provisionnement​

Étape 1 : Importer (créer la SIM, l'ensemble de clés et un abonné désactivé)​

Créez un ensemble de clés, une SIM et un abonné désactivé pour chaque ligne dans le fichier du fournisseur de SIM. Cet exemple utilise jq pour lire l'identifiant retourné de chaque réponse.

# 1. Créer l'ensemble de clés à partir du fichier du fournisseur de SIM (Ki, OPc)
KEY_SET_ID=$(curl -k -X POST https://hss.example.com:8443/api/key_set \
-H "Content-Type: application/json" \
-d '{
"ki": "0123456789ABCDEF0123456789ABCDEF",
"opc": "FEDCBA9876543210FEDCBA9876543210",
"authentication_algorithm": "milenage",
"amf": "8000",
"sqn": 0
}' | jq -r '.response.id')

# 2. Créer la SIM à partir du fichier du fournisseur de SIM (ICCID, PIN/PUK/ADM)
SIM_ID=$(curl -k -X POST https://hss.example.com:8443/api/sim \
-H "Content-Type: application/json" \
-d '{
"iccid": "8944000000000000001",
"is_esim": false,
"ind_length": 5
}' | jq -r '.response.id')

# 3. Créer l'abonné dans un état désactivé.
# imsi et key_set_id sont requis. Lier la SIM. Ajouter pas de MSISDN et pas de profils.
SUBSCRIBER_ID=$(curl -k -X POST https://hss.example.com:8443/api/subscriber \
-H "Content-Type: application/json" \
-d "{
\"imsi\": \"001010000000001\",
\"key_set_id\": \"$KEY_SET_ID\",
\"sim_id\": \"$SIM_ID\",
\"enabled\": false,
\"ims_enabled\": false
}" | jq -r '.response.id')

Un abonné dormant est sûr à conserver dans la base de données. L'abonné ne s'attache pas, ne s'authentifie pas et ne s'enregistre pas tant qu'il est désactivé. Si le réseau interroge un abonné dormant, le HSS rejette la demande. Voir Comportement des abonnés dormants sur le réseau.

Étape 2 : Activer (assigner le numéro et les profils, puis activer)​

Pour activer un abonné, envoyez une requête PATCH. Ajoutez le MSISDN, assignez les profils et définissez enabled sur true.

curl -k -X PATCH https://hss.example.com:8443/api/subscriber/$SUBSCRIBER_ID \
-H "Content-Type: application/json" \
-d "{
\"enabled\": true,
\"ims_enabled\": true,
\"msisdns\": [\"$MSISDN_ID\"],
\"epc_profile_id\": \"$EPC_PROFILE_ID\",
\"ims_profile_id\": \"$IMS_PROFILE_ID\",
\"roaming_profile_id\": \"$ROAMING_PROFILE_ID\"
}"

Une requête PATCH ne change que les champs que vous envoyez. L'IMSI, l'ensemble de clés et la SIM restent tels quels. Créez le MSISDN et les profils d'abord, ou réutilisez des identifiants existants. Voir Provisionnement complet des abonnés pour savoir comment créer les profils.

Étape 3 : Désactiver (désactiver l'abonné)​

Pour désactiver un abonné, définissez enabled sur false. L'enregistrement de l'abonné et ses données restent dans la base de données.

curl -k -X PATCH https://hss.example.com:8443/api/subscriber/$SUBSCRIBER_ID \
-H "Content-Type: application/json" \
-d '{
"enabled": false,
"ims_enabled": false
}'

Pour supprimer uniquement la voix IMS, et conserver le service de données, définissez ims_enabled sur false et laissez enabled sur true.

Comportement des abonnés dormants sur le réseau​

Un abonné échoue en mode fermé tant qu'il est dormant ou désactivé. Le HSS rejette la demande sur l'interface réseau. Le HSS écrit également un journal d'avertissement avec la raison exacte. La raison est l'une des suivantes :

  • L'abonné est désactivé (enabled est false).
  • IMS est désactivé pour l'abonné (ims_enabled est false).
  • Un objet requis n'est pas encore assigné. Par exemple, il n'y a pas de profil EPC pour une attache LTE, ou pas de profil IMS pour l'enregistrement IMS.

Le rejet utilise le code de résultat expérimental DIAMETER_ERROR_USER_UNKNOWN (5001) sur les interfaces S6a et Cx, conformément à 3GPP TS 29.272 et 3GPP TS 29.229. Le journal d'avertissement nomme l'IMSI et la raison exacte. Le journal vous permet de distinguer un abonné dormant d'un IMSI inconnu.


Provisionnement complet d'une IP statique​

Cet exemple démontre le provisionnement d'un abonné avec une adresse IP statique à partir de zéro.

Scénario : Provisionner un abonné de dispositif IoT qui a besoin d'une adresse IPv4 statique sur l'APN "internet".

# Prérequis : jq doit être installé (apt-get install jq ou brew install jq)

# 1. Créer l'ensemble de clés
KEY_SET_ID=$(curl -k -X POST https://hss.example.com:8443/api/key_set \
-H "Content-Type: application/json" \
-d '{
"ki": "0123456789ABCDEF0123456789ABCDEF",
"opc": "FEDCBA9876543210FEDCBA9876543210",
"authentication_algorithm": "milenage",
"amf": "8000",
"sqn": 0
}' | jq -r '.response.id')

# 2. Créer le profil QoS APN
APN_QOS_ID=$(curl -k -X POST https://hss.example.com:8443/api/apn/qos_profile \
-H "Content-Type: application/json" \
-d '{
"name": "IoT Best Effort",
"allocation_retention_priority": 8,
"apn_ambr_dl_kbps": 10000,
"apn_ambr_ul_kbps": 5000,
"pre_emption_capability": false,
"pre_emption_vulnerability": false,
"qci": 9
}' | jq -r '.response.id')

# 3. Créer l'identifiant APN
APN_ID=$(curl -k -X POST https://hss.example.com:8443/api/apn/identifier \
-H "Content-Type: application/json" \
-d '{
"apn": "internet",
"ip_version": "ipv4"
}' | jq -r '.response.id')

# 4. Créer le profil APN
APN_PROFILE_ID=$(curl -k -X POST https://hss.example.com:8443/api/apn/profile \
-H "Content-Type: application/json" \
-d "{
\"apn_identifier_id\": \"$APN_ID\",
\"apn_qos_profile_id\": \"$APN_QOS_ID\",
\"name\": \"IoT Internet APN\"
}" | jq -r '.response.id')

# 5. Créer une IP statique pour l'APN
STATIC_IP_ID=$(curl -k -X POST https://hss.example.com:8443/api/epc/static_ip \
-H "Content-Type: application/json" \
-d "{
\"apn_profile_id\": \"$APN_PROFILE_ID\",
\"ipv4_static_ip\": \"100.64.1.100\"
}" | jq -r '.response.id')

# 6. Créer le profil EPC
EPC_PROFILE_ID=$(curl -k -X POST https://hss.example.com:8443/api/epc/profile \
-H "Content-Type: application/json" \
-d "{
\"apn_profiles\": [$APN_PROFILE_ID],
\"name\": \"IoT Data Plan\",
\"network_access_mode\": \"packet_only\",
\"tracking_area_update_interval_seconds\": 600,
\"ue_ambr_dl_kbps\": 10000,
\"ue_ambr_ul_kbps\": 5000
}" | jq -r '.response.id')

# 7. Créer un MSISDN (numéro de téléphone)
MSISDN_ID=$(curl -k -X POST https://hss.example.com:8443/api/msisdn \
-H "Content-Type: application/json" \
-d '{
"msisdn": "14155551000"
}' | jq -r '.response.id')

# 8. Créer un abonné avec une IP statique
SUBSCRIBER_ID=$(curl -k -X POST https://hss.example.com:8443/api/subscriber \
-H "Content-Type: application/json" \
-d "{
\"imsi\": \"001001999999999\",
\"key_set_id\": \"$KEY_SET_ID\",
\"epc_profile_id\": \"$EPC_PROFILE_ID\",
\"msisdns\": [$MSISDN_ID],
\"static_ips\": [$STATIC_IP_ID]
}" | jq -r '.response.id')

echo "Abonné IoT provisionné avec succès !"
echo " ID de l'abonné : $SUBSCRIBER_ID"
echo " IMSI : 001001999999999"
echo " MSISDN : 14155551000"
echo " IPv4 statique : 100.64.1.100 (sur l'APN 'internet')"

Ce que cela crée :

Ce flux de travail de provisionnement crée un abonné IoT complet avec :

  1. Clés cryptographiques (Ensemble de clés) - Pour l'authentification
  2. Configuration APN (Profil APN) - Point d'accès "internet"
  3. Attribution d'IP statique (IP statique) - Adresse IPv4 fixe 100.64.1.100
  4. Profil de service de données (Profil EPC) - Limites de bande passante optimisées pour l'IoT
  5. Numéro de téléphone (MSISDN) - Pour l'identification de l'appareil
  6. Enregistrement de l'abonné (Abonné) - L'entité abonnée complète

Résultat :

Lorsque cet abonné s'attache au réseau et se connecte à l'APN "internet", il recevra l'adresse IP statique 100.64.1.100 au lieu d'une adresse DHCP dynamique.

Prochaines étapes :

  • Ajouter des APN supplémentaires avec des IP statiques : Répétez les étapes 2-5 pour chaque APN
  • Activer les services vocaux : Créer et assigner Profil IMS
  • Configurer l'itinérance : Créer et assigner Profil d'itinérance
  • Lier la SIM physique : Créer et assigner SIM

Voir aussi :


← Retour à la référence de l'API