Symphony Messaging Dev Docs
Developer CertificationREST API
  • Start Your Developer Journey
  • Bots
    • Building Bots
    • Planning Your Bot
      • Conversational Bot
      • Interactive Bot
      • Headless Bot
    • Getting Started
      • Getting Started with BDK
      • Creating a Service Account
      • Configuration
      • Truststores
    • Overview of REST API
      • REST API Architecture
      • Overview of Pod API
      • Overview of Key Manager API
      • Overview of Agent API
      • Bot Permissions
      • REST API Reference
    • Authentication
      • RSA Authentication Workflow
      • Certificate Authentication Workflow
    • Datafeed
      • Real-Time Events
      • Overview of Streams
    • Messages
      • MessageML
        • MessageML Basics
          • Content Grouping
          • Text formatting and semantics
          • Tables
          • Images
          • Tags and mentions
            • Enhanced tags notice
          • Style Attributes
          • Special Characters
          • Emojis
        • Elements Interactive Forms
          • Buttons
            • Icon set for Buttons
          • Text Field
          • Masked Text Field
          • Text Area
          • Checkbox
          • Radio Button
          • Dropdown Menu
          • Person Selector
          • Room Selector
          • Date Picker
          • Time Picker
          • Timezone Picker
          • Table Select
          • Regular Expressions - Regex
        • Extensibility UI Actions
          • OpenChat
          • Dialog
        • Entities
          • Standard Entities
          • Custom Entities
      • PresentationML
    • Bots Best Practices
    • Open Source Code Samples
  • Extension Apps
    • Building Extension Apps
    • Planning Your App
    • Getting Started
      • Getting Started with ADK
      • Application Manifest Bundle
      • Add an Extension App to a Symphony Pod
    • Overview of Extension API
      • Initialization
      • Register and Connect
      • Extension API Services
        • Service Interface
        • Register and Subscribe
        • Modules Service
        • Entity Service
          • Entity Advanced Templating
          • Message Format - ExtensionML
        • Applications-Nav Service
        • Share Service
        • Commerce Service
        • Dialogs Service
        • UI Service
          • Receiving Conversation and User Information
          • Filter Function
    • App Authentication
      • Circle of Trust Authentication
      • OBO Authentication
  • Developer Tools
    • Symphony Messaging Generator
    • Bot Developer Kit for Java
      • Build a Conversational Bot
      • Build an Interactive Bot
      • Build a Headless Bot
      • Integrate a Bot with an Identity Provider
    • Bot Developer Kit for Python
    • App Developer Kit
      • Build a Basic Extension App
      • Build an Extension App with App Views
        • Add Buttons and Handlers to an Extension App
        • Add BDK to an Extension App for Circle of Trust
      • Build an Extension App with Message Renderers
    • Postman
    • UI Style Guide
      • Colors
      • Form Elements
      • Buttons
  • Embedded Modules
    • Symphony Messaging URI
      • Symphony Messaging URI for Mobile (deprecated)
    • Desktop interoperability
      • FDC3 intents
        • Message format
      • Configuration guide
        • Configure Interop.io
        • Configure Here Core
        • Configure Finsemble
        • Configure with Embedded Mode
        • Troubleshooting
      • Change log
    • Embedded Mode
      • Get started
      • Configuration parameters
      • Open a chat
      • Send a message
      • Create a room
      • Pin a message
      • Notifications
      • Support for extension applications
      • Open an app
      • Embedded Mode with Sponsored Access
      • Pricing tiers
      • Logout
    • Universal Webhook
      • User guide
        • Example with Splunk
      • Installation guide
  • Symphony REST API
    • Messaging REST API
    • Federation
    • Sponsored Access API
    • Enhanced Directory API
  • Developer Certification
    • Developer Certification
  • Mobile Frameworks
    • Blackberry
    • MobileIron
  • Admin Guides
    • Change Logs
      • API Agent
        • Agent - 25.5
        • Agent - 25.3 (LTS)
        • Agent - 24.12 (LTS)
        • Agent - 24.9 (LTS)
        • Agent - 24.6 (LTS)
        • Archives
          • Agent - 24.11
          • Agent - 24.10
          • Agent - 23.9 (LTS)
          • Agent - 24.8
          • Agent - 24.3 (LTS)
          • Agent - 24.2
          • Agent - 24.1
          • Agent - 23.12 (LTS)
          • Agent - 23.11
          • Agent - 23.10
          • Agent - 23.7
          • Agent - 23.6 (LTS)
          • Agent - 23.4
          • Agent - 23.3 (LTS)
          • Agent - 23.1
          • Agent - 22.12 (LTS)
          • Agent - 22.11
          • Agent - 22.10
          • Agent - 22.9 (LTS)
          • Agent - 22.8
          • Agent - 22.7
          • Agent - 22.6 (LTS)
          • Agent - 20.14
          • Agent - 20.13
          • Agent - 20.12
          • Agent - 20.10
          • Agent - 20.9 (2.62)
          • Agent - 20.7 (2.61)
          • Agent - 20.6 (2.60)
          • Agent - 20.5 (2.59)
          • Agent - 20.4 (2.58)
      • SBE (Pod API)
        • SBE - 24.1
        • SBE - 20.16
        • SBE - 20.15
        • Archives
          • SBE - 20.14
          • SBE - 20.13
          • SBE - 20.12
          • SBE - 20.10
          • SBE - 20.9 (1.62)
          • SBE - 20.7 (1.61)
          • SBE - 20.6 (1.60)
          • SBE - 20.5 (1.59)
          • SBE - 20.4 (1.58)
      • Client 2.0 APIs
        • Client 2.0 - 25.05
        • Client 2.0 - 25.03
        • Client 2.0 - 24.12
        • Client 2.0 - 24.05
        • Client 2.0 - 23.02
        • Client 2.0 - 22.11
        • Archives
          • Client 2.0 - 20.4
          • Client 2.0 - 20.5
          • Client 2.0 - 20.6
          • Client 2.0 - 20.7
          • Client 2.0 - 20.9
          • Client 2.0 - 20.10
          • Client 2.0 - 20.12
          • Client 2.0 - 22.8
          • Client 2.0 - 22.10
      • Universal Webhook
        • Univ Webhook - 2.6
        • Univ Webhook - 2.4
        • Univ Webhook - 2.2
        • Univ Webhook - 2.1
        • Univ Webhook - 2.0
    • API Change Management
    • Global Throttling
    • Agent Guide
      • Network Topology
      • Agent Download
      • Agent Installation
      • Agent Configuration Fields
      • Agent Server High Availability
      • Agent Performance Tuning
Powered by GitBook
On this page
  • Introduction to the enhanced tags
  • Understanding the impact of the new tags
  • Bots producing legacy $cashtags
  • Bots consuming legacy $cashtags
  • Signals
  • Extension apps
  • Message format
  • Structure of legacy $cashtags
  • Structure of enhanced tags

Was this helpful?

Export as PDF
  1. Bots
  2. Messages
  3. MessageML
  4. MessageML Basics
  5. Tags and mentions

Enhanced tags notice

This page describes the changes introduced by the new enhanced tags for Symphony developers

Last updated 1 year ago

Was this helpful?

Introduction to the enhanced tags

Symphony users can now tag financial instruments using the Enhanced Tag feature.

Instrument lookup type-ahead by ticker, name, ISIN, etc.

It displays a typeahead when the user presses # in a chat conversation. The upper section of the typeahead shows regular hashtags previously exchanged with that user and the lower section, under INSTRUMENTS shows Stocks, ADRs, ETFs and Indices.

By hovering over the Enhanced Tag, users can see essential reference data like company name, identifiers, exchange and currency.

The enhanced tags replace the existing $cashtags. This means that moving forward your apps and bots will need to handle enhanced tags instead of $cashtags.

Understanding the impact of the new tags

The impact of the enhanced tags on existing bots & apps has been carefully reviewed to ensure that there is no backward compatibility issue. However, we strongly recommend that you conduct some tests to validate the change.

Please read below to understand the changes introduced with the new enhanced tags.

Bots producing legacy $cashtags

  • Existing bots can still produce legacy $cashtags both using the short tag notation (<tag cash="AAPL"/>), and using a Standard Entity ("type": "org.symphonyoss.fin.security")

Bots consuming legacy $cashtags

  • Bots consuming existing $cashtags in received messages are not impacted if they rely on the structured object (entityJSON). When they receive an enhanced tag, the exact same structure and properties will be present. There will be additional properties though, and the version field will be set to "2.0" instead of "1.0".

  • Bots that rely on the text representation of the tags (message field instead of the entityJSON field) will also not be impacted. However, this is not a recommended practice as this text representation may change to match the enhanced tag displayed symbol instead of the existing ticker in the future (e.g., text would change from "$TSLA" to "TSLA US"). If you rely on the text representation of the $cashtag instead of the structured data, you should consider updating the bot to rely on the structured data included in the entityJSON instead.

  • If you plan to upgrade your bot to leverage the new properties of the enhanced tags, please consider that you may still encounter legacy $cashtags for a long period of time, so should build around that. To detect if you are receiving a legacy tag or an enhanced one, you can rely on the version field included in the structure (org.symphonyoss.fin.security.version). It is set to "2.0" for the new enhanced tags.

Signals

  • Existing signals will continue to work with the new enhanced tags. Messages containing the new tags will still match with the existing signals, meaning a signal matching "cash: AAPL" will match messages containing both "AAPL" and "AAPL US" for example.

  • For now, it is not yet possible to create signals based on the newly introduced properties of the enhanced tags, but this will change in the coming months. For example, it is not yet possible to create a signal that will match only on "TSLA US", but if you create a signal that matches on "TSLA", it will match messages containing "TSLA US" as well.

  • The Signal API has not changed. In the coming months the API may change to adapt to the new tags and in that case this change will be introduced following a notice period provided that there is an impact on the API contract.

Extension apps

  • Existing apps that register a UI extension on $cashtag hovercards continue to receive the existing object for new enhanced tags.

  • However, whenever your app is notified of a user click on the hovercard, the app will receive in addition to the existing object a new structure containing the new enhanced tags properties.

  • If you decide to upgrade your app to leverage the new properties of the enhanced tags, please consider that you may still encounter legacy $cashtags for a long period of time, so should build around that. To detect if you are receiving a legacy tag or an enhanced one, you can rely on the version field included in the structure (org.symphonyoss.fin.security.version). It is set to "2.0" for the new enhanced tags.

Message format

Please note below the differences between the structures of the enhanced tags and the legacy $cashtags.

Structure of legacy $cashtags

// Presentation ML content of the message
<div data-format="PresentationML" data-version="2.0" class="wysiwyg">
  <p><span class="entity" data-entity-id="0">$SAN</span></p>
</div>

// Entities (entityJSON field in the message):
{
  "0": {
    "id": [
      {
        "type": "org.symphonyoss.fin.security.id.ticker",
        "value": "SAN"
      }
    ],
    "type": "org.symphonyoss.fin.security",
    "version": "1.0"
  }
}

Structure of enhanced tags

// Presentation ML content of the message
<div data-format="PresentationML" data-version="2.0" class="wysiwyg">
  <p><span class="entity" data-entity-id="0">$SAN</span></p>
</div>

// Entities (entityJSON field in the message):
{
  "0": {
    "id": [
      {
        "type": "org.symphonyoss.fin.security.id.ticker",
        "value": "SAN"
      },
      {
        "type": "org.symphonyoss.fin.security.id.uniqueId",
        "value": "91e3e37d-da68-42e8-ba05-94aa51aebb4e"
      },
      {
        "type": "org.symphonyoss.fin.security.id.fullBbgTicker",
        "value": "SAN FP Equity"
      },
      {
        "type": "org.symphonyoss.fin.security.id.isin",
        "value": "FR0000120578"
      },
      {
        "type": "org.symphonyoss.fin.security.id.figi",
        "value": "BBG000BWBBP2"
      },
      {
        "type": "org.symphonyoss.fin.security.id.localCode",
        "value": "SAN"
      },
      {
        "type": "org.symphonyoss.fin.security.id.operationalMic",
        "value": "XPAR"
      },
      {
        "type": "org.symphonyoss.fin.security.exchangeName",
        "value": "Euronext Paris"
      },
      {
        "type": "org.symphonyoss.fin.security.country",
        "value": "France"
      },
      {
        "type": "org.symphonyoss.fin.security.displayName",
        "value": "Sanofi"
      },
      {
        "type": "org.symphonyoss.fin.security.currency",
        "value": "EUR"
      },
      {
        "type": "org.symphonyoss.fin.security.instrumentTypeCode",
        "value": "EQS"
      },
      {
        "type": "org.symphonyoss.fin.security.instrumentTypeName",
        "value": "Equity Shares"
      },
      {
        "type": "org.symphonyoss.fin.security.rootBbgCompTicker",
        "value": "SAN"
      },
      {
        "type": "org.symphonyoss.fin.security.bbgcompticker",
        "value": "SAN FP"
      }
    ],
    "type": "org.symphonyoss.fin.security",
    "version": "2.0"
  }
} 
New hovercard for the enhanced tags

Existing bots can easily include enhanced tags in messageML now. To do so, you will need to cuse the <tag> and provide one or several identifiers for that instrument. The instrument will then be resolved against our reference database, and properly formatted in the message. More information is available .

here