Board、Desk、および Room Series デバイスから HTTP リクエストを送信します。
list-menuフィードバックがある場合
この機能により、Board、Desk、または Room Series デバイスは、HTTPS サーバとの間で HTTPS リクエストを開始および受信できるようになります。 これらのデバイスは、POST, PUT, Patch、Get、Delete などのメソッドをサポートしており、サーバとのさまざまなやり取りを可能にします。

マクロを使えば、必要な時にいつでも HTTPS サーバにデータを送信できます。 送信するデータとその整理方法を制御できるため、既存のサービスに合わせてデータを簡単に調整できます。

セキュリティ対策:

  • HTTPS クライアントリクエスト機能は、デフォルトでは無効になっています。 システム管理者は、 HttpClient > Mode On ( xConfiguration HttpClient Mode: On )に設定することにより、この機能を明示的に有効にする必要があります。

  • システム管理者は、 HttpClient > AllowHTTP False ( xConfiguration HttpClient AllowHTTP: False )に設定することで、HTTP の使用を防止できます。

  • システム管理者は、デバイスがデータの送信を許可されているHTTP(S) サーバーのリストを指定することができます。 (xCommand HttpClient Allow Hostname コマンドを参照してください。)

  • 同時 HTTP(S) 要求の数は制限されています。

この記事で言及されている設定は、デバイスのウェブインターフェースと API の両方から入手できます。 コマンドは API から利用できます。 ウェブインターフェースへのアクセス方法と API の使用方法については、 詳細設定の記事 をお読みください。

許可されている HTTPS サーバのリスト

システム管理者は、以下のコマンドを使用して、最大 10 個の許可された HTTPS サーバ(ホスト)のリストを設定および管理できます。

  • xCommand HttpClient Allow Hostname Add Expression: <HTTPS サーバのホスト名またはアドレスに一致する正規表現>

  • xCommand HttpClient Allow Hostname Clear

  • xCommand HttpClient Allow Hostname List

  • xCommand HttpClientホスト名の削除を許可するID:<リスト内のエントリのID>

リストにサーバのエントリが含まれている場合、それらのサーバに対してのみ HTTPS リクエストを送信できます。 ただし、リストが空の場合は、任意の HTTPS サーバにリクエストを送信できます。

許可されたサーバーのリストに対するチェックは、データの安全でない(HTTP)転送と安全な(HTTPS)転送の両方を使用するときに実行されます。

証明書検証なしの HTTPS

HTTPS 経由でリクエストを送信する場合、デバイスはデフォルトで HTTPS サーバの証明書を確認します。 HTTPS サーバ証明書が有効でない場合は、エラーメッセージが表示されます。 デバイスはそのサーバーにデータを送信しません。

証明書検証でHTTPSを使用することをお勧めします。 証明書の検証が不可能な場合、システム管理者は HttpClient > AllowInsecureHTTPS On ( xConfiguration HttpClient AllowInsecureHTTPS: On )に設定できます。 これにより、サーバーの証明書を検証せずに HTTPS を使用することができます。

HTTPS リクエストの送信

HTTPS クライアントリクエスト機能が有効になると、以下のコマンドを使用して HTTPS サーバにリクエストを送信できます。 <method> は、 IP PUT Patch Get 、または Delete のいずれかです。

  • xCommand HttpClient <メソッド> [AllowInsecureHTTPS: <True/False>] [Header: <ヘッダーテキスト>] [ResponseSizeLimit: <最大レスポンスサイズ>] [ResultBody: <None/PlainText/Base64>] [Timeout: <タイムアウト期間>] Url: <リクエストを送信する URL>

ヘッダーフィールドの追加は任意で、最大 20 個まで追加できます。

AllowInsecureHTTPS パラメータは、システム管理者がサーバの証明書を検証せずに HTTPS の使用を許可した場合にのみ有効です。 そうであれば、パラメータが True に設定されている場合、サーバ証明書を検証せずにサーバにデータを送信できます。 パラメータを省略するか、False に設定すると、証明書の検証が失敗した場合にデータが送信されません。

ResposeSizeLimit パラメータは、デバイスがサーバからの応答として受け入れる最大ペイロードサイズ (バイト) です。 応答ペイロードがこの最大サイズを超えると、コマンドはステータスエラーを返します。 エラーメッセージによると、最大ファイルサイズを超えています。 しかし、これはサーバ側には何の影響もありません。サーバはリクエストを正しく受信し、処理しています。

コマンド結果におけるサーバからの HTTP レスポンスの本文のフォーマット方法を決定するには、 ResultBody パラメーターを使用します。 選択肢は 3 つあります。

  • なし : HTTP レスポンスの本文をコマンド結果に含めません。

  • Base64 : 結果に含める前に、本文を Base64 エンコードします。

  • PlainText : 結果に本文をプレーンテキストとして含めます。 応答に印刷不可能な文字が含まれている場合、コマンドは「印刷不可能なデータが見つかりました」というメッセージとともにステータスエラーを返します。

タイムアウト期間(秒)を設定するには、 Timeout パラメータを使用します。 この期間内にリクエストが完了しない場合、API はエラーを返します。

コマンドを発行した直後に、ペイロード(データ)を入力してください。 入力した内容はすべて、改行を含めてペイロードの一部となります。 完了したら、改行("\n") と、ピリオドと改行のみを含む別の行(".\n"))で終了します。 これでコマンドが実行され、データがサーバに送信されます。

どちらの例でも、メッセージ本文は JSON 形式です。 メッセージを受信するサービスの想定フォーマットに応じて、フォーマットはどのようなものでも構いません。

例 1:HTTP を使用した IoT デバイスの制御 POST

以下は、Philips Hue Bridge に接続されたライトを点灯させるマクロ関数です。

 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); } 

コマンドラインで API を使用して同じ操作を行うこともできます。

 xcommand HttpClient PUT ヘッダー: "Content-Type: application/json" URL: "http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state" {"on":true}。 

例 2:HTTP を使用して監視ツールにデータを投稿する POST

 xcommand HttpClient POST ヘッダー: "Content-Type: application/json" URL: "https://mymonitoringserver.com/service/devicemonitoring" {"Message":"ユーザがこのシステムの問題を報告する","systemName":"BoardRoom 4th floor","softwareVersion":"ce9.6.0","softwareReleaseDate":"2018-12-13","videoMonitors":"Dual"}。 

詳細情報

HTTP クライアントリクエストの使用方法の詳細については、 カスタマイズガイド 。 最新バージョンを選択してください。

Ciscoサポート(TAC)は、マクロを含むサードパーティコードのデバッグに対応していません。 チェックしてください https://roomos.cisco.com マクロやサードパーティ製コードに関するサポートが必要な場合は、ご連絡ください。

この投稿記事は役に立ちましたか?
この投稿記事は役に立ちましたか?