Commander à partir d’un préfixe
Utilisez cette opération lorsque le catalogue des préfixes vous invite à commander une quantité de numéros à partir d’un préfixe plutôt qu’à choisir individuellement des numéros disponibles. Commencez par les pays, les zones ou les États, puis les préfixes. Conservez l’identifiant du préfixe et le forfait tarifaire provenant d’un même résultat à jour. Pour un numéro précis sélectionné dans une liste de numéros disponibles, utilisez Acheter un numéro de téléphone sélectionné.
Cette requête peut acheter des numéros et entraîner des frais. Il ne s’agit ni d’un devis, ni d’une réservation, ni d’une simulation. Examinez les frais de mise en service et les frais mensuels, les tarifs à la minute des appels entrants, les minutes incluses, les canaux, les exigences d’enregistrement et les limites d’achat du compte avant de l’envoyer. Un résultat du catalogue ne réserve aucun stock et ne fige pas les prix. Des vérifications liées à l’approvisionnement du compte en fonds peuvent avoir lieu avant l’exécution de la commande ; une erreur ne prouve pas à elle seule qu’aucun achat ni aucun approvisionnement du compte en fonds n’a eu lieu.
Envoyer la demande d’achat
Utilisez un compte API activé, via HTTPS, depuis une adresse IP source autorisée. Définissez les variables à partir de votre sélection actuelle dans le catalogue et de votre configuration d’acheminement approuvée. La commande suivante achète un numéro.
curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
--data-urlencode 'quantity=1' \
--data-urlencode "price_id=$PRICE_ID" \
--data-urlencode "channels=$CHANNELS" \
--data-urlencode "reference=$ORDER_REFERENCE" \
--data-urlencode "uri=$VOICE_URI" \
"https://api.multitel.net/v3/order/$PREFIX_ID"Une requête POST avec des données de formulaire est présentée ci-dessus. Le coordinateur lit également un objet JSON lorsque Content-Type vaut application/json. Les champs JSON remplacent les champs correspondants du formulaire ou de la requête. Utilisez un seul encodage de manière cohérente ; n’envoyez pas de valeurs contradictoires dans les paramètres de requête et dans le corps.
| Paramètre | Signification |
|---|---|
| identifiant du préfixe dans le chemin | L’UUID du préfixe renvoyé par le catalogue. Un identifiant de pays, de zone, de prix ou de numéro individuel ne peut pas le remplacer. |
| quantity | Envoyez un entier de 1 à 100. Valeur par défaut : 1. Les valeurs inférieures à 1 sont ramenées à 1 ; cette requête ne se limite pas à une validation. Les valeurs supérieures à 100 déclenchent une exception avant le traitement normal des réponses par ce coordinateur ; ne comptez donc pas sur sa structure JSON habituelle pour cette entrée invalide. |
| price_id | L’identifiant public du prix du forfait sélectionné. priceid est un ancien alias. Un identifiant sans correspondance peut entraîner la sélection d’un autre forfait, sans avertissement ; ce champ ne verrouille pas strictement le prix. Vérifiez les plafonds tarifaires du compte avant l’achat et examinez ensuite le prix renvoyé. |
| channels | Le nombre de canaux du forfait sélectionné. Lorsqu’aucune correspondance exacte de prix n’est utilisée, un nombre de canaux correspondant peut influencer la sélection du forfait de remplacement. À lui seul, il ne garantit pas l’achat d’un forfait particulier. |
| reference | Votre libellé pour l’achat ou le lot. Utilisez une valeur ASCII courte, de 255 octets au maximum ; les valeurs plus longues sont tronquées. Lorsqu’elle est fournie, elle est conservée avec les achats réussis et incluse dans les notifications de rappel. Des commandes distinctes peuvent partager la même référence. Ce n’est pas une clé d’idempotence : soumettre à nouveau cette opération peut acheter des numéros supplémentaires et entraîner leur facturation, même avec la même référence et des champs identiques. |
| webhook_url | URL de rappel facultative. Utilisez un point de terminaison HTTPS que vous contrôlez. Les URL HTTP et HTTPS passent la validation élémentaire actuelle ; une URL invalide est ignorée au lieu d’entraîner le rejet de l’achat. Une notification de rappel est une notification supplémentaire, et non la preuve qu’une requête peut être répétée sans risque. |
Paramètres d’acheminement et de renouvellement
Choisissez les mêmes paramètres d’acheminement que ceux que vous utiliseriez pour le numéro dans le portail. Il s’agit de valeurs de configuration avancée, et non d’instructions pour créer un PBX hébergé ou un trunk d’origination. Réutilisez une configuration de compte dont le fonctionnement est établi et vérifiez le numéro enregistré après l’achat. L’acceptation d’un achat ne suffit pas à vérifier que l’acheminement des appels vocaux ou des SMS fonctionne.
| Champ | Utilisation et compatibilité |
|---|---|
| uri, uri2, uri3 | Destinations vocales principale et supplémentaires. Fournissez des destinations adaptées aux modes de renvoi et de sonnerie sélectionnés. |
| forward_destination | Mode de renvoi des appels vocaux. forwarding_destination et type sont d’anciens alias. Si ce champ est omis, la valeur par défaut du parcours d’achat est utilisée ; un champ vide ne constitue pas un moyen fiable d’effacer une préférence existante. |
| ring_type | Mode de sonnerie des appels vocaux ; ringtype est un alias. Utilisez une valeur prise en charge dans la configuration des numéros de votre compte. |
| sms_forward_destination, sms_uri | Mode et destination d’acheminement des SMS. Les anciens alias sont smsringtype et smsuri. Certains parcours d’achat appliquent la destination SMS par défaut du compte lorsque cette valeur est vide. La disponibilité des SMS dépend du numéro sélectionné et de son activation ou de son enregistrement. |
| overflow | Paramètre de débordement demandé. Sa prise en charge dépend de la disponibilité des forfaits et du parcours d’achat. |
| force_codec, force_dtmf | Paramètres de codec et DTMF demandés. Les anciens alias sont forcecodec et forcedtmf. Vérifiez la configuration enregistrée pour les numéros du stock sélectionné. |
| origination_trunk_id | Un identifiant de configuration de trunk existante, le cas échéant. Ce champ ne crée pas de trunk. S’il est omis, la valeur par défaut du parcours d’achat est utilisée. |
| autorenew | Paramètre de renouvellement demandé. Ne supposez pas que 0 désactive le renouvellement : certains parcours d’achat traitent une valeur assimilée à une valeur vide, y compris 0, comme le paramètre activé par défaut. Vérifiez et, si nécessaire, modifiez le renouvellement du numéro acheté dans le portail. |
Ces champs sont normalisés et transmis au processus d’achat, mais leur persistance varie selon les parcours de traitement du stock. La route de commande actuelle ne propose pas, comme protections équivalentes, les champs de plafonnement strict du devis décrits dans le guide d’achat d’un numéro sélectionné. Utilisez les autorisations d’achat et les limites tarifaires du compte, puis examinez la configuration du numéro obtenue.
Lire le résultat complet
Analysez le corps JSON et examinez status.code et status.msg, même lorsque la requête HTTP réussit. Cette route écrit sa propre réponse JSON, et la fonction auxiliaire de réponse partagée ne fait pas non plus nécessairement correspondre le code applicatif au statut HTTP. Les codes applicatifs peuvent être des nombres JSON ou des chaînes numériques. N’exigez pas status.results ; ce champ n’est pas présent dans le résultat normal d’une commande.
{
"status": {"code": "200", "msg": ""},
"response": {
"id": "o_fictional_example",
"numbers": ["12025550123"],
"price": {
"per_minute": "0.01",
"free_minutes": 0,
"setup_price": "1.25",
"monthly_price": "2.50",
"channels": 2
},
"features": ["voice"],
"needs_registration": 0,
"restrictions": "",
"registration_requirements": null
}
}L’identifiant, le numéro et les prix ci-dessus sont fictifs. Traitez l’identifiant de commande comme une valeur opaque. numbers répertorie les numéros que cette réponse indique comme achetés ; comparez la longueur de cette liste à la quantité demandée. Les montants des prix sont des chaînes de caractères et cette réponse arrondit les tarifs monétaires à deux décimales, y compris per_minute ; utilisez le catalogue à jour pour obtenir la précision d’origine des tarifs. Les minutes incluses et les canaux peuvent être reçus sous forme de valeurs numériques ou de chaînes numériques.
Le bloc de prix décrit le forfait sélectionné utilisé pour construire la réponse ; il ne constitue ni une facture détaillée pour chaque numéro ni le total de la commande. Plusieurs numéros candidats du stock peuvent relever de forfaits différents. Rapprochez les numéros achetés individuellement et les transactions du compte plutôt que de multiplier les montants de ce bloc en supposant qu’ils prouvent le total final.
Achats partiels et résultats incertains
Un code applicatif de 200 peut s’accompagner d’un avertissement et d’un nombre de numéros inférieur à la quantité demandée. Un échec ultérieur n’annule pas les numéros déjà achetés. Conservez l’identifiant de commande, les numéros et le message renvoyés. Rapprochez ces numéros avec votre inventaire et les transactions du compte avant de décider de commander une quantité restante.
Un dépassement de délai, une interruption de connexion pendant la requête, une réponse mal formée ou une erreur après l’envoi ne prouve pas qu’il ne s’est rien passé. N’envoyez pas automatiquement une autre demande d’achat, même avec la même référence. Conservez la requête d’origine, la référence et tout identifiant de commande renvoyé, vérifiez l’inventaire et les transactions du compte, et contactez l’assistance si le résultat reste incertain.
Une commande non confirmée peut renvoyer le code applicatif 400 avec un message indiquant que sa confirmation est toujours en cours. Conservez l’identifiant de commande renvoyé et rapprochez cet achat avec vos enregistrements ; ce message ne vous invite pas à soumettre à nouveau la commande. Le mécanisme de récupération des commandes enregistrées assure le suivi interne de la commande d’origine. Une nouvelle requête à cette opération crée une tentative d’achat distincte au lieu de reprendre une commande à partir de votre référence ; elle peut donc acheter et facturer des numéros supplémentaires. N’utilisez pas des demandes d’achat répétées pour vérifier un statut ou rechercher des numéros dans le stock.
Enregistrement et activation
Un numéro acheté ou attribué peut encore nécessiter un enregistrement ou une activation. Si needs_registration vaut 1, examinez restrictions et registration_requirements. Ce dernier champ peut indiquer v3/get_requirements avec des valeurs pour country et number_type. Effectuez la procédure applicable de vérification d’identité ou d’adresse et confirmez le statut du numéro avant de compter sur les appels entrants ou la messagerie.
features décrit les fonctionnalités annoncées ; ce champ ne vérifie ni le routage effectif, ni l’approbation d’une campagne, ni l’acheminement des SMS, ni la réception des fax. Vérifiez les paramètres d’acheminement enregistrés et effectuez le test de service approprié lorsque le numéro est actif.
Notifications de rappel des commandes
Les notifications de rappel envoient par POST du JSON contenant le statut et la réponse de la commande, avec votre référence ajoutée lorsqu’elle a été fournie. Elles sont envoyées pour les achats signalés, y compris les résultats partiels. L’échec d’une notification de rappel n’annule pas l’achat. L’envoi peut être retenté ; traitez donc les doublons à l’aide de l’identifiant de commande et rapprochez les numéros avec vos enregistrements plutôt que de lancer un autre achat.
Cette route n’ajoute pas de signature cryptographique aux notifications de rappel. Traitez une notification de rappel comme une notification à rapprocher de l’inventaire obtenu via un accès authentifié, et non comme une autorisation indépendante de facturer, de provisionner des services ou d’accorder un accès. Ne placez pas d’identifiants d’authentification API dans l’URL de rappel. Soumettre un autre achat avec une URL de rappel différente ne met pas à jour la commande d’origine ; cela crée une tentative d’achat distincte. Conservez l’identifiant de la commande d’origine lorsque vous demandez à l’assistance d’examiner sa notification de rappel.
Échecs à gérer
| Résultat | Mesures à prendre |
|---|---|
| 400 et message indiquant un préfixe invalide | Consultez à nouveau le catalogue des préfixes et utilisez l’identifiant actuel du préfixe. Distinguez ce cas d’un message indiquant que la confirmation d’une commande d’origine est toujours en cours. |
| 403 ou échec lié aux règles ou au solde du compte | Vérifiez l’autorisation d’achat, les plafonds tarifaires du compte, les limites de quantité et l’approvisionnement en fonds. D’autres codes applicatifs peuvent être transmis à la suite de ces vérifications ; conservez le message exact. |
| 404 ou aucun stock disponible | Actualisez les disponibilités. Ne répétez pas les demandes d’achat pour un préfixe dont le stock est épuisé. |
| 409 et message relatif à la confirmation d’achat, à un rejet du fournisseur ou à une commande annulée | Conservez l’identifiant de commande renvoyé et le message exact. Rapprochez la requête avec l’inventaire et les transactions du compte, et faites le point avec l’assistance avant de soumettre un autre achat. Réutiliser la même référence ne rend pas une nouvelle requête sans risque. |
| 200 avec des avertissements ou moins de numéros | Certains numéros ont été achetés. Rapprochez l’attribution renvoyée et les transactions avant d’en commander davantage. |
| Échec du serveur ou du transport, ou réponse illisible | Considérez le résultat comme potentiellement incertain tant que l’inventaire et les transactions ne permettent pas d’établir ce qui s’est produit. |