SlideShare ist ein Scribd-Unternehmen logo
1 von 51
How to embed
Messaging andVideo
in your apps
API Evangelist @CiscoDevNet
@SteveSfartz
Stève Sfartz
DEMOS
AND CODE
INTENSE
/Cisco/DevNet/SteveSfartz
 API Evangelist @CiscoDevNet
 Cisco Spark &Tropo APIs
 NodeJS mainly, a bit of #golang
 France and all around Europe
 hosted @PIRL – Paris Innovation
Center & Research Lab
 twitter://@SteveSfartz
 github://ObjectIsAdvantag
“vision without
execution is
hallucination”
-- Thomas Edison
stsfartz@cisco.com
@SteveSfartz
so what’s on the menu
• Tour the potential ofVideo Calls
• Messaging from code
• Calling from code
• Demos & tech details
ENGAGEMENT
TIME
Ad Hoc
Meetings
Furious
Chat
Occasional
Messaging
REALTIME
Scheduled
Meetings
Current Workstyles Use Multiple Modes
ENGAGEMENT
TIME
Optimizing the Space between the Spaces
REALTIME
Occasional
Messaging
Scheduled
Meetings
Ad Hoc
Meetings
Furious
Chat
How do I escalate from chat
to a live meeting without killing our
momentum?
We’re on a roll in this meeting, if only I
had a little more time to finish my thoughts.
I need a few more
answers before I can
assign the action items
Where did that list of
important reference
articles end up?
ENGAGEMENT
TIME
Continuous Collaboration
REALTIME
Occasional
Messaging
Ad Hoc
Meetings
Furious
Chat
Scheduled
Meetings
Secure, scalable, continuous collaboration
Cisco Spark Platform
Apps and
Endpoints
On Premise Services Cloud Based Services
Single Experience Across Devices & Applications
Apps and
Endpoints
Every Pocket , Desk, Room
Demo
 Cisco Spark Clients
 DX80
?! Now what if your app could get
these Messages,Audio/Video
super powers ?!
Cisco Spark ‘Free’ plan
 Web, Desktop, Mobile clients
 Illimited messaging & spaces
 Up to 3 participants in a Call
 Developer access to Cisco Spark APIs
https://developer.ciscospark.com
Cisco Spark REST API
14
GET
POST
DELETE
PUT
/Rooms
/Memberships
/Messages
/Webhooks
/People
/Teams
developer.ciscospark.com/
Cisco Spark for Developers
API
token
Cisco Spark for Developers
API
developer
bot
oauth
jwt
token
Demo
 REST API
 Automation, ChatOps
Cisco Spark
Cloud Service
1. interacts in spaces
via a CiscoSpark client
Cisco Spark User
Your Bot code running
On-premise or on a PublicCoud
2. posts notifications to
registeredWebHooks
Publicly accessibleAPIs
3. posts messages
as notifications fly in
Bot Architecture: Webhooks
 Register events your
bot is interested to
listened to
 Messages / created
 Memberships / created
 As events happen in
spaces, receive
notifications
Demo
 REST API
 Bot (on Glitch)
‘What is takes to code a bot’
Cisco Spark for Developers
API
developer
bot
oauth
jwt
token
Cisco Spark for Developers
developer
bot
oauth
guest
token REST API
SDKs
Browsers,
iOS, Android
all Spark
features
Demo
 OAuth grant flow
Step 3 – App Requests AccessToken
duittenb
With the received Auth Code, app.html does a HTTPS POST to spark
with the client ID & secret to request the AccessToken.
HTTPS POST send :
https://api.ciscospark.com/v1/access_token
grant_type = authorization_code
redirect_uri = http://myserver.com/app.html
code = auth code…
client_id = oif8we28382u398u2938u
client_secret = hf33we28382uf8we2838Zx
http://myserver.com
Step 4 – Spark Response
HTTP POST response
{
"access_token" :"ZDI3MGEyYzQtNmFlN0NDNhLWFlN",
"expires_in” :1209600, //seconds
"refresh_token":"MDEyMzQ1Njc4OTAxMjM0NTY3ODkw",
"refresh_token_expires_in":7776000 //seconds
}
duittenb
Spark returns the AccessToken to the Application
Some applications may store this access token in a secure way so
it can be re-used when a user logs into the Application
http://myserver.com
Cisco Spark for Developers
developer
bot
oauth
jwt
token REST API
SDKs
Browsers,
iOS, Android
all Spark
features
Spark SDKs
Calling
• Calling
• Call Events
Specs
iOS SDK - swift
• iOS 9 and 10
Browsers SDK - WebRTC
• Chrome - current
• Firefox - current
CODECS
• H264
• Opus
Call &
Media Controls
• Call Control
• AudioControl
• VideoControl
Other
Functions
• Persistent
registration
• Feedback
• Push
notifications
Use Case: Retail
https://developer.ciscospark.com/sdk-for-browsers.html
https://ciscospark.github.io/spark-js-sdk/api
Demo
 OAuth with Spark SDK
Web Dialer from FireFox
https://webdialer.chhab.rocks
Each space also has a SIP address
https://developer.ciscospark.com/endpoint-rooms-roomId-get.html
Cisco Spark Client toWidget
Recents
Space
Space Widget
• Audio & video 1:1 calling
• Space & 1:1 messaging
• Markdown support
• File sharing
• Message flags and ability to
delete messages
• Read receipts
• Persistent chat
Demo
 SpaceWidget
Embedding the Space React component
Cisco Spark for Developers
developer
bot
oauth
jwt
token REST API
SDKs
Browsers,
iOS, Android
all Spark
features
What if my users are not on Spark ?
Cisco
Spark
Anyone Everywhere
- spark user
- guest
- spark user,
spaces, devices
- SIP addresses
Guest mode
• Create a Developer Guest organisation
• Get issued a OrgId & Secret
• Dynamically register users
• Get JWT tokens for these users
• Access Cisco Spark APIs & SDKs
Gest mode deep dive
https://jwt.io/
Create a user JWT token from code
API access token from the user JWT token
POST https://api.ciscospark.com/v1/jwt/login
Authorization: <jwt-user-token>
{
"token": "eyJhbGci.eyNlX3R5cGU.I4zgVxATOH9Y"
"expiresIn": 21599
}
Demo
 Guest mode
Secure, scalable, extensible Conversations
• Desktop, Mobile, Web clients
• APIs & SDKs to extend the platform
• API tokens, Oauth, JWT
• Key Management Server for end to end security
• WebRTC,Voice over IP
• SIP addresses
Cisco Spark Resources
 developer.ciscospark.com
 awesome-ciscospark
 DevNet learning labs
https://learninglabs.cisco.com/tracks/collab-cloud
Get empowered at
 Learnings labs
 Fog computing
 Sandboxes
ready to use
Kubernetes cluster
for DevNet members
Other talks at CodeMotion
today 14:10: Embedding Cisco Spark and Location
applications (ESRI) into business processes
saturday 12:30: Microservices and containers
networking: Contiv, deep dive and demo
Thank you
Embedding Messages and Video Calls in your apps
Embedding Messages and Video Calls in your apps

Weitere ähnliche Inhalte

Was ist angesagt?

An overview of mobile html + java script frameworks
An overview of mobile html + java script frameworksAn overview of mobile html + java script frameworks
An overview of mobile html + java script frameworks
Sasha dos Santos
 
Firefox operating system
Firefox operating systemFirefox operating system
Firefox operating system
Nishant Mehare
 

Was ist angesagt? (20)

Visual Studio 2015: novità per gli sviluppatori iOS, Android e Cross-Platform
Visual Studio 2015: novità per gli sviluppatori iOS, Android e Cross-PlatformVisual Studio 2015: novità per gli sviluppatori iOS, Android e Cross-Platform
Visual Studio 2015: novità per gli sviluppatori iOS, Android e Cross-Platform
 
Intel XDK in Brief
Intel XDK in BriefIntel XDK in Brief
Intel XDK in Brief
 
Tizen Native Application Development with C/C++
Tizen Native Application Development with C/C++Tizen Native Application Development with C/C++
Tizen Native Application Development with C/C++
 
Mobile Web Apps and the Intel® XDK
Mobile Web Apps and the Intel® XDKMobile Web Apps and the Intel® XDK
Mobile Web Apps and the Intel® XDK
 
An overview of mobile html + java script frameworks
An overview of mobile html + java script frameworksAn overview of mobile html + java script frameworks
An overview of mobile html + java script frameworks
 
Crosswalk and the Intel XDK
Crosswalk and the Intel XDKCrosswalk and the Intel XDK
Crosswalk and the Intel XDK
 
INTEL XDK
INTEL XDKINTEL XDK
INTEL XDK
 
Spark: jsFiddle Meets Salesforce Lightning
Spark: jsFiddle Meets Salesforce LightningSpark: jsFiddle Meets Salesforce Lightning
Spark: jsFiddle Meets Salesforce Lightning
 
Samsung Indonesia: Tizen Native App
Samsung Indonesia: Tizen Native AppSamsung Indonesia: Tizen Native App
Samsung Indonesia: Tizen Native App
 
Spark: jsFiddle Meets Salesforce Lightning
Spark: jsFiddle Meets Salesforce LightningSpark: jsFiddle Meets Salesforce Lightning
Spark: jsFiddle Meets Salesforce Lightning
 
Ionic Native: Native-powered apps, without the hassle
Ionic Native: Native-powered apps, without the hassleIonic Native: Native-powered apps, without the hassle
Ionic Native: Native-powered apps, without the hassle
 
Wikipedia Mobile App with PhoneGap
Wikipedia Mobile App with PhoneGapWikipedia Mobile App with PhoneGap
Wikipedia Mobile App with PhoneGap
 
Firefox operating system
Firefox operating systemFirefox operating system
Firefox operating system
 
App forum2015 London - Building RhoMobile Applications with Ionic
App forum2015 London - Building RhoMobile Applications with IonicApp forum2015 London - Building RhoMobile Applications with Ionic
App forum2015 London - Building RhoMobile Applications with Ionic
 
DevNetCreate Workshop - build a react app - React crash course
DevNetCreate Workshop - build a react app - React crash courseDevNetCreate Workshop - build a react app - React crash course
DevNetCreate Workshop - build a react app - React crash course
 
Android chat in the cloud
Android chat in the cloudAndroid chat in the cloud
Android chat in the cloud
 
Why Streethawk re-wrote ibeacon handling on Android
Why Streethawk re-wrote ibeacon handling on AndroidWhy Streethawk re-wrote ibeacon handling on Android
Why Streethawk re-wrote ibeacon handling on Android
 
Revue des annonces WWDC2015
Revue des annonces WWDC2015Revue des annonces WWDC2015
Revue des annonces WWDC2015
 
From Android NDK To AOSP
From Android NDK To AOSPFrom Android NDK To AOSP
From Android NDK To AOSP
 
A Journey to Improve Infrastructure Compliance With InSpec
A Journey to Improve Infrastructure Compliance With InSpecA Journey to Improve Infrastructure Compliance With InSpec
A Journey to Improve Infrastructure Compliance With InSpec
 

Ähnlich wie Embedding Messages and Video Calls in your apps

SignalR Intro + WPDev integration @ Codetock
SignalR Intro + WPDev integration @ CodetockSignalR Intro + WPDev integration @ Codetock
SignalR Intro + WPDev integration @ Codetock
Sam Basu
 

Ähnlich wie Embedding Messages and Video Calls in your apps (20)

Cisco Spark the Industry Challenge
Cisco Spark the Industry ChallengeCisco Spark the Industry Challenge
Cisco Spark the Industry Challenge
 
Rome 2017: Building advanced voice assistants and chat bots
Rome 2017: Building advanced voice assistants and chat botsRome 2017: Building advanced voice assistants and chat bots
Rome 2017: Building advanced voice assistants and chat bots
 
Coding 102 REST API Basics Using Spark
Coding 102 REST API Basics Using SparkCoding 102 REST API Basics Using Spark
Coding 102 REST API Basics Using Spark
 
Cisco APIs: An Interactive Assistant for the Web2Day Developer Conference
Cisco APIs: An Interactive Assistant for the Web2Day Developer ConferenceCisco APIs: An Interactive Assistant for the Web2Day Developer Conference
Cisco APIs: An Interactive Assistant for the Web2Day Developer Conference
 
DevNet @TAG - Spark & Tropo APIs - Milan/Rome May 2016
DevNet @TAG - Spark & Tropo APIs - Milan/Rome May 2016DevNet @TAG - Spark & Tropo APIs - Milan/Rome May 2016
DevNet @TAG - Spark & Tropo APIs - Milan/Rome May 2016
 
DevNet Express - Spark & Tropo API - Lisbon May 2016
DevNet Express - Spark & Tropo API - Lisbon May 2016DevNet Express - Spark & Tropo API - Lisbon May 2016
DevNet Express - Spark & Tropo API - Lisbon May 2016
 
How to Build Advanced Voice Assistants and Chatbots
How to Build Advanced Voice Assistants and ChatbotsHow to Build Advanced Voice Assistants and Chatbots
How to Build Advanced Voice Assistants and Chatbots
 
Cisco Spark & Tropo API Workshop
Cisco Spark & Tropo API WorkshopCisco Spark & Tropo API Workshop
Cisco Spark & Tropo API Workshop
 
BotCommons: Metadata for Bots - Devoxx 2017
BotCommons: Metadata for Bots - Devoxx 2017BotCommons: Metadata for Bots - Devoxx 2017
BotCommons: Metadata for Bots - Devoxx 2017
 
Advanced Postman for Better APIs - Web Summit 2018 - Cisco DevNet
Advanced Postman for Better APIs - Web Summit 2018 - Cisco DevNetAdvanced Postman for Better APIs - Web Summit 2018 - Cisco DevNet
Advanced Postman for Better APIs - Web Summit 2018 - Cisco DevNet
 
DreamFactory Essentials Webinar
DreamFactory Essentials WebinarDreamFactory Essentials Webinar
DreamFactory Essentials Webinar
 
Going crazy with docker multi stage build - Jorge Arteiro
Going crazy with docker multi stage build - Jorge ArteiroGoing crazy with docker multi stage build - Jorge Arteiro
Going crazy with docker multi stage build - Jorge Arteiro
 
ITCamp 2019 - Andrea Saltarello - Implementing bots and Alexa skills using Az...
ITCamp 2019 - Andrea Saltarello - Implementing bots and Alexa skills using Az...ITCamp 2019 - Andrea Saltarello - Implementing bots and Alexa skills using Az...
ITCamp 2019 - Andrea Saltarello - Implementing bots and Alexa skills using Az...
 
Mobile SDK: Considerations & Best Practices
Mobile SDK: Considerations & Best Practices Mobile SDK: Considerations & Best Practices
Mobile SDK: Considerations & Best Practices
 
SignalR Intro + WPDev integration @ Codetock
SignalR Intro + WPDev integration @ CodetockSignalR Intro + WPDev integration @ Codetock
SignalR Intro + WPDev integration @ Codetock
 
IoT to Human interactions - Stève Sfartz - Codemotion Milan 2016
IoT to Human interactions - Stève Sfartz - Codemotion Milan 2016IoT to Human interactions - Stève Sfartz - Codemotion Milan 2016
IoT to Human interactions - Stève Sfartz - Codemotion Milan 2016
 
API Documentation Workshop tcworld India 2015
API Documentation Workshop tcworld India 2015API Documentation Workshop tcworld India 2015
API Documentation Workshop tcworld India 2015
 
Chatbots 101: design, code, deploy - Cisco Live Orlando 2018 - DEVNET-2896
Chatbots 101: design, code, deploy - Cisco Live Orlando 2018 - DEVNET-2896Chatbots 101: design, code, deploy - Cisco Live Orlando 2018 - DEVNET-2896
Chatbots 101: design, code, deploy - Cisco Live Orlando 2018 - DEVNET-2896
 
20150423 Android Taipei : 祖克伯F8的奇幻之旅
20150423 Android Taipei : 祖克伯F8的奇幻之旅20150423 Android Taipei : 祖克伯F8的奇幻之旅
20150423 Android Taipei : 祖克伯F8的奇幻之旅
 
Building a REST API Microservice for the DevNet API Scavenger Hunt
Building a REST API Microservice for the DevNet API Scavenger HuntBuilding a REST API Microservice for the DevNet API Scavenger Hunt
Building a REST API Microservice for the DevNet API Scavenger Hunt
 

Mehr von Cisco DevNet

Emulators as an Emerging Best Practice for API Providers
Emulators as an Emerging Best Practice for API ProvidersEmulators as an Emerging Best Practice for API Providers
Emulators as an Emerging Best Practice for API Providers
Cisco DevNet
 

Mehr von Cisco DevNet (20)

18 facets of the OpenAPI specification - Cisco Live US 2023
18 facets of the OpenAPI specification - Cisco Live US 202318 facets of the OpenAPI specification - Cisco Live US 2023
18 facets of the OpenAPI specification - Cisco Live US 2023
 
The 12 facets of the OpenAPI standard.pdf
The 12 facets of the OpenAPI standard.pdfThe 12 facets of the OpenAPI standard.pdf
The 12 facets of the OpenAPI standard.pdf
 
the 12 facets of OpenAPI
the 12 facets of OpenAPIthe 12 facets of OpenAPI
the 12 facets of OpenAPI
 
Webex APIs for Administrators - CL20B - DEVNET-2610
Webex APIs for Administrators - CL20B - DEVNET-2610Webex APIs for Administrators - CL20B - DEVNET-2610
Webex APIs for Administrators - CL20B - DEVNET-2610
 
Advanced coding & deployment for Cisco Video Devices - CL20B - DEVNET-3244
Advanced coding & deployment for Cisco Video Devices - CL20B - DEVNET-3244Advanced coding & deployment for Cisco Video Devices - CL20B - DEVNET-3244
Advanced coding & deployment for Cisco Video Devices - CL20B - DEVNET-3244
 
Customizing Cisco Collaboration Devices - CL20B - DEVNET-2071
Customizing Cisco Collaboration Devices - CL20B - DEVNET-2071Customizing Cisco Collaboration Devices - CL20B - DEVNET-2071
Customizing Cisco Collaboration Devices - CL20B - DEVNET-2071
 
Webex APIs for Administrators - DEVNET_2610 - Cisco Live 2019
Webex APIs for Administrators - DEVNET_2610 - Cisco Live 2019Webex APIs for Administrators - DEVNET_2610 - Cisco Live 2019
Webex APIs for Administrators - DEVNET_2610 - Cisco Live 2019
 
Webex Devices xAPI - DEVNET_2071 - Cisco Live - San Diego 2019
Webex Devices xAPI - DEVNET_2071 - Cisco Live - San Diego 2019Webex Devices xAPI - DEVNET_2071 - Cisco Live - San Diego 2019
Webex Devices xAPI - DEVNET_2071 - Cisco Live - San Diego 2019
 
Javascript Essentials - Cisco Live Barcelona 2019
Javascript Essentials - Cisco Live Barcelona 2019Javascript Essentials - Cisco Live Barcelona 2019
Javascript Essentials - Cisco Live Barcelona 2019
 
when Apps meet Infrastructure - CodeMotionMilan2018 Keynote - Cisco DevNet - ...
when Apps meet Infrastructure - CodeMotionMilan2018 Keynote - Cisco DevNet - ...when Apps meet Infrastructure - CodeMotionMilan2018 Keynote - Cisco DevNet - ...
when Apps meet Infrastructure - CodeMotionMilan2018 Keynote - Cisco DevNet - ...
 
Meeting rooms are talking. Are you listening
Meeting rooms are talking. Are you listeningMeeting rooms are talking. Are you listening
Meeting rooms are talking. Are you listening
 
Meeting rooms are talking! are you listening?
Meeting rooms are talking! are you listening?Meeting rooms are talking! are you listening?
Meeting rooms are talking! are you listening?
 
Emulators as an Emerging Best Practice for API Providers
Emulators as an Emerging Best Practice for API ProvidersEmulators as an Emerging Best Practice for API Providers
Emulators as an Emerging Best Practice for API Providers
 
Microservices & Serverless Architecture Principles Applied - Cisco Live Orlan...
Microservices & Serverless Architecture Principles Applied - Cisco Live Orlan...Microservices & Serverless Architecture Principles Applied - Cisco Live Orlan...
Microservices & Serverless Architecture Principles Applied - Cisco Live Orlan...
 
Integrated, Automated Video Room Systems - Webex Devices - Cisco Live Orlando...
Integrated, Automated Video Room Systems - Webex Devices - Cisco Live Orlando...Integrated, Automated Video Room Systems - Webex Devices - Cisco Live Orlando...
Integrated, Automated Video Room Systems - Webex Devices - Cisco Live Orlando...
 
Webex APIs for Admins - Cisco Live Orlando 2018 - DEVNET-3610
Webex APIs for Admins - Cisco Live Orlando 2018 - DEVNET-3610Webex APIs for Admins - Cisco Live Orlando 2018 - DEVNET-3610
Webex APIs for Admins - Cisco Live Orlando 2018 - DEVNET-3610
 
Webex Teams Widgets Technical Drill down - Cisco Live Orlando 2018 - DEVNET-3891
Webex Teams Widgets Technical Drill down - Cisco Live Orlando 2018 - DEVNET-3891Webex Teams Widgets Technical Drill down - Cisco Live Orlando 2018 - DEVNET-3891
Webex Teams Widgets Technical Drill down - Cisco Live Orlando 2018 - DEVNET-3891
 
Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808
Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808
Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808
 
Phone Communications in Javascript with Tropo Serverless
Phone Communications in Javascript with Tropo ServerlessPhone Communications in Javascript with Tropo Serverless
Phone Communications in Javascript with Tropo Serverless
 
Hackathon Poste Mobile 2016 Cisco Roma @TAG TalentGardenIT
Hackathon Poste Mobile 2016 Cisco Roma @TAG TalentGardenIT Hackathon Poste Mobile 2016 Cisco Roma @TAG TalentGardenIT
Hackathon Poste Mobile 2016 Cisco Roma @TAG TalentGardenIT
 

Kürzlich hochgeladen

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Kürzlich hochgeladen (20)

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 

Embedding Messages and Video Calls in your apps

  • 1. How to embed Messaging andVideo in your apps API Evangelist @CiscoDevNet @SteveSfartz Stève Sfartz DEMOS AND CODE INTENSE
  • 2.
  • 3. /Cisco/DevNet/SteveSfartz  API Evangelist @CiscoDevNet  Cisco Spark &Tropo APIs  NodeJS mainly, a bit of #golang  France and all around Europe  hosted @PIRL – Paris Innovation Center & Research Lab  twitter://@SteveSfartz  github://ObjectIsAdvantag “vision without execution is hallucination” -- Thomas Edison stsfartz@cisco.com @SteveSfartz
  • 4. so what’s on the menu • Tour the potential ofVideo Calls • Messaging from code • Calling from code • Demos & tech details
  • 6. ENGAGEMENT TIME Optimizing the Space between the Spaces REALTIME Occasional Messaging Scheduled Meetings Ad Hoc Meetings Furious Chat How do I escalate from chat to a live meeting without killing our momentum? We’re on a roll in this meeting, if only I had a little more time to finish my thoughts. I need a few more answers before I can assign the action items Where did that list of important reference articles end up?
  • 8.
  • 9. Secure, scalable, continuous collaboration Cisco Spark Platform Apps and Endpoints On Premise Services Cloud Based Services Single Experience Across Devices & Applications Apps and Endpoints
  • 10. Every Pocket , Desk, Room
  • 11. Demo  Cisco Spark Clients  DX80
  • 12. ?! Now what if your app could get these Messages,Audio/Video super powers ?!
  • 13. Cisco Spark ‘Free’ plan  Web, Desktop, Mobile clients  Illimited messaging & spaces  Up to 3 participants in a Call  Developer access to Cisco Spark APIs https://developer.ciscospark.com
  • 14. Cisco Spark REST API 14 GET POST DELETE PUT /Rooms /Memberships /Messages /Webhooks /People /Teams developer.ciscospark.com/
  • 15. Cisco Spark for Developers API token
  • 16. Cisco Spark for Developers API developer bot oauth jwt token
  • 17. Demo  REST API  Automation, ChatOps
  • 18. Cisco Spark Cloud Service 1. interacts in spaces via a CiscoSpark client Cisco Spark User Your Bot code running On-premise or on a PublicCoud 2. posts notifications to registeredWebHooks Publicly accessibleAPIs 3. posts messages as notifications fly in Bot Architecture: Webhooks  Register events your bot is interested to listened to  Messages / created  Memberships / created  As events happen in spaces, receive notifications
  • 19. Demo  REST API  Bot (on Glitch) ‘What is takes to code a bot’
  • 20. Cisco Spark for Developers API developer bot oauth jwt token
  • 21. Cisco Spark for Developers developer bot oauth guest token REST API SDKs Browsers, iOS, Android all Spark features
  • 23. Step 3 – App Requests AccessToken duittenb With the received Auth Code, app.html does a HTTPS POST to spark with the client ID & secret to request the AccessToken. HTTPS POST send : https://api.ciscospark.com/v1/access_token grant_type = authorization_code redirect_uri = http://myserver.com/app.html code = auth code… client_id = oif8we28382u398u2938u client_secret = hf33we28382uf8we2838Zx http://myserver.com
  • 24. Step 4 – Spark Response HTTP POST response { "access_token" :"ZDI3MGEyYzQtNmFlN0NDNhLWFlN", "expires_in” :1209600, //seconds "refresh_token":"MDEyMzQ1Njc4OTAxMjM0NTY3ODkw", "refresh_token_expires_in":7776000 //seconds } duittenb Spark returns the AccessToken to the Application Some applications may store this access token in a secure way so it can be re-used when a user logs into the Application http://myserver.com
  • 25. Cisco Spark for Developers developer bot oauth jwt token REST API SDKs Browsers, iOS, Android all Spark features
  • 26. Spark SDKs Calling • Calling • Call Events Specs iOS SDK - swift • iOS 9 and 10 Browsers SDK - WebRTC • Chrome - current • Firefox - current CODECS • H264 • Opus Call & Media Controls • Call Control • AudioControl • VideoControl Other Functions • Persistent registration • Feedback • Push notifications
  • 30. Demo  OAuth with Spark SDK Web Dialer from FireFox https://webdialer.chhab.rocks
  • 31.
  • 32. Each space also has a SIP address https://developer.ciscospark.com/endpoint-rooms-roomId-get.html
  • 33. Cisco Spark Client toWidget Recents Space
  • 34. Space Widget • Audio & video 1:1 calling • Space & 1:1 messaging • Markdown support • File sharing • Message flags and ability to delete messages • Read receipts • Persistent chat
  • 36. Embedding the Space React component
  • 37. Cisco Spark for Developers developer bot oauth jwt token REST API SDKs Browsers, iOS, Android all Spark features
  • 38. What if my users are not on Spark ? Cisco Spark Anyone Everywhere - spark user - guest - spark user, spaces, devices - SIP addresses
  • 39. Guest mode • Create a Developer Guest organisation • Get issued a OrgId & Secret • Dynamically register users • Get JWT tokens for these users • Access Cisco Spark APIs & SDKs
  • 42. Create a user JWT token from code
  • 43. API access token from the user JWT token POST https://api.ciscospark.com/v1/jwt/login Authorization: <jwt-user-token> { "token": "eyJhbGci.eyNlX3R5cGU.I4zgVxATOH9Y" "expiresIn": 21599 }
  • 45. Secure, scalable, extensible Conversations • Desktop, Mobile, Web clients • APIs & SDKs to extend the platform • API tokens, Oauth, JWT • Key Management Server for end to end security • WebRTC,Voice over IP • SIP addresses
  • 46. Cisco Spark Resources  developer.ciscospark.com  awesome-ciscospark  DevNet learning labs https://learninglabs.cisco.com/tracks/collab-cloud
  • 47. Get empowered at  Learnings labs  Fog computing  Sandboxes ready to use Kubernetes cluster for DevNet members
  • 48. Other talks at CodeMotion today 14:10: Embedding Cisco Spark and Location applications (ESRI) into business processes saturday 12:30: Microservices and containers networking: Contiv, deep dive and demo

Hinweis der Redaktion

  1. BEFORE YOU START : run the CiscoDevNet and roomId bots
  2. Who has already heard of Spark ? Who has already heard of Cisco ? Cisco is 90% market share in networking WW and major actor in collaboration software (> 50% WW) Today, it will be about collaboration and building the next gen app. We have opened our secrete sauce to application developers, and continue to open it. I have 30 minutes to show you the use cases it opens to you, and the dirty details Demoes flow: - experiences -- Desktop -- Mobile -- Web -- Device => our goal: bring it to your app - message - audio & video calls - meetings - Widget: -- space-grid: he just went crazy with ChatOps -- customizable => what if I only wanted to chat -- and what if I wanted anybody to chat with my bot, invite non Spark users to the discussion => gest mode Then we have a pretty powerful platform that can do messaging, audio/video call, extensible and scalable, Web, Desktop and Mobile, and you can start for free: - Spark Free account - Spark Developer Portal - Create your 'guest' developer organisation (coming) What's next ? what's the vision for the future Now what is I could invite an Professional assistant to the game - RoomFinder - Spark assistant => Spark is an extensible, scalable and secure Cloud platform to build your new gen app or business
  3. I am a technical evangelist at DevNet – Cisco Developer Program It means Cisco pays me to create developer resources (labs & samples), explain and teach technology at conferences and enterprise workshops, and sometimes support hackathons. I am based in France, and report to the best manager in the world named Mandy, sitting a the back of the room, And I love Italy, my wife’s family living in Sardegna, I spend most of my vacations in Sardaigna / en Bosa Marina, perto de Alghero.
  4. This intensity various from occasional messaging, where I just send a few messages here and there, to something I call furious chat, where everyone is sending messages at once. In fact, if they had just spoken those messages it would have been a meeting. And in fact the next level of intensity is an ad-hoc meeting, and perhaps the most intense is a scheduled, more formal meeting. The line for real-time is around here – at furious chat – when things are happening at that very moment together.
  5. All of the pain points are on the transitions. First pain point – escalating from furious chat into the meeting itself. Requires all of this coordination to figure out how to do that – whose bridge to use? Are you in a video room and how do we get you in? Second pain point – sharing information during a meeting- the chat in the meeting isn’t the same chat. You can email it after the meeting… Third paint point- how do I know when to switch meetings when I have all of these back to back meetings? Forth pain point- work doesn’t stop when the meeting ends, if anything that’s when it starts and tracking actions requires connecting with people
  6. Cisco Spark addresses all of these pain points and all of these points of “work”. We want Spark to be the platform that all people use to meet, collaborate, chat and call so that all interactions can be continuous and agile.
  7. Conversations (messages, audio, video, all of them) At work, on the way, home office, family & friends It’s not one app, it’s all apps It’s not one personal device, it’s all devices It also comes from everywhere = connected world Spark platform => Bring this power to the developer via a set of APIs and SDK we’ll demo
  8. Conversations (messages, audio, video, all of them) At work, on the way, home office, family & friends It’s not one app, it’s all apps It’s not one personal device, it’s all devices It also comes from everywhere = connected world Spark platform => Bring this power to the developer via a set of APIs and SDK we’ll demo
  9. Cisco supports third-party endpoints across a wide range of operating systems. We offer three client applications integrated to help mobile professionals work at optimal productivity, wherever they are and whatever device they use. Cisco Jabber is our all-in-one UC application. Cisco WebEx is the industry-leading web conferencing application. Cisco Spark instantly creates a place for teams to work together, where their work can live, and provides a way to stay connected to it all. These applications are tightly integrated with each other and can be accessed across a range of devices including laptops, tablets, mobile phones, and Cisco collaboration endpoints. This range of endpoints from room systems to software running on mobile devices is tailored to support the various ways in which people work – all the way from your pocket to the boardroom. And they all work *together* to deliver a consistent, delightful, no-compromise collaboration experience. <presenter note>: Depending on the opportunity, you may want to drill down on one client or another and field questions, perhaps pull additional slides from other EBC “Chapters.” It is strongly recommended that you encourage the account team to create a Spark room for the participants in this EBC as a way to follow up/stay in touch/share the slides from the day. If AM creates this now, you can circle back and do a live demo later during the session.
  10. Create a space « CodeMotion Cisco Spark API »: hey Anna, where is this happening already ? Calling you: answer on Phone Calling you: answer via Desk
  11. We’ll leverage Spark APIs to implement this use case Spark APIs are accessible at https://developer.ciscospark.com/ This is where you get your API token and run thru the interactive documentation
  12. developer.ciscospark.com Create a new space: « API demo » Post a message => people use it to do ChatOps (later) Drop a document Interact with a bot: CiscoDevNet
  13. Create a Bot Account Run an existing bot on Glitch: pick https://github.com/CiscoDevNet/botkit-template
  14. Create an Integration redirecting to Requestbin
  15. Getting an Access Token If the user granted permission to your app, Spark will redirect the user's web browser to the redirect_uri you specified when entering the grant flow. The request to the Redirect URL will contain a code parameter in the query string like so: http://your-server.com/auth?code=YjAzYzgyNDYtZxx3YS00OWZkLTg2YTgtNDc3Zjg4YzFiZDlkNxxlN2FhMjMtYzUz Your app will then need to exchange this Authorization Code for an Access Token that can be used to invoke the APIs. To do this your app will need to perform an HTTP POST to the following URL with a standard set of OAuth parameters. This endpoint will only accept an x-www-form-urlencoded body. https://api.ciscospark.com/v1/access_token The required parameters are: grant_type This should be set to "authorization_code" client_id Issued when creating your app client_secret Remember this guy? You kept it safe somewhere when creating your app code The Authorization Code from the previous step redirect_uri Must match the one used in the previous step NOTE: in THIS occasion the redirect_uri does NOT have to be encoded and can be send ‘as is’ duittenb@cisco.com
  16. (DJ) Q: Is this access token stored on myserver.com/app or in a user cookie? Do you have to go through this procedure every day? How do you check if a user has a valid access token? Stored where? Spark will then respond with JSON containing an Access Token that's good for 14 days and a Refresh Token that expires in 90 days. The Refresh Token can be used to generate a new Access Token when the current one expires: duittenb@cisco.com
  17. CALLING •Dial by PersonEmail •Dial by SIP Address CALL EVENTS •Call progress events (ringing, connected, rejected) •Incoming call event •Remote push notification (closed app) (developer responsibility) •Local push notification (backgrounded app)  (developer responsibility) CALL CONTROL •Accept / Reject •Hangup AUDIO CONTROL Audio output select (handset / headset / speakerphone) (iOS + JS) Mute/unmute local audio Mute/unmute remote audio VIDEO CONTROL •Mute/unmute local video •Mute/unmute remote video •Camera select •Keep the aspect ratio (iOS only) •Rate call quality (iOS+JS) Incoming call notification for iOS
  18. Envision a mobile application for a clothing store, that lists items for sale and has an automated ordering system. Perhaps you go to a shirt and some jeans and when you go to the checkout, there was a problem processing your payment. When that happens, from right inside the app, you are prompted with an option to join a video call with a customer service rep. When that option is selected, the video call natively starts right in the same clothing store application– no need to open or install any other applications. This feature can make the user experience much more efficient and friendly, and made possible by using Spark Video SDK for iOS (Android will be coming very soon!)
  19. Go to the SDK doc https://developer.ciscospark.com/sdk-for-browsers.html Show the documentation: https://ciscospark.github.io/spark-js-sdk/api/
  20. Web Dialer: https://webdialer.chhab.rocks/login with steve.sfartz@gmail.com - spark: stsfartz@cisco.com - sip: ppalomo-demo-dx80@cisco.room.ciscospark.com
  21. Think of the Cisco Spark client as two separate pieces. RECENTS for all of your latest interactions, and SPACE for chat and calling capabilities. We take those 2 pieces of the Spark client and turn them into the RECENTS widget and SPACE widget
  22. Super Easy Integration Responsive UI built with HTML5 and React.js New features automatically gets pushed via public CDN Open source libraries WebRTC A/V Calling & Messaging
  23. Widget demo with paola.mancini@italtel.com and space Hackathon demo with hackvivatech-paris/widgets/widget-space-global-events.html
  24. eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJVU0VSSUQiLCJuYW1lIjoiVVNFUk5BTUUiLCJpc3MiOiJERVZFTE9QRVJfT1JHIn0.swoT9rodEYx-K4f-PpFhOc7du1-KKLScrO9qUerpB_U
  25. Generate a token for ‘Ilaria’
  26. Space widget in hackathon-resources, put the access-token of the guest Contact someone
  27. JWT HS256 Both choices refer to what algorithm the identity provider uses to sign the JWT. Signing is a cryptographic operation that generates a "signature" (part of the JWT) that the recipient of the token can validate to ensure that the token has not been tampered with. RS256 (RSA Signature with SHA-256) is an asymmetric algorithm, and it uses a public/private key pair: the identity provider has a private (secret) key used to generate the signature, and the consumer of the JWT gets a public key to validate the signature. Since the public key, as opposed to the private key, doesn't need to be kept secured, most identity providers make it easily available for consumers to obtain and use (usually through a metadata URL). HS256 (HMAC with SHA-256), on the other hand, is a symmetric algorithm, with only one (secret) key that is shared between the two parties. Since the same key is used both to generate the signature and to validate it, care must be taken to ensure that the key is not compromised.