Examples: query, "exact match", wildcard*, wild?ard, wild*rd
Fuzzy search: cake~ (finds cakes, bake)
Term boost: "red velvet"^4, chocolate^2
Field grouping: tags:(+work -"fun-stuff")
Escape special characters +-&|!(){}[]^"~*?:\ - e.g. \+ \* \!
Range search: properties.timestamp:[1587729413488 TO *] (inclusive), properties.title:{A TO Z}(excluding A and Z)
Combinations: chocolate AND vanilla, chocolate OR vanilla, (chocolate OR vanilla) NOT "vanilla pudding"
Field search: properties.title:"The Title" AND text
Profile picture
Yong Sheng Tan
Administrator Moderator
1 Question, 79 Answers
  Active since 24 March 2021
  Last activity one year ago


39 + 13 this July 0 1

Badges 2

Editor Newbie
1 Votes
1 Answers
1 Votes 1 Answers 6K Views
How do I use the Symphony Dev Forum?
3 years ago
0 Feed was set to stale when running BDK bot for python

This happens when your bot is configured to use Datafeed 2.0 and has created a datafeed, but was not continuously running for some time so the datafeed became stale.

The BDK will automatically re-create a new datafeed and begin listening on the new one after those log messages. As long as the bot is responding to events like commands, everything is working correctly. If you terminate the bot process and restart it, you will notice that the exception no longer occurs, since your previous ru...

2 years ago
1 Uploading public key to admin console for sandbox

Those instructions are for an actual pod where either you have access to the admin console or you can request for your pod admin to help create a service account for you.

For the Developer Sandbox, you can request for credentials via the welcome email (which you have already done). These are automatically provisioned for you so you do not need to access the admin console on the sandbox. You will then receive another email with your credentials package. Once you have obtained that, simply e...

2 years ago
0 Welcome Message to BOT

You can use the INSTANTMESSAGECREATED event and the USERJOINEDROOM event for that purpose. Note that the IM created event only fires for the very first time that a bot and a user communicate. It will not fire subsequently even if the user closes the window and returns.



2 years ago
0 Freeze the Chatroom

That is how Symphony works with regards to deactivation - the room is as good as hidden. It only appears in search results by room owners who have the option to re-activate the room.

What you are looking for is setting a room to read-only instead. Room owners can do this from the Chat Details pane.

2 years ago
0 How can I add custom CSS blocks to templates or custom stylesheet?

Unfortunately, only inline styles like in your point #1 are currently allowed within the MessageML specification.

One way to mitigate this is to use a templating engine so that style definitions can be reused.

<!-- resources/hello.jinja2 -->
<div style="{{ styles.abc }}">hello</div>
<div style="{{ styles.def }}">goodbye</div>
<div style="{{ styles.abc }}">hello again</div>
from jinja2 import Template


async def hello(c...
2 years ago
0 Navigate to Chat

You can use the ui-action button element to navigate users to a specific IM or room upon clicking on the button. Refer to documentation for details.

If what you're asking for is forcefully navigating the user to a chat when a bot sends a message, that is not possible. You can imagine how that will play out if a large number of bots keep doing th...

2 years ago
0 Submit Elements Form Multiple Times

Your form needs to have multi-submit enabled.

<form multi-submit="reset">

Please refer to the documentation for more details.

2 years ago
0 Run multiple bots in the same instance
  1. Yes, it does. This is more straightforward in projects that do not use the Spring integration since you have to explicitly name the configurations and create instances of SymphonyBdk. The Spring integration assumes the use of 1 primary bot, so a bit of explicit definition is required.

  2. No concerns specifically around authentication or datafeed polling, other than both bots sharing the same compute resources. The one thing to note is that you cannot use the default datafeed configura...

2 years ago
0 Exception when creating a bean

I assume this is for your enterprise test pod and not the developer sandbox (develop2.symphony.com).
This looks to be either a configuration issue or an environmental issue.

Can you please verify the individual entries match your on-premise setup:

  • Pod hostname
  • Key Manager hostname and port
  • API Agent hostname and port
  • Proxy server hostname, port and credentials
  • Truststore contains all signing certs served from the hosts above

If these are all accurate, please contact Symp...

2 years ago
0 how do we send table as pasted table using bot

Officially, there is no support for this so you will not be able to get exactly the same format. However, wrapping your table around a div with class excel-table offers a similar look with the hover effects in Client 2.0, just without the responsive collapsing behaviour. (Note that this is not part of the documented MessageML specification and thus, is subject to breaking in the future).

<div class="excel-table">
2 years ago
0 Browse option to add attachment in Symphony Form Element

This is unfortunately not available today, so attachments have to be sent as part of a message rather than a form submission. The file upload element is on the roadmap and we will announce it via the newsletter when it is released.

2 years ago
0 How to share the Symphony / Bot Developer Certification (Java) in Linkedin?

Congratulations! You should have also gotten a separate digital badge issued on Credly. Please check your email and accept the badge. You can then share that one more easily on your social networks.

2 years ago
2 How to invoke V2RoomSearchCriteria API to fetch the RoomId?

You can use the attributes in V2RoomSearchCriteria to set the search criteria. For free-text search on the room name, just use the query attribute. You'd then want to verify that the search results are not empty before extracting the room attributes.

V2RoomSearchCriteria criteria = new V2RoomSearchCriteria().query("Deal Room 123");
V3RoomSearchResults results = bdk.streams().searchRooms(criteria);
if (results.getCount() >= 1) {
  String roomId = results.getRooms().get(0).ge...
2 years ago
0 TimeoutError

This is now fixed in the 2.2.1 release of the Python BDK

2 years ago
2 Breaking out /slash activities into it's own file

You can choose to continue using the @slash decorator while splitting your code into multiple classes / files if you like, just that you will still need to instantiate each class in __main__.py and pass the required BDK services along with ActivityRegistry.

# __main__.py
from .my_file import MyClass

async def run():
    config = BdkConfigLoader.load_from_file(Path.joinpath(current_dir, 'resources', 'config.yaml'))

    async with SymphonyBdk(config) as bdk:
2 years ago
0 Show up the iframe of an extension app when I click on the bot

I believe you are confusing too many different concepts together. I recommend that you head to the Training Center and review the Fundamentals and Python BDK courses to get a better understanding of how Symphony, bots and extension apps work. That will help you establish what you actually need to implement as part of your required workflow. Feel free to return with specific questions once you have done that.

2 years ago
0 Can I use Symphony APIs to create a secure channel between a custom web app and Google Cloud Platform?

That is not a supported use-case and it would deliver arguably no benefit as opposed to directly uploading your files. When you use Symphony REST APIs to send a message with an attachment, the message and file data are transmitted and stored encrypted on the Symphony Pod in the cloud. Customers do not get access to the encrypted version of the payloads and there are no APIs to retrieve that. The REST APIs need to work in tandem with the Symphony Clients for any given workflow such that the en...

2 years ago
1 Invalid Command Activity Message

You can define additional slash command handlers that accept a wildcard regular expression behind to serve as a catch-all.

bdk.activities().register(slash("/Help", false, context -> {
	// Regular logic

bdk.activities().register(slash("/Help .*", false, context -> {
	// Invalid usage logic
2 years ago
0 My bot lacks permissions to

What you should be using is the list_users_by_ids() method instead of get_user_details(), which calls an admin-level endpoint that retrieves complete user details instead of just the public profile that you require.

# Normal user lookup endpoint
# https://developers.symphony.com/restapi/reference#users-lookup-v3
await self._users.list_users_by_ids([context.affected_user_id])

# Admin level user details endpoint
# https://developers.symphony.com/restapi/reference#get-us...
2 years ago
0 Problem with bot authentication

When you first registered on the Developer Center, you should have received a welcome email. Within that email, there is a link you can click on to request for sandbox credentials. You will then receive a package that includes the account details, the RSA keys and a sample configuration.

2 years ago
0 Example for a Headless Bot using the BDK 2.0

A headless bot as a concept is essentially a script that performs a specific action like sending a message and terminating right after, as opposed to a conversational one that is listening for commands 24/7. So the actual implementation could differ wildly depending on how your architect it.

For example, you could have the bot accept command line arguments representing the stream id and message content, then use an external mechanism to launch the bot when your event triggers. You could al...

2 years ago
1 Send the file

Sending and receiving messages is demonstrated numerous times in the BDK 2.0 courses. Please refer to the demos at the end of the chapters. Attachments are an optional field in the Message object, which accepts any type of InputStream. An example using FileInputStream would look like this:

// Java
Attachment file = new Attachment(new FileInputStream("./data.csv"), "data.csv");
Message msg = Message.builder().attachments(List.of(file)).content("Hello").build();
2 years ago
0 Unable to access the Developing Bots using BDK for Python video

Hi @<1376257644615962624|Gopal Chettri> looks like there was a delay in processing your course progression this morning. I see that you have now been enrolled onto the BDK for Python course.

2 years ago
1 integrate with jenkins

You can write a simple headless bot that accepts an incoming webhook and formats the incoming data payload into MessageML that gets sent into a notification room.

2 years ago
0 Problem with bot authentication

When you first registered on the Developer Center, you should have received a welcome email. Within that email, there is a link you can click on to request for sandbox credentials. You will then receive a package that includes the account details, the RSA keys and a sample configuration.

On configuration for the sandbox (develop2.symphony.com), the default port value of 443 is actually correct. Port 8443 is used for certificate authentication that is (as mentioned in the course) deprecated...

2 years ago
0 How to use Angular framework as Symphony UI in Extension application

Please refer to the following answer to get a basic extension app running.

Once you get the sample running, you can modify app.html / js to include anything you want, including UI frameworks etc. Everything in app.html / js is entirely your implementation so you can include any framework you wish. Obviously, we cannot possibly provide support for Angular itself and any...

2 years ago
1 Getting Invalid domain error while connecting to app from other domain

Unfortunately, the Extension API does not support this model of different Extension Apps invoking each others' services by design. Some customers have asked for this feature in the past and the product team is continuing to evaluate the ask, so we appreciate your feedback on this as it helps us drive the roadmap.

2 years ago
1 How do we change our extension application's description and icon in the Symphony Market?

I assume your market app is a public app available on all Symphony pods. This is controlled centrally by Symphony, so please reach out to support@symphony.com for assistance.

For context, private apps are deployed and controlled by individual pods' administrators so in that scenario, you will need to contact the different companies involved. Symphony is not privy to administrating private apps on customer pods.

2 years ago
1 Extension App Title using Dark Theme Icon in Light Theme

Thanks for raising this - we have discovered this to be a bug when we transitioned from Symphony 1.5 to 2.0. One of the parity items that was missed out on. This has been added to the backlog for fixing but we don't have a specific date for when it will be done. Apologies that you will have to find an alternative icon that is neutral to both light and dark themes in the meantime.

2 years ago
0 Symphony Developers certificate

Once you pass a qualifying certification exam (Fundamentals does not count), you will receive via email the certificate in PDF format as well as a Credly badge that you can choose to accept and share on your social networks. Please search your email for this message. If you have misplaced it, please reach out at developer.relations@symphony.com so we can assist further.

2 years ago
Show more results compactanswers