例
list-menuフィードバックがある場合

この例では、サードパーティのUSB入力デバイス(この場合はリモコン)のキーを使用して、Ciscoデバイスの特定の機能を制御する方法を示します。

Bluetoothリモコン(USBドングルを介して接続)のボタンを使って、スタンバイ、音量調整、Ciscoカメラデバイスの制御などの機能を管理する方法を紹介します。 シスコデバイスのAPIを使用して、関連するイベントを監視し、対応するアクションを実行するマクロを開発できます。

次の例では、標準フォントで書かれたテキストを入力する必要があります。 斜体のテキストは、Ciscoデバイスから受信した応答です。

1

SSHでCiscoデバイスにサインインします。 ローカル管理者ユーザーが必要です。

2

他社製のUSBリモコンを使用できるようにデバイスを構成してください。


       xConfiguration Peripherals InputDevice Mode: On 
      ** end OK  
               

 

設定がオンかオフかは、次のコマンドで確認できます。


        xConfiguration Peripherals InputDevice Mode 
        *c xConfiguration Peripherals InputDevice Mode: On ** end OK  
                  
3

リモコンのボタンが押されたり離されたりしたときに通知が届くように、フィードバック用に登録してください。


       xFeedback Register /event/userinterface/inputdevice 
       ** end OK  
               

 

このコマンドを使用して、デバイスがどのフィードバックに登録されているかを確認できます。


        xFeedback list 
       /event/userinterface/inputdevice ** end OK  
                  
4

リモコンのボタンを押して放し、フィードバックが登録されることを確認します。

このアクションにより、「プレス済み」と「リリース済み」の2つのイベントが生成されます。 ボタンを押したままにすると、ボタンを離すまで Pressed イベントが表示されます。 次に、リリース済みイベントが生成されます。

これらのイベントは、Enterキーを押して放すと発生します。

 
                   *e UserInterface InputDevice Key Action Key: KEY_ENTER *e UserInterface InputDevice Key Action Code: 28 *e UserInterface InputDevice Key Action Type: Pressed ** end *e UserInterface InputDevice Key Action Key: KEY_ENTER *e UserInterface InputDevice Key Action Code: 28 *e UserInterface InputDevice Key Action Type: Released ** end  
               
5

関連するInputDeviceイベントを監視し、デバイスのAPIを使用して関連するアクションを実行するマクロを書いてください。

  • スタンバイ、音量を上げるボタン、音量を下げるボタンを有効にしてください。 マクロは、KEY_VOLUMEUP、KEY_VOLUMEDOWN、またはKEY_SLEEPを含むイベントを検出すると、関連するコマンドを実行します。

  • 矢印キー用のカメラコントロール機能を作成してください。 ボタンが押されている間はカメラを動かし続けたいと思っています。 ボタンを離すと、カメラの動きが止まります。 マクロは、KEY_LEFT、KEY_RIGHT、KEY_UP、またはKEY_DOWNを含むイベントを検出すると、関連するコマンドを実行します。


       const xapi = require('xapi'); function com(command, args='') { xapi.command(command, args); log(command + ' ' + JSON.stringify(args)); } function log(event) { console.log(event); } function notify(message) { xapi.command('UserInterface Message TextLine Display', { Text: message, duration: 3 }); } function cameraControl(motor, direction, cameraId='1') { com('Camera Ramp', { 'CameraId': cameraId, [motor]: direction }); } function init() { let standbyState; xapi.status.get('Standby').then((state) => {standbyState = state.State === 'Off' ? false : true; }); xapi.status.on('Standby', state => { standbyState = state.State === 'Off' ? false : true; }); xapi.event.on('UserInterface InputDevice Key Action', press => { if (press.Type == "Pressed") { switch (press.Key) { case "KEY_LEFT": cameraControl('Pan', 'Left'); break; case "KEY_RIGHT": cameraControl('Pan', 'Right'); break; case "KEY_UP": cameraControl('Tilt', 'Up'); break; case "KEY_DOWN": cameraControl('Tilt', 'Down'); break; default: break; } } else if (press.Type == "Released") { switch (press.Key) { case "KEY_LEFT": cameraControl('Pan', 'Stop'); break; case "KEY_RIGHT": cameraControl('Pan', 'Stop'); break; case "KEY_UP": cameraControl('Tilt', 'Stop'); break; case "KEY_DOWN": cameraControl('Tilt', 'Stop'); break; case 'KEY_VOLUMEUP': com('Audio Volume Increase'); break; case 'KEY_VOLUMEDOWN': com('Audio Volume Decrease'); break; case 'KEY_SLEEP': com(standbyState ? 'Standby Deactivate' : 'Standby Activate'); break; default: break; } } }); } init(); 
     
この投稿記事は役に立ちましたか?
この投稿記事は役に立ちましたか?