キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 
cancel
22284
閲覧回数
80
いいね!
48
返信

CE9.2 Macro フレームワークディスカッション

Yuki Iwagishi
Cisco Employee
Cisco Employee

新しい Macro フレームワーク機能が CE9.2.1 で導入されました。これにより、利用者が欲しいちょっとした独自の「機能」を ビデオ端末 に搭載することができます。また、Macro フレームワーク と In-Room Control (室内制御)と組み合わせることによってユーザインターフェイスをつくることもできます!

 

ぜひ皆様の Macro に関わるアイディア、コード、質問をこのスレッドでシェアしてください。

Happy coding!

 

なお、Macro フレームワークは SX10/SX10N では未サポートになります。

 

DevNetにビデオ端末の公式開発者向けページを作成しました!トレーニングコンテンツ・サンプルが充実しています!

 

https://developer.cisco.com/site/roomdevices/

 

本家の Macro フレームワークのスレッド(英語)は下記になります。

https://supportforums.cisco.com/t5/telepresence/ce9-2-1-macro-framework-discussions/m-p/3306448

 

参考リンク

TelePresence EP : CE 9.2 マクロチュートリアル

https://supportforums.cisco.com/t5/-/-/ta-p/3300804/

TelePresence EP: Examples による Macro 入門 (コーディングなし) その1

https://supportforums.cisco.com/t5/-/-/ta-p/3301816/

TelePresence EP : DX70/DX80 発信先固定マクロ例

https://supportforums.cisco.com/t5/-/-/ta-p/3300870/

シスコビデオ会議システムのマクロ機能で音楽プレイヤーを作ってみた

https://qiita.com/yiwagish/items/ebec851c09d0a621d29c

シスコビデオ会議システムのマクロ機能で自動運転してみた

https://qiita.com/yiwagish/items/586d24c8dbcf18c2c607

 

 

参考になる情報はこちらでもシェアします。

48件の返信48

Yuki Iwagishi
Cisco Employee
Cisco Employee

切断後、すぐにスタンバイモードにし、消費電力を節約するシンプルなマクロです。Examples にあるマクロを見ながら切断のイベントの拾い方は ”Call and Mute ”のコードから、Standby の処理の仕方は "Auto-wakeup" のコードを参考に記述しました。

 

 

const xapi = require('xapi');
xapi.event.on('CallDisconnect', () => xapi.command('standby activate'));

 

Yuki Iwagishi
Cisco Employee
Cisco Employee

CE9.3 のアイコンからのアクション機能を利用し、 Webex ボタンからの発信をするマクロおよびIn Room Control です。

スクリーンショット 2018-07-30 13.30.48.pngスクリーンショット 2018-07-30 13.31.17.png

 

こちらを改良していったんサイト名を選択するようにしたバージョンです。

スクリーンショット 2018-07-30 13.55.52.png

GroupButton内の 任意のボタンを、マクロから On/Off したいと考えています。
トグルボタンの場合は、下記で可能な事を確認しました。

xapi.command('UserInterface Extensions Widget SetValue', {
  WidgetId: 'トグルボタンのID',
  Value: 'On または Off',
});

 GroupButton内の 任意のボタンを On/Off するには、どのようなパラメタを与えるのかご教示頂けないでしょうか?

例えば、3ステートな設定(NATモードの On/Off/Auto など) をマクロ/InRoomControl で実装する場合、パネル表示時に現在の(実際の)設定値を、グループボタンの状態に反映したいと考えています。

すみません、自己解決しました。

xapi.command('UserInterface Extensions Widget SetValue', {
  WidgetId: 'グループボタンのID',
  Value: 'On状態にするグループ内のボタンの名前',
});

'Value' のパラメタには、'On' や 'Off' が入るもとの思っておりました。
お騒がせしました。 

Yuki Iwagishi
Cisco Employee
Cisco Employee

時間の処理

  const now = new Date();
  const weekday = now.getDay() > 0 && now.getDay() < 6;
  const businesshour = now.getHours() > 9 && now.getHours() < 18 && weekday;

を利用したマクロです。受付アイコンをタッチした際に、平日、9時から18時のみ発信し、それ以外はプロンプトを出す例となります。

 

Yuki Iwagishi
Cisco Employee
Cisco Employee

マクロのサンプルというより、マクロと内蔵電話帳の組み合わせをイメージしてマクロの作成例の画面キャプチャを作ってみました。

 

Yuki Iwagishi
Cisco Employee
Cisco Employee

常にDND (Do Not Disturb)を維持するマクロです。

 

/* Permanent DND */
const xapi = require('xapi');

xapi.status.on('Conference DoNotDisturb', (state) => {
  console.log('going to ', state);
  if (state === 'Inactive') {
      xapi.command('Conference DoNotDisturb Activate');
}
});

 

Yuki Iwagishi
Cisco Employee
Cisco Employee

Room Kit シリーズなどの Speaker Track は

 

xcommand Cameras SpeakerTrack Deactivate 

で機能をオフにすることができます。これを応用し、デフォルトでは SpeakerTrack をオフ、利用者が明示的に機能をオンにした時のみ利用可能にするマクロです。切断時に、デフォルトのオフに戻します。

 

const xapi = require('xapi');

xapi.command('Cameras SpeakerTrack Deactivate');

function listenToCalls() {
  xapi.event.on('CallDisconnect', () => {
    xapi.command('Cameras SpeakerTrack Deactivate');
  });
}

listenToCalls();

これをさらに応用し、CE9.3 以降のアイコン機能を利用して、通話中にSpeaker Track アイコンを追加するパターンを添付しました。

Yuki Iwagishi
Cisco Employee
Cisco Employee

特定の Webex URI 接続時に HOST PIN とレイアウト変更 8 を三回入力でEaul Layout にするマクロサンプルです。

 

 

const xapi = require('xapi');
const Layout = '888';
const Password = '0000#';
const UriBridge = 'hoge@site.webex.com';

function sendTouchTones(Dtmf) {
  xapi.command('Call DTMFSend', { DTMFString: Dtmf });
}

function listenToCalls() {
  xapi.event.on('CallSuccessful', () => {
    xapi.status.get('Call')
      .then((call) => {
        console.log(call[0].CallbackNumber);
        if (call[0].CallbackNumber.includes(UriBridge)) {
          sendTouchTones(Password);
          setTimeout(sendTouchTones, 10000,Layout);
        }
      });
  });

}
listenToCalls();

 

Yuki Iwagishi
Cisco Employee
Cisco Employee

In Room Control とマクロの関係性を理解するために、簡単なじゃんけんアプリケーションを作ってみました。

こんな感じで Widget に出力できます。

 

function alert(text) {
    xapi.command('UserInterface Extensions Widget SetValue', {
      WidgetId: 'janken_output',
      Value: text,
    });
}

Yuki Iwagishi
Cisco Employee
Cisco Employee

曜日の表示と日々のメッセージをランダムに表示するマクロです。会社の目標などを入れると良いかもしれません。サンプルでは故事を入れています。

ポイントは下記のコマンドになります。

 

  xapi.config.set('UserInterface OSD HalfwakeMessage',message);
  xapi.config.set('UserInterface CustomMessage',message);

 

Yuki Iwagishi
Cisco Employee
Cisco Employee

CE9.6 発信・共有ボタンの削除機能を利用し、パブリックスペースに置く想定で PIN 番号を使ってオン・オフするマクロサンプルです。

Yuki Iwagishi
Cisco Employee
Cisco Employee

CE9.6 USB 入力機能を使い、USB キーボードのテンキー 0-3 入力をトリガーに自動発信するマクロサンプルです。なお、Qwerty  側のキー入力はキーマッピングが違うため修正が必要です。

 

const xapi = require('xapi');

const numbers = {
  0: 'example0@example.com',
  1: 'example1@example.com',
  2: 'example2@example.com',
  3: 'example3@example.com',
};

function dial(number) {
  console.log('dial', number);
  xapi.command('dial', { Number: number });
}

function listenToGui(event) {
  let inputChar;
  if (event.Type === 'Pressed') {
    switch (event.Key) {
    case 'KEY_KP0':
      inputChar = '0';
      break;
    case 'KEY_KP1':
      inputChar = '1';
      break;
    case 'KEY_KP2':
      inputChar = '2';
      break;
    case 'KEY_KP3':
      inputChar = '3';
      break;
    }
    const number = numbers[inputChar];
    if (number) dial(number);
  }
}

xapi.event.on('UserInterface InputDevice Key Action', listenToGui);

Yuki Iwagishi
Cisco Employee
Cisco Employee

通常、CE ソフトウェアエンドポイントで通話中の着信を自動拒否する場合、IncomingMultisiteCall のMode をDeny にすることで実現可能です。

ただ、Multisite 機能のない端末、DX70/80 では同等のコマンドがないため、 Cisco Unified Communications Manager の設定で Busy Trigger を 1 にするか、それ以外の環境の場合は下記のマクロで設定します。

 

const xapi = require('xapi');

function listenToCalls() {
  xapi.event.on('CallSuccessful', () => {
    xapi.command('Conference DoNotDisturb Activate');
  });
  xapi.event.on('CallDisconnect', () => {
    xapi.command('Conference DoNotDisturb Deactivate');
  });
}

listenToCalls();

Kenichi Ogami
Cisco Employee
Cisco Employee

コールの接続中に音声・ビデオの統計情報を表示し、コールの切断後に切断時刻や切断理由などのコール履歴を表示するマクロです。

メディアのトラブルシューティングなどにご活用ください。マルチコールには対応していません。

 

 

 

 

 

Yuki Iwagishi
Cisco Employee
Cisco Employee

ThingSpeakというIOR デバイス向けグラフ生成サービスに PeopleCount の情報を HTTP POST する例です。詳しくは

https://qiita.com/yiwagish/items/bb1073b0c576c05afaed をご覧ください。

 

8.PNG

Yuki Iwagishi
Cisco Employee
Cisco Employee

通話中および非通話時にメインビデオの映像をカメラ・資料共有で切り替えるサンプルになります。

スクリーンショット 2019-02-08 16.00.03.png

Yuki Iwagishi
Cisco Employee
Cisco Employee

Touch 10 から電源オフをするサンプルです。電源オンはできませんので電源スイッチを利用する必要があります。

 

shutdown1.pngshutdown2.png

ありがとうございます。

使わせていただきました。(CE9.5.2)

Touch10からシャットダウンを実行すると、Touch10の表示は「システムをシャットダウンしています。」のままですが、これが正解で良いでしょうか?