This article describes how to use an On Behalf Of (OBO) pattern to perform operations on behalf of a Symphony end user.
Overview
In conjunction with the Symphony URI, which launches the Symphony desktop client, the OBO pattern can be used for building click-to-chat integrations with third-party or in-house systems, such as a trading platform, a research management system, or a CRM.
The pattern is comprised of an authentication sequence and a series of OBO-compatible endpoints that allow an app to take actions on behalf of the user in context, including:
- Initiate connection requests to and determine connection status with other users
- Get the presence state of other connected users
- Initiate IMs and MIMs with other users
- Send messages and attachments
- Set the context user's own presence
OBO use cases differ from bot use cases in that activities are performed as if end users had initiated actions directly from within Symphony themselves.
Getting Started
- Create an application manifest bundle file for the OBO app.
- Set the required permissions.
- Authenticate.
- Invoke OBO-enabled endpoints.
OBO App Permissions
OBO integrations can be built either by enterprises to integrate with internal systems or partners who want to create workflow integrations with their applications.
To use the endpoints above, OBO apps must be assigned the appropriate permissions from the list below:
Category | Permission | Description |
---|---|---|
On Behalf Of |
| Required. This required permission allows an application to act on behalf of a user via any of the other permissions. Note: This permission does not display to administrators on the Admin Portal because all apps can act on behalf of a user and therefore have the |
Messaging |
| The application can send messages for the logged-in user. |
Get Connections |
| The application can get connection requests for the logged-in user. |
Send Connections |
| The application can send connection requests for the logged-in user. |
Get Presence |
| The application can only get presence for the logged-in user. |
Set Presence |
| The application can only set presence for the logged-in user. |
Primary User Identity |
| The application can get information about the logged-in user. |
Primary Contacts Access |
| The application can get information about other users through user look-up and search. |
List User's Streams |
| The application can list the streams in which the logged-in user is a member. |
OBO Apps and Authentication
On Behalf Of integrations are apps that must be enabled for customer pods and installed for specific users. Similar to Symphony's Extension API Apps, OBO apps are surfaced in the Symphony Admin Portal, where company admins can choose to enable them for their pod.
OBO apps are specified by an appId
and a certificate (similar to those used for REST API Bot Authentication), which has a common name that matches the apps name. This certificate must be trusted on the customer's pod, which can be done in the Admin Portal > Manage Certificates section.
For OBO apps, authentication is a two-fold process:
- The app itself must be authenticated using its certificate. The app authenticates only if it is enabled for the pod and its certificate is trusted. Upon successful OBO app authentication, the app receives an app
sessionToken
. - The app must request to authenticate on behalf of a particular user, using its app
sessionToken
. The app authenticates only if it is installed for the user and its appsessionToken
is valid. Upon successful OBO user authentication, the app receives the user'ssessionToken
.
Once the app has obtained the user's sessionToken
, it can make REST API calls with this sessionToken
to perform activities on behalf of the session user.
OBO-Enabled Endpoints
See OBO-Enabled Endpoints for a list of endpoints that have been enabled for OBO.
OBO Pod and Agent Paths
OBO integrations can be built either by enterprises to integrate with internal systems or partners who want to create workflow integrations with their applications.
Customer Prerequisite
To build and use OBO integrations, customers (that is, end users) must have the required Symphony API infrastructure. Specifically, they must have the Agent component that allows for encryption and decryption of messages sent via the API.
When an app calls an OBO endpoint to authenticate or to perform an operation, the app must use the paths corresponding to the user whom the app intends to act on behalf of.
Enterprise developers should know (or can obtain through internal channels) the paths for their infrastructure (pod/Agent) and can call the OBO endpoints with these paths prespecified.
For partners building apps for use by multiple customers, these paths are unique to each customer and are provided to the partner by Symphony via a callback when the app has been enabled for the customer's pod.
As part of provisioning a partner's app, Symphony asks the partner to supply a callback URL and an application key.
This callback URL is invoked when the partner's app is enabled by a customer or a customer's Agent is registered with their pod (a rare event but possible, for example, if a customer changed their Agent address after the app was enabled).
Symphony invokes the callback URL, returning the base URLs the partner should use for OBO requests.
POST https://<callback url>
X-API-KEY: <apiKey>
{
"appId": "appId",
"companyId": "companyId",
"eventType": "eventType", // "appEnabled" or "agentRegistered"
"payload": {
"agentUrl": "agentUrl", // This field will only be returned if there is an Agent registered with the pod
"podUrl": "podUrl",
"sessionAuthUrl": "sessionAuthUrl"
}
}
Partner Agent Access
Symphony's customers can have their encryption/decryption infrastructure (Key Manager and Agent) either hosted in-cloud by Symphony or on-premise. Partner applications can be either cloud-based or on-premise (on the user's desktop). Partner applications can perform OBO message sending only if they have access to the customer's Agent. The following three scenarios are supported:
- The customer's Symphony KM and Agent and the partner's application are all on-premise.
- The customer's Symphony KM and Agent are in-cloud, and the partner's application is cloud-based.
- The customer's Symphony KM and Agent are in-cloud, and the partner's application is on the user's desktop.
in a future release, Symphony plans to support the case in which the customer's Symphony KM and Agent are on-premise and the partner's application is in-cloud.
Updated about a year ago