SlideShare a Scribd company logo
1 of 24
Download to read offline
Chatter Everywhere
Externalizing Chatter with Heroku and the Chatter REST APIs
Michael Press, Technical Architect & Cloud Asset Library Program Lead, Appirio
michael@appirio.com
Social Collaboration On Enterprise Data In Salesforce

sforce
Sale

Co

nities
mmu

e
alForc
Visu
Collaboration On Enterprise Data Outside of Salesforce
tranet
In

r
rowse
B

Order Detail
Document Libraries

Comments

Conversations
Chatter > Order #1234
Chatter > Groups > Marketing Group

Point
Share

egacy
L
ystem
S
Chatter Everywhere - Design Goals
Trivial installation – embed Chatter in any app with 1 line of code
SaaS Subscription - Chatter As A Service
Standard UX - Closely follow standard Chatter look-and-feel
Standard Salesforce Authentication – Oauth2
Adaptable - Conform to any container size
Contextual - Parameterized context & container integration
Customizable – Custom branding, language translation, etc.
Browser-independent– Chrome, Firefox, IE 8+
Challenges to Externalizing Chatter
Chatter REST APIs return data – you need to write a UI
Cross-Domain restriction – can’t directly call APIs from client
Authentication & Authorization
Refresh Token storage & security
Multiple apps & multiple languages
Considerations for an External Chatter App
User Interface – Which Chatter features do you need?
Cross-Domain browser restrictions – Where is your proxy server?
Authentication – Oauth2 vs. Session ID vs. SSO
Refresh Token security – How to encrypt? Store in cookie or db?
Server Security – Entitlements or access keys
Other Integrations – Google Translate or enterprise application
Chatter Licenses – Not all licenses support all Chatter features
UI Flow - When/how to link back to Salesforce
Chatter Everywhere Demo
External Chatter locations
▪ Intranet, SharePoint, Legacy App, Browser sidebar
Chatter Features
▪ Feeds – comments, likes, posts
▪ Navigation – Feeds, People, Groups
▪ Custom features – branding, views, language translation

Container Integration
▪ Show/hide, link post population, new feed item notification
External Chatter App – First Try

Cross-Domain
Request

X
External Chatter App – High Level Architecture
Architecture of an Externalized Chatter Application
Chatter Everywhere Technologies
Browser client
• AngularJS - Single-page app, HTML markup, two-way data binding,
MVCish, dependency injection, handles JSON well

Chatter Proxy Server
• Heroku for price, scalability, add-ons (app monitoring, db)
• Node.JS for package mgmt, Heroku support, fast & non-blocking
• Nforce for authentication (Salesforce Oauth2 web server flow), utilities
• Npm.Crypto.js for refresh token encryption
• Google Translate APIs for language translation
Chatter REST API Authentication
OAuth2
▪ Requires one-time authentication & authorization step by the user
▪ Provides permanent (revocable) access via refresh token.
▪ Treat refresh tokens as securely as a password (encrypt it)

Salesforce Session ID
▪ Direct replacement for Oauth token for custom Chatter apps in VisualForce

SSO & Connected Apps
▪ <company>.my.salesforce.com as your OAuth2 endpoint +
Connected Apps = users skip authentication and authorization
Chatter REST APIs for User Data
/connect/organization – determine if feed polling enabled
/chatter/feeds/news/me/is-modified – new feed item available?
/chatter/feeds/to/me/feed-items – my feed
/chatter/feeds/news/<userid>/feed-items – user’s feed
/chatter/users/<userid> – user profile
/chatter/users/me/following/filterType==005 – users I’m following
/chatter/users?q=<chars>* – search by user name
Code: AngularJS Client
<!-- CHATTER PUBLISHER -->
<div data-chatterpublisher></div>
<!-- CHATTER FEED -->
<ul class="feedcontainer actionsOnHoverEnabled" data-ng-controller="MainCtrl">
<!-- FEED ITEMS -->
<li ng-repeat="item in feed.items">
<div data-translatablefeed="item"/>
</li>
</ul>
<!-- SHOW MORE BUTTON -->
<div class="cxshowmorefeeditemscontainer" data-ng-show="feed.nextPageUrl != null">
<a href data-ng-click="loadNextPage($event,feed.nextPageUrl);">Show More</a>
</div>
Chatter Proxy Server – Sequence Of Events
A Few Specific Technical Challenges
Chatter Images – URLs are provided in JSON, but access token
expires, URL fails without proxy server being aware
No sorting on Group and User discovery feeds
New feed item notification
• “Enabled Chatter Feed Polling” must be enabled in Salesforce org.
• Query Identity service, poll isModifiedUrl on the “me” feed

Translations – may fail without warning, UI looks unresponsive
All about Appirio

Technology-enabled professional services, supported by
1,000 cloud experts and a 600,000+ cloud developer community
Michael Press
Technical Architect &
Cloud Asset Library Program Lead
Appirio
michael@appirio.com
Chatter Everywhere - Implementation
Product Manager/Architect fulltime for 3 months
45 CloudSpokes contests
$35,000 total prizes
AngularJS, NodeJS on Heroku, Chatter REST APIs
XXX lines of code
< $100/month Heroku fees
Externalizing Chatter With 1 Line Of Code

Conversations
Chatter > Groups > Marketing Group

<iframe src="https://chattereverywhere.com/base#?record=000012345&notify&refreshbtn”/>

server

branding

context
(feed)

container
options

app
options
Demo Backup Slides – Chatter externalized locations
Screenshot
of CE in
SharePoint

Screenshot
of CE in
Intranet

Screenshot
of CE in
Legacy App

Screenshot
of CE in
browser
sidebar
Demo Backup Slides – Chatter Everywhere features
Screenshot of CE
feed w/
•

Text, link, image
feed items

•

Comments

•

Likes

•

Filled in post
form

Screenshot
of CE
Group
Search
w/typeahead

Screenshot
of CE
People
Search
w/typeahead

Screenshot
of CE
Gallery View

Screenshot
of CE
custom
branding –
presscorp,
avon

Screenshot
of CE
language
translation
Demo Backup Slides – Container Integration
Screenshot of link
post integration

Screenshot
of new feed
item
notification

Screenshot
of
hide/close
integration

More Related Content

Viewers also liked

Salesforce chatter api_developer_cheatsheet
Salesforce chatter api_developer_cheatsheetSalesforce chatter api_developer_cheatsheet
Salesforce chatter api_developer_cheatsheetshankarsfdc3
 
How to Maximize Business Success with Salesforce Chatter
How to Maximize Business Success with Salesforce ChatterHow to Maximize Business Success with Salesforce Chatter
How to Maximize Business Success with Salesforce ChatterApttus
 
Build your API with Force.com and Heroku
Build your API with Force.com and HerokuBuild your API with Force.com and Heroku
Build your API with Force.com and HerokuJeff Douglas
 
Chatter best practices tips and tricks
Chatter best practices   tips and tricksChatter best practices   tips and tricks
Chatter best practices tips and tricksCraig Bolden
 
Build Consumer-Facing Apps with Heroku Connect
Build Consumer-Facing Apps with Heroku ConnectBuild Consumer-Facing Apps with Heroku Connect
Build Consumer-Facing Apps with Heroku ConnectJeff Douglas
 
CMOs Customer Experience Program Playbook
CMOs Customer Experience Program PlaybookCMOs Customer Experience Program Playbook
CMOs Customer Experience Program PlaybookCX Pilots
 
Best Practices for Lightning Apps
Best Practices for Lightning AppsBest Practices for Lightning Apps
Best Practices for Lightning AppsMark Adcock
 
Building apps faster with lightning and winter '17
Building apps faster with lightning and winter '17Building apps faster with lightning and winter '17
Building apps faster with lightning and winter '17Salesforce Developers
 
Concept Of Key Account Management
Concept Of Key Account ManagementConcept Of Key Account Management
Concept Of Key Account ManagementRavi Ayilavarapu
 
B2B Customer Experience Management Best Practice Study PREVIEW SAMPLE
B2B Customer Experience Management Best Practice Study PREVIEW SAMPLEB2B Customer Experience Management Best Practice Study PREVIEW SAMPLE
B2B Customer Experience Management Best Practice Study PREVIEW SAMPLEClearAction
 
What is Customer Experience?
What is Customer Experience?What is Customer Experience?
What is Customer Experience?ClearAction
 
Go-To-Market Framework
Go-To-Market FrameworkGo-To-Market Framework
Go-To-Market FrameworkDemand Metric
 
Sales Enablement Framework
Sales Enablement FrameworkSales Enablement Framework
Sales Enablement FrameworkDemand Metric
 
Patterns of Enterprise Application Architecture (by example)
Patterns of Enterprise Application Architecture (by example)Patterns of Enterprise Application Architecture (by example)
Patterns of Enterprise Application Architecture (by example)Paulo Gandra de Sousa
 
Sales, Sales Management, Sales Strategy
Sales, Sales Management, Sales StrategySales, Sales Management, Sales Strategy
Sales, Sales Management, Sales StrategyBrian Halligan
 
What is Key Account Management
What is Key Account ManagementWhat is Key Account Management
What is Key Account ManagementSteve Williams
 

Viewers also liked (17)

Salesforce chatter api_developer_cheatsheet
Salesforce chatter api_developer_cheatsheetSalesforce chatter api_developer_cheatsheet
Salesforce chatter api_developer_cheatsheet
 
How to Maximize Business Success with Salesforce Chatter
How to Maximize Business Success with Salesforce ChatterHow to Maximize Business Success with Salesforce Chatter
How to Maximize Business Success with Salesforce Chatter
 
Build your API with Force.com and Heroku
Build your API with Force.com and HerokuBuild your API with Force.com and Heroku
Build your API with Force.com and Heroku
 
Chatter best practices tips and tricks
Chatter best practices   tips and tricksChatter best practices   tips and tricks
Chatter best practices tips and tricks
 
Build Consumer-Facing Apps with Heroku Connect
Build Consumer-Facing Apps with Heroku ConnectBuild Consumer-Facing Apps with Heroku Connect
Build Consumer-Facing Apps with Heroku Connect
 
CMOs Customer Experience Program Playbook
CMOs Customer Experience Program PlaybookCMOs Customer Experience Program Playbook
CMOs Customer Experience Program Playbook
 
Best Practices for Lightning Apps
Best Practices for Lightning AppsBest Practices for Lightning Apps
Best Practices for Lightning Apps
 
Building apps faster with lightning and winter '17
Building apps faster with lightning and winter '17Building apps faster with lightning and winter '17
Building apps faster with lightning and winter '17
 
Concept Of Key Account Management
Concept Of Key Account ManagementConcept Of Key Account Management
Concept Of Key Account Management
 
B2B Customer Experience Management Best Practice Study PREVIEW SAMPLE
B2B Customer Experience Management Best Practice Study PREVIEW SAMPLEB2B Customer Experience Management Best Practice Study PREVIEW SAMPLE
B2B Customer Experience Management Best Practice Study PREVIEW SAMPLE
 
CRM Framework
CRM FrameworkCRM Framework
CRM Framework
 
What is Customer Experience?
What is Customer Experience?What is Customer Experience?
What is Customer Experience?
 
Go-To-Market Framework
Go-To-Market FrameworkGo-To-Market Framework
Go-To-Market Framework
 
Sales Enablement Framework
Sales Enablement FrameworkSales Enablement Framework
Sales Enablement Framework
 
Patterns of Enterprise Application Architecture (by example)
Patterns of Enterprise Application Architecture (by example)Patterns of Enterprise Application Architecture (by example)
Patterns of Enterprise Application Architecture (by example)
 
Sales, Sales Management, Sales Strategy
Sales, Sales Management, Sales StrategySales, Sales Management, Sales Strategy
Sales, Sales Management, Sales Strategy
 
What is Key Account Management
What is Key Account ManagementWhat is Key Account Management
What is Key Account Management
 

Similar to Externalizing Chatter Using Heroku, Angular.js, Node.js and Chatter REST APIs

Sviluppare Applicazioni Real Time con AppSync Deck.pptx
Sviluppare Applicazioni Real Time con AppSync Deck.pptxSviluppare Applicazioni Real Time con AppSync Deck.pptx
Sviluppare Applicazioni Real Time con AppSync Deck.pptxAmazon Web Services
 
Silverlight Document Search Engine
Silverlight Document Search EngineSilverlight Document Search Engine
Silverlight Document Search EngineMustata Bogdan
 
Social Photos - My presentation at Microsoft Tech Day
Social Photos - My presentation at Microsoft Tech DaySocial Photos - My presentation at Microsoft Tech Day
Social Photos - My presentation at Microsoft Tech DayTechMaster Vietnam
 
Understanding Identity in the World of Web APIs – Ronnie Mitra, API Architec...
Understanding Identity in the World of Web APIs – Ronnie Mitra,  API Architec...Understanding Identity in the World of Web APIs – Ronnie Mitra,  API Architec...
Understanding Identity in the World of Web APIs – Ronnie Mitra, API Architec...CA API Management
 
Dave Carroll Application Services Salesforce
Dave Carroll Application Services SalesforceDave Carroll Application Services Salesforce
Dave Carroll Application Services Salesforcedeimos
 
Python - A Comprehensive Programming Language
Python - A Comprehensive Programming LanguagePython - A Comprehensive Programming Language
Python - A Comprehensive Programming LanguageTsungWei Hu
 
First Look at Azure Logic Apps (BAUG)
First Look at Azure Logic Apps (BAUG)First Look at Azure Logic Apps (BAUG)
First Look at Azure Logic Apps (BAUG)Daniel Toomey
 
FIWARE Identity Management and Access Control
FIWARE Identity Management and Access ControlFIWARE Identity Management and Access Control
FIWARE Identity Management and Access ControlFIWARE
 
PaaS + Appcelerator = WIN
PaaS + Appcelerator = WINPaaS + Appcelerator = WIN
PaaS + Appcelerator = WINAaron Saunders
 
Summit Australia 2019 - PowerApp Portals - Andrew Ly & Lachlan Wright
Summit Australia 2019 - PowerApp Portals - Andrew Ly & Lachlan WrightSummit Australia 2019 - PowerApp Portals - Andrew Ly & Lachlan Wright
Summit Australia 2019 - PowerApp Portals - Andrew Ly & Lachlan WrightAndrew Ly
 
HTML5 and CSS3 refresher
HTML5 and CSS3 refresherHTML5 and CSS3 refresher
HTML5 and CSS3 refresherIvano Malavolta
 
FIWARE Training: Identity Management and Access Control
FIWARE Training: Identity Management and Access ControlFIWARE Training: Identity Management and Access Control
FIWARE Training: Identity Management and Access ControlFIWARE
 
Application Services On The Web Sales Forcecom
Application Services On The Web Sales ForcecomApplication Services On The Web Sales Forcecom
Application Services On The Web Sales ForcecomQConLondon2008
 
Building Desktop & Mobile Apps with Sencha and Force.com
Building Desktop & Mobile Apps with Sencha and Force.comBuilding Desktop & Mobile Apps with Sencha and Force.com
Building Desktop & Mobile Apps with Sencha and Force.comSalesforce Developers
 
Crossing the Boundaries of Web Applications with OpenSocial
Crossing the Boundaries of Web Applications with OpenSocialCrossing the Boundaries of Web Applications with OpenSocial
Crossing the Boundaries of Web Applications with OpenSocialBastian Hofmann
 

Similar to Externalizing Chatter Using Heroku, Angular.js, Node.js and Chatter REST APIs (20)

Sviluppare Applicazioni Real Time con AppSync Deck.pptx
Sviluppare Applicazioni Real Time con AppSync Deck.pptxSviluppare Applicazioni Real Time con AppSync Deck.pptx
Sviluppare Applicazioni Real Time con AppSync Deck.pptx
 
Silverlight Document Search Engine
Silverlight Document Search EngineSilverlight Document Search Engine
Silverlight Document Search Engine
 
Social Photos - My presentation at Microsoft Tech Day
Social Photos - My presentation at Microsoft Tech DaySocial Photos - My presentation at Microsoft Tech Day
Social Photos - My presentation at Microsoft Tech Day
 
Introduction to Force.com
Introduction to Force.comIntroduction to Force.com
Introduction to Force.com
 
shiv_chandra_pathak
shiv_chandra_pathakshiv_chandra_pathak
shiv_chandra_pathak
 
RavenDB overview
RavenDB overviewRavenDB overview
RavenDB overview
 
Understanding Identity in the World of Web APIs – Ronnie Mitra, API Architec...
Understanding Identity in the World of Web APIs – Ronnie Mitra,  API Architec...Understanding Identity in the World of Web APIs – Ronnie Mitra,  API Architec...
Understanding Identity in the World of Web APIs – Ronnie Mitra, API Architec...
 
Andy Malone - The new office 365 for it pro's
Andy Malone - The new office 365 for it pro'sAndy Malone - The new office 365 for it pro's
Andy Malone - The new office 365 for it pro's
 
Dave Carroll Application Services Salesforce
Dave Carroll Application Services SalesforceDave Carroll Application Services Salesforce
Dave Carroll Application Services Salesforce
 
Python - A Comprehensive Programming Language
Python - A Comprehensive Programming LanguagePython - A Comprehensive Programming Language
Python - A Comprehensive Programming Language
 
First Look at Azure Logic Apps (BAUG)
First Look at Azure Logic Apps (BAUG)First Look at Azure Logic Apps (BAUG)
First Look at Azure Logic Apps (BAUG)
 
FIWARE Identity Management and Access Control
FIWARE Identity Management and Access ControlFIWARE Identity Management and Access Control
FIWARE Identity Management and Access Control
 
PaaS + Appcelerator = WIN
PaaS + Appcelerator = WINPaaS + Appcelerator = WIN
PaaS + Appcelerator = WIN
 
Summit Australia 2019 - PowerApp Portals - Andrew Ly & Lachlan Wright
Summit Australia 2019 - PowerApp Portals - Andrew Ly & Lachlan WrightSummit Australia 2019 - PowerApp Portals - Andrew Ly & Lachlan Wright
Summit Australia 2019 - PowerApp Portals - Andrew Ly & Lachlan Wright
 
HTML5 and CSS3 refresher
HTML5 and CSS3 refresherHTML5 and CSS3 refresher
HTML5 and CSS3 refresher
 
FIWARE Training: Identity Management and Access Control
FIWARE Training: Identity Management and Access ControlFIWARE Training: Identity Management and Access Control
FIWARE Training: Identity Management and Access Control
 
Application Services On The Web Sales Forcecom
Application Services On The Web Sales ForcecomApplication Services On The Web Sales Forcecom
Application Services On The Web Sales Forcecom
 
HTML5 Refresher
HTML5 RefresherHTML5 Refresher
HTML5 Refresher
 
Building Desktop & Mobile Apps with Sencha and Force.com
Building Desktop & Mobile Apps with Sencha and Force.comBuilding Desktop & Mobile Apps with Sencha and Force.com
Building Desktop & Mobile Apps with Sencha and Force.com
 
Crossing the Boundaries of Web Applications with OpenSocial
Crossing the Boundaries of Web Applications with OpenSocialCrossing the Boundaries of Web Applications with OpenSocial
Crossing the Boundaries of Web Applications with OpenSocial
 

More from Salesforce Developers

Sample Gallery: Reference Code and Best Practices for Salesforce Developers
Sample Gallery: Reference Code and Best Practices for Salesforce DevelopersSample Gallery: Reference Code and Best Practices for Salesforce Developers
Sample Gallery: Reference Code and Best Practices for Salesforce DevelopersSalesforce Developers
 
Maximizing Salesforce Lightning Experience and Lightning Component Performance
Maximizing Salesforce Lightning Experience and Lightning Component PerformanceMaximizing Salesforce Lightning Experience and Lightning Component Performance
Maximizing Salesforce Lightning Experience and Lightning Component PerformanceSalesforce Developers
 
Local development with Open Source Base Components
Local development with Open Source Base ComponentsLocal development with Open Source Base Components
Local development with Open Source Base ComponentsSalesforce Developers
 
TrailheaDX India : Developer Highlights
TrailheaDX India : Developer HighlightsTrailheaDX India : Developer Highlights
TrailheaDX India : Developer HighlightsSalesforce Developers
 
Why developers shouldn’t miss TrailheaDX India
Why developers shouldn’t miss TrailheaDX IndiaWhy developers shouldn’t miss TrailheaDX India
Why developers shouldn’t miss TrailheaDX IndiaSalesforce Developers
 
CodeLive: Build Lightning Web Components faster with Local Development
CodeLive: Build Lightning Web Components faster with Local DevelopmentCodeLive: Build Lightning Web Components faster with Local Development
CodeLive: Build Lightning Web Components faster with Local DevelopmentSalesforce Developers
 
CodeLive: Converting Aura Components to Lightning Web Components
CodeLive: Converting Aura Components to Lightning Web ComponentsCodeLive: Converting Aura Components to Lightning Web Components
CodeLive: Converting Aura Components to Lightning Web ComponentsSalesforce Developers
 
Enterprise-grade UI with open source Lightning Web Components
Enterprise-grade UI with open source Lightning Web ComponentsEnterprise-grade UI with open source Lightning Web Components
Enterprise-grade UI with open source Lightning Web ComponentsSalesforce Developers
 
TrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer HighlightsTrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer HighlightsSalesforce Developers
 
Lightning web components - Episode 4 : Security and Testing
Lightning web components  - Episode 4 : Security and TestingLightning web components  - Episode 4 : Security and Testing
Lightning web components - Episode 4 : Security and TestingSalesforce Developers
 
LWC Episode 3- Component Communication and Aura Interoperability
LWC Episode 3- Component Communication and Aura InteroperabilityLWC Episode 3- Component Communication and Aura Interoperability
LWC Episode 3- Component Communication and Aura InteroperabilitySalesforce Developers
 
Lightning web components episode 2- work with salesforce data
Lightning web components   episode 2- work with salesforce dataLightning web components   episode 2- work with salesforce data
Lightning web components episode 2- work with salesforce dataSalesforce Developers
 
Lightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An IntroductionLightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An IntroductionSalesforce Developers
 
Migrating CPQ to Advanced Calculator and JSQCP
Migrating CPQ to Advanced Calculator and JSQCPMigrating CPQ to Advanced Calculator and JSQCP
Migrating CPQ to Advanced Calculator and JSQCPSalesforce Developers
 
Scale with Large Data Volumes and Big Objects in Salesforce
Scale with Large Data Volumes and Big Objects in SalesforceScale with Large Data Volumes and Big Objects in Salesforce
Scale with Large Data Volumes and Big Objects in SalesforceSalesforce Developers
 
Replicate Salesforce Data in Real Time with Change Data Capture
Replicate Salesforce Data in Real Time with Change Data CaptureReplicate Salesforce Data in Real Time with Change Data Capture
Replicate Salesforce Data in Real Time with Change Data CaptureSalesforce Developers
 
Modern Development with Salesforce DX
Modern Development with Salesforce DXModern Development with Salesforce DX
Modern Development with Salesforce DXSalesforce Developers
 
Integrate CMS Content Into Lightning Communities with CMS Connect
Integrate CMS Content Into Lightning Communities with CMS ConnectIntegrate CMS Content Into Lightning Communities with CMS Connect
Integrate CMS Content Into Lightning Communities with CMS ConnectSalesforce Developers
 

More from Salesforce Developers (20)

Sample Gallery: Reference Code and Best Practices for Salesforce Developers
Sample Gallery: Reference Code and Best Practices for Salesforce DevelopersSample Gallery: Reference Code and Best Practices for Salesforce Developers
Sample Gallery: Reference Code and Best Practices for Salesforce Developers
 
Maximizing Salesforce Lightning Experience and Lightning Component Performance
Maximizing Salesforce Lightning Experience and Lightning Component PerformanceMaximizing Salesforce Lightning Experience and Lightning Component Performance
Maximizing Salesforce Lightning Experience and Lightning Component Performance
 
Local development with Open Source Base Components
Local development with Open Source Base ComponentsLocal development with Open Source Base Components
Local development with Open Source Base Components
 
TrailheaDX India : Developer Highlights
TrailheaDX India : Developer HighlightsTrailheaDX India : Developer Highlights
TrailheaDX India : Developer Highlights
 
Why developers shouldn’t miss TrailheaDX India
Why developers shouldn’t miss TrailheaDX IndiaWhy developers shouldn’t miss TrailheaDX India
Why developers shouldn’t miss TrailheaDX India
 
CodeLive: Build Lightning Web Components faster with Local Development
CodeLive: Build Lightning Web Components faster with Local DevelopmentCodeLive: Build Lightning Web Components faster with Local Development
CodeLive: Build Lightning Web Components faster with Local Development
 
CodeLive: Converting Aura Components to Lightning Web Components
CodeLive: Converting Aura Components to Lightning Web ComponentsCodeLive: Converting Aura Components to Lightning Web Components
CodeLive: Converting Aura Components to Lightning Web Components
 
Enterprise-grade UI with open source Lightning Web Components
Enterprise-grade UI with open source Lightning Web ComponentsEnterprise-grade UI with open source Lightning Web Components
Enterprise-grade UI with open source Lightning Web Components
 
TrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer HighlightsTrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer Highlights
 
Live coding with LWC
Live coding with LWCLive coding with LWC
Live coding with LWC
 
Lightning web components - Episode 4 : Security and Testing
Lightning web components  - Episode 4 : Security and TestingLightning web components  - Episode 4 : Security and Testing
Lightning web components - Episode 4 : Security and Testing
 
LWC Episode 3- Component Communication and Aura Interoperability
LWC Episode 3- Component Communication and Aura InteroperabilityLWC Episode 3- Component Communication and Aura Interoperability
LWC Episode 3- Component Communication and Aura Interoperability
 
Lightning web components episode 2- work with salesforce data
Lightning web components   episode 2- work with salesforce dataLightning web components   episode 2- work with salesforce data
Lightning web components episode 2- work with salesforce data
 
Lightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An IntroductionLightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An Introduction
 
Migrating CPQ to Advanced Calculator and JSQCP
Migrating CPQ to Advanced Calculator and JSQCPMigrating CPQ to Advanced Calculator and JSQCP
Migrating CPQ to Advanced Calculator and JSQCP
 
Scale with Large Data Volumes and Big Objects in Salesforce
Scale with Large Data Volumes and Big Objects in SalesforceScale with Large Data Volumes and Big Objects in Salesforce
Scale with Large Data Volumes and Big Objects in Salesforce
 
Replicate Salesforce Data in Real Time with Change Data Capture
Replicate Salesforce Data in Real Time with Change Data CaptureReplicate Salesforce Data in Real Time with Change Data Capture
Replicate Salesforce Data in Real Time with Change Data Capture
 
Modern Development with Salesforce DX
Modern Development with Salesforce DXModern Development with Salesforce DX
Modern Development with Salesforce DX
 
Get Into Lightning Flow Development
Get Into Lightning Flow DevelopmentGet Into Lightning Flow Development
Get Into Lightning Flow Development
 
Integrate CMS Content Into Lightning Communities with CMS Connect
Integrate CMS Content Into Lightning Communities with CMS ConnectIntegrate CMS Content Into Lightning Communities with CMS Connect
Integrate CMS Content Into Lightning Communities with CMS Connect
 

Recently uploaded

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 2024Rafal Los
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
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...Enterprise Knowledge
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
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...apidays
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
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)wesley chun
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
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...Igalia
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
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 Nanonetsnaman860154
 

Recently uploaded (20)

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
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
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...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
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...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
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)
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
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...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
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
 

Externalizing Chatter Using Heroku, Angular.js, Node.js and Chatter REST APIs

  • 1. Chatter Everywhere Externalizing Chatter with Heroku and the Chatter REST APIs Michael Press, Technical Architect & Cloud Asset Library Program Lead, Appirio michael@appirio.com
  • 2. Social Collaboration On Enterprise Data In Salesforce sforce Sale Co nities mmu e alForc Visu
  • 3. Collaboration On Enterprise Data Outside of Salesforce tranet In r rowse B Order Detail Document Libraries Comments Conversations Chatter > Order #1234 Chatter > Groups > Marketing Group Point Share egacy L ystem S
  • 4. Chatter Everywhere - Design Goals Trivial installation – embed Chatter in any app with 1 line of code SaaS Subscription - Chatter As A Service Standard UX - Closely follow standard Chatter look-and-feel Standard Salesforce Authentication – Oauth2 Adaptable - Conform to any container size Contextual - Parameterized context & container integration Customizable – Custom branding, language translation, etc. Browser-independent– Chrome, Firefox, IE 8+
  • 5. Challenges to Externalizing Chatter Chatter REST APIs return data – you need to write a UI Cross-Domain restriction – can’t directly call APIs from client Authentication & Authorization Refresh Token storage & security Multiple apps & multiple languages
  • 6. Considerations for an External Chatter App User Interface – Which Chatter features do you need? Cross-Domain browser restrictions – Where is your proxy server? Authentication – Oauth2 vs. Session ID vs. SSO Refresh Token security – How to encrypt? Store in cookie or db? Server Security – Entitlements or access keys Other Integrations – Google Translate or enterprise application Chatter Licenses – Not all licenses support all Chatter features UI Flow - When/how to link back to Salesforce
  • 7. Chatter Everywhere Demo External Chatter locations ▪ Intranet, SharePoint, Legacy App, Browser sidebar Chatter Features ▪ Feeds – comments, likes, posts ▪ Navigation – Feeds, People, Groups ▪ Custom features – branding, views, language translation Container Integration ▪ Show/hide, link post population, new feed item notification
  • 8. External Chatter App – First Try Cross-Domain Request X
  • 9. External Chatter App – High Level Architecture
  • 10. Architecture of an Externalized Chatter Application
  • 11. Chatter Everywhere Technologies Browser client • AngularJS - Single-page app, HTML markup, two-way data binding, MVCish, dependency injection, handles JSON well Chatter Proxy Server • Heroku for price, scalability, add-ons (app monitoring, db) • Node.JS for package mgmt, Heroku support, fast & non-blocking • Nforce for authentication (Salesforce Oauth2 web server flow), utilities • Npm.Crypto.js for refresh token encryption • Google Translate APIs for language translation
  • 12. Chatter REST API Authentication OAuth2 ▪ Requires one-time authentication & authorization step by the user ▪ Provides permanent (revocable) access via refresh token. ▪ Treat refresh tokens as securely as a password (encrypt it) Salesforce Session ID ▪ Direct replacement for Oauth token for custom Chatter apps in VisualForce SSO & Connected Apps ▪ <company>.my.salesforce.com as your OAuth2 endpoint + Connected Apps = users skip authentication and authorization
  • 13. Chatter REST APIs for User Data /connect/organization – determine if feed polling enabled /chatter/feeds/news/me/is-modified – new feed item available? /chatter/feeds/to/me/feed-items – my feed /chatter/feeds/news/<userid>/feed-items – user’s feed /chatter/users/<userid> – user profile /chatter/users/me/following/filterType==005 – users I’m following /chatter/users?q=<chars>* – search by user name
  • 14. Code: AngularJS Client <!-- CHATTER PUBLISHER --> <div data-chatterpublisher></div> <!-- CHATTER FEED --> <ul class="feedcontainer actionsOnHoverEnabled" data-ng-controller="MainCtrl"> <!-- FEED ITEMS --> <li ng-repeat="item in feed.items"> <div data-translatablefeed="item"/> </li> </ul> <!-- SHOW MORE BUTTON --> <div class="cxshowmorefeeditemscontainer" data-ng-show="feed.nextPageUrl != null"> <a href data-ng-click="loadNextPage($event,feed.nextPageUrl);">Show More</a> </div>
  • 15. Chatter Proxy Server – Sequence Of Events
  • 16. A Few Specific Technical Challenges Chatter Images – URLs are provided in JSON, but access token expires, URL fails without proxy server being aware No sorting on Group and User discovery feeds New feed item notification • “Enabled Chatter Feed Polling” must be enabled in Salesforce org. • Query Identity service, poll isModifiedUrl on the “me” feed Translations – may fail without warning, UI looks unresponsive
  • 17. All about Appirio Technology-enabled professional services, supported by 1,000 cloud experts and a 600,000+ cloud developer community
  • 18. Michael Press Technical Architect & Cloud Asset Library Program Lead Appirio michael@appirio.com
  • 19.
  • 20. Chatter Everywhere - Implementation Product Manager/Architect fulltime for 3 months 45 CloudSpokes contests $35,000 total prizes AngularJS, NodeJS on Heroku, Chatter REST APIs XXX lines of code < $100/month Heroku fees
  • 21. Externalizing Chatter With 1 Line Of Code Conversations Chatter > Groups > Marketing Group <iframe src="https://chattereverywhere.com/base#?record=000012345&notify&refreshbtn”/> server branding context (feed) container options app options
  • 22. Demo Backup Slides – Chatter externalized locations Screenshot of CE in SharePoint Screenshot of CE in Intranet Screenshot of CE in Legacy App Screenshot of CE in browser sidebar
  • 23. Demo Backup Slides – Chatter Everywhere features Screenshot of CE feed w/ • Text, link, image feed items • Comments • Likes • Filled in post form Screenshot of CE Group Search w/typeahead Screenshot of CE People Search w/typeahead Screenshot of CE Gallery View Screenshot of CE custom branding – presscorp, avon Screenshot of CE language translation
  • 24. Demo Backup Slides – Container Integration Screenshot of link post integration Screenshot of new feed item notification Screenshot of hide/close integration