Symphony Certified Bot Developer Python Practice Exam, Exams of Technology

This practice exam evaluates Python developers creating Symphony bots. It includes API interaction, message formatting, ENTITLEMENT rules, event processing, automation workflows, secure communication, and system integrations. Candidates must write and troubleshoot Python-based bot logic, ensuring compliance with organizational security guidelines.

Typology: Exams

2025/2026

Available from 01/13/2026

shilpi-jain-1
shilpi-jain-1 🇮🇳

4.2

(5)

29K documents

1 / 88

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
Symphony Certified Bot Developer Python
Practice Exam
**Question 1.** Which component in the Symphony architecture is responsible for storing and
distributing public keys for endtoend encryption?
A) Pod
B) Agent
C) Key Manager
D) Datafeed Service
Answer: C
Explanation: The Key Manager holds users’ public keys and provides them to bots and clients for
encrypting messages endtoend.
**Question 2.** In Symphony, a service account differs from a regular user account primarily
because:
A) It cannot send messages.
B) It authenticates using RSA key pairs instead of a password.
C) It is limited to readonly access.
D) It must be created by an administrator.
Answer: B
Explanation: Service accounts are intended for automated processes and authenticate via RSA
keypair certificates rather than interactive login credentials.
**Question 3.** Which authentication mechanism is recommended as the default for
Symphony bots?
A) OAuth 2.0 token exchange
B) Username/password login
C) RSA keypair authentication
D) SAML assertion
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58

Partial preview of the text

Download Symphony Certified Bot Developer Python Practice Exam and more Exams Technology in PDF only on Docsity!

Practice Exam

Question 1. Which component in the Symphony architecture is responsible for storing and distributing public keys for end‑to‑end encryption? A) Pod B) Agent C) Key Manager D) Datafeed Service Answer: C Explanation: The Key Manager holds users’ public keys and provides them to bots and clients for encrypting messages end‑to‑end. Question 2. In Symphony, a service account differs from a regular user account primarily because: A) It cannot send messages. B) It authenticates using RSA key pairs instead of a password. C) It is limited to read‑only access. D) It must be created by an administrator. Answer: B Explanation: Service accounts are intended for automated processes and authenticate via RSA key‑pair certificates rather than interactive login credentials. Question 3. Which authentication mechanism is recommended as the default for Symphony bots? A) OAuth 2.0 token exchange B) Username/password login C) RSA key‑pair authentication D) SAML assertion

Practice Exam

Answer: C Explanation: RSA key‑pair authentication provides strong, non‑interactive security and is the recommended standard for bots. Question 4. What does E2EE stand for in the Symphony security model? A) Enterprise to Enterprise Encryption B) End‑to‑End Encryption C) External to External Exchange D) Encrypted to Encrypted Endpoint Answer: B Explanation: E2EE means that messages are encrypted from the sender all the way to the recipient, with the Key Manager handling key distribution. Question 5. When bootstrapping a new Python BDK project using Yeoman, which command is used? A) npm init symphony-bot B) yo @finos/symphony C) pip install symphony-bdk D) symphony create bot Answer: B Explanation: The Yeoman generator for Symphony bots is invoked with yo @finos/symphony. Question 6. In a config.yaml file, which field specifies the host of the Symphony Pod? A) pod.host B) agent.host C) pod.url

Practice Exam

D) <hyperlink> Answer: A Explanation: The standard HTML‑style <a> tag is used in MESSAGEML to embed links. Question 10. To display a table with two columns and three rows in MESSAGEML, which tag is required? A) <table> B) <grid> C) <matrix> D) <list> Answer: A Explanation: MESSAGEML supports the <table> element with nested <tr> and <td> for rows and cells. Question 11. Which templating engine is commonly paired with the Symphony BDK for message generation? A) Mustache B) Jinja C) EJS D) Velocity Answer: B Explanation: Jinja2 is a Python templating engine often used to separate presentation from business logic in bot messages. Question 12. When sending an image attachment, which MIME type should be specified for a PNG file?

Practice Exam

A) image/jpeg B) image/png C) application/png D) binary/png Answer: B Explanation: PNG images use the MIME type image/png. Question 13. Which stream type is best suited for a private conversation between a bot and a single user? A) IM (Instant Message) B) MIM (Multi‑party IM) C) Chat Room D) Broadcast Stream Answer: A Explanation: An IM is a one‑to‑one conversation, ideal for private bot‑user interactions. Question 14. The Datafeed service in Symphony is used to: A) Store historical messages. B) Push real‑time events to bots. C) Manage user authentication. D) Host static files. Answer: B Explanation: Datafeed provides a long‑polling endpoint that streams real‑time events (messages, room changes) to bots.

Practice Exam

Question 18. Which filter would you apply to process only messages from a specific stream ID? A) event.stream_id == TARGET_ID B) event.user_id == TARGET_ID C) event.type == "stream" D) event.message_id == TARGET_ID Answer: A Explanation: Comparing event.stream_id to the desired ID isolates events from that stream. Question 19. A slash command in the Activities API is defined by which prefix? A) ! B) / C) # D) @ Answer: B Explanation: Slash commands start with / (e.g., /buy) and are parsed by the Activities API. Question 20. When parsing arguments from a slash command, which pattern matches a cashtag like $AAPL? A) \$\w+ B) \@\w+ C) \#\w+ D) \!\w+ Answer: A Explanation: Cashtags begin with $ followed by alphanumeric characters, matched by the regex \$\w+.

Practice Exam

Question 21. Which Symphony Element type creates a clickable button in a form activity? A) ActionButton B) Button C) InteractiveButton D) SubmitButton Answer: B Explanation: The Button element renders a clickable button that can trigger form submissions. Question 22. The onSymphonyElementsAction callback is invoked when: A) A user sends a plain text message. B) A user clicks a button or interacts with a form element. C) A new room is created. D) The bot connects to the Pod. Answer: B Explanation: This callback handles actions generated from Symphony Elements like buttons or dropdowns. Question 23. In a command context, the user_id property provides: A) The ID of the bot that processed the command. B) The ID of the user who invoked the command. C) The ID of the stream where the command was typed. D) The ID of the command definition. Answer: B Explanation: user_id identifies the command initiator.

Practice Exam

Explanation: The Streams Service expects emailAddress to identify the invitee. Question 27. Which service allows a bot to fetch the last 50 messages from a stream? A) Messages Service B) History Service C) Datafeed Service D) Archive Service Answer: A Explanation: The Messages Service provides endpoints for retrieving message history with pagination. Question 28. To delete (suppress) a message, a bot must provide which identifier? A) Stream ID B) Message ID C) User ID D) Bot ID Answer: B Explanation: Suppression is performed on a specific message identified by its Message ID. Question 29. The Connection Service is used for: A) Managing stream metadata. B) Sending and accepting connection requests between users. C) Retrieving user profile pictures. D) Encrypting messages. Answer: B

Practice Exam

Explanation: The Connection Service handles connection invitations and approvals. Question 30. Which of the following is NOT a valid MESSAGEML tag? A) <mention> B) <card> C) <video> D) <expander> Answer: C Explanation: MESSAGEML does not have a native <video> tag; multimedia is sent as attachments. Question 31. When configuring a proxy for the BDK, which property in config.yaml should be set? A) proxy.enabled B) http.proxy C) agent.proxyHost D) pod.proxyPort Answer: B Explanation: The http.proxy entry defines the proxy URL for outbound HTTP/HTTPS calls. Question 32. A truststore is required in corporate environments to: A) Store bot credentials. B) Validate the Pod’s TLS certificates. C) Cache user presence information. D) Manage RSA key pairs.

Practice Exam

C) Contains the list of all messages. D) Defines the room’s access control list. Answer: B Explanation: Metadata allows applications to attach arbitrary key‑value data to a room. Question 36. When a bot receives a memberJoined event, which attribute indicates the new member’s user ID? A) event.initiator.id B) event.member.id C) event.user.id D) event.newMember.id Answer: B Explanation: The member object in the event payload contains the ID of the user who joined. Question 37. Which HTTP status code indicates a successful creation of a stream? A) 200 OK B) 201 Created C) 202 Accepted D) 204 No Content Answer: B Explanation: 201 Created signals that a new resource (the stream) was successfully created. Question 38. In a form activity, the actionId property is used to: A) Identify the form submission endpoint. B) Correlate the submitted data with the originating element.

Practice Exam

C) Authenticate the user. D) Set the form’s visual style. Answer: B Explanation: actionId ties the user’s interaction to the specific element that triggered it. Question 39. Which of the following is true about the Datafeed vs. Events APIs? A) Datafeed is push‑based, Events are pull‑based. B) Datafeed provides real‑time events, Events API is deprecated. C) Datafeed returns a continuous stream, Events API returns a single event per call. D) Both APIs are identical; they just have different names. Answer: C Explanation: Datafeed uses long‑polling to deliver a batch of events, whereas the Events API returns one event per request. Question 40. To suppress a message, the bot must have which permission? A) READ_MESSAGE B) WRITE_MESSAGE C) SUPPRESS_MESSAGE D) ADMIN Answer: C Explanation: The SUPPRESS_MESSAGE permission allows a bot to delete (suppress) messages it sent. Question 41. Which MESSAGEML attribute makes a link open in a new browser tab? A) target="_blank"

Practice Exam

A) The command text. B) The user’s email address. C) The bot’s RSA private key. D) The stream ID. Answer: C Explanation: CommandContext provides metadata about the command execution, not cryptographic keys. Question 45. Which of the following is a valid way to define a dropdown menu in a form activity? A) <select name="options"> B) Dropdown(name="options", items=[...]) C) ComboBox(id="options") D) <dropdown id="options"> Answer: B Explanation: The BDK’s Python model uses Dropdown objects to define selectable lists. Question 46. The on_message_sent callback receives an event object. Which property contains the raw MESSAGEML payload? A) event.content B) event.message C) event.payload D) event.body Answer: B Explanation: event.message holds the full message object, including the MESSAGEML content.

Practice Exam

Question 47. Which of the following best describes “room updated” events? A) A user changed their display name. B) The room’s topic or metadata was modified. C) A message was edited. D) The room was deleted. Answer: B Explanation: “Room updated” refers to changes in the room’s properties such as topic, description, or metadata. Question 48. To ensure a bot can read messages from a private IM, which permission must be granted? A) READ_IM B) SEND_MESSAGE C) IM_ACCESS D) READ_MESSAGE Answer: D Explanation: READ_MESSAGE permission allows the bot to read any messages it is a participant of, including private IMs. Question 49. Which field in a config.yaml file points to the bot’s private RSA key file? A) bot.privateKeyPath B) bot.keyFile C) bot.rsaKey D) bot.privateKey Answer: A

Practice Exam

D) bdk.users.get_current_user() Answer: A Explanation: bdk.users.me() returns the profile of the authenticated service account. Question 53. What is the purpose of the sym_api_key header in Symphony REST calls? A) To specify the API version. B) To authenticate the request with a shared secret. C) To indicate the content type. D) To set the language preference. Answer: B Explanation: The sym_api_key header carries the API key used for authenticating service‑account requests. Question 54. Which of the following best describes “MIM” in Symphony? A) A one‑to‑one instant message. B) A multi‑party instant message without a persistent room. C) A persistent chat room with unlimited participants. D) A broadcast channel for announcements. Answer: B Explanation: MIM stands for Multi‑party Instant Message, a temporary conversation among multiple participants. Question 55. To enable a bot to receive events from a specific pod, which configuration must be set? A) pod.host only. B) pod.host and pod.port.

Practice Exam

C) pod.host, pod.port, and pod.certPath. D) Only pod.certPath. Answer: C Explanation: The bot needs the host, port, and certificate path to establish a secure connection to the pod. Question 56. Which method of the Streams Service is used to update a room’s topic? A) update_topic B) modify_room C) set_topic D) patch_room Answer: C Explanation: The Streams Service provides a set_topic endpoint to change a room’s topic. Question 57. In a form activity, what does the placeholder attribute of a text input control? A) The default value submitted. B) The text displayed when the field is empty. C) The label of the input. D) The maximum length of the input. Answer: B Explanation: placeholder shows a hint inside the input box until the user types something. Question 58. Which of the following is a required step before a bot can send messages to a user? A) The bot must be added as a contact.