That just means that you have not started the bot in a while, so the previously-persisted datafeed has expired and you are trying to read it. Once this happens, the BDK will automatically create a new one and continue on the service loop. You can safely ignore this exception if the bot continues running after this.
Firstly, there is no difference between using Freemarker or any other templating engine compared to using MessageML directly.
On table widths, they are rendered full width by default. You can choose to resize a particular column by adding style="width:400px"
to one or more <td>
elements, but not all of them. Adding width styles to all <td>
elements in a row will ignore the styles.
If you need the entire table to not render full width, you can nest the table in another <div>
and ...
For your use-case, you should not be using multiple controllers this way. Instead, make use of the Service Interface documented at the link below and use the implement and invoke methods to achieve remote method calls.
Unfortunately, it is not possible to achieve dynamic/linked dropdowns using purely MessageML with Symphony Elements at the moment. Custom logic with Javascript will never be allowed as they are a security risk.
One option is to use Extension Apps to build a custom renderer for messages. This option is a lot more complex since you'll need to host the app on your own web server and require users to install your app from Symphony Market. This option also does not work on mobile and does not h...
@<1356904915263295488|Jakub Furmankiewicz> not exactly sure what you're trying to ask here. would be helpful to list which sdk/bdk you're using and describe your architecture setup. as you mentioned python, you should note that Symphony has never shipped webhook functionality for python-based tooling so it's quite confusing what you're trying to ask here.
When you say "Desktop Client", I assume you are referring to the Symphony Desktop Application (SDA).
I suspect that you don't see it loading because SDA does not trust the self-signed certificate served on your local instance. Similar to how you initially got past the security warning on your browser, you need to do the same within SDA. To do that, you can open developer tools (Ctrl
+ Shift
+ I
) then use window.location.href = https://localhost:4000/
just to clear the security warn...
I'm able to find your bot using either the simple or advanced search. Perhaps it was some network/infra blip? Can you confirm if it's still happening for you? (I assume you are in the correct sandbox environment - develop2.symphony.com)
Firstly, please kindly refrain from posting internal infrastructure details such as server hostnames - I've helped redact that from your post.
From the error message (getaddrinfo failed
), it would suggest that this is a DNS failure i.e. your bot is unable to resolve the hostname in question, which appears to be an internal hostname pointing to an on-premise API Agent. You should first contact your internal infrastructure teams who manage the servers hosting both your bot as well as the A...
Firstly, you should note that the repository you referenced is rather old and no longer maintained. Nevertheless, most concepts should still apply today. You can find the latest on the Extension API at the developer documentation site here: https://docs.developers.symphony.com/building-extension-applications-on-symphony/overview-of-extension-api
In a real-world scenario, what you would need to do is contact your pod administrator and have them create an Extension App entry in the Admin Con...
Jinja2 works natively together with the BDK for Python rather than requiring a BDK-specific dependency like for Freemarker or Handlebars in BDK for Java. If you are using the Symphony Generator to create a new BDK for Python project, it already ships with an example that demonstrates how to integrate Jinja2 templates with the Activities API.
Here's a simple example of how to use Jinja2 in a bot that just sends a templated message and terminates:
from jinja2 import Template
...
The BDK itself doesn't assist with parsing/authoring of styles within messages - it supports receiving and sending the raw format to and from the REST APIs.
We don't recommend programatically trying to parse dynamic styles unless you're confident that the styles confirm to a number of expected formats. you also shouldn't directly re-send message content received on the datafeed back onto a new message as those formats differ (PresentationML vs MessageML).
The preferred approach is eithe...
You can request for access to the Developer Sandbox by clicking on the link in your welcome email. If you have misplaced that email, please reach out to us at developer.relations@symphony.com.
Note that user and bot credentials for the Developer Sandbox (develop2.symphony.com) are separate from your login on the Developer Center (developers.symphony.com).
There are a couple of options:
Embedded Image
Use a chart library to generate an image, then either attach it to your message or embed it inline using base64
Manual HTML + Styles
For simple bar charts with less data, construct them manually using divs and styling. You can also create pie charts using a conic-gradient background style. Here's a sample of some creative styling: https://codepen.io/Theystan/pen/xxZVaXd
Extension App
If you require interactive charts, yo...
Your bot will either need to send connection requests to external contacts, accept their incoming connection requests, or both, depending on what your workflow is. You can use the connections client's create or accept calls. If you want to accept connection requests as they arrive in real-time, you can create a connections listener and call accept with the incoming user id, but you will want to build some sort of governance to ensure that you are not accepting anyone who asks. You can validat...
In MessageML, you will need to escape the ampersand character (&
) to (&
).
<messageML>
<a href="https://google.com?a=1&b=2">link</a>
</messageML>
If you are using Symphony's BDKs, there are helper classes to help you do this automatically to sanitize content that you believe might contain special characters.
// Java BDK
import com.symphony.bdk.core.service.message.util.MessageUtil;
public void doWork() {
String escaped = MessageUtil.escape...
Points can be earned when the following actions occur:
Action | Points |
---|---|
If your answer is voted up | +10 |
If your question is voted up | +5 |
If your comment is voted up | +2 |
If your answer is marked as correct | +10 |
If you marked your own answer as correct | +3 |
If your post gets voted | -3 |
If you downvote a post | -1 |
Badges are issued when these requirements are met:
| Badge | Requirement |
| ------- | -----------...
Hello and welcome to the Symphony Developer Forum, maintained by the Symphony Developer Relations team. While the team will strive to answer and comment on posts, this is meant to be an open community offering and everyone is allowed to ask, answer and comment.
This forum should be used for asking questions about..
- Development of bots and apps in Symphony
- Design and architecting a Symphony bot / app ecosystem
- Deployment of bots an...
You can use the streams service to get room info, then extract the room name in the roomAttributes
object.
BDK 2.0:
bdk.datafeed().subscribe(new RealTimeEventListener() {
@Override
public void onMessageSent(V4Initiator initiator, V4MessageSent event) {
String streamId = event.getMessage().getStream().getStreamId();
String roomName = bdk.streams().getRoomInfo(streamId).getRoomAttributes().getName();
bdk.messages().send(streamId, "Hello in room: " + roomN...
When you create a room, you can set the room to read-only. In that case, only room owners can send messages in that room, but this property cannot be changed after the room is created.
// Java BDK Example
V3RoomAttributes attributes = new V3RoomAttributes()
.name("My Room")
.readOnly(true);
bdk.streams().create(attributes);
If you need those members to send messages, you will have to promote them to owners then revoke that later. However, at any point of time i...