SlideShare a Scribd company logo
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+
Most read
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
Most read
10
Architecture of an Externalized Chatter Application
Most read
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
Externalizing Chatter Using Heroku, Angular.js, Node.js and Chatter REST APIs
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

What's hot (11)

Severna Evropa Tanja Notaroš Gagić
Severna Evropa Tanja Notaroš GagićSeverna Evropa Tanja Notaroš Gagić
Severna Evropa Tanja Notaroš Gagić
Edukacija Obrazovni portal
 
صحراء مصر الغربية
صحراء مصر الغربيةصحراء مصر الغربية
صحراء مصر الغربية
omar_egypt
 
Zapadna afrika
Zapadna afrikaZapadna afrika
Zapadna afrika
Miljana Jelenkovic Stefanović
 
Turkey presantation
Turkey presantationTurkey presantation
Turkey presantation
Zehra Yüksel
 
Jужна Eвропа
Jужна EвропаJужна Eвропа
Jужна Eвропа
Tanja Milanović
 
Az időjárás és éghajlat - 5. osztály
Az időjárás és éghajlat - 5. osztályAz időjárás és éghajlat - 5. osztály
Az időjárás és éghajlat - 5. osztály
Csimax
 
Impact of Climate Change on Tourism in Canada
Impact of Climate Change on Tourism in CanadaImpact of Climate Change on Tourism in Canada
Impact of Climate Change on Tourism in Canada
Anna Pollock
 
About Turkey
About Turkey About Turkey
About Turkey
mmfizmir
 
Zanimljivosti Azije
Zanimljivosti AzijeZanimljivosti Azije
Zanimljivosti Azije
suncokrili
 
Africa (Geography)
Africa (Geography)Africa (Geography)
Africa (Geography)
Ehlvin Skullsplitter
 
Severna afrika
Severna afrikaSeverna afrika
Severna afrika
Tanja Milanović
 
صحراء مصر الغربية
صحراء مصر الغربيةصحراء مصر الغربية
صحراء مصر الغربية
omar_egypt
 
Az időjárás és éghajlat - 5. osztály
Az időjárás és éghajlat - 5. osztályAz időjárás és éghajlat - 5. osztály
Az időjárás és éghajlat - 5. osztály
Csimax
 
Impact of Climate Change on Tourism in Canada
Impact of Climate Change on Tourism in CanadaImpact of Climate Change on Tourism in Canada
Impact of Climate Change on Tourism in Canada
Anna Pollock
 
About Turkey
About Turkey About Turkey
About Turkey
mmfizmir
 
Zanimljivosti Azije
Zanimljivosti AzijeZanimljivosti Azije
Zanimljivosti Azije
suncokrili
 

Viewers also liked (18)

Adding Chatter to On-Premise Applications
Adding Chatter to On-Premise ApplicationsAdding Chatter to On-Premise Applications
Adding Chatter to On-Premise Applications
Salesforce Developers
 
Salesforce chatter api_developer_cheatsheet
Salesforce chatter api_developer_cheatsheetSalesforce chatter api_developer_cheatsheet
Salesforce chatter api_developer_cheatsheet
shankarsfdc3
 
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
Apttus
 
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
Jeff Douglas
 
Chatter best practices tips and tricks
Chatter best practices   tips and tricksChatter best practices   tips and tricks
Chatter best practices tips and tricks
Craig 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 Connect
Jeff Douglas
 
CMOs Customer Experience Program Playbook
CMOs Customer Experience Program PlaybookCMOs Customer Experience Program Playbook
CMOs Customer Experience Program Playbook
CX Pilots
 
Best Practices for Lightning Apps
Best Practices for Lightning AppsBest Practices for Lightning Apps
Best Practices for Lightning Apps
Mark 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 '17
Salesforce Developers
 
Concept Of Key Account Management
Concept Of Key Account ManagementConcept Of Key Account Management
Concept Of Key Account Management
Ravi 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 SAMPLE
ClearAction
 
CRM Framework
CRM FrameworkCRM Framework
CRM Framework
Demand Metric
 
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 Framework
Demand Metric
 
Sales Enablement Framework
Sales Enablement FrameworkSales Enablement Framework
Sales Enablement Framework
Demand 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 Strategy
Brian Halligan
 
What is Key Account Management
What is Key Account ManagementWhat is Key Account Management
What is Key Account Management
Steve Williams
 
Adding Chatter to On-Premise Applications
Adding Chatter to On-Premise ApplicationsAdding Chatter to On-Premise Applications
Adding Chatter to On-Premise Applications
Salesforce Developers
 
Salesforce chatter api_developer_cheatsheet
Salesforce chatter api_developer_cheatsheetSalesforce chatter api_developer_cheatsheet
Salesforce chatter api_developer_cheatsheet
shankarsfdc3
 
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
Apttus
 
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
Jeff Douglas
 
Chatter best practices tips and tricks
Chatter best practices   tips and tricksChatter best practices   tips and tricks
Chatter best practices tips and tricks
Craig 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 Connect
Jeff Douglas
 
CMOs Customer Experience Program Playbook
CMOs Customer Experience Program PlaybookCMOs Customer Experience Program Playbook
CMOs Customer Experience Program Playbook
CX Pilots
 
Best Practices for Lightning Apps
Best Practices for Lightning AppsBest Practices for Lightning Apps
Best Practices for Lightning Apps
Mark 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 '17
Salesforce Developers
 
Concept Of Key Account Management
Concept Of Key Account ManagementConcept Of Key Account Management
Concept Of Key Account Management
Ravi 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 SAMPLE
ClearAction
 
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 Framework
Demand Metric
 
Sales Enablement Framework
Sales Enablement FrameworkSales Enablement Framework
Sales Enablement Framework
Demand 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 Strategy
Brian Halligan
 
What is Key Account Management
What is Key Account ManagementWhat is Key Account Management
What is Key Account Management
Steve Williams
 
Ad

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
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
Salesforce 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 Components
Salesforce Developers
 
TrailheaDX India : Developer Highlights
TrailheaDX India : Developer HighlightsTrailheaDX India : Developer Highlights
TrailheaDX India : Developer Highlights
Salesforce 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 India
Salesforce 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 Development
Salesforce 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 Components
Salesforce 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 Components
Salesforce Developers
 
TrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer HighlightsTrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer Highlights
Salesforce Developers
 
Live coding with LWC
Live coding with LWCLive coding with LWC
Live coding with LWC
Salesforce 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 Testing
Salesforce 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 Interoperability
Salesforce 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 data
Salesforce 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 Introduction
Salesforce 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 JSQCP
Salesforce 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 Salesforce
Salesforce 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 Capture
Salesforce Developers
 
Modern Development with Salesforce DX
Modern Development with Salesforce DXModern Development with Salesforce DX
Modern Development with Salesforce DX
Salesforce Developers
 
Get Into Lightning Flow Development
Get Into Lightning Flow DevelopmentGet Into Lightning Flow Development
Get Into Lightning Flow Development
Salesforce 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 Connect
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 Developers
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
Salesforce 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 Components
Salesforce Developers
 
TrailheaDX India : Developer Highlights
TrailheaDX India : Developer HighlightsTrailheaDX India : Developer Highlights
TrailheaDX India : Developer Highlights
Salesforce 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 India
Salesforce 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 Development
Salesforce 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 Components
Salesforce 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 Components
Salesforce Developers
 
TrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer HighlightsTrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer Highlights
Salesforce 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 Testing
Salesforce 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 Interoperability
Salesforce 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 data
Salesforce 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 Introduction
Salesforce 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 JSQCP
Salesforce 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 Salesforce
Salesforce 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 Capture
Salesforce Developers
 
Modern Development with Salesforce DX
Modern Development with Salesforce DXModern Development with Salesforce DX
Modern Development with Salesforce DX
Salesforce 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 Connect
Salesforce Developers
 
Ad

Recently uploaded (20)

TimeSeries Machine Learning - PyData London 2025
TimeSeries Machine Learning - PyData London 2025TimeSeries Machine Learning - PyData London 2025
TimeSeries Machine Learning - PyData London 2025
Suyash Joshi
 
The case for on-premises AI
The case for on-premises AIThe case for on-premises AI
The case for on-premises AI
Principled Technologies
 
IntroSlides-May-BuildWithAi-EarthEngine.pdf
IntroSlides-May-BuildWithAi-EarthEngine.pdfIntroSlides-May-BuildWithAi-EarthEngine.pdf
IntroSlides-May-BuildWithAi-EarthEngine.pdf
Luiz Carneiro
 
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
Your startup on AWS - How to architect and maintain a Lean and Mean account J...Your startup on AWS - How to architect and maintain a Lean and Mean account J...
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
angelo60207
 
Your startup on AWS - How to architect and maintain a Lean and Mean account
Your startup on AWS - How to architect and maintain a Lean and Mean accountYour startup on AWS - How to architect and maintain a Lean and Mean account
Your startup on AWS - How to architect and maintain a Lean and Mean account
angelo60207
 
ISOIEC 42005 Revolutionalises AI Impact Assessment.pptx
ISOIEC 42005 Revolutionalises AI Impact Assessment.pptxISOIEC 42005 Revolutionalises AI Impact Assessment.pptx
ISOIEC 42005 Revolutionalises AI Impact Assessment.pptx
AyilurRamnath1
 
Create Your First AI Agent with UiPath Agent Builder
Create Your First AI Agent with UiPath Agent BuilderCreate Your First AI Agent with UiPath Agent Builder
Create Your First AI Agent with UiPath Agent Builder
DianaGray10
 
DevOps in the Modern Era - Thoughtfully Critical Podcast
DevOps in the Modern Era - Thoughtfully Critical PodcastDevOps in the Modern Era - Thoughtfully Critical Podcast
DevOps in the Modern Era - Thoughtfully Critical Podcast
Chris Wahl
 
What is Oracle EPM A Guide to Oracle EPM Cloud Everything You Need to Know
What is Oracle EPM A Guide to Oracle EPM Cloud Everything You Need to KnowWhat is Oracle EPM A Guide to Oracle EPM Cloud Everything You Need to Know
What is Oracle EPM A Guide to Oracle EPM Cloud Everything You Need to Know
SMACT Works
 
Jeremy Millul - A Talented Software Developer
Jeremy Millul - A Talented Software DeveloperJeremy Millul - A Talented Software Developer
Jeremy Millul - A Talented Software Developer
Jeremy Millul
 
Dancing with AI - A Developer's Journey.pptx
Dancing with AI - A Developer's Journey.pptxDancing with AI - A Developer's Journey.pptx
Dancing with AI - A Developer's Journey.pptx
Elliott Richmond
 
7 Salesforce Data Cloud Best Practices.pdf
7 Salesforce Data Cloud Best Practices.pdf7 Salesforce Data Cloud Best Practices.pdf
7 Salesforce Data Cloud Best Practices.pdf
Minuscule Technologies
 
Co-Constructing Explanations for AI Systems using Provenance
Co-Constructing Explanations for AI Systems using ProvenanceCo-Constructing Explanations for AI Systems using Provenance
Co-Constructing Explanations for AI Systems using Provenance
Paul Groth
 
Trends Artificial Intelligence - Mary Meeker
Trends Artificial Intelligence - Mary MeekerTrends Artificial Intelligence - Mary Meeker
Trends Artificial Intelligence - Mary Meeker
Clive Dickens
 
6th Power Grid Model Meetup - 21 May 2025
6th Power Grid Model Meetup - 21 May 20256th Power Grid Model Meetup - 21 May 2025
6th Power Grid Model Meetup - 21 May 2025
DanBrown980551
 
Oracle Cloud Infrastructure AI Foundations
Oracle Cloud Infrastructure AI FoundationsOracle Cloud Infrastructure AI Foundations
Oracle Cloud Infrastructure AI Foundations
VICTOR MAESTRE RAMIREZ
 
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdfHow Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
Rejig Digital
 
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
Jasper Oosterveld
 
Domino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
Domino IQ – Was Sie erwartet, erste Schritte und AnwendungsfälleDomino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
Domino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
panagenda
 
Cybersecurity Fundamentals: Apprentice - Palo Alto Certificate
Cybersecurity Fundamentals: Apprentice - Palo Alto CertificateCybersecurity Fundamentals: Apprentice - Palo Alto Certificate
Cybersecurity Fundamentals: Apprentice - Palo Alto Certificate
VICTOR MAESTRE RAMIREZ
 
TimeSeries Machine Learning - PyData London 2025
TimeSeries Machine Learning - PyData London 2025TimeSeries Machine Learning - PyData London 2025
TimeSeries Machine Learning - PyData London 2025
Suyash Joshi
 
IntroSlides-May-BuildWithAi-EarthEngine.pdf
IntroSlides-May-BuildWithAi-EarthEngine.pdfIntroSlides-May-BuildWithAi-EarthEngine.pdf
IntroSlides-May-BuildWithAi-EarthEngine.pdf
Luiz Carneiro
 
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
Your startup on AWS - How to architect and maintain a Lean and Mean account J...Your startup on AWS - How to architect and maintain a Lean and Mean account J...
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
angelo60207
 
Your startup on AWS - How to architect and maintain a Lean and Mean account
Your startup on AWS - How to architect and maintain a Lean and Mean accountYour startup on AWS - How to architect and maintain a Lean and Mean account
Your startup on AWS - How to architect and maintain a Lean and Mean account
angelo60207
 
ISOIEC 42005 Revolutionalises AI Impact Assessment.pptx
ISOIEC 42005 Revolutionalises AI Impact Assessment.pptxISOIEC 42005 Revolutionalises AI Impact Assessment.pptx
ISOIEC 42005 Revolutionalises AI Impact Assessment.pptx
AyilurRamnath1
 
Create Your First AI Agent with UiPath Agent Builder
Create Your First AI Agent with UiPath Agent BuilderCreate Your First AI Agent with UiPath Agent Builder
Create Your First AI Agent with UiPath Agent Builder
DianaGray10
 
DevOps in the Modern Era - Thoughtfully Critical Podcast
DevOps in the Modern Era - Thoughtfully Critical PodcastDevOps in the Modern Era - Thoughtfully Critical Podcast
DevOps in the Modern Era - Thoughtfully Critical Podcast
Chris Wahl
 
What is Oracle EPM A Guide to Oracle EPM Cloud Everything You Need to Know
What is Oracle EPM A Guide to Oracle EPM Cloud Everything You Need to KnowWhat is Oracle EPM A Guide to Oracle EPM Cloud Everything You Need to Know
What is Oracle EPM A Guide to Oracle EPM Cloud Everything You Need to Know
SMACT Works
 
Jeremy Millul - A Talented Software Developer
Jeremy Millul - A Talented Software DeveloperJeremy Millul - A Talented Software Developer
Jeremy Millul - A Talented Software Developer
Jeremy Millul
 
Dancing with AI - A Developer's Journey.pptx
Dancing with AI - A Developer's Journey.pptxDancing with AI - A Developer's Journey.pptx
Dancing with AI - A Developer's Journey.pptx
Elliott Richmond
 
7 Salesforce Data Cloud Best Practices.pdf
7 Salesforce Data Cloud Best Practices.pdf7 Salesforce Data Cloud Best Practices.pdf
7 Salesforce Data Cloud Best Practices.pdf
Minuscule Technologies
 
Co-Constructing Explanations for AI Systems using Provenance
Co-Constructing Explanations for AI Systems using ProvenanceCo-Constructing Explanations for AI Systems using Provenance
Co-Constructing Explanations for AI Systems using Provenance
Paul Groth
 
Trends Artificial Intelligence - Mary Meeker
Trends Artificial Intelligence - Mary MeekerTrends Artificial Intelligence - Mary Meeker
Trends Artificial Intelligence - Mary Meeker
Clive Dickens
 
6th Power Grid Model Meetup - 21 May 2025
6th Power Grid Model Meetup - 21 May 20256th Power Grid Model Meetup - 21 May 2025
6th Power Grid Model Meetup - 21 May 2025
DanBrown980551
 
Oracle Cloud Infrastructure AI Foundations
Oracle Cloud Infrastructure AI FoundationsOracle Cloud Infrastructure AI Foundations
Oracle Cloud Infrastructure AI Foundations
VICTOR MAESTRE RAMIREZ
 
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdfHow Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
Rejig Digital
 
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
Jasper Oosterveld
 
Domino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
Domino IQ – Was Sie erwartet, erste Schritte und AnwendungsfälleDomino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
Domino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
panagenda
 
Cybersecurity Fundamentals: Apprentice - Palo Alto Certificate
Cybersecurity Fundamentals: Apprentice - Palo Alto CertificateCybersecurity Fundamentals: Apprentice - Palo Alto Certificate
Cybersecurity Fundamentals: Apprentice - Palo Alto Certificate
VICTOR MAESTRE RAMIREZ
 

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 [email protected]
  • 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 ▪ .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//feed-items – user’s feed /chatter/users/ – user profile /chatter/users/me/following/filterType==005 – users I’m following /chatter/users?q=* – search by user name
  • 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 [email protected]
  • 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