More Related Content Similar to Customizing Cisco Collaboration Devices - CL20B - DEVNET-2071 (20) More from Cisco DevNet (17) Customizing Cisco Collaboration Devices - CL20B - DEVNET-20712. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
/Cisco/DevNet/SteveSfartz
• API Architect at Cisco DevNet
• Working to deliver the greatest API Experience for Cisco’s
developer community
• Technical Lead for Cisco’s API Style Guide
• Webex Teams & Devices APIs
• Contributor to DevNet Code & Automation Exchange
• postman collections forWebexTeams & Devices APIs
• awesome-webex, awesome-xapi
• code samples & dev tools
“vision without
execution is
hallucination”
webex: stsfartz@cisco.com
github: ObjectIsAdvantag
twitter: @SteveSfartz
DEVNET-2071 2
3. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
• CE programmability - xAPI
• Interacting with SSH, HTTP,Websockets
• Embedding code as JavaScript Macros
• Building and deploying UI Interactions
• Latest features
Agenda
DEVNET-2071 3
4. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
https://projectworkplace.cisco.com
DEVNET-2071 4
5. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
7 participants, video call & presentation in progress
DEVNET-2071 5
7. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
In-Room Controls and UI Extensions
DEVNET-2071 7
9. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
In-Room Controls for Philips Hue
NetworkTopology
172.17.101.71 172.17.101.69
zigbee
Hue Bulb
172.17.101.83
DEVNET-2071 9
10. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
Hue Controls
http://bit.ly/ObjectIsAdvantag-HueDisco
Macro
Command
Event
In-Room Control
HTTP Put
DEVNET-2071 10
11. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
Hue Controls
http://bit.ly/ObjectIsAdvantag-HueDisco
Macro
Command
Event
In-Room Control
HTTP Put
1
DEVNET-2071 11
12. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
API Reference Guide
12DEVNET-2071
13. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
Dial (command)
• from t-shell
13DEVNET-2071
xcommand Dial Number: stsfartz@cisco.com
*r DialResult CallId: 2
*r DialResult ConferenceId: 1
/! Look for tests SIP
addresses in
‘awesome-xapi’
14. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
https://github.com/CiscoDevNet/awesome-xapi
Join the ‘xAPI Devs’Teams
Space
http://bit.ly/join-xapi-devs
DEVNET-2071 14
15. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
Dial (command)
• from t-shell
• from code
xcommand Dial Number: stsfartz@cisco.com
*r DialResult CallId: 2
*r DialResult ConferenceId: 1
DEVNET-2071 15
16. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
Dial (command)
DEVNET-2071 16
17. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
Changing Color of a Philips Hue bulb
http://172.17.201.69/api/SECRET/lights/4/state
{ "hue": 25500 }
200 OK
[ { "success": { "/lights/4/state/hue": 25500 } } ]
PUT
Hue bridge IP light numberHue user
color
DEVNET-2071 17
18. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
https://github.com/CiscoDevNet/awesome-xapi
Join the ‘xAPI Devs’Teams
Space
http://bit.ly/join-xapi-devs
DEVNET-2071 18
19. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
xConfiguration HttpClient Mode: On
xConfiguration HttpClient AllowInsecureHTTPS: True
Required
DEVNET-2071 19
20. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
HttpClient command
• from t-shell
• from code
xcommand HttpClient Put
Header: "Content-Type: application/json"
Url: " http://192.168.1.33/api/SECRET/lights/1/state"
{ "hue": 25500, "sat" : 255, "on" : true }
.
DEVNET-2071 20
22. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
CE & RoomOS Programmability (xAPI)
macros
Embedded custom logic
in JavaScript
DEVNET-2071 22
23. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
Launch the Macro Editor
https://10.10.20.17X/web
DEVNET-2071 23
24. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
Macro Editor
1
2
3
4
DEVNET-2071 24
26. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
Macro runtime
• Maximum number of macros (10 currently)
• CE & RoomOS devices (but SX10)
• Run as ‘Admin’ role by default
• Duktape JavaScript runtime (version 2.2+) with Babel
• babel-preset-latest’ is specified to support latest ES6+ features
• async/await is supported
• /! Macro tutorial accessible from the codec
DEVNET-2071 26
28. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
HttpClient command
ChatOps – posting to a WebexTeams space
28DEVNET-2071
CiscoLive 11:15
30. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco PublicDEVNET-2071 30
31. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco PublicDEVNET-2071 31
32. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
Launch the UI Extensions Editor
https://10.10.20.17X/web
DEVNET-2071 32
33. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
UI Extensions Editor
DEVNET-2071 33
35. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
Listening to events
DEVNET-2071 35
Macro Editor
UI Extensions Editor
38. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
CE & RoomOS Programmability (xAPI)
configure
events
status
command
macros
protocols
serial port
ssh
websocket
HTTP
formats
text
XML
JSON
DEVNET-2071 38
39. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
Terminal Mode: t-shell
serial port
ssh
websocket
HTTP
text
XML
JSON
DEVNET-2071 39
40. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
Terminal Mode: t-shell
serial port
ssh
websocket
HTTP
text
XML
JSON
DEVNET-2071 40
41. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
CE & RoomOS Programmability (xAPI)
macros serial port
ssh
websocket*
HTTP
text
XML
JSON
DEVNET-2071 41
42. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
HTTP
serial port
ssh
webSocket
HTTP
text
XML
JSON
DEVNET-2071 42
43. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
CHECK all collections for Cisco APIs:
https://explore.postman.com/team/ciscodevnet
DEVNET-2071 43
44. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
CE & RoomOS Programmability (xAPI)
https://github.com/cisco-ce/jsxapi
serial port
ssh
websocket
HTTP
text
XML
JSON
jsxapi
Node.js application
Events,Status, Configuration,
Commands
DEVNET-2071 44
45. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
demo
DEVNET-2071 45
46. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
CE & RoomOS Programmability (xAPI)
https://github.com/cisco-ce/pyxows
serial port
ssh
websocket
HTTP
text
XML
JSON
pyxows
Python application
Events,Status, Configuration,
Commands
DEVNET-2071 46
47. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
Macros and/or Standalone applications
Standalone application
(JavaScript, Python,
other…)
UI Extensions
JSON over SSH
or websocket
XML over HTTP
jsxapi pyxows
HTTP requests
DEVNET-2071 47
JSON over SSH
or websocket* (soon)
Macro
48. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
Macros
• Status, configuration, commands, events
• Invoke HTTP-based APIs
• Limited number of macros (currently 10)
• Stateless only (no db persistance)*
• No macro to macro communication**
Use cases
Custom behaviors
Interact with IoE exposing HTTP APIs
Standalone Apps
• Status, configuration, commands, events
• Interact with legacy APIs (beyong REST)
• Server-side limitations only (memory, disk)
• Stateful with data persistance
Use cases
Manage / Automate multiple devices
Integrate with Process or 3rd party product
Embedded macro or standalone app?
DEVNET-2071 48
50. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
Webex Room Kit
https://projectworkplace.cisco.com/#/en-us/product/webexroomkit/0/0
DEVNET-2071 50
51. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
CE devices are API-native
https://<device-ip>/config/NetworkServices
DEVNET-2071 51
52. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
https://admin.webex.com
DEVNET-2071 52
53. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
Admin UI for cloud-registered Webex Devices
https://admin.webex.com/devices
DEVNET-2071 53
54. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
REQUIREMENT: local connectivity to the device
https://<device-ip>/cloud-loginhttps://admin.webex.com/devices
DEVNET-2071 54
55. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
Adding user roles to access your device
https://<device-ip>/web/localusers
• Create a local user: ‘Control’, ‘Integrator’ or ‘Admin’ role
DEVNET-2071 55
56. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
User Roles
https://collaborationhelp.cisco.com/article/en-us/jkhs20
Admin Have unrestricted access to the device's local web interface.
Access the API over SSH, serial connection, or HTTP(S).
Create and manage users with the Integrator and RoomControl roles.
Integrator Access the device’s local web interface. Integrator has the same access as
an Admin user, except creation of new users.
Access the API over SSH, serial connection, or HTTP(S).
RoomControl Access the In-Room Control editor and corresponding development tools on the web
the web interface, to create touch interface extensions (in-room controls).
Access the API commands that are required to create touch interface extensions.
extensions.
User Make calls and search the People lists.
Modify a few settings, for example adjust the ringtone volume and set the time and
and date format.
DEVNET-2071 56
57. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
https://developer.cisco.com/site/sandbox/
DEVNET-2071 57
58. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
Experiment with a DevNet Sandbox
DEVNET-2071 58
60. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
CE Programmability (xAPI)
configure events
Macros
(JavaScript)
status
command
over ssh,
Websocket,
serial,
or
HTTP*
deploy
UI Extensions Editor
Standalone
(JavaScript, Python…)
Touch10 Interface
* HTTP is unidirectional
(cannot listen to events)
DEVNET-2071 60
61. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
CE Programmability at a glance
UI
Extensions
Editor
• Enhance the User eXperience of
your meetings
• add UI Extensions to Room/Desk/Boards
devices
• interact with IoT devices
• customized behaviors as macros
• Integrate with enterprise process
• Automate your devices from code
• initiate calls, fetch history
• collect room analytics
• apply branding across devices
• deploy UI Extensions & macros
DEVNET-2071 61
62. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
Locked down interface
• ‘Kiosk-like’ User eXperience, no settings menu and standard buttons
• Example: Speed dial to experts via a custom button
DEVNET-2071 62
xConfiguration UserInterface Features HideAll: True
xConfiguration UserInterface SettingsMenu Visibility: Hidden
63. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
Cisco Collaboration Devices Programmability
Available on all devices running CE & RoomOS
Room Kit standard, pro, mini
*no Macros on SX10
Complete programmability
DX, DeskPro
DEVNET-2071 63
64. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
CE and RoomOS
CE
on-premises specific
features
versionned
(ex: 9.6.4, 9.7.1, 9.10…)
RoomOS
cloud-registered devices
specific features
continuous delivery
(via channels)
Cisco Collaboration Endpoint Software
version freeze
DEVNET-2071 64
65. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
CE and RoomOS
CE
on-premises specific
features
versionned
(ex: 9.6.4, 9.7.1, 9.10…)
RoomOS
cloud-registered devices
specific features
continuous delivery
(via channels)
Cisco Collaboration Endpoint Software
version freeze
xAPI over LAN
for all devices (over HTTP,
ssh, websockets)
/xapi RESTAPI
for cloud-registered and
linked devices
DEVNET-2071 65
66. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
What’s new withWebex Devices APIs
• Recently added and New Features
• CE feature-parity forWebex Boards
• Web Applications for Webex Boards,
Room Series and Desks Pro
• Cloud xAPI for cloud and linked Devices
• Coming
• REST APIs to configure Webex Devices
• Webhook events for Webex Devices
Cloud acces and control of on-prem Collaboration
Devices linked via Webex Edge for Devices
POST
https://<webex>/v1/xapi/command/standby.activate
200 OK
Cloud xAPI with Webex Edge for Devices
DEVNET-2071 66
67. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
CE Programmability &Webex Devices APIs
• Tuesday, 10:00 – ‘Meet DevNet’ podium - DEVNET-3010.f
• Learn how to make Network Automation Simple with theCommunity
• Wednesday, 12:15 – Hall 8, C128 - BRKDEV-3244
• Advanced coding for CiscoVideo devices
• Wednesday, 15:00 – ClassRoom 3 - DEVNET-2071
• CustomizingCisco Collaboration Devices
• Thursday, 10:00 – DevNet Theater - DEVNET-1462
• Webex Room Device APIs (latest and new features)
• Friday, 11:30 - BRKCOL-3008
• Customization and Integrations of CiscoVideo Room Devices
DEVNET-2071 67
68. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
https://github.com/CiscoDevNet/awesome-xapi
Join the ‘xAPI Devs’Teams
Space
http://bit.ly/join-xapi-devs
DEVNET-2071 68
69. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
Ultrasound
https://github.com/ObjectIsAdvantag/xapi-samples/tree/master/controls/ultrasound
Give users control to your
devices’ Ultrasound
MaxVolume
• In-Room Control
• Macro-compatible
custom message pushed to your
devices’Touch10/DX interface as
pairing is enabled / disabled.
DEVNET-2071 69
70. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
Maze Game
https://github.com/ObjectIsAdvantag/xapi-samples/tree/master/controls/maze-scores
End-to-end enrichedUser
Experience for Meeting
Rooms
• In-RoomControl
• macro
DEVNET-2071 70
71. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
Agenda with notifications
https://github.com/ObjectIsAdvantag/xapi-samples/tree/master/controls/agenda_push
Pushes session details to a
WebexTeams space
• In-RoomControl
• Javascript Macro
• HttpClient command
• Webex Bot account
DEVNET-2071 71
72. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
Interactive Live Map
https://github.com/ObjectIsAdvantag/roomkit-react-map
Interactive map showing
PeopleCount analytics from a
set of Room Kits
• React
• Node.js
• ‘jsxapi’
DEVNET-2071 72
73. © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public
xAPI module at DevNet
https://developer.cisco.com/learning/modules/xapi-intro
DEVNET-2071 73
74. Learn more about the new DevNet Certifications
and how you can prepare now!
Specialist LevelAssociate Level Professional Level Expert Level
Engineering
Software
Future
Offering
Editor's Notes Cisco Collaboration Devices propose not only immersive telepresence but are also highly customizable and configurable, providing multiple ways to integrate with room amenities like lighting, shades and projectors as well as providing customized user/presenter controls. Join this talk to discover how to build and deploy custom User Interface controls using xAPI & Macros for CE and RoomOS powered devices. This session is aimed at Cisco Collaboration Endpoints administrators, Webex administrators and application developers.