bitfocus / companion-module-requests

Repository for tracking module requests
101 stars 11 forks source link

Cisco Webex Devices #208

Closed bwentzel closed 3 years ago

bwentzel commented 4 years ago

Ability to interface the xAPI on Cisco Webex Devices running CE software. This would enable more sophisticated use of these devices in event productions. Check out this git repo: https://github.com/CiscoDevNet/awesome-xapi and specially the postman collection https://github.com/CiscoDevNet/postman-xapi

One quick way of adding support, may be to leverage jsxapi - JavaScript bindings for Cisco Collaboration Endpoint XAPI (by Cisco CE).

thomascantrellsea commented 3 years ago

This seemed like it'd be useful to me so I've started writing a module in my spare time. But my own use case is pretty narrow:

I'd be curious to know from Bjorn (bwentzel@) and others if they have particular cases and hardware in mind.

bwentzel commented 3 years ago

Great to see some interest in this. By leveraging xAPI the companion module would support most Webex Devices.

Optimally a module would not be limited to specific functions, but open up the full xAPI with all its capabilities. Which means everything can be controlled or configured. And current status on the device could be used as feedback on buttons.

One approach may be to offer some commonly used functions; call, disconnect, volume control, start/stop screen sharing, mute/unmute, change camera preset etc. And then have an option to specify a full command in a custom command drop-down selection. Example of a relevant custom command: "xCommand Video Matrix Assign SourceId: 2 Output: 3". Where the part after xCommand would be what is entered as the desired command ("Video Matrix Assign SourceId: 1 Output: 2"). This command example is applicable on the Webex Codec Plus and Pro where it would route video from HDMI Input 1 to HDMI Output 2. In a typical meeting room scenario, this would give you a clean feed from the camera out on HDMI Output 2.

Relevant examples of what should be available as feedback would be xStatus Audio Volume (current volume), xstatus Audio Microphones Mute (mute status) and xstatus Conference Presentation Mode (Presentation sharing state).

In order to explore available commands on your Webex Devices, you can use these links: (please note this only shows commands available in the device current state. It will not show call state details when out of call) http://[IP address]/getxml?location=/Command --> All xCommands, example http://[IP address]/getxml?location=/Status --> All xStatus, example

With jsxapi, you can use this to list all commands (schema). /Path should be replaced with /Status, /Event, /Command or /Configure depending on what type of commands you want to list. await xapi.doc('/Path')

thomascantrellsea commented 3 years ago

An update, we evidentially have two of us thinking alike:

  1. Haakon is working on https://github.com/bitfocus/companion-cisco-webex
  2. I am working on https://github.com/bitfocus/companion-module-cisco-collaboration-endpoints, current support here

If the two are really getting at the same thing, I'll probably drop mine - but Haakon and I are discussing in Slack. Perhaps there are ways I can help Haakon's effort here as his code looks far more extensive than my module.

yurividal commented 3 years ago

Hopefully we can also work on the Cisco CMS module after this one, or perhaps even merge them. https://github.com/bitfocus/companion-module-requests/issues/342

CMS is basically the on-premisse weber server, and can be 100% controlled via rest api. I have some DX80 and SX80 that I can use to test, and also my CMS server.

nottooloud commented 3 years ago

Would this apply to the older C series codexes?

thomascantrellsea commented 3 years ago

Would this apply to the older C series codexes?

That's the plan. I have a C60 and E20 that I'm going to work integrate. They worked on my module as the underlying API was similar, so I see no reason they couldn't work on the new module out of the box (or as an extension). That much said, we could hit snags.

thomascantrellsea commented 3 years ago

From some initial testing, it seems less about hardware platform and more about firmware version.

I have an E20 and a SX20 running TE4.1.3 and TC6.0.0 respectively. These do not appear to work due to some key negotiation that is disabled in the underlying library. Hardware running on later versions, e.g. TC7.3.3) seem to work fine.

I may be able to send a PR to the underlying library (jsxapi) in order to support older versions, but I'm stopping short of that at the moment. What firmware versions are we talking about for C series here?

nottooloud commented 3 years ago

I have a C40 running 7.3.3. 7 was a huge revision.

thomascantrellsea commented 3 years ago

TC7.3.3 is working on my SX20, I have TC7.3.6 installed on my C60 which I can test in a bit.

bwentzel commented 3 years ago

in case you want to join the Cisco Webex developer community chat:

xAPI Devs & Integrations - join via https://eurl.io/#rkp76XDrG

bwentzel commented 3 years ago

We created a Webex chat space with people working on this and those involved in Cisco https://eurl.io/#7Oppqg0w2

thomascantrellsea commented 3 years ago

Seems like this should now be closable with https://github.com/bitfocus/companion-module-cisco-webex-websocket [URL updated, accidentally mentioned my personal copy]