Envoi de requêtes HTTP à partir de périphériques Board, Desk et Room Series
list-menuUn commentaire ?
Cette fonctionnalité permet aux périphériques Board, Desk ou Room Series d'initier et de recevoir des requêtes HTTPs avec un serveur HTTPs. Ces périphériques prennent en charge des méthodes telles que POST, PUT, Patch, Get et Delete, permettant différentes interactions avec le serveur.

Avec les macros, vous pouvez envoyer des données à un serveur HTTP chaque fois que vous en avez besoin. Vous avez le contrôle sur les données envoyées et leur organisation, ce qui simplifie l'adaptation des données pour une utilisation avec les services existants.

Mesures de sécurité :

  • La fonctionnalité de requête du client HTTP est désactivée par défaut. Un administrateur système doit activer explicitement la fonctionnalité en définissant Mode> HttpClient sur Activé ( xConfiguration Mode HttpClient : Activé ).

  • Pour empêcher l'utilisation de HTTP, l'administrateur système peut empêcher l'utilisation de HTTP en attribuant la valeur >False ( xConfiguration HttpClient AllowHTTP : False).

  • L'administrateur système peut spécifier une liste de serveurs HTTP auxquels l'appareil est autorisé à envoyer des données. (Reportez-vous aux commandes xCommand HttpClient Allow Hostname .)

  • Le nombre de requêtes HTTP simultanées est limité.

Les configurations référencées dans cet article sont disponibles à la fois depuis l'interface web de l'appareil et dans le API. Les commandes sont disponibles via le API. Lisez l'article Paramètres avancés pour savoir comment accéder à l'interface Web et utiliser le API.

Liste des serveurs HTTP autorisés

L'administrateur système peut utiliser ces commandes pour configurer et gérer une liste de dix serveurs (hôtes) HTTPS autorisés :

  • xCommand HttpClient Allow Hostname Add Expression : <Expression régulière qui correspond au nom d'hôte ou à l'adresse IP du serveur HTTPs>

  • xCommand HttpClient Allow Hostname Clear (Commande xCommand) HttpClient Allow Hostname Clear (Feuille de commande HttpClient)

  • xCommand HttpClient Autoriser la liste des noms d'hôte

  • xCommand HttpClient Allow Hostname Remove ID : <ID d'une entrée de la liste>

Si la liste contient des entrées de serveur, vous ne pouvez envoyer des requêtes HTTP qu'à ces serveurs. Cependant, si la liste est vide, vous pouvez envoyer des demandes à n'importe quel serveur HTTPs.

La vérification par rapport à la liste des serveurs autorisés est effectuée à la fois lors de l'utilisation du transfert de données non sécurisé (HTTP) et sécurisé (HTTPS).

HTTPS sans validation de certificat

Lors de l'envoi de requêtes via HTTPS, l'appareil vérifie le certificat du serveur HTTPS par défaut. Si le certificat du serveur HTTPS n'est pas valide, un message d'erreur s'affiche. L'appareil n'envoie aucune donnée à ce serveur.

Nous vous recommandons d'utiliser HTTPS avec la validation de certificat. Si la validation de certificat n'est pas possible, l'administrateur système peut définir HttpClient>AllowInsecureHTTPS sur On ( xConfiguration HttpClient AllowInsecureHTTPS : On ). Cela permet l'utilisation de HTTPS sans valider le certificat du serveur.

Envoi de requêtes HTTP

Une fois la fonctionnalité de requête du client HTTP activée, vous pouvez utiliser les commandes suivantes pour envoyer des demandes à un serveur HTTPs. <méthode> est soit POST , PUT,Patch,Get ou Delete.

  • xCommand HttpClient <Méthode> [AllowInsecureHTTPS : <True/False>] [En-tête : <Texte d'en-tête>] [ResponseSizeLimit : <Taille maximale de la réponse>] [ResultBody : <None/PlainText/Base64>] [Timeout : <Timeout period>] URL : <URL à laquelle envoyer la demande>

L'ajout de champs d'en-tête est facultatif, vous pouvez en ajouter jusqu'à 20.

Le paramètre AllowInsecureHTTPS n'a d'effet que si l'administrateur système a autorisé l'utilisation de HTTPS sans valider le certificat du serveur. Si tel est le cas, vous pouvez envoyer des données au serveur sans valider le certificat du serveur si le paramètre est défini sur True . Si vous omettez le paramètre, ou si vous le définissez sur False , les données ne sont pas envoyées si la validation de certificat échoue.

Le paramètre ResposenSizeLimit est la taille maximale de charge utile (octets) que le périphérique accepte comme réponse du serveur. Si la charge utile de réponse est supérieure à cette taille maximale, la commande renvoie une erreur d'état. Le message d'erreur indique que la taille maximale du fichier est dépassée. Cependant, cela n'a aucun effet côté serveur ; le serveur a reçu et traité la demande correctement.

Utilisez le paramètre ResultBody pour décider comment formater le corps de la réponse HTTP à partir du serveur dans le résultat de commande. Trois options s'offrent à vous :

  • Aucun : n'incluez pas le corps de la réponse HTTP dans le résultat de la commande.

  • Base64  : Base64 encode le corps avant de l'inclure dans le résultat.

  • Texte brut : incluez le corps du résultat en texte brut. Si la réponse contient des lettres non imprimables, la commande renvoie une erreur d'état avec un message indiquant que des données non imprimables ont été rencontrées.

Utilisez le paramètre Timeout pour définir un délai d'expiration (en secondes). Si la requête n'est pas traitée pendant cette période, le API renvoie une erreur.

Entrez la charge utile (données) directement après avoir émis la commande. Tout ce que vous entrez, y compris les sauts de ligne, fait partie de la charge utile. Lorsque vous avez terminé, terminez par un saut de ligne (« \n") et une ligne séparée contenant juste un point suivi d'un saut de ligne (« .\n"). Maintenant, la commande est exécutée et les données sont envoyées au serveur.

Exemples

Le corps du message est JSON dans ces deux exemples. Il peut s'agir de n'importe quel format, en fonction du format attendu du service qui reçoit les messages.

Exemple 1 : contrôle d'appareil IoT à l'aide de HTTP POST

Voici une fonction macro qui active une lumière connectée à un pont Philips Hue :

 function hue_command(data) { var url = 'http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state' ; var headers = 'Content-Type : application/json' ; var command = '{"on" :true}' ; xapi.command('HttpClient PUT', { 'Url' : url, 'Header' : headers }, command) ; } 

Vous pouvez faire de même sur la ligne de commande en utilisant le API :

 xcommand HttpClient PUT en-tête : "Content-Type : application/json" URL : "http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state" {"on" :true} . 

Exemple 2 : Publication de données dans un outil de surveillance à l'aide de HTTP POST

 xcommand HttpClient POST en-tête : "Content-Type : application/json" URL : "https://mymonitoringserver.com/service/devicemonitoring" {"Message" :"Un utilisateur a signalé un problème avec ce système","systemName" :"BoardRoom 4th floor","softwareVersion" :"ce9.6.0","softwareReleaseDate" :"2018-12-13","videoMonitors" :"Dual"} . 

Plus d'informations

Pour plus d'informations sur l'utilisation des demandes de client HTTP, consultez le guide de personnalisation. Choisissez la dernière version.

Le support Cisco (TAC) ne prend pas en charge le débogage du code tiers, y compris les macros. Veuillez vérifier https://roomos.cisco.com si vous avez besoin d'aide avec les macros et le code tiers.

Cet article était-il utile ?
Cet article était-il utile ?