© RightNow Technologies, Inc. Connect Common APIs & Connect Common Object Model Chris Omland http://www.linkedin.com/in/omland
Mar 07, 2016
© RightNow Technologies, Inc.
Connect Common APIs & Connect Common Object Model
Chris Omlandhttp://www.linkedin.com/in/omland
My Introduction
RightNow2008 as Technical Product Mgr2010 Product Mgr, COE
BackgroundB.S. Computer ScienceMaster Business Administration
Personal InterestsSki, Snowmobile, Bike, Waterskiing
Session Goals
Understanding of AppBuilder
Preparation for other RDC sessions
Enable future learning
Questions
RightNow CX
CX for Facebook
Support Community
Innovation Community
Cloud Monitor
Customer Feedback
Service Sales Marketing
Analytics
Voice ExperienceManager
DynamicAgent Desktop
Customer Feedback
Service Sales MarketingAnalytics
App Builder
Mission Critical OperationsKnowledge Foundation | Natural Language Search
Intent GuideWeb / Mobile Self-Service
Chat / Co-BrowseEmail Management
Intent GuideWeb / Mobile Self-Service
Chat / Co-BrowseEmail Management
CX for Facebook
Support Community
Innovation Community
Cloud Monitor
Voice ExperienceManager
DynamicAgent Desktop
© RightNow Technologies, Inc.
App Builder
RightNow CX Cloud Platform
App Builder
Custom Objects
Connect APIs
Experience Design
App Builder
Extend RightNow CX apps to support unique business processes
Leverage open standards-based capabilities to rapidly and cost-effectively integrate
Easily configure RightNow CX for unified and engaging experiences across all channels
Adaptive open standard technologies & design interfacesDesign, Build & Connect
Build Any Object
Web
ContactCenter
Social
Unique
Custom Objects
RightNow Custom Objects enables Administrators and Integrators to build & extend the Apps with Custom Objects that support unique business processes
RightNow Object Designer
Parent
Child
Association
Styles
Fields
Index
Notes Labels
Menus
Custom Objects
RightNow Custom Object Designer enables Administrators and Integrators to build and manage Custom Objects directly in the application
Connect Any APIRightNow Connect delivers open standards-based API’s to rapidly and cost-effectively integrate the RightNow CX Cloud Platform into anything
Website
Desktop Voice
ServiceMarketing Sales
CX Cloud Platform
SAP
Connect
PHP SOAP ADD-IN
Connect WSDL & PHP API’s
INTEGRATE
ACCESS
LEVERAGE
DEVELOP
C R U D WSDL & CRUD PHP API
RightNow Connect PHP is for PHP code executing on RightNow serversRightNow Connect Web Services for SOAP is for code executing on non-RightNow servers
Connect
Desktop Add-In FrameworkRightNow Connect Add-In Framework enables Developers and Integrators to extend the Agent Desktop and create unified experiences
Connect
Partner Ecosystem
85+ Partners 1+ Billion
Integration transactions per year
Best-of-Breed Technology providers with proven repeatable integrations into the CX Cloud Platform
Connect
Connect Common Object Model
Connect Common Object Model
A standard object model used across each of RightNow’s public APIs*
FieldsPermissionsData types
Each language binding has unique aspectsLists vs. ArraysReferencesEtc…
*Not all public APIs have moved to the Connect Common Object Model
Our Goal
A single object model for developers to learn
Easy for developersLogical class hierarchyLabels & id’sIntuitive
Establish a solid foundation for the future
RightNow Data Model
RightNow Database
RightNow Data Model
RightNow Database
Customer Portal Agent Desktop Community
RightNow Data Model
RightNow Database
Customer Portal Agent Desktop External Applications
PHP SOAP ADD-IN SOAP
RightNow Data Model
RightNow Database
Customer Portal Agent Desktop External Applications
PHP SOAP ADD-IN SOAP
Connect Common Object Model
Understanding Connect Common Object Model
Object Categories
Primary Objects
Sub-Objects
Custom ObjectsOrganizationIncidentsContacts
Objects with a unique ID (primary key) that support direct CRUD operationsStandalone objects
Once created they exist until deletedMay have relationship to other primary objects
• Contacts & Organizations
All inherit from base class RNObjectAccessible by RightNow Object Query Language
Primary Objects (Incident & Contact)
*Not complete object model
0..*
Primary Objects (May 2010)Service
AnswersContactsIncidentsOrganizationsTasks
SalesOpportunities
Management & ConfigurationAccountSales Product Service CategoriesService DispositionService Product
Object Categories
Primary Objects
Sub-Objects
Contact Incident Organization Custom Object
Notes Threads Address Email
Subordinate to primary objects, primary objects contain sub-objectsLifecycle is based on lifecycle of primary object
If primary object is deleted all sub-objects are deleted
Sub-objects are only managed through CRUD of the related primary object
Sub-Objects
*Not complete object model
Sub-Objects (May 2010)
AccountCTISettingsAccountOptionsAccountSalesSettingsAccountServiceSettingsAccountSpeedDialAccountSpeedDialListAddressAnswerLinkAnswerNotificationBannerCategoryNotificationContactMarketingSettingsContactSalesSettingsContactServiceSettingsCRMModulesEmailFileAttachment
FileAttachmentAnswerFileAttachmentCommonFileAttachmentIncidentFileAttachmentSharedGroupAccountIncidentContactIncidentContactDeltaInheritOptionsLabelLabelRequiredMonetaryValueNoteOpportunityContactOpportunityContactDeltaOpportunityContactListOrganizationSalesSettingsOrganizationServiceSettings
PersonFullNamePersonNamePhoneProductNotificationQuoteQuoteLineItemSalesProductScheduleSLAInstanceStageWithStrategyStatusWithTypeTaskMarketingSettingsTaskSalesSettingsTaskServiceSettingsThreadTimeBilledTypedAddress
Questions?
NamedID’s
NamedID Intro
Understanding NamedID
Two Primary FieldsID (long)Name (String)
Convenience for DevelopersSettingDisplaying
Types of NamedID
NamedIDHierarchy
Allows for HierarchyUse name or id of leaf
Set Parent by Name or ID for uniqueness
Example UsesProduct / Category on IncidentManager on Account
NamedIDDelta
Used to alter items in a list by Name or ID
Action Attribute• Add & Remove
Example UsesVisible InterfacesAccess Levels
Questions?
Managing Relationships
Primary & Sub-Objects
Primary objects often contain 1:N sub-objectsIncidents ThreadsContacts Notes
Primary Objects & Sub-Objects
Connect Web Services for SOAPLeverage list wrappers to support 1:NManage list items through an action attribute
*Not complete object model
Primary Objects & Sub-Objects
Connect for PHPLists are represented as ArraysNo need for list wrappers
Primary Objects & Primary Objects
Some primary objects reference other primary objects
Contact Organization
Primary Objects & Primary Objects
Connect Web Services for SOAPPrimary object relationships are managed through NamedID
• Contact.Organization is a NamedID
Connect PHPPrimary object relationships are managed through object references
• Contact.Organization is an Organization
Object Fields & Customizable Menus
Setting Custom Menu Field Values
Custom menu fields have a NamedID data type
Fields can be set by ID or by Name (label)
Labels are interface/language specific
Types of NamedIDNamedIDHierarchyNamedIDDelta
Questions?
Generic Objects
Typed vs. Generic
Typed Object: Contact
Generic Object: GenericObject
Contact newContact = new Contact();PersonName personName = new PersonName();personName.setFirst(“Chris”);peronsName.setLast(“Omland”);newContact.setPersonName(personName);….
GenericObject genericContact = new GenericObject();//Set the object type to contactRNObjectType objType = new RNObjectType();objType.setTypeName("Contact");genericContact.setObjectType(objType);GenericField lastGenericField = createGenericField("Last", createStringDataValue("Omland"),
DataTypeEnum.STRING);GenericField firstGenericField = createGenericField("First", createStringDataValue("Chris"),
DataTypeEnum.STRING);GenericField[] personNameFieldList = new GenericField[] { lastGenericField, firstGenericField };GenericField nameGenericField = createGenericField("Name",
createObjectDataValue("PersonName", personNameFieldList), DataTypeEnum.OBJECT);
Generic Object Model
*Not complete object model
Sample XML<n0:RNObjects xsi:type="n1:GenericObject">
<n1:ObjectType><n1:Namespace>objects_ws_rightnow_com_v1</n1:Namespace><n1:TypeName>Contact</n1:TypeName>
</n1:ObjectType><n1:GenericFields name="Name" dataType="OBJECT">
<n1:DataValue><n1:ObjectValue xsi:type="n1:GenericObject">
<n1:ObjectType><n1:Namespace>objects_ws_rightnow_com_v1</n1:Namespace><n1:TypeName>PersonName</n1:TypeName>
</n1:ObjectType><n1:GenericFields name="First" dataType="STRING">
<n1:DataValue><n1:StringValue>Chris</n1:StringValue>
</n1:DataValue></n1:GenericFields><n1:GenericFields name="Last" dataType="STRING"><n1:DataValue>
<n1:StringValue>Omland</n1:StringValue></n1:DataValue>
</n1:GenericFields></n1:ObjectValue>
</n1:DataValue></n1:GenericFields>….
Why Generic Objects?
Dynamic programming vs. static programming
Runtime discovery of data types
Flexible integrations
Forward compatible integrations
Questions?
Custom Objects
Web Services vs. PHP
Connect Web Services for SOAPCustom Objects are represented through a generic interface
Connect for PHPCustom objects are strongly typed objects
Meta-data
Meta-data
Data that describes dataObject typeObject fieldsConstraints
Programmatic version of object model docs
Used by anyone working with generic objects & dynamic programming
Meta-data APIs
GetMetaDataObtain all the meta-data for all objects
GetMetaDataForClassObtain meta-data for a specific set of classes
GetMetaDataLastChangeTimeObtain the time of the last change to meta-data
Meta-Data Class
Meta-data Attributes
Meta-data Relationships
Questions?
What’s New
May 2011Key Highlights
• AnalyticsReport• AnalyticsReportColumn• AnalyticsReportFilter• AnalyticsReportFilterAttributes•AnalyticsReportSearchFilter
• Contact• ChannelUsername
• Product & Category Linking• Variables
May 2011 Key Highlights
Month
May
Aug 2011Key Highlights
•Purchased Product•Standard Content•Sales Territory•Custom Attributes
Aug 2011 Key Highlights
Month
Aug
Learning More
Developer Guide – Object Model
Developer guide has a section dedicated to the new object modelObject Model OverviewCore Objects (Primary, Sub & NamedID)List ObjectsMessage Objects
Refer to the developer guide if you need more detail on any objects
Developer Community
Questions?
© RightNow Technologies, Inc.
Thank You!