You are on page 1of 930

Use BANKTEXT

User Guides
End-user Training Guides

As a user, this guide will help you optimize your BANKTEXT workspace. It onboards you on how to use
various features of BANKTEXT.

Access your Workspace: Connect to your BANKTEXT workspace via the web, or mobile.

User Panel: View and modify your account details, and update your workspace preference.

Rooms: Explore various methods of organizing conversations in your workspace.

Security Bundle: Explore security-focused features that provide enhanced security for your workspace.

Keyboard Shortcuts: Shortcut keys that help to optimize your workspace experience.
Access your workspace

Connect to a BANKTEXT Workspace


Use a web browser or BANKTEXT mobile application or your choice of client applications to connect to a
BANKTEXT workspace.

Use a web browser

To connect to a BANKTEXT workspace through a web browser:

Enter the following URL in the browser's address bar and press ENTER:
https://m.banktext-app.com

Next, the registration page appears. If you have already registered, enter your credentials to log in or
click Register a new account to become a member of that workspace

Use the mobile app

To connect to a BANKTEXT workspace using a mobile client app:


Download the app for your mobile operating system

Open the app. If this is your first time using the mobile app, the workspace connect screen appears
Click Join a workspace

Enter a valid workspace address


Click Connect
After entering a valid BANKTEXT workspace address, registration, and login page appear.
Enter your credentials to log in or register to become a member of that workspace.

Registering an account
To access BANKTEXT, you can register an account manually or use one of the many supported OAuth
services, after successfully registering, you can log in to the workspace.

Manual Registration

You can create an account by providing your:

Name
Email
Password
Reason to join

BANKTEXT will ask you to verify your email. You can do this by simply clicking on the link sent to the
registered email.

OAuth Registration

You can register to BANKTEXT through your LinkedIn profile.

Choosing a username and display name

After you have successfully registered your account, you can choose your username. Your username is your
unique identifier for others to use to direct message or mention you.

Your username is separate from your display name on the workspace.


Usernames on BANKTEXT must be unique. However, display names can repeat. For example, there can
be only one user with the
username: johnsmith , but there can be more than one user with the display name : John Smith .
User Panel

Access the user panel by clicking your avatar. The User Panel is divided into the following sections:

Name and Current Status: Displays the user name and the current status selected by the user.
Status: Displays the status options available for you to choose from. Online, away, busy, offline, or
meeting. You can also set a custom status or choose from custom status set by your workspace
administrator.
Theme: Set the theme of your workspace.
My Account and Logout: Manage your BANKTEXT account settings through the browser, desktop,
and mobile apps.

The Custom Status option allows you to customize your status by adding a custom status
message.
My Account
Manage your BANKTEXT account settings through the browser, desktop, and mobile
apps.

To access and manage your BANKTEXT account,

Log in to your BANKTEXT server with a valid username and password.


Click your avatar and select My Account.
You can update your Profile, Preference , Security and Personal Access Tokens.

Account settings update on a single server do not change settings on a different server.

Preference
In the Preferences, you can configure and set your preferences. To access this

menu,

Navigate to Avatar Menu > My Account > Preferences.


Update your preferences and click Save Changes.

Localization

Language: Set the language to use for the BANKTEXT user interface.

User Presence

Enable Auto-Away: Enable the auto-away functionality, which changes the status to away after an idle
period.
Idle time limit: Set the time in seconds it waits when status should change to away.

Notifications
Desktop Notifications: Click the Test Desktop Notification to see how notifications will be displayed
on Desktop.
Require Interaction to Dismiss Desktop Notification: When enabled, notifications must be attended
to before they can be dismissed. i.e, they will remain in the notification panel until they are visited.
Show Desktop Notifications For: Allows you select the type of messages for which the notifications
have to be triggered (for both browser and desktop app notifications).

Send Push Notifications For: Allows you select on what type of messages you wish to receive push
notifications for.
Offline Email Notifications: Allows you set what type of message notifications you want to receive by
email.

For email notifications, you must verify your email address.

Messages

Unread Tray Icon Alert: Toggles if the tray icon highlights when you have unread messages.

Show thread messages in the main thread: When enabled, threaded messages will be displayed
directly in the room.
Time Format: Set the time format of your account (12 hour clock or 24 hour clock).
Use Emojis: Enable this to allow the use of emojis.
Convert ASCII to Emoji: Toggles emoji conversion when inputting ASCII characters.

Auto Load Images: Enable to autoload images and avoid clicking on them to preview.
Save Mobile Bandwidth: Saves mobile data when the app is open. Commonly known as Data Saver.
Collapse embedded media by default: Toggles if messages with files collapse by default.
Hide usernames: Hides usernames on the channels, showing only the users avatars.
Hide roles: Hides role tags from users.
Hide right sidebar with a click: Automatically closes the right sidebar when clicked.
Display Avatars: Hides avatars on the channels, showing only the users' usernames.
Enter key behavior: Lets you configure what the enter key does.
Normal mode (send with Enter)

Alternative mode (send with Enter + Ctrl/Alt/Shift/CMD)


Desktop mode (only sends with Enter on desktop)
View mode: Change the amount of space messages take up on screen.

Normal: The default spacing between messages

Cozy: More space between messages (less on the screen)


Compact: Less space between messages (more on the screen)
Highlights

Highlight words: Specify a comma-separated list of words or phrases to trigger notifications for when
mentioned by anyone in public or private channels of which you are a member.

Sound

New Room Notification: Select the sound to play when added to a new room.
New Message Notification: Select the sound to play for every new message.
Mute Focused Conversations: When enabled, rooms that are opened and active will not create
notifications.

Notifications sound volume: Set the volume of the notification sound.

My Data

Download your data as HTML or export it as JSON. Whichever option you choose, the request is processed
in a queue, and a link to the exported file sent to your email.

Profile
You can verify, edit and update your profile information in the user panel.

To access profile settings,

Navigate to Avatar Menu > My Account > Profile.


Profile Picture: Lets you upload a profile picture or use default avatar.
Use URL for avatar: Takes in a URL to fetch avatar from.
Name: Your name e.g. John Doe

Username: Your username e.g. john.doe

Status Message: Lets you specify a status update or what you are doing, along with a color.
Nickname: Set your nickname.
Bio: A short profile description.
Email: Your email address.
New Password: Update your acccount password.
Confirm your Password: Re-type your new password for confirmation.
Resend Email Verification: Click to request a link for email verification.
Logout From Other Logged In Locations: Click to sign-out of all other devices but the current one.

Security
You can enable Two Factor Authentication (2FA) for your account to enhance your account security. There
are two options for 2FA in BANKTEXT :

Two-factor authentication via TOTP : It requires a key code from an authenticator app.
Two-factor authentication via Email : It requies a key code that was sent to your email address.

To access security settings,

Navigate to Avatar Menu > My Account > Security.

To enable Two-factor authentication via TOTP,

Click Enable Two-factor authentication via TOTP.

Use an authentication app, such as Google Authenticator, Authy, or Duo, to scan the QR code. Scanning
the QR code displays a six-digit code. Enter the code into BANKTEXT.
Copy your backup code somewhere safe if you need to access it in the future without the authentication
app. Click Send to finish.

To disable the 2FA, click Disable Two-factor authentication via TOTP.

To enable Two-factor authentication via Email,

Click Enable Two-factor authentication via Email.

To disable the 2FA, click Disable Two-factor authentication via Email.

If you can't find the 2FA setting, please contact your workspace administrator. See a detailed
guide on 2FA here.

E2E Encryption

You can now create encrypted private groups and direct messages. You may also update existing private
groups or DMs to encrypted. It is end-to-end encryption, so the key to encode/decode your messages isn't
saved on the server. For that reason, you need to store your password somewhere safe. You will be required
to enter it on other devices you wish to use e2e encryption.

Change Encryption Password

To create an encryption password,

Enter a new encryption password


Confirm new encryption password and click Save Changes

Reset E2E Key


This option will remove your current E2E key and log you out. When you log in again, BANKTEXT will
generate a new key and restore your access to any encrypted room that has one or more members online.
Due to the nature of the E2E encryption, BANKTEXT can't restore access to any encrypted room with no
members online.

Please find a detailed guide on E2E Encryption here.

Personal Access Tokens


You can create personalized access tokens to use when making API calls.

To access Personal Access Tokens,

Navigate to Avatar Menu > My Account > Personal Access Tokens.

Creating a Personal Access Token


To create a personal access token,

From the Access Token dashboard, enter the token name and hit Add.

You can configure whether or not to ignore 2FA when using it by checking the Ignore Two Factor
Authentication box.
Enter your password or 2FA code to Verify.
Your token is generated succesfully. A User Id and Token is displayed.

Remember to store the user Id and Token in a safe place since you can only view it once.

Delete Personal Access Token


To delete an access token,

From the Personal Access Token list, click the Delete icon against the token you choose to delete.

Regenerate Personal Access Token


To regenerate an existing access token,

From the Personal Access Token list, click the Regenerate icon against the token you choose to
regenerate.
Manage Devices

The Manage Devices menu lets you monitor and log out of your devices remotely. You can see a list of all
the devices you’ve used to log into your Rocket. Chat workspace here. Click on any of the devices to view
the client, device operating system, your last login activity, and device id.

Log out of your devices

Navigate to Avatar Menu > My Account > Manage Devices. You will see a list of all devices linked to
your workspace.
Choose the device you want to disconnect and then click Logout. Your device will be logged out from
the workspace and the current session will be ended.

You can log back into your account whenever you need it.

The GPT Front End


The Manage Devices menu lets you monitor and log out of your devices remotely. You can see a list of all
the devices you’ve used to log into your Rocket. Chat workspace here. Click on any of the devices to view
the client, device operating system, your last login activity, and device id.
Rooms

Rooms provide different methods of conversations in your workspace. They allow a more structured and
purpose-oriented workflow.

If you are an administrator, see the Room Workspace Administration.

Types of Rooms in BANKTEXT


Channels: Organize conversations across different topics.

Teams: Promotes collaboration between different teams.

Discussions: Allows a separate focused conversation around larger topics in a team or channel.

Direct Messages: Allows one-off conversations that do not require a channel or team.

Thread: Organized conversations around a particular message.

Learn about BANKTEXT Room Roles.

Mentions
When someone mentions you with @username , @all or @here , a symbol or a number will appear
alongside the channel name. If someone mentions @all or @here a number will show up showing the
number of times the mention is specific to you.
Channels

Channels are chat rooms with useful features designed to increase communication and collaboration. For
example, you can have a dedicated channel for the designers in your workspace to discuss design-related
topics.

Type Of Channels
Teams can be made private or public. The list of channels is displayed on the sidebar of your workspace.
Public Channels are listed first, followed by private Channels, in alphabetical order.

Public Channels

Public Channels are open for all members of a BANKTEXT workspace to join, and anything posted is
searchable by all members. They are identified by:

Channels make it easy to find out what's going on with your team. New members can join a channel and
read all the information previously shared by other users. Public conversations help you build your
organization's knowledge base with minimal effort. For example, create a channel for a company
department or to discuss a specific programming language.

Users mentioned in a thread inside a public channel are automatically added to that channel.

Private Channels

Private Channels are closed channels. They are only visible only to their members. Use private channels
for sensitive, confidential subjects that are not open to all members. They are identified by:

Private channels are joined through invitation only. The administrator sets the permissions that determine
who can invite others to the channel. Only administrators, room owners, and moderators can invite others to
private rooms by default.

Channel Privacy and Encryption

Read-Only Channels

Only authorized users (users with write permissions) can send messages in Read-Only channels. All other
users can react to messages on this channel. Read-Only channels are most suitable for announcements
and voting.

Broadcast Channels
Like read-only channels, broadcast channels allow authorized users with the appropriate permissions to
write new messages while other users can reply to existing messages.

However, it differs from read-only channels in the following ways:

All messages have a reply button that redirects you to the sender's direct message (DM), replying to the
message as a quote.
Users without permission won't be able to react to messages.
Users without permission (the same one to post on read-only channels) inside this channel won't be
able to see each other in the user list.

Encrypted Channels

Encrypted channels have end-to-end encryption enabled across all messages exchanged by the Channel
members. To learn more, see End to End Encryption.

Channel Information
The room information screen gives detailed information about the current channel. These details include:

Channel Name: The channel's name, how users see the title and find the channel via search.
Topic: The topic is displayed next to the title on the channel header. It is a great way to provide more
channel information.
Announcement: Announcements are highlighted in a bar under the channel header.
Description: The description of the channel.
Private: Tells whether a channel is private or public.
Read Only: Tells whether a channel is read-only.

Archived: Tells if a channel is archived. Nobody can post messages on an archived channel, and a
channel search will not find that channel.
Password: Tells whether a channel has a password and lets you set the password. If a channel has a
password, users need to enter the password to become a channel member.

If a Retention Policy is active on this channel, a red warning box appears stating when messages
or files are deleted.

Learn about BANKTEXT Room Roles.


Create a new Channel

To create a new channel,

On the BANKTEXT menu bar, click the Create New icon, then select Channel.
Give the channel a name and choose if the channel is public or private.
Update your preferred privacy and encryption settings for the channel.
Add members to the channel. Then, click Create.

Channels have restrictions in their naming. To update the regex responsible for channel name
validation, navigate to Administration > Settings > General > UTF8.

Join a Channel
You can join a channel through a search, invites, or mentions. Use the search box in the menu bar to search
for channels and users. Alternatively, you can use Ctrl/Cmd + k to access the search bar quickly.

Users and channels are displayed in the search results. However, private channels are not displayed. If you
select a public channel that you are not a member of, click the Join button to join that channel.

Mark Channel as Favorite


To help organize and prioritize your communications, you can favorite (or star) channels, private groups,
and DMs. All channels marked as favorites are listed at the top of the sidebar so that it is easy to access.

To mark a channel as a favorite,

At the top of the channel page, click the star icon next to the channel name to mark a channel as
Favorite.
To remove the channel from Favorites, click the star icon again.

Learn about BANKTEXT Room Roles.


Edit A Channel

To edit a public or private channel:

Click the Room Information icon from the menu bar to view the Channel information. (link channel
info).
Click Edit to edit the Channel information.
Update the Channel information.
Click Save.

Other Channel Edit Actions

Some additional edit actions for a channel include:

Password Access

Secure a channel by setting up password access. It means users can only join the channel with a valid
password.

Hide System Messages

Select the BANKTEXT action alerts to hide. For example—"Hide User Joined messages" will hide the alert
that displays in the chat whenever a new user joins the channel.

Hide or Leave a Channel

To Hide or Leave a channel, click the three dots icon next to the delete button on the Channel
Information page.
Select Hide or Leave from the dropdown options.

To unhide a channel, you may search for it in your BANKTEXT workspace.

Alternatively, enter the command /part or /leave in the message input box to leave that channel.

A channel owner can not leave a channel until they set someone else as the owner of that
channel.

Prune Messages from a Channel


If you are a server admin, or your admin has given you the clean-channel-history permission, the prune
messages option allows you to delete messages from a channel swiftly.
Pruned messages and files are deleted forever and cannot be recovered. You are advised to use
this feature with extra caution.

To prune selected messages, fill in these fields:

Newer than: Deletes all messages posted after a particular date.

Older than: Deletes all messages posted before a particular date.


Users: Allows you to specify which user's message to delete. Add a username, and the user's
messages are deleted.

Inclusive: Deletes all messages that were sent at the specified start and end times you have specified
in the Newer than and Older than fields.

Exclude pinned messages: Do not delete pinned messages.


Only remove the attached files, keep messages: Delete files but not the messages.

Channel Notifications
You can update the notification preference for a channel you belong to. By default, a channel notifies you
whenever someone mentions you or uses the @all mention.

To update channel notification preferences,

Click the three dots icon at the menu bar of the channel.
Select Notification Preferences.

The notification options include the following:

Turn ON: Choose whether to receive alerts or not.


Mute @all and @here mentions: Mute alerts whenever you are mentioned in the channel.
Mark As Unread: Display the channel as unread when there are unread messages.
Audio: Select whether the channel will play a sound whenever someone mentions you or post a
message on the channel. The sound can also be customized.
Desktop: Controls notification behavior when using any desktop app or browser.
Mobile: Controls push notification behavior when using any mobile app.

Email: Set whether an email is sent whenever someone mentions you or posts a message.
Manage Channel Members

View Channel Members


Channel members must have either one of these roles: Owner, Leader, Moderator, or User. Each channel
member's permission members will depend on their role. The channel owner can manage all the channel
members and assign any of these roles to them.

To see the list of members in a Channel,

Click the Members icon at the top-right menu of the channel screen. At first, the list only shows currently
active users. Select All from the dropdown option beside the search bar to see all users.
Select a user to view their User Info. The user preview screen shows their name, username, any role
tags they might have, and their current timezone.
You can send a direct message or call the user from the user info.

Click the three dots icon to see other user actions like ignore, mute user, or set roles ( as moderator,
leader, or owner).

Add Members to Channel


You can add members to a channel in two ways:

Send an Invite Link


Manually Adding Users

Manually Adding Users

You can use the Add Users option to add users already in your workspace.

To add a new user,

At the bottom of the Channel members page, click Add.


Search and select the users, then click Add users.

BANKTEXT notifies you if the user is already an existing channel member.

Send an Invite Link

At the bottom of the channel members page, click Invite Link and copy the generated link to share with your
invitees.
Edit Invite Link

Depending on how long you want an invite link to last, you can edit the invite link periodically.

To generate a new link,

On the Invite Link page, Click Edit Invite.

Select Expiration (Days) from the drop-down, select Max number of uses, and click Generate New
Link.

This link will ask the invitee to sign up if they are outside your BANKTEXT workspace before
granting them access to the channel.

Delete Invite Link

To delete an invite link, see Delete an Invite Record via Admin Panel. This feature comes in handy when
you have an invite link with an Expiration date: Never. To avoid abuse, you can revoke it by deleting the
invite record.

You must have the Create Invite Link permission granted for your role to use the permission. It is
turned ON for the Admin, Owner, and Moderator roles. However, you can always ask the
workspace administrator to update it to suit your needs.

Remove a member from the Team


By default, only the channel owner can remove a team member. Although, other users with appropriate
permissions can also remove a team member.

In the Channel members screen, search and select the user to view their User Info.
Click the three dots icon, then select Remove from room.
Channel LiveStream

The Streaming tab is displayed on the Channel Options menu if the Youtube Livestream feature is enabled.
Channel owners and workspace administrators can start streaming or add another stream to the channel by
specifying a URL through the Streaming tab.

You might only be able to link live broadcasts from YouTube, depending on the workspace
settings. When in doubt, always ask the server administrator.

Start Streaming
To start a stream,

Click Livestream from the Options menu.


Add the Livestream Source URL.
Click the Broadcast my Camera button.

Login with a Google account. Note that streaming must be activated through your Youtube account.

See Broadcast Livestream and Live Stream on Youtube to learn more about Channel
LiveStream.

To add a different Livestream, get the URL for the stream, enter it into the Livestream source field, and
hit save.
Add a message whenever the stream is unavailable in the Livestream not available message field.

Use the Enable audio-only button to add a stream that only contains audio.

Join a Live Stream


If you are not a channel owner and a live stream is set to that channel, press play on the stream tab. A pop-
up is displayed with the stream embedded. The pop-up does not close even if you change channels.
Search Messages in a Channel

BANKTEXT search supports basic search commands, including the use of regular expressions. Regular
expressions provide flexibility to search chat entries in any language, even those traditionally challenging,
like "CJK" languages (Chinese, Japanese, Korean).

Basic Search Commands


You can use the following commands before or after entering search terms in a channel:

from:me - To search for messages only created by the current user.

from:user.name - To search for messages created by a specific user. The username entered must
be without spaces (i.e., "john.doe" and not "John Doe."). Search for any mentions of a user by
searching for their username.

has:star - Returns messages that the current user has starred.

is:pinned or has:pin - Returns messages that have been pinned.

has:url or has:link - Returns messages that contain a link.

has:location or has:map - Returns messages that have a location attached.

before:dd/mm/yyyy , after:dd/mm/yyyy and on:dd/mm/yyyy - Return message created


before, after, or on the provided date. Dashes dd-mm-yyyy or dots dd.mm.yyyy can be used
instead of slashes.
order:asc , order:ascend , or order:ascending -Sorts messages by ascending timestamp.

order:desc , order:descend , or order:descending - Sorts messages by descending


timestamp.

Select the Options icon of a message in the search result and click Jump to message to take you directly
to the message.

Refer to these resources to learn more about regex(regular expressions).

Wikipedia
Regex 101
Regexr
Regex Info
Teams
A team is a digital workspace where teammates can collaborate and work together
towards a common goal.

A Team can have multiple channels. In BANKTEXT, Team is a digital workspace that allows you to manage
multiple users simultaneously, making it easier for you to collaborate with teammates. For example, you
have a team in your workspace for all core members that contains a list of channels you want them to belong
to. If you add a new core member to that team, they have access to all the channels in that team. There will
be no need to add them to those channels individually.

Teams are available to both community and enterprise clients. They are identified by:

Teams can be made private so that only invited members are allowed to join or public so that all
BANKTEXT users can see them. Each Team may consist of channels, which may also be either public or
private.

Team Privacy and Encryption

Read-Only Teams

Only authorized users (users with write permissions) can send messages in read-only teams. All other users
can react to messages on this channel.

Broadcast Teams

Like read-only teams, broadcast teams allow only authorized users with the appropriate permissions to write
new messages, while other users can reply to existing messages.

However, it differs from read-only teams in the following ways:

All messages have a reply button that redirects you to the sender's direct message (DM), replying to the
message as a quote.
The team cannot be converted to a read-only again.

Encrypted Teams

Encrypted teams have end-to-end encryption enabled across all messages exchanged by the Team
members.

To learn more, see Teams: Efficiently Manage Your Remote Team on BANKTEXT.
Create a new Team

Edit a Team

Manage Team Members

Manage Team Channels

Teams Enterprise Edition


Create a new Team

To create a new team:

On the BANKTEXT menu bar, click the Create New icon, then select Team.
Give the team a name.
Update your preferred privacy and encryption settings for the team.
Add members to the team. Then, click Create.

A team name must not include space or any special character except dash (-) and underscore(_).

Mark Team as Favorite


All teams marked as favorites are listed at the top of the sidebar so that it is easy to access.

To mark a team as favorite,

At the top of the team screen, click the star icon next to the team name to mark that team as Favorite.
To remove a team from Favorites, click the star icon again.
Edit a Team

To edit a public or private team:

From the top-right menu, Click Team Information icon to view Team information.
Click Edit to edit the Team information.
Update the Team information.
Click Save.

Other Team Edit Actions

Some additional edit actions for a team include:

Password Access

Secure a team by setting up password access. It means users can only join the team with a valid password.

Hide System Messages

Select the BANKTEXT action alerts to hide. For example—"Hide User Joined messages" will hide the alert
that shows up in the chat whenever a new user joins the team.

Allow Reacting

Select the options to allow authorized team members to react to messages in the team.

The delete and reset option is also available when editing a Team.

Hide or Leave a Team

To Hide or Leave a team, click the three dots icon next to the delete button in the Team Information
page.
Select Hide or Leave from the dropdown options.
To unhide a team, you may search for it in your BANKTEXT workspace.

When leaving a team, you have the option to decide if you want to continue in the Team channels
or not.

Delete A Team
Once you delete a team, the associated chat content and configurations will also be deleted. You also have
the option to keep or delete team channels. If you delete a team and decide to keep the channels, those will
go to the workspace. A team can only be deleted by the team owner.

Click the Team Information icon, then click Delete next to Edit.

hinThis action can not be undone.

Archive A Team
When a team is archived, it is converted to read-only and is no longer open to any new activity. However, the
message history is still accessible. A team can only be archived by the team owner.

From the top-right menu, Click Team Information icon to view Team information.
Click Edit to edit the Team information.
Toggle on the Archive option.

To unarchive a team, toggle off the Archive option.


Manage Team Members

Team members must have either one of these roles: Owner, Leader, Moderator, or User. Each team
member's permission members will depend on their role. The team owner can manage all the team
members and assign any of these roles to them.

View Team Members


To see the list of members in a Team,

Click the Team Members icon at the top-right menu of the team screen.
Select a user to view their User Info.
You can send a direct message or call the user from the user info.

Click the three dots icon to see other user actions like ignore, mute user, or set roles ( as moderator,
leader, or owner).

Add Members to Team


You can add members to a team in two ways:

Send an Invite Link


Manually Adding Users

Send an Invite Link

At the bottom of the team members page, click Invite Link and copy the generated link to send to whomever
you invite.

Edit Invite Link

Depending on how long you want an invite link to last, you can edit the invite link periodically.

On the Invite Link page, Click Edit Invite.

Select Expiration (Days) from the drop-down, select Max number of uses, and click Generate New
Link.

Delete Invite Link

To delete an invite link, see Delete an Invite Record via Admin Panel. This feature comes in handy when
you have an invite link with an Expiration date: Never. To avoid abuse, you can revoke it by deleting the
invite record.
Manually Adding Users

At the bottom of the Team members page, click Add.

Search and select the users, then click Add users.

BANKTEXT notifies you if the user is already an existing team member.

Remove a member from the Team


By default, only the team owner can remove a team member. Although, other users with appropriate
permissions can also remove a team member.

In the Team members screen, search and select the user to view their User Info.
Click the three dots icon, then select Remove from team.

Learn about BANKTEXT Room Roles.


Manage Team Channels
A team may contain one or more channel(s).

Here are some essential details to know about Team Channels.

Teams may have their own channels, but not all channels belong to a team.
Teams can have both public channels and private channels.
Teams can have Auto-join channels where members are automatically added to, upon joining the team.
It is possible to add all team members to a channel
It’s possible to add users outside the team to the team’s channels

A team can have a maximum of 100 channels.

View List of Team Channels

To see the list of channels in a Team, click the Team Channels icon at the top-right side of the team
home page.

Create a new Channel for a Team


As a team owner, you can create new channels for the team.

To create a new Team Channel:

Click the Team Channels icon at the top-right side of the team home page.
Select Create New at the bottom of the Team Channels page.
Name the channel, add a topic, set it as private/public, and complete other basic channel settings.
Finally, add members from the drop-down and click Create.

Add an existing channel to a team


To add an existing channel to a team, you must be the channel owner or have appropriate permissions in
the team to add an existing channel.

When adding a channel to a team, the team owner gains rights over the channel (e.g., The team owner can
delete the channel).
Click the Team Channels icon at the top-right side of the team home page.
Click Add Existing at the bottom of the Team Channels page.
Search and select the channels you'll like to add to the team.
Click Add.

Team Auto-Join Channels


Teams can have Auto-join channels—channels where team members are added automatically. It reduces
extra work with handling users and the channels they must belong to. It’s also handy for onboarding teams
with many different channels.

For instance, you can use Auto-join to quickly include new members joining the company to specific
onboarding channels. You could set Auto-join to automatically include team members in company-related
channels, such as channels meant to share updates and company news. You can mark a channel Auto-join
for members to join them automatically once they join a team.

Mark a channel as Auto-join by following the steps below.

Click the Team Channels icon to view the list of channels in the team.
Select the three dots icon beside the channel name.
Mark the Auto-join checkbox.

To remove a channel from Auto-join, unmark the Auto-join checkbox.

Remove a Channel from a Team


As a team owner, you can remove channels from a Team. After a channel is removed from the team, it
moves to the workspace.

If the channel were a public channel inside a private team, the channel would become public in the
workspace after removal from the team.

Remove a channel from the Team by following the steps below.

Click the Team Channels icon to view the list of channels in the team.
Select the three dots icon beside the channel name.
Then, select Remove from Team.

Delete a Team Channel


As a team owner, you can delete channels in your workspace from the team.
This decision can't be reversed! Therefore, please exercise extreme caution while converting a
channel into a team.

Delete a Team Channel by following the steps below.

Click the Team Channels icon to view the list of channels in the team.
Select the three dots icon beside the channel name.
Then, select Remove from Team.

A channel owner can transform an existing channel into a team anytime. The channel must belong to the
workspace rather than already in a team. Otherwise, the option to transform into a team is not available.

A private channel converts to a private team, and a public channel converts to a public team.

This decision can't be reversed! Therefore, please exercise extreme caution while converting a
channel into a team.

Transforming a Channel into a team


To transform a channel into a team,

Click the Room Information icon at the top-right side of the channel home page.
Click the three dots icon next to Delete, then select Convert to Team
Teams Enterprise Edition

The Enterprise edition brings all functionalities available in Community Edition and additionally the ones
listed below:

Mention teams

With Teams, you don’t need to remember everyone’s name to communicate with a team quickly. Just
mention a Team — @engineers, for instance — and all members will get notified instantly.

AD / LDAP Sync

Using Teams is a piece of cake for IT teams that have already mapped their organization’s teams through
Active Directory Groups or Keycloak. The feature connects BANKTEXT to your company’s infrastructure at
ease, so whenever you update a department or user information, BANKTEXT will receive those updates in
real-time too.

It is particularly beneficial if you manage large teams, constantly creating or deactivating members.

The feature ensures that as you update your workgroups and new members are added or deleted,
BANKTEXT’s teams are automatically aligned with it.
Discussions

BANKTEXT discussions allow you to have a separate conversation about larger topics in a team or
channel. Use discussions to address specific topics and their related conversations. They are displayed
under the Discussions section of the sidebar. They are identified by .

Discussions must belong to a parent team or channel.

For example, you have an Engineering-Team in your workspace and created a channel under that team
called Website-Development-Channel. Let's break down the conversations about each feature of the
website into discussions. Now, you can have a Website-Landing-Page discussion where all the
conversations about the landing page occur.

Discussion Information
The room information screen gives detailed information about the current discussion. These details include:

Name: The name of the discussion, how users see the title and find the discussion via search.
Description: The description of the discussion.

Announcement: Announcements post in a bar under the discussion header.


Topic: The topic here is next to the channel header's title. It shows which channel or group the
discussion is linked to.
Private: When enabled, makes the discussion private.

Read Only: Tells whether a discussion is read-only and toggles the read-only status on the discussion.
In read-only discussions, only people with admin permissions can post messages.
Archived: Enable to archive a discussion. Nobody can post messages in an archived discussion, and
searching will not find the discussion.

Password: Tells whether a discussion is protected with a password. The password is required before
joining the discussion.
Create a new Discussion

To create a new discussion,

On the BANKTEXT menu bar, click the Create New icon, then select Discussion.
Select the parent team or channel.
Fill in the discussion name and message, set the encryption, and invite members.
Then, click Create.

When a discussion is created, anyone from that channel or team can join the discussion.

Mark Discussion as Favorite


All discussions marked as favorites are listed at the top of the sidebar so that it is easy to access.

To mark a discussion as favorite,

At the top of the discussion screen, click the star icon next to the discussion name to mark that
discussion as Favorite.
To remove a discussion from Favorites, click the star icon again.
Edit A Discussion

To edit a discussion,

Click the Room Information icon from the top-right menu to view Discussion Information.
Click Edit to edit the Room information.
Update the required details.
Click Save.

Prune Messages from a Discussion


If you are a server admin, or your admin has given you the clean-discussion-history permission, the prune
messages option allows you to delete messages from a discussion swiftly.

Pruned messages and files are deleted forever and cannot be recovered. You are advised to use
this feature with extra caution.

To prune selected messages, fill in these fields:

Newer than: Deletes all messages posted after a particular date.


Older than: Deletes all messages posted before a particular date.
Users: Allows you to specify which user's message to delete. Add a username, and the user's
messages are deleted.

Inclusive: Deletes all messages that were sent at the specified start and end times you have specified
in the Newer than and Older than fields.

Exclude pinned messages: Do not delete pinned messages.


Only remove the attached files, keep messages: Delete files but not the messages.

Discussion Notifications
You can update the notification preference for a discussion you belong to. By default, a discussion notifies
you whenever someone mentions you or uses the @all mention.

To update discussion notification preferences,

Click the notification icon at the menu bar of the discussion.

The notification options include the following,


Turn ON: When set to true, enables all notification alerts for the discussion.

Mute @all and @here mentions: When enabled, the notifications will not be received for @ll and
@here mentions.

Audio: Select whether the discussion will play a sound whenever someone mentions you or post a
message on the discussion. The sound can also be customized.
Desktop: Controls notification behavior when using any desktop app or browser. Select the type of
messages you want to receive desktop alerts for.
Mobile: Controls push notification behavior when using any mobile app. Select the type of messages
you want to receive push notifications for.
Email: Set whether an email is sent whenever someone mentions you or posts a message. Select the
type of messages you want to receive email alerts for.
Search Messages in Discussion

BANKTEXT search supports basic search commands, including the use of regular expressions. Regular
expressions provide flexibility to search chat entries in any language, even those traditionally challenging,
like "CJK" languages (Chinese, Japanese, Korean).

Basic Search Commands


You can use the following commands before or after entering search terms in a discussion:

from:me - To search for messages only created by the current user.

from:user.name - To search for messages created by a specific user. The username entered must
be the format without spaces (i.e., "john.doe" and not "John Doe.") Search for any mentions of a user by
searching for their username.

has:star - Returns messages that the current user stars.

is:pinned or has:pin - Returns messages that pin in the current discussion.

has:url or has:link - Returns messages that contain a link.

has:location or has:map -Returns messages that have a location attached.

before:dd/mm/yyyy , after:dd/mm/yyyy and on:dd/mm/yyyy - Return message created


before, after, or on the provided date. Dashes dd-mm-yyyy or dots dd.mm.yyyy can be used
instead of slashes.
order:desc , order:descend , or order:descending - Sorts messages by descending
timestamp.
You can also jump to where a message is located by hovering the mouse over the search result and
selecting jump to message.
Manage Discussion Members

View Discussion Members


Discussion members must have either one of these roles: Owner, Leader, Moderator, or User. Each
discussion member's permission members will depend on their role. The discussion owner can manage all
the members and assign any of these roles to them.

To see the list of members in a Discussion,

Click the Members icon at the top-right menu of the discussion screen. At first, the list only shows
currently active users. Select All from the dropdown option beside the search bar to see all users.

Select a user to view their User Info. The user preview screen shows their name, username, any role
tags they might have, and their current timezone.
You can send a direct message or call the user from the user info.

Click the three dots icon to see other user actions like ignore, mute user, or set roles ( as moderator,
leader, or owner).

Add Members to Discussion


You can add members to a discussion in two ways:

Manually Adding Users


Send an Invite Link

Manually Adding Users

You can use the Add Users option to add users who are already in your workspace.

To add a new user,

At the bottom of the Discussion members tab, click Add.


Search and select the users, then click Add users.

BANKTEXT notifies you if the user is already an existing discussion member.

Send an Invite Link

At the bottom of the Discussion members tab, click Invite Link and copy the generated link to share with
your invitees.
Edit Invite Link

Depending on how long you want an invite link to last, you can edit the invite link periodically.

To generate a new link,

On the Invite Link page, Click Edit Invite.

Select Expiration (Days) from the drop-down, select Max number of uses and click Generate New
Link.

This link will ask the invitee to sign up if they are outside your BANKTEXT workspace before
granting them access to the discussion.

Delete Invite Link

To delete an invite link, see Delete an Invite Record via Admin Panel. This feature comes in handy when
you have an invite link with an Expiration date: Never. To avoid abuse, you can revoke it by deleting the
invite record.

You must have the Create Invite Link permission granted for your role to use the permission. It is
turned ON for the Admin, Owner, and Moderator roles. However, you can always ask the
workspace administrator to update it to suit your needs.
Direct Messages
One on one or one to many conversation

In BANKTEXT, you can have one-on-one conversations or one-to-many conversations with users in your
workspace. They are called Direct Messages(DMs). Your most recent DMs are default listed under the
Direct Messages section in your BANKTEXT sidebar. They are identified by .

Types Of Direct Messages


There are two types of DMs named 1:1 Direct Message and 1:M Direct Message.

Direct messages (DMs) are private one-on-one conversations between members of your workspace. You
can create a direct message(DM) with another user on the same workspace (or a different workspace,
thanks to BANKTEXT Federation) to communicate and share files privately. It exists between just two users,
and no other user can join.

Direct Messages Between Multiple Users allows you to chat with multiple users inside a DM. You can
create direct message rooms between several users to exchange messages and files. Unlike private
channels, you do not need to specify the name, topic, or if the room is read-only. It works exactly like a 1:1
DM, the only difference is that multiple users are involved.
Create a new Direct Message

Create a new Direct Message (1:1)


You can start a 1:1 DM with another user from any room in your workspace when you open their profile and
click the Direct Message button. You can also create a DM from the menu bar.

Create a Direct Message from Menu Bar

To create a direct message from the menu bar,

On the BANKTEXT menu bar, click the Create New icon, then select Direct Message.
Select the user you want to start a DM with. Then, click Create.
A new direct message is opened with the user, and you can now communicate privately.

Creating a Direct Message from a Room

You can open a 1:1 DM with a user if you are in the same room as them by following these steps:

Click the Members icon at the top-right menu of the room screen. At first, the list only shows currently
active users. Select All from the dropdown option beside the search bar to see all users.
Select the user you want to start a DM with. Click on the Direct Message button below their avatar, and
a direct message is opened for you and that user.

Create a new multi-user Direct Message (1:M)


To create a 1:M direct message,

On the BANKTEXT menu bar, click the Create New icon, then select Direct Message.
Select the users you want to start a DM with. Then, click Create.
A new direct message is opened with the users, and you can now communicate with all of them in a DM.

You can not ignore, block, mute, or remove a user for multi-user DMs. Although, you can start a
call or start a 1:1 DM with them.

Here are some important features to note about a multi-user DM:


You can't create a multi-user DM with the same user combination.

Once a DM is created, the membership can't be updated. So, you can't add or remove members to the
DM.
No one is the owner, unlike channels.

The DM can not be deleted. You can only hide the conversation.

We recommend a maximum of 8 users in a DM. However, contact your workspace administrator if


you need to update it to suit your needs.

Mark Direct Message as Favorite


All DMs marked as favorites are listed at the top of the sidebar so that it is easy to access.

To mark a DM as favorite,

At the top of the DM screen, click the star icon next to the DM header to mark it as Favorite.
To remove the DM from Favorites, click the star icon again.
Direct Message Actions

From the menu bar of your DM screen, you can view a list of discussions, threads, files exchanged, and
pinned messages. You can also search for messages using the basic search commands.

Discussions in Direct Message


Use discussions in direct messages to group topic-related conversations.

Create a Discussion in a Direct Message

To create a Discussion in any direct message,

Click the three-dot icon when you hover over an existing message in the chat.
Click Start a Discussion.

View Discussions in Direct Messages

To view and interact with your discussions in a direct message,

Click on the discussion icon at the top right menu of the opened direct message.
When opened, a list of all the discussions in that direct message room is seen.

Threads in Direct Message


Threads in direct messages can be used to streamline the conversations.

Create Threads in Direct Message

To create a thread in any direct message,

Click the three-dot icon when you hover over an existing message in the chat.
Select Reply in Threads.

View Threads in Direct Message

To view and interact with your threads in a direct message,

Click on the Threads icon at the top right menu of the opened direct message.
When opened, a list of all the threads in that direct message room is seen.

Block user in Direct Message


You can block any user from sending you direct messages.

To block a user from sending DMs,

From a DM, Click the User Info of the member you want to block.
Then, click on Block.

Blocked users will not be able to send you direct messages unless they are unblocked.

After blocking a user, the room will indicate blocked too.

Direct Messages Notifications


You can update the notification preference for a DM you belong to. By default, you are notified of every DM
you get.

To update DM notification preferences,

Click the notification icon at the menu bar of the DM.

The notification options include the following,

Turn ON: When set to true, enables all notification alerts for the DMs.

Mute @all and @here mentions: When enabled, the notifications will not be received for @ll and
@here mentions.
Audio: Select whether the DM will play a sound whenever someone mentions you or send a new
message. The sound can also be customized.
Desktop: Controls notification behavior when using any desktop app or browser. Select the type of
messages you want to receive desktop alerts for.
Mobile: Controls push notification behavior when using any mobile app. Select the type of messages
you want to receive push notifications for.
Email: Set whether an email is sent whenever someone mentions you or posts a message. Select the
type of messages you want to receive email alerts for.

Prune Messages from Direct Message


If you are a server admin, or your admin has given you the clean-channel-history permission, the prune
messages option allows you to delete messages from a DM swiftly.

Pruned messages and files are deleted forever and cannot be recovered. You are advised to use
this feature with extra caution.

To prune selected messages, fill in these fields:


Newer Than: Deletes all messages posted after a particular date.
Older than: Deletes all messages posted before a particular date.
Users: Allows you to specify which user's message to delete. Add a username, and the user's
messages are deleted.
Inclusive: Deletes all messages that were sent at the specified start and end times you have specified
in the Newer than and Older than fields.

Exclude pinned messages: Do not delete pinned messages.

Only remove the attached files, keep messages: Delete files but not the messages.

Export Messages in a Direct Message


You can export an entire conversation from either 1:1 DMs or 1:M DMs. You can export messages via email
or as a file.

To export messages,

Click on the three-dot icon of the DM menu bar and select Export Messages.
Select the export method and update the required fields. Then, click Export.

Exporting Messages via email

Method: A dropdown to select what method the export should be done. Select Send via Email.
To Users: Select the users to send the export email.
To additional emails: Add any additional email to send the export mail.

Subject: The subject of the email

Exporting Messages as File

Method: A dropdown to select what method the export should be done. Select Export as File.
From: The start date of the export,
To: The last date of the export.
Output Format: A dropdown to select between html and JSON file format.

When exporting via email, you need to select the messages to be exported. However, when
exporting as a file, you only need to specify start and end export dates.

Star Messages in Direct Message


You can star important messages always to be able to come back to them. Starred messages are identified
by a small star ⭐ by the side.
To star a message,

Click the three-dot icon when you hover over the message. Then, select Star.

To un-star a message,

Click the three-dot icon when you hover over the message. Then, select Remove Star.

To view all stared messages,

Click on the three-dot icon of the DM menu bar and select Starred Messages. A list of all stared
messages are displayed.
Threads

Threads help to organize conversations and enable users to discuss topics without disorganizing a room.
They improve the ability to process room content, find, follow, and resume conversations more efficiently,
keeping threaded discussions focused. Threads are a series of replies or follow-up conversations under any
message in a Team, Channels, Discussion, or Direct Message. They are identified by:

View Threads in a Room


To view the list of all threads in a room, click the thread icon in that room header.

Expand and Follow a Thread


Since threads appear by the side of any room it was created in, you can expand the thread to occupy much
space.

To expand a thread,

Click on the expand icon on the thread header.

To collapse a thread,

Click the collapse icon on the thread header.

Following a Thread
You can follow and unfollow threads to get notifications on any messages sent under that thread. By default,
you automatically follow any thread you belong to.

To follow or unfollow a thread,

Click on the bell icon on the thread header.


Create a New Thread

To create a thread,

Hover over the message you'd like to reply to.

Click the three dots icon.

Select Reply in thread.

Type your reply. Check the Also send to channel box below your message if you want to send your
response back to the channel.
Click Send.

You can also click the thread icon to create a thread when you hover over a message.

Close Threads
To close a thread,

Click the **** close icon on the thread header.


Room Roles

BANKTEXT Rooms, such as Teams, Channels, and Discussions, have several roles that can be assigned
to a user in that room. These Roles provide varying control permission levels, privileges, and access to the
Room's features and settings.

Room roles have permissions in the Room scope type.

Available Room Roles

By default, there are three major Roles available in BANKTEXT Rooms:

Owner: This is the highest Room scoped role. It provides complete control over the Room, including the
ability to change its name, and description, manage its members and even delete the Room entirely.

Leader: This role is a step down from the Owner. A Room leader has significant control over the room
and can manage Room members, edit the Room name and description and perform other tasks
pertaining to the Room.
Moderator: This role is designed to help keep the Room organized and on-topic. Moderators can delete
messages, kick users out, and pin important messages to the top of the Room.

With an Enterprise workspace, you can create custom Roles as needed.

Assigning Room Roles

Room roles can only be assigned to members belonging to the room.

To assign a Role to a user:

Open the desired room.

Click Members icon on the top right action bar. This shows a list of users in that room.
Search and select the user you want to assign a role.
Click Kebab menu on the right against the user. A dropdown is seen.
Click Set as <role> from the dropdown to set the role you wish to assign to the user.

Only Room Owners and Leaders can assign Roles to other users.
Users can have multiple Roles within a single room.
Unassigning Room Roles

Room roles can be revoked from a user in a Room if no longer needed.

To remove a role:

Open the desired room.


Click on the Members icon on the top right action bar. This shows a list of users in that room.
Search or select the user having an existing role.
Click Kebab menu on the right against the user. A dropdown is seen.

From the dropdown, click Remove as <role> to remove the role previously assigned to the user.

Learn more about BANKTEXT Roles and Permissions.


Messages

This page explains the ins and outs of messaging in BANKTEXT.

Make sure to go through the message settings to be able to access all these features mentioned
below!

Compose messages
To compose a message in BANKTEXT, go to the channel or user you want to send a message to. Type the
message in the message box and press Enter or the Send Button.

If you want to add new lines of text, press Shift + Enter to add a new line.

Cursor Movement
While writing or editing messages, you can move the cursor using the arrow keys. Where the cursor moves
depends on the wrapping of the text.

Hold Alt or Command while pressing the right or left arrow keys to move the cursor to the beginning or
end of the message.

Notify Other Team Members


To get the attention of a specific team member in a channel, type @ followed by their username, for
example, @username . The mentioned user sees a red badge on the channel or is notified via email or
their mobile device if they're not online.

You can also notify everyone in a channel by typing @all . Although notifying everyone in the channel is
useful for announcements, not every message requires this. We recommend using@all sparingly.

Send Attachments
You can send a variety of attachments with your messages, like files, audio, links, videos, and many more.

To access the attachment menu you can, click on the plus (+) icon on the message input.

Files

You can select files using three methods:


By choosing the Select Files from Computer option from the attachment menu
By dragging and dropping the file on BANKTEXT
By pasting an image from the clipboard

After selecting the file, add a name and a description of the file and press Send.

Remember that the server administrator can block certain file types from being uploaded.

Audio

When using BANKTEXT through a web browser, give BANKTEXT permission to use your microphone.

To start recording, click on Create new Audio Message or the option in the attachment menu or microphone
icon inside the message box. To stop recording, click the green checkmark. The audio message
automatically sends. You can choose to play or download the message.

Video

When using BANKTEXT through a web browser, give BANKTEXT permission to use your webcam.

To start recording, click on the Create new Video Message option in the attachment menu, then click the
red circle icon.

While recording, a stop button appears. To end the recording, press Stop.

Preview the video you recorded by pressing Ok. A window appears where you can watch, download, and
name the video. To send the video, click Send or click Cancel to discard the video.

Interacting with Google Drive


Note: Google Drive features available only if the server's admin has enabled Google Drive access and
provided the correct API keys. For instructions to obtain these keys can see the Administrator guides.

From Google Drive to BANKTEXT

Files can be uploaded from Google Drive to a room by selecting the Select Files from Google Drive option
on the attachment menu. This opens a Google Drive file picker GUI with search and view modes. Select the
required file, enter a title and description, and then click Upload.

Files are upload in the same format as they are stored in Google Drive with exception of Google Docs,
Google Slides, and Google Sheets which are converted to pdf upon upload.

From BANKTEXT to Google Drive

Files uploaded as a message attached to a room can be uploaded to Google Drive. Click Save to Google
Drive above the file attachment. The file saves to Google Drive in its original format.

Create Google Docs, Slides and Sheets


Create Google docs, slides, and sheets by clicking to corresponding file type in the attachments menu. The
file saves to that user's Google Drive account and posts on the message or channel from which creation
occurs. The sharing setting for the file shall remain default. It can be changed by the file owner via the link to
collaborate with other users.

Links
URLs to other sites automatically generate a preview of that site's content. Copy and paste the link into the
message box to create the preview.

Location
To share your location, click Share My Location. A message with the link to your location on Google Maps
is generated.

Emoji
To insert an emoji, click the smiley face icon in the message box. Browse through emoji using the icon
categories or through the search box.

You can also insert emojis by inputting an emoji code.

Emoticons

BANKTEXT changes common emoticons, or symbols used to represent emoji, to the equivalent emoji. For
example, :) converts to the :smiley: emoji.

Disabling emojis

Emojis can be enabled/disabled in Your Account settings under the Messages section.

When graphical emojis are disabled, emoji keywords and shortcuts display as regular text.

Formatting
Use the following symbols to format text as desired:

Bold: *Lorem ipsum dolor*

Italic: _Lorem ipsum dolor_

Strike: ~Lorem ipsum dolor~

Inline code: `Lorem ipsum dolor`

Image: ![Alt text](https://BANKTEXT/favicon.ico)

Link: [Lorem ipsum dolor](https://www.BANKTEXT/) or


<https://www.BANKTEXT/ |Lorem ipsum dolor>
Message Actions

Message actions allow you to interact with messages that you've already posted.

Open message actions


To open the message actions menu, place your mouse over the message and click the Actions menu on
the left.

Edit messages
To edit a message, click on the Edit option on the message actions menu. You can also place your cursor in
the message box and press the Up arrow to edit your last message.

The administrator of the BANKTEXT server sets the permissions for who can edit messages from other
users. By default, only administrators, moderators, and channel owners can edit messages from other users.

Draft messages
BANKTEXT saves drafts of all message edits so you can return to edit later. When drafting a message,
press Escape to discard the draft.

Delete messages
To delete a message, click Delete in the message actions menu.

Star messages
Star messages to make the message easier to find it later. To star a message, click Star in the message
actions menu. If you want to remove the star from an already starred message, click Remove Star.

Find starred messages by going to the channel actions menu and clicking Starred Messages.

Starred messages are per chat room and are not global; each room has its list of starred messages.

Pin messages
Pin a message to a channel to make that message easily accessible to all users on the channel. To pin a
message, select the Pin Message option in the message actions menu. Remove already pinned messages
by selecting Remove Pin.

The administrator of a BANKTEXT team sets the permissions for who can pin messages in a channel. By
default, only administrators, moderators, and owners of the channel can pin messages.

Reactions
You can react to messages with emojis.

To add a reaction to a message, go to the message, click on the Smiley Face icon on the right of the
message, and then choose an emoji.

You can see other users’ emoji reactions beneath the message. To react with the same emoji as another
user, click the emoji. You can also remove your reaction by clicking on your emoji.

Permalink a message
Permalink a message to create a URL directly to that message in the chat.

Click on the Permalink option in the message actions menu. This copies the message into your clipboard.

Copy a message
To copy the contents of a message to your clipboard, click on the copy option on the message actions
menu.

Reply to a message
Reply to a message to quote a message from another user. The reply automatically triggers a notification
sent to the message's original author.

There are two options for replies:

Use Reply in Thread to start a new thread underneath the original message. Threads create a string of
messages that quote the original. Use Reply in Direct Message to quote the original message in a direct
message to that user.

Quote a message
Quote a message to respond to another user's message without notifying the user directly. Select Quote in
the message actions menu.

Message Info

The message info shows a list of users that have read the message with a timestamp.

Message info is an enterprise feature and requires the message read receipt to be enabled by the
workspace administrator.
Off-the-record (OTR) Messaging User Guide

This feature is currently in beta. Search operations will not find encrypted messages of encrypted
rooms. The mobile apps and multi-DMs may not support the encrypted messages (currently
under implementation). File Uploads will not be encrypted in this version.

Off-the-record (OTR) Messaging is a feature that allows users to exchange temporary, encrypted
messages directly between each other. This happens by using the local, non-persistent session storage
of their browser rather than storing messages on the BANKTEXT server. After an OTR session ends and the
session storage is cleared, the OTR messages are removed and can no longer be restored.

OTR messages can help exchange confidential information between users without creating a
record of this exchange on the server.

In contrast to OTR, end-to-end encrypted messages have a record on the server (in the form of
the encrypted message string) and are persistent.

Getting started
Prerequisites for using OTR are:

OTR has been enabled by your server administrator (if not, you will not be able to see OTR in the DM
context menu)
a direct message (DM) room with only one other participant
you and your DM-partner have entered their end-to-end encryption key
you and your DM-partner are both online

Starting an OTR Conversation


See the following steps with the sample users A and B.

User A: Start the OTR conversation by clicking the DM context menu and selecting OTR. This will open the
OTR-sidebar.
Selecting OTR-Panel

User A: Start OTR.

Starting OTR-Chat

User B: Accept the OTR invitation.

Accepting the invitation

The following messages will be subject to the OTR session and be marked by a key-icon. Unlike end-to-end
encryption, this key icon is bold.

OTR messages visual display

If User A or B breaks OTR (by clearing their local session storage, e.g., refreshing the web client), one of
them needs to re-initiate the OTR session by clicking Refresh Keys.

Options during OTR conversation

Ending an OTR conversation


In case User A or B wants to end the OTR session, one needs to click "End OTR". This ends the OTR
session. The following messages will follow the normal configuration of the DM and be recorded on the
server again. Refreshing his local session storage will make all OTR messages disappear for the user.
Ending OTR conversations
Security Bundle

BANKTEXT Security Bundle is a set of security-focused features and tools aimed at providing enhanced
security for your BANKTEXT workspace and users.

These features are intended to help organizations prevent unauthorized access to sensitive data, protect
against data breaches and other security threats, and provide greater visibility into their security posture,
meeting their security and compliance requirements.

The BANKTEXT Security Bundle includes the following features and tools:

Data Loss Prevention(DLP) app: Manage the sharing of sensitive data on your workspace.

Open-source Antivirus app: Secure file sharing within your workspace.

E2E Encryption: Secure the confidentiality of your communication with encryption.

Two Factor Authentication(2FA): Enforce authentication and account access with 2FA.
Data Loss Prevention User Guide

In its simplest terms, data loss prevention (DLP) is a security mechanism that helps ensure that sensitive
data is not unduly shared, misused, lost, or accessed by unauthorized users.

BANKTEXT's DLP App includes several controls to prevent data loss, such as restricting access to
sensitive information, monitoring data transfers, and detecting and blocking potentially dangerous activities.

If there is any BANKTEXT room, where sensitive information like credit card details, phone numbers, and IP
addresses is being exchanged between users, you can prevent or restrict the sharing of this sensitive
information using the DLP app.

To get the DLP app functioning on your workspace, you need the workspace administrator to install and
configure the DLP app from the BANKTEXT marketplace.

Data Loss Prevention (DLP) App

Data Loss Prevention App in Action


With the app installed and fully configured, the defined rulesets take effect.

If a user wants to share credit card details with another user in a room,

The DLP app picks up this message and replaces the sensitive data with ###. Clicking on More Info
details the message and its current status.
The app's bot user dlp.bot notifies the specified channel about sharing sensitive details.

Channel Moderators can Accept or Reject the message in the Moderator Channel from being sent.

Approve

Approving a message allows it to go through. It is received and visible in the room.

Reject

Rejecting a message prevents it from reaching its destination, and the status gets updated to Rejected.
Antivirus ClamAV App

The ClamAV app enables forwarding uploaded files to an open-source antivirus (ClamAV) application that
prevents the upload from completing in BANKTEXT if a virus is detected. You have to install and run the
ClamAV server, and then the ClamAV app connects to it.

It works across web browsers, desktop apps, and mobile apps. It is used to prevent users from spreading
viruses and malware via BANKTEXT. It is an open-source (GPL) antivirus engine used in various situations,
including email scanning, web scanning, and endpoint security. It provides several utilities, including a
flexible and scalable multi-threaded daemon, a command-line scanner, and an advanced tool for automatic
database updates.

To install your ClamAV server, see the official documentation.

Installing the ClamAV Integration


To install the ClamAV Integration App,

Go to Administration > Apps > Marketplace.


Search for the ClamAV Integration app.

Click Install and accept the needed permissions.

Configure ClamAV Integration


To configure the ClamAV Integration app,

On the ClamAV Integration App Info screen, navigate to Settings.

Update the required details:


ClamAV Server Host: The ClamAV Server Host, where your ClamAV server is hosted.

ClamAV Server Port: The port for your ClamAV server.


End to End Encryption User Guide

When E2E is enabled on your workspace, users can create encrypted rooms and send encrypted
messages.

IMPORTANT: E2E encryption functionality is currently in beta and includes notable


restrictions that workspace owners should carefully consider before activating this feature for
production use as follow:
E2E encrypted messages will not appear in search operations.

Bots or other ancillary systems interacting via webhooks or REST API cannot read E2EE
encrypted messages.
File uploads are not encrypted.
BANKTEXT enables users to reset their private E2E key to avoid permanent data loss during
the beta period.

Getting started
To use E2E Encryption, your BANKTEXT workspace administrator must turn on the End to End Encryption
feature.

E2E Encryption

Set E2E Encryption Password

If E2E Encryption is enabled on your workspace, you see a banner notifying you to Enter your E2E
Password.

Click on the banner


A modal is displayed with your password.

Copy and store the password securely. You'll need it when using BANKTEXT on another device.
Confirm by clicking on I Saved My Password.

Changing Encryption Password

To change your Encryption password,


Click your avatar and select My Account.
Navigate to Security > E2E Encryption.
Set the new encryption password

Click Save changes.

Starting an End to End Conversation


To create an End to End Encrypted room,

Follow this guide Create a new Channel to create a room.


Enable Encrypted.

Convert an existing room to use End to End encryption

It must be a private room.

To convert an existing room to an encrypted room,

Click the Room Information icon from the menu bar to view the Channel information. (link channel
info).

Click Edit to edit the Channel information.


Toggle on Encrypted
Click Save.

FAQ

How can I tell if the room is encrypted?

If the room is using End to End Encryption you should see a key icon by the channel name.

How can I tell if a message is encrypted?

You will see a key icon by the username.


Two Factor Authentication User Guide
Secure your account with two factor authentication.

With the ability to extensively use BANKTEXT on multiple platforms, and there is the risk of exposing your
account details. BANKTEXT two-factor authentication (2FA) provides additional protection for workspace
users by requiring them to provide two forms of authentication before accessing their accounts.

With 2FA enabled, a BANKTEXT user is required to enter not only their username and password but also a
one-time code generated by an authentication app, such as Google Authenticator when logging into their
account. This code is unique to each login attempt and provides an extra layer of security, as it cannot be
reused or guessed.

By default, 2FA is enabled with the email you used for signing up on the server.

To use 2FA, the BANKTEXT workspace administrator must turn on the Two Factor Authentication feature.

Enabling Two Factor Authentication

Before beginning the setup, download any available Authenticator app of your choice. Some
popular Authenticators include Google Authenticator, Authy, and Duo.

To enable 2FA on your account,

Click your avatar and select My Account.


Navigate to Security > Two Factor Authentication.
Click Enable two-factor authentication via TOTP .
Scan the QR Code provided with your Authenticator app or setup using the Authentication keys
manually.

Add the code generated by the Authenticator app ( BANKTEXT: <username> ) and click Verify.

A list of backup codes is provided. Save them securely in case you lose access to your Authenticator
app. Now, the 2FA setup is completed.

TOTP is a Time-based One-Time Password. It is a very common form of 2FA.

TOTP works by generating a unique numeric password with a standardized algorithm. Time-
based passwords are available and provide user-friendly, increased account security when
used as a second factor.
Keyboard Shortcuts

You can use the following key combinations while using BANKTEXT.

Shortcut Description

Command (or Ctrl ) + k Open Channel / User search

Control (or Shift ) + ESC Clear all unread messages (in all channels)

Up Arrow Edit previous message

Command (or Alt ) + Left Arrow Move to the beginning of the message

Command (or Alt ) + Up Arrow Move to the beginning of the message

Command (or Alt ) + Right Arrow Move to the end of the message

Command (or Alt ) + Down Arrow Move to the end of the message

Control (or Shift ) + Enter New line in message compose input

Command (or Ctrl ) + b Bold

Command (or Ctrl ) + i Italic

Command (or Ctrl ) + c Copy

Command (or Ctrl ) + v Paste

Command (or Ctrl ) + x Cut


Workspace Administration

This guide is for people who administer an existing BANKTEXT workspace and have an administrator role
inside the workspace.

To access this menu, go to Administration > Workspace

Only users with Administrator roles assigned to them can access this menu. If you have any role
other assigned to your BANKTEXT user, you won't be able to see this menu.

Go Fully Featured: An overview of all the potential of Rocket. Chat's enterprise edition.

Info: A consolidated view of basic information about your workspace.

Import: Import data from other services to your BANKTEXT workspace.

Users: Learn how to manage user accounts.

Rooms: Learn how to create and manage rooms.

Invites: Under Invites, you can view and delete the invite links generated to invite users to the
team/channels.

Connectivity Services: BANKTEXT Connectivity Services gives you access to connect your self-hosted
workplace to BANKTEXT cloud. Learn how to se create a new cloud account and use connectivity services.

View Logs: Check your workspace logs.

Federation Dashboard: Check statistics about the federation connection on your server.

Email Inboxes: Learn to manage Omnichannel email inboxes or email accounts for the email channels.

Custom Emoji: Learn to work with custom emojis in your BANKTEXT workspace.

Integrations: Integrate tools and services to ease everyday workflows.

OAuth Applications: Learn to set up custom applications to be used for Open Authentication.

Mailer: Use the Mailer tool to email users inside your BANKTEXT workspace.

User Status: See how to manage user presence and status on your workspace.

Permissions: Customize which users can perform specific actions under Rocket. Chat's rich permissions
system.

Settings: BANKTEXT is very flexible thanks to the vast amount of settings that allow you to configure your
workspace the way you prefer.

Engagement Dashboard: Evaluate user engagement on the channels of your workspace.


Device management: Manage the devices linked to your workspace.

If the information in this section doesn't solve your problem, look at these other resources to find something
that meets your needs. Alternatively, you can get help from our community or enterprise support services.
Go Fully Featured

This tab inside the administration panel of community workspaces helps you to explore and unlock all the
potential of BANKTEXT's enterprise edition.

Go fully featured

The new tab has two primary states. The first is to raise awareness of existing features that could be
explored free of charge through a trial. The other state provides a guide on how to get value from them.
Info
Info gives you a consolidated view of basic information about your workspace.

Visit the Info section to get insight, statistics, and information on the various aspects of your server. This can
help you to evaluate better and monitor the various activities.

To access this menu, go to Administration > Workspace > Info

Deployment Info
The deployment info card shows information related to your server deployment.

Version: The current version of your BANKTEXT server. This can be different from the latest version if
not updated.
Deployment ID: Your server's deployment ID.
Apps Engine Version: The version of Apps engine. It can be different from the latest if not updated.

Node Version: The Node.js version your server is running on.


Database Migration: The date of database migration.
MongoDB: The MongoDB version
Commit Details: Details on the recent commit of your server.
PID

License Info
This shows the information patenting to the license of your server.

License: This shows the tags of the license you have active on your server.
Features: The various features supported by the license on your server. Like Omnichannel
Auditing , Canned Responses , Engagement Dashboard .

Apply Offline License

To apply your offline license:

Navigate to Administration > Workspace > Info


On the License card, click Apply Offline License.

Paste the license you got from the BANKTEXT Cloud Console or provided from the License purchase
confirmation email in the modal presented.
Hit Apply license
Change Offline License

To change your offline license from the License card of the Info dashboard:

Navigate to Administration > Workspace > Info

Click on the Change Offline License at the bottom of the License card

A modal is presented, prompting you to paste the license you got from the BANKTEXT Cloud Console
or provided from the License purchase confirmation email.
Clear the old license code and paste the new license code, then hit Apply license

Usage Info

Users
Total: The total number of users on the server.

Online: The number of users that are currently online .

Busy: The number of users that are in Busy mode.

Offline: The number of users that are offline.

Types and Distribution


Connected
Activated Users: The number of activated users on your server.
Activated Guests: The number of guests that have been activated.
Deactivated Users: Number of inactive users.

BANKTEXT App Users: The number of BANKTEXT users. Example bot users , app
users .
Uploads

Total Uploads: The number of total uploads that have been made on the server.
Total Uploads Size: The total size of all uploads.

Rooms
Total Rooms: The total number of rooms on the server.
Total Channels: Total number of channels on your server.
Total Private Groups: Total number of private groups on the server
Total Direct Message Rooms: Total number of Direct Messages created on the server.
Total Discussions: Total number of discussions
Total Omnichannel Rooms: Total number of Omnichannel rooms.
Messages
Total Messages: Total messages sent and received on the server.

Total Threads: The total number of threads on the server.


Total Messages in Channels: Total messages in all channels only

Total Messages in Private Groups: Total number of messages in private groups only
Total Messages in Direct Messages: Total number of messages that have been sent in all direct
messages
Total Messages in Omnichannel: The total number of messages in omnichannel

More details on usage info can be seen on the Engagement Dashboard

Federation Info
BANKTEXT's Federation lets you set up communication between BANKTEXT workspaces.

Enabled: Enables federation on your server.

When enabled, it shows a green checkmark across the features well configured. And a red cross
across those that aren't.

Federation Settings

To see more on federation settings:

Click on Settings at the bottom right of the Federation card

A modal appears. Enter the Domain and Discovery Method and hit Next
Domain: Add the domain name that your server should be linked to.
Discovery Method: A dropdown to select which discoverability mode to use e.g. DNS or HUB

We recommend using DNS.

Next, continue by adding the given DNS records on your server and follow the given instructions.

More on the federation setup can be seen in this section.


We also have a guide on Federation

Download Info
To download info about your server, click the Download Info button at the top right of Info menu.

A download is prompted with a file named statistics.json .

Refresh Info
Refreshing info on your BANKTEXT server will prompt for the latest stats to be pulled.

To refresh info, click the Refresh button by the top right of your info panel.
Import
Import data from other services to your BANKTEXT workspace.

BANKTEXT lets you import all your data if you are moving from another service like Slack to BANKTEXT

To access this menu, navigate to Administration > Workspace > Import.

To Import your data:

Click Import New File


Select Import Type

Import from Slack

Import from HipChat

Import CSV
Import from HipChat

There are currently two different HipChat importers. One for HipChat Cloud and another for HipChat
Enterprise.

HipChat Cloud
To start importing values from HipChat you first need to have an instance of BANKTEXT running. You can
do that on your own.

If you already have an instance running and administration privileges, you can follow these steps:

1. Export data from HipChat


2. Wait until your download is ready and download it (it will be a .zip file)
3. Go to https://[your_rocket_chat].BANKTEXT/admin/import and click the "Start"
button on the "HipChat" item
4. Choose your downloaded .zip file and wait until BANKTEXT can read it (it can take a few minutes,
depending on the size of your HipChat export)
5. Deselect any items you don't want to import
6. At the top of the page, click Start Importing

HipChat Server / Data Center


To import your current data from HipChat Server / Data Center into BANKTEXT, please do the following.

Export from HipChat Server / Data Center

This is a copy from the HipChat Server / Data Center Documentation:

1. Browse to the fully qualified domain name you've configured for your HipChat Server, for example
https://hipchat.yourcompany.com/
2. Log in to the web user interface (UI) using your administrator email and password
3. Click Server admin > Export
4. To include files and one-to-one chat history in the export, select the checkboxes

5. Create a password to protect your archive file in the Password and Confirm Password fields. You're
required to provide this password when you import your data into HipChat Server. We don't store this
password, so be sure to remember it
6. Click Export. Depending on how much data you have, it may take a few hours to export the data. When
it's finished, you'll receive an email with a link to download the file
7. When you receive the email, click the link in the email to download the archive file
Import into BANKTEXT

1. Decrypt the exported file: openssl aes-256-cbc -d -in


path_to_encrypted_file.tar.gz.aes -out path_to_decrypted_file.tar.gz -
pass pass:your_password See the table below for descriptions of the command line arguments

2. Ensure the file generated is a tar.gz file, otherwise BANKTEXT won't accept it

3. Go to https://[your_rocketchat]/admin/import/prepare/hipchatenterprise

4. Choose your decrypted tar.gz file and wait until BANKTEXT can read it (it can take a few minutes,
depending on the size of your export)
5. Deselect any items you don't want to import
6. At the top of the page, click on Start Importing

OpenSSL Command Arguments

Argument Notes

aes-256-cbc This is the cipher to use to decrypt the file.

-d This argument is the command to decrypt the file.

Use this to specify the path to the archive file you'


-in
about to decrypt.

Use this to specify the path where you want to


-out
output the decrypted file.

Enter the password you created when you


-pass pass:
exported the archive file.

Troubleshooting

1. In case you get digital envelope routines:EVP_DecryptFinal_ex:bad


decrypt:../crypto/evp/evp_enc.c:541: while decrypting, add the parameter -md md5
see https://www.openssl.org/docs/faq.html#USER3
2. If the import fails for large HipChat exports, it may help not to export file attachments. see
https://github.com/RocketChat/BANKTEXT/issues/11693
3. If you still have problems contact us at support@BANKTEXT and provide your server logs if available
Import from Slack

To import your current Slack data into BANKTEXT:

1. Go to https://[your_app].slack.com/services/export

2. Click on Start Export


3. Wait until your download is ready and download it (it will be a .zip file)
4. Go to https://[your_rocketchat]/admin/import/new/slack

5. Select "Slack" as Import Type


6. Choose your downloaded .zip file and wait until BANKTEXT can read it (it can take a few minutes,
depending on the size of your Slack export)
7. Click on Import
8. Deselect any items you don't want to import
9. At the top of the page, click on Start Importing

If your Slack workspace is currently set up to hide emails, they'll also be excluded from
exports. You can update your workspace settings temporarily and re-run the export in order to
include emails as well.
It can be helpful to export time ranges from Slack such that the size of each import file is less
than 15MB.

If facing difficulties during the upload phase of the import process, try copying the archive
directly to the uploads folder using other means such as scp. Then select Server File Path as
the File Type.
Channel name with special character: if you use special character in the channel name, it
is important to enable the option "Allow Special Characters in Room Names" in layout
settings. An advanced option is to edit the special characters accepted in the UTF-8 setting in
the general configuration, example: [0-9a-zA-Z-
_.ãÃàèìòùÀÈÌÒÙáéíóúýÁÉÍÓÚÝâêîôûÂÊÎÔÛãñõÃÑÕäëïöüÿÄËÏÖÜŸçÇßØøÅåÆæœ]
+$ .
SlackBridge

SlackBridge allows you to mirror the messages received in a Slack channel or private group into
BANKTEXT in real-time.

To enable it, you have to create a Custom Bot in Slack and add it to the desired channels / private groups.
Once enabled and added to rooms, SlackBridge will clone the room in BANKTEXT and also clone users
that speak in that room.

To create a Custom Bot in Slack:

1. Got to "Set up a bot user"


2. Click "Add Configuration"
3. Pick a username for your Bot and click Add Bot Integration
4. Copy the API Token. You'll need it when setting up SlackBridge in BANKTEXT
5. Customize your bot the way you like it and click on Save Integration

To enable SlackBridge in BANKTEXT:

1. Go to https://[your_host]/admin/SlackBridge

2. Enable SlackBridge
3. Add your API Token, copied in step 4 above
4. Restart your BANKTEXT server

When done, you can now invite/add the bot to the channel or private group you want to mirror from
Import CSV

The CSV importer allows you to import your own plain text files. However, it does require the zip file to be in
a specific format for the importer to understand.

The Zip File


The zip file must be a flat zip, which means there can not be a "root" or "sub" folder in which the items
reside in the zip file. The importer looks for the files channels.csv and users.csv immediately inside
the zip and not inside any folder. If you have any questions about this, please ask in the #support channel on
the Community server.

The directmessages directory is a special directory name. Check the Direct Messages section below.

fileToImport.zip
├── channels.csv
├── users.csv
├── directmessages
│ ├── messages1.csv
│ ├── messages2.csv
│ └── messages3.csv
├── general
│ └── messages.csv
├── otherChannelName
│ ├── canBeAnyNameButHasToHave.csv
│ ├── theDotCSV.csv
│ └── asTheFileExt.csv
├── privateArea
│ └── messages.csv
└── random
├── dateTimeStamp1.csv
├── dateTimeStamp2.csv
└── dateTimeStamp3.csv

channels.csv Format

Channels between 2 users (Direct Messages) should not be included on this file. See section Direct
Messages for more information.

The channels.csv requires a very specific structure and layout. Each line contains information about
one channel. Each line must include the channel name, the creator, whether it is private or public, and the
members in the channel separated by a semicolon ; . Quotes are required.
1. Channel name
2. Username of the channel creator
3. Whether the channel is public or private. If the last argument is not private it is assumed the channel
is public

4. List of users in the channel, separated by semicolons. If only the creator is in the channel, then there
must be empty quotes.

"general","bradley.hilton","public",""
"otherChannelName","billy.bob","public",""
"random","bradley.hilton","public","billy.bob;graywolf336"
"privateArea","bradley.hilton","private","graywolf336"

users.csv Format
The users.csv is a file that contains the user details, each line containing a new user, and the user
details are:

1. Username (must not contain @ and some other special characters)


2. Email
3. Name

bradley.hilton,bradley.hilton@example.com,Bradley Hilton
billy.bob, billy.bob@example.com, Billy Bob Jr.
graywolf336,graywolf336@example.com,GrayWolf336

Message Files
The message CSV files require a particular format. Each line contains a new message, and every piece of
information is required quotes to surround it, and there cannot be any spaces between the commas. The
details required are:

1. Username who sent the message


2. The timestamp in milliseconds
3. The message and quotes are highly recommended, especially if the message text contains a comma.

"bradley.hilton","1479162481336","this is a test message"


"billy.bob","1479162481654","this is another message, a test message"

Direct Messages / Direct Channels


Direct Channels / Direct Messages are imported from a special directory named directmessages with a
specific format based on the Message Files format. The details required are:

1. Username who sent the message


2. Username who received the message
3. The timestamp in milliseconds
4. The message and quotes are highly recommended, especially if the message text contains a comma.

It's required to keep conversations in distinct files; for example, a conversation between user A and B
compose a file ( messages1.csv ), and the conversation between user B and C compose another file
( messages2.csv ).

"bradley.hilton","billy.bob","1479162481336","this is a test message"


"billy.bob","bradley.hilton","1479162481654","this is another message, a test message"

Importing
Once you have that, all set up and zipped; you can start the import process.

1. Go to https://[your_rocketchat]/admin/import/prepare/csv

2. Choose your .zip file and wait until BANKTEXT can read it (it can take a few minutes, depending on
the size of the file)
3. Deselect any items you don't want to import
4. At the top of the page, click on Start Importing

When you have problems during the Import, click on "View Logs" in the admin section to get the detailed
error messages.
Users
Users menu lets you view, create, edit, delete, deactivate, and, invite users.

Now you have your BANKTEXT workspace is up and running and maybe have some users or none. Visit
this menu to view, create, edit, delete, activate, and perform other actions regarding user accounts on your
server.

To access this menu, go to Administration > Workspace > Users.

Invite users to your BANKTEXT workspace


To access this menu:

Navigation to Administration > Workspace > Users

Click Invite on the top right


Enter the email of the invitees
Hit Send, and they’ll receive it in their email.

Note that for self-managed workspaces, you need to have SMTP enabled to be able to send
emails through the workspace. If you wish not to do so, you can still invite users by creating their
credentials.

Add new users


To add(create) new users:

Navigate to Administration > Workspace > Users


Click New on the top right
Enter user credentials
Hit Save

The settings Set random password and send by email and Send welcome email will require
SMTP enabled to send emails successfully.

You can also Add users through Identity management and authentication services
Guest users
If you want to invite external users to your BANKTEXT workspace, you can add them
as guest users.

Guest is a role that is available only on the Enterprise edition, and it's not possible to change the
permissions for this role.

All users assigned to the guest role don't count on the cap of seats, but they count in the guest
cap.

What can a guest user do?

Guest users have fewer capabilities than regular users.

As a guest user of BANKTEXT, you can start the conversation, view direct messages, view joined rooms,
and view the private room.

It's possible to set a maximum number of guest users for every license.
It's possible to set a maximum number of channels a guest can join for every license.

Manage your guest users

Guest Access Permissions

Guest accounts are only available on Enterprise, and the permissions are pre-defined for this
role.

Go to Administration > Workspace > Permissions. You will notice that the permissions that a guest role
has are: start the conversation, view direct messages, view joined the room, and view private room.

Permissions Available for the Guest Role


Permissions

Add a Guest User

You must be an administrator to add a guest to BANKTEXT workspace.

Go to Administration > Workspace > Users > New


On the Add User page**,** enter the guest users' information:

Name: Enter the name of the guest user.


Username: Enter the guest users's username.
Email: Enter the guest users' email address.
Status Message: Set the guest user's status message.

Bio: Enter the guest user's bio information.


Nickname: Enter the guest users's nickname.
Password: Enter the guest users's password.
Require password change: Enable or disable this option to change or reset the password.

Set random password and send by email: Enable or disable this option to set a random password
and send by email.
Roles: Select the guest role from the dropdown menu.
Join default channels: Set whether you want the guest user to join default channels.

Send welcome email: Set whether you want to send a welcome email **** to the guest user.
Click Save.

Roles - This will define what permissions a user has.


Once the guest user is added, you can edit, activate and deactivate the guest role.

Activate Guest Users

Go to User Info and then click Activate.

Deactivate Guest Users

Go to User Info and then click Deactivate.


Add users through Identity management and
authentication services

Rocket. Chat provides you with various options for adding users to your workspace.

LDAP Directory

LDAP configuration on BANKTEXT can be used to establish connections, used for authentication, storing
information about users and sync your data.

LDAP (Lightweight Directory Access Protocol) enables anyone to locate data about your server or company.

To configure LDAP authentication, go to Administration > Workspace > Setting > LDAP.

LDAP

SAML

SAML (Security Assertion Markup Language) is used for exchanging authentication and authorization data.

To access SAML setting, go to Administration > Workspace > Settings > SAML.

SAML

OAuth

You can configure authentication methods beyond just username and password.

To access OAuth setting, go to Administration > Workspace > Settings > OAuth.

OAuth

CAS

CAS (Central Authentication Service) allows members to use one set of credentials to sign in to multiple
sites over multiple protocols.

To access this setting, go to Administration > Workspace > Settings > CAS.
CAS
Rooms
Here you can view room details, edit rooms and delete rooms.

BANKTEXT rooms are where any communication or interaction with other users occurs. There are various
types of rooms. Visit the room section to view room details, and create, edit, and delete rooms.

To find more information on BANKTEXT rooms, please visit user guide on Rooms

To access this room's administration menu, navigate to Administration > Workspace > Rooms.

Here you can see all the rooms that currently exist in your BANKTEXT workspace along with details like the
number of users in a room, number of messages, type of room, etc.

You are provided with a variety of filters like Public, Private, etc., available to help you sort them by type.

Edit Room Details


To edit room details:

Navigate to Administration > Workspace > Rooms.


Click the room you want to edit the details for
Here you have options to change the room's avatar, edit room details, and configure other settings with
respect to this room, like Read-Only, Private, etc.

Click Save after making your desired changes.

Delete Room
To delete a room:

Navigate to Administration > Workspace > Rooms.


Search and click on the room you want to delete
Hit Delete

Click Yes, delete it! to confirm and delete the room.


Invites
Under Invites, you can view and delete the invite links generated to invite users to the
team/channels.

To access this menu:

Navigate to Administration > Workspace > Invites.

Please follow the link to find out how these invite links are created.

Delete a record
If you want to delete any of these invite records:

Click the delete button next to it


Hit Yes

This feature comes in handy when you have an invite link with an Expiration date: Never. In
order to avoid abuse, you can revoke it by deleting the record.
Registration

BANKTEXT Registration gives you access to connect your workplace to BANKTEXT Cloud.

To access this menu:

Navigate to Administration > Workspace > Registration for workspaces above BANKTEXT 6.0 or
Administration > Workspace > Connectivity Services for workspaces below 6.0 .

Introduction
Connecting your workplace to the cloud gives you access to interact with services like

Mobile push notifications gateway


Apps Marketplace
Live Chat Omnichannel proxy
OAuth proxy for social network
Automatic license synchronization

Below are the steps required to connect and synchronize a BANKTEXT self-hosted workspace to
BANKTEXT Cloud infrastructure at cloud.BANKTEXT.

The steps below are required only for self-managed instances. BANKTEXT SaaS workspaces
are provisioned and connected to the Cloud infrastructure.

To connect your workspace to our BANKTEXT Cloud, you must be running a supported version.
At least v3.x.

Registration steps
The registration steps are different depending on the version of BANKTEXT your workspace is running on.

1. Workspaces as from BANKTEXT 6.x


2. Workspaces below BANKTEXT 6.x

Workspaces as from BANKTEXT 6.x

When deploying a self-managed BANKTEXT >=6.x workspace you are automatically required to register
your workspace upon completing the Setup Wizard .

With your workspace setup completed, sync it to BANKTEXT Cloud as an Administrator by:
Navigate to Administration > Workspace > Registration > Manage.
Click on Sync to synchronize the workspace.

Disconnect workspace from BANKTEXT Cloud

To disconnect your workspace from BANKTEXT Cloud:

Go to Administration > Workspace > Registration > Manage.


Click Disconnect and Disconnect workspace.

Workspaces below BANKTEXT 6.x

If you don't have a cloud account yet:

Go to cloud.BANKTEXT
Hit Create account
Fill up the registration form and hit Next. A verification email is sent to your provided email address.
Click to open the verification link. You are redirected to cloud.BANKTEXT where you get logged in to
your Cloud console.

Under Workspaces on your BANKTEXT Cloud portal, click Register self-manage by the top right to
register your self-hosted workspace.
Select the workspace type from the modal displayed.

Continue Online with Cloud Services: BANKTEXT server that has a connection to the internet
(connected to the outside)
Continue Offline: Special cases where BANKTEXT workspace is air-gapped.

See the guide on how to register an offline workspace.


Air-gapped workspace Configuration

In the following section, we are going to cover the option for Internet Access.

Online Registration

A registration token is presented under the Online option. Copy the token, as this will be used to register
your BANKTEXT server.
On your BANKTEXT workspace, navigate to Administration > Workspace > Connectivity Services.
Click on Register workspace and enter the token copied from BANKTEXT Cloud account in the Token
field

Hit Connect. This sets the connection between your BANKTEXT workspace and BANKTEXT Cloud
console when successful.
Click on Sync to synchronize your workspace.

The newly registered workspace is listed in the Workspace section at cloud.BANKTEXT


View Logs
This menu shows you your workspace logs.

In the View Logs section of your BANKTEXT server, you can see all the information configured to be
logged. This can help you troubleshoot or monitor the state of your server's activity.

Check out the Logs Settings for additional configurations on what to log.

To access this menu, go to Administration > Workspace > View Log


Federation Dashboard
The Federation Dashboard shows statistics about federation connection on your
server.

With the BANKTEXT Federation Setup, you can configure your server to be able to communicate with other
servers seamlessly.

To access the dashboard, go to Administration > Workspace > Federation Dashboard.

Number of events: This shows the number of federated events that have been triggered.

Number of federated users: This shows the number of federated users your server has made access
to.
Number of federated servers: The number of federated servers.
Email Inboxes
Omnichannel Integration between BANKTEXT and email.

As an administrator, you can configure and manage Omnichannel email inboxes or email accounts for the
email channels.

You must have the Omnichannel enabled as well as have agents and managers assigned
in order to use this feature.

To set up a new email inbox:

Navigate to Administration > Workspace > Email Inboxes

Click + New Email Inbox:

Enter the following details:

1. Add the Name of the email inbox


2. Specify the Email address
3. Assign it to a Department; it is optional
4. Configure SMTP server
5. Toggle switch Connect with SSL/TLS; it is optional
Note : For outlook accounts, disable the SSL option under SMTP.
6. Configure IMAP server and
7. Toggle switch Connect with SSL/TLS for IMAP**;** it is optional
8. Hit Save

Your email inbox is set up, and your agents can receive emails within BANKTEXT now.

Configure Email Inbox with 2FA


If you have two-factor authentication enabled on your email account, using your regular email password to
connect will result in an error.

For this, you need to generate an app password that is to be used instead of the normal password.

Follow these guides to generate your app passwords.

Sign in with App Passwords - Google Account Help

GMail
Manage app passwords for two-step verification

Outlook

Create and manage third-party app passwords


https://help.aol.com/

AOL Mail

Yahoo Mail

Broken link
Custom Emoji

BANKTEXT allows you to add custom emoji files that can be used within BANKTEXT. Emojis are a great
way of filling emotional cues.

We recommend using no more than 100 custom emojis. A number higher than that can
compromise performance.

Add a Custom Emoji


To access this menu:

1. Go to Administration > Workspace > Custom Emoji


2. Click the + New on the top right
3. Enter a name for your custom emoji
4. Enter an alias for your custom emoji
5. Browse and choose an image file in PNG or JPEG format
6. Hit Save

Use your Custom Emoji


To use a custom emoji that you've added, either click the emoji icon on the message input and search for
your custom emoji by its name or enter :custom_emoji_name: or :custom_emoji_alias: in the
message box to directly add the emoji.

Delete/Edit Custom Emoji


Search and click on the custom emoji you want to delete in the Custom Emoji section under the
Administration tab.

Press Delete or Edit to delete or update the selected emoji, respectively.


Integrations
Integrate tools and services to ease everyday workflows.

BANKTEXT supports webhooks to integrate tools and services you like into the platform. Webhooks are
simple event notifications via HTTP POST. This way, any webhook application can post a message to a
BANKTEXT instance and much more.

With scripts, you can point any webhook to BANKTEXT and process the requests to print customized
messages, define the username and avatar of the user of the messages and change the channel for sending
messages, or you can cancel the request to prevent undesired messages.

Available integrations

Incoming Webhook: Let an external service send a request to BANKTEXT to be processed.


Outgoing Webhook: Let BANKTEXT trigger and optionally send a request to an external service and
process the response.

By default, a webhook is designed to post messages only. The message is part of a JSON structure, which
has the same format as that of a BANKTEXT message.

If you would like more power and control over various features of BANKTEXT, aside from
sending and receiving messages, take a look at BANKTEXT Apps.

Incoming webhook script

ES2015 / ECMAScript 6 scripts can handle Webhooks to process the request, print customized messages,
or cancel the request to prevent undesired messages.

Create a new incoming webhook

To create a new incoming webhook:


Navigate to Administration > Workspace > Integrations.
Click +New at the top right corner.
Switch to the Incoming tab.
Turn on the Enabled toggle.

Name: Enter a name for your webhook. The name is optional; however, providing a name to manage
your integrations easily is advisable.
Post to Channel: Select the channel (or user) where you prefer to receive the alerts. It is possible to
override messages.
Post as: Choose the username that this integration posts as. The user must already exist.
Alias: Optionally enter a nickname that appears before the username in messages.

Avatar URL: Enter a link to an image as the avatar URL if you have one. The avatar URL overrides the
default avatar.

Emoji: Enter an emoji optionally to use the emoji as the avatar. Check the emoji cheat sheet here.
Turn on the Script Enabled toggle.
Paste your script inside the Script field.
Save the integration.
Use the generated Webhook URL to post messages to BANKTEXT.

Script details

The BANKTEXT integration script should be written in ES2015 / ECMAScript 6. The script requires a global
class named Script, which is instantiated only once during the first execution and kept in memory. This
class contains a method called process_incoming_request, which is called by your server each time it
receives a new request. The process_incoming_request method takes an object as a parameter with the
request property and returns an object with a content property containing a valid BANKTEXT message, or
an object with an error property, which is returned as the response to the request in JSON format with a
Code 400 status.

A valid BANKTEXT message must contain a text field that serves as the body of the message. If you redirect
the message to a channel other than the one indicated by the webhook token, yyou can specify a channel
field that accepts room id or, if prefixed with "#" or " @ ", channel name or user, respectively.

You can use the console methods to log information to help debug your script. More information about the
console can be found here. To view the logs, navigate to Administration > Workspace > View Logs.
/* exported Script */
/* globals console, _, s */

/** Global Helpers


*

* console - A normal console instance


* _ - An underscore instance
* s - An underscore string instance
*/

class Script {
/**
* @params {object} request
*/
process_incoming_request({ request }) {
// request.url.hash
// request.url.search
// request.url.query
// request.url.pathname
// request.url.path
// request.url_raw
// request.url_params
// request.headers
// request.user._id
// request.user.name
// request.user.username
// request.content_raw
// request.content

// console is a global helper to improve debug


console.log(request.content);

return {
content:{
text: request.content.text
// "attachments": [{
// "color": "#FF0000",
// "author_name": "Rocket.Cat",
// "author_link": "https://open.BANKTEXT/direct/rocket.cat",
// "author_icon": "https://open.BANKTEXT/avatar/rocket.cat.jpg",
// "title": "BANKTEXT",
// "title_link": "https://BANKTEXT",
// "text": "BANKTEXT, the best open source chat",
// "fields": [{
// "title": "Priority",
// "value": "High",
// "short": false
// }],
// "image_url": "https://BANKTEXT/images/mockup.png",
// "thumb_url": "https://BANKTEXT/images/mockup.png"
// }]
}
};

// return {
// error: {
// success: false,
// message: 'Error example'
// }
// };
}
}

To test if your integration works, use curl to make a POST request to the generated webhook URL.

curl -X POST \
-H 'Content-Type: application/json' \
--data '{
"emoji": ":smirk:",
"text": "Example message",
"attachments": [
{
"title": "BANKTEXT", "title_link":
"https://BANKTEXT",
"text": "BANKTEXT, the best open source chat", "image_url":
"link-to-an-image",
"color": "#764FA5"
}
]
}' \
https://your-webhook-url

Outgoing webhook script

You can utilize scripts to process all messages from a channel and modify how BANKTEXT creates or
cancels the request. You have the option to either cancel the request and return a message or take no
action. Additionally, you can create another request within the script using the HTTP global helper. When a
response is received from the request, it executes the script, calling another method that allows you to
process the response, similar to incoming webhooks. To create a new outgoing webhook, follow these
steps.

Create a new outgoing webhook

To create a new outgoing webhook:


Navigate to Administration > Workspace > Integrations.

Click +New in the top right corner.


Switch to the Outgoing tab.
Event Trigger: Select the type of event that triggers this outgoing webhook integration.
Turn on the Enabled toggle.

Name: Enter a name for your webhook.


Channel: Enter the channel to listen to.

Trigger Words: If your event trigger is Message Sent, enter the words that should trigger this webhook
separated by commas.
Enter the URL called for each request in the URLs field. You can modify this URL inside the script.
Post as: Enter the username that this integration posts as. This field is optional.

Alias: Enter a nickname that appears before the username in messages.


Avatar URL: Optionally enter an image URL as the avatar for each message the webhook posts.
Emoji: Optionally enter an emoji to use as an avatar.

Token: Enter a token that is used to verify authorized webhook calls. The token is optional but essential
to avoid cross-site request forgery (CSRF) or replay attacks.
Turn on Script Enabled.
Paste your script inside the Script field.
Save your integration.

Script details

The script should be in ES2015 / ECMAScript 6. The script expects a global class called Script. This class
is instantiated once, only on the first execution, and kept in memory. The class has a method called
prepare_outgoing_request, called in the configured channel for the event triggers:

Message Sent: Called in the configured channel when the message starts with any Trigger Words.
File Uploaded: Called when any file is uploaded in the configured channel.
Room Archived: Called when a room is archived.

Room Created: Called when a room is created.


User Joined Room: Called when a user joins the channel.

The prepare_outgoing_request method returns an object with at least url and method properties. You can
also change the request object and replace it. It is possible to return nothing and cancel the request or return
a message.
The Script class has another method named process_outgoing_response. The method
process_outgoing_response is called for every request response, with an object as a parameter
containing the request property, that is, the object you returned in the previous method and a response
property. The process_outgoing_response method can return nothing to proceed with the default
processing, return false to stop it, or an object with the content property that contains a valid BANKTEXT
message.

The example script sends commands such as issues, comments, and pull requests to GitHub.
/* exported Script */
/* globals console, _, s, HTTP */

/** Global Helpers


*
* console - A standard console instance
* _ - An underscore instance
* s - An underscore string instance
* HTTP - The Meteor HTTP object to do sync http calls
*/

class Script {
/**
* @params {object} request
*/
prepare_outgoing_request({ request }) {
// request.params {object}
// request.method {string}
// request.url {string}
// request.auth {string}
// request.headers {object}
// request.data.token {string}
// request.data.channel_id {string}
// request.data.channel_name {string}
// request.data.timestamp {date}
// request.data.user_id {string}
// request.data.user_name {string}
// request.data.text {string}
// request.data.trigger_word {string}

let match;

// Change the URL and method of the request


match = request.data.text.match(/^pr\s(ls|list)/);
if (match) {
return {
url: request.url + '/pulls',
headers: request.headers,
method: 'GET'
};
}

// Prevent the request and return a new message


match = request.data.text.match(/^help$/);
if (match) {
return {
message: {
text: [
'**commands**',
'```',
' pr ls [open|closed|all] List Pull Requests',
]. '
j ò ì ǹ '
('\n ')
// "channel": "#name-of-channel",
// "attachments": [{
// "color": "#FF0000",
// "author_name": "Rocket.Cat",
// "author_link": "https://open.BANKTEXT/direct/rocket.cat",
// "author_icon": "https://open.BANKTEXT/avatar/rocket.cat.jpg",
// "title": "BANKTEXT",
// "title_link": "https://BANKTEXT",
// "text": "BANKTEXT, the best open source chat",
// "fields": [{
// "title": "Priority",
// "value": "High",
// "short": false
// }],
// "image_url": "https://BANKTEXT/images/mockup.png",
// "thumb_url": "https://BANKTEXT/images/mockup.png"
// }]
}
};
}
}

/**
* @params {object} request, response
*/
process_outgoing_response({ request, response }) {
// request {object} - the object returned by prepare_outgoing_request

// response.error {object}
// response.status_code {integer}
// response.content {object}
// response.content_raw {string/object}
// response.headers {object}

var text = [];


response.content.forEach(function(pr) {
text.push('> '+pr.state+' [#'+pr.number+']('+pr.html_url+') - '+pr.title);
});

// Return false will abort the response


// return false;

// Return empty will proceed with the default response process

// return;

return {
content: {
text: text.join('\n'),
parseUrls: false
// "attachments": [{
// "color": "#FF0000",
// "author_name": "Rocket.Cat",
// "author_link": "https://open.BANKTEXT/direct/rocket.cat",
// "author_icon": "https://open.BANKTEXT/avatar/rocket.cat.jpg",
// "title": "BANKTEXT",
// "title_link": "https://BANKTEXT",
// "text": "BANKTEXT, the best open source chat", "fields":
// [{
// "title": "Priority",
// "value": "High",
// "short": false
// }],
// "image_url": "https://BANKTEXT/images/mockup.png", "thumb_url":
// "https://BANKTEXT/images/mockup.png"
// }]
}
};
}
}

Integration Pattern

Pattern for Incoming Webhooks

For incoming webhooks, you notify BANKTEXT from another platform through webhooks, and the
pattern is as follows:

1. Create an incoming webhook on BANKTEXT.


2. Understand the structure of data of the sending platform. Most platforms return data in the form
of JSON. Know the structure of data that is sent to your webhook.
3. Construct a BANKTEXT message: Using the data returned by the third-party platform,
construct a BANKTEXT message using the returned data's attributes. The payload of the
message is in this structure.
Pattern for Outgoing Webhooks

For outgoing webhooks, you notify a third-party platform about events occurring on your
BANKTEXT workspace and the pattern is as follows:

1. Generate a webhook on a third-party platform, such as Slack.


2. Create an outgoing webhook and replace the URLs field with the generated webhook URL.
3. Understand the structure of the data that the third-party platform expects, so as to construct
this data from BANKTEXT's message.
4. Construct the data expected by the third-party platform.

The data manipulation is done in the webhook's Script class.


AppVeyor

AppVeyor is a CI/CD service for Windows, Linux, and macOS. AppVeyor supports most source control
platforms. You can link AppVeyor to BANKTEXT through webhooks and get notified in a BANKTEXT
channel each time a build runs.

AppVeyor webhook integration


Sign up for an Appveyor account and link it to your source control platform. The demonstration here is done
using GitHub as the source control platform.

Create a New AppVeyor Project

To create an AppVeyor project:

Create a new GitHub repository or clone this NodeJs project.


Sign in to AppVeyor.
Go to the Projects page.
Click +NEW PROJECT.
Select GitHub on the left pane.

Select either public repositories only or both public and private repositories.
Click Authorize GitHub.
Sign in to GitHub in the newly opened tab.
Select the above-created webhook project in the list of projects shown as the repository to use.

Create BANKTEXT Incoming Webhook

Follow the necessary steps to create a BANKTEXT incoming webhook. See Create a new incoming
webhook. Take note of the generated webhook URL.

Script details

Paste the following script into the Script field for the incoming webhook created.
/* exported Script */
/* globals console, _, s */

/** Global Helpers


*
* console - A standard console instance
* _ - An underscore instance
* s - An underscore string instance
*/

class Script {
/**
* @params {object} request
*/
process_incoming_request({ request }) {
let reqContent = request.content;
let message = "";
const name = reqContent.commitAuthor;
const authorEmail = reqContent.commitAuthorEmail;
const commitDate = reqContent.commitDate;
const commitMessage = reqContent.commitMessage;
const repo = reqContent.repositoryName;
const commitId = reqContent.commitId;
const projectName = reqContent.projectName;
const buildNumber = reqContent.buildNumber;
const buildId = reqContent.buildId;
message += "Commit by author:" + name + " whose email is " + authorEmail;
message += " on the repo " + "[" + projectName + "](https://github.com/" + repo + ")"
message += " on " + commitDate + " and their commit message was,'" + commitMessage +
message += "Build details, build ID:" + buildId + ", build number:" + buildNumber + "
message += "You can check the [Commit](https://github.com/" + repo + "/commit/" + com

const content = {
"emoji": ":smiley:",
"text": message,
"attachments": [
{
"title": projectName + " build",
"title_link": "https://BANKTEXT", "text":
"Appveyor is a CI tool,"
"image_url": "https://writing-demo.dev.BANKTEXT/images/integration-att
"color": "#764FA5"
}
]
};

return {
content:content
};
}
}
Code details

Each time you push to your configured GitHub repository, AppVeyor posts a payload to our webhook. The
structure of the payload is similar to that of sample.json found in the example repository. You retrieve the
content object and use the details to create a message object which becomes the text portion of the
BANKTEXT message returned in the method. process_incoming_request .

Configuring AppVeyor build

To configure your build:

Create a file in the root directory of your configured GitHub project called appveyor.yml and paste
the following content.

environment:
nodejs_version: "8"

# Install scripts. (runs after repo cloning)


install:
# Get the latest stable version of Node.js or io.js
- ps: Install-Product node ''
# install modules
- npm install

# Post-install test scripts.


test_script:
# Output useful info for debugging.
- node --version
- npm --version
# run tests
- npm test

# Don't actually build.


build: off
deploy:
provider: Webhook
url: https://the-link-to-your-incoming-webhook
request_timeout: 5

The install block in the configuration tells the build to install the latest version of NodeJS and the
deploy block tells AppVeyor to make use of webhooks. Replace the url variable with the webhook
URL generated during the creation of your incoming webhook. Check provider settings to understand
better.
Commit and push the code to your GitHub repository.
The build process starts immediately after the push is successful.
A notification is sent in the channel you configured to be used for your incoming webhook.
The current build can be verified by navigating to Projects > Your-Project > Current build on AppVeyor.
Azure Alerts

Add Azure Alert notifications via a new WebHook in BANKTEXT

1. In BANKTEXT go to "Administration"->"Integrations" and create "New Integration"


2. Choose Incoming WebHook
3. Follow all instructions like Enable, give it a name, link to channel etc. Set "Enable Script" to true and
enter the javascript in the "Script" box
4. Press Save changes and copy the Webhook URL (added just below the script box)

5. Go to the azure portal and on the specific resource you want to enable Alerts for follow the steps for
enabling Alerts and set the previously copied URL as the webhook URL for the Azure Alert. You can
follow the steps shown here: https://docs.microsoft.com/en-us/azure/azure-monitor/alerts/alerts-log-
webhook

Paste this in javascript in the "Script" textarea on BANKTEXT webhook settings


class Script {
process_incoming_request({ request }) {
// console is a global helper to improve debug
console.log(request.content);

var alertColor = "warning";

if(request.content.status === "Resolved"){ alertColor = "good"; }


else if (request.content.status === "Activated") { alertColor = "danger"; }

var condition = request.content.context.condition;

return {
content:{
username: "Azure",
text: "Azure Alert Notification",
attachments: [{
title: request.content.context.name,
pretext: request.content.context.description,
title_link: request.content.context.portalLink,
text: condition.failureDetails,
color: alertColor,
fields: [
{
title: "Status",
value: request.content.status + " @ " + request.content.context.timestamp
},
{
title: "Condition",
value: condition.metricName + ": " + condition.metricValue + " " + condition.me
},
{
title: "Threshold",
value: condition.operator + " " + condition.threshold
}
]
}]
}
};

return {
error: {
success: false,
message: 'Error'
}
};
}
}
This example shows basic processing of azure alerts that will give you the necessary information as to what
happened and what is the current status, along with a status color to get an idea at a quick glimpse of the
message.

For newer created alerts the azure webhooks can be process by the following script:
class Script {
// this script was tested with AzureMonitorMetricAlert version 2.0 and should work for
// "conditionType": "MultipleResourceMultipleMetricCriteria"
process_incoming_request({ request }) {
// console is a global helper to improve debug
console.log(JSON.stringify(request.content, null, 4));

var alertColor = "warning";


var condition = request.content.data.context.condition;
var conditionFields = [];

if(request.content.data.status === "Deactivated"){ alertColor = "good"; }


else if (request.content.data.status === "Activated") {
alertColor = "danger";
console.log(condition.allOf);
for (const cond of condition.allOf) {
console.log(cond);
conditionFields.push({
title: "Condition: " + cond.metricName,
value: cond.metricValue + " " + cond.operator + " " + cond.threshold + "
+ (cond.metricUnit ? cond.metricUnit + ", " : "")
+ cond.timeAggregation + ")"
+ " for more than " + condition.windowSize,
});
}
}

return {
content:{
username: "Azure",
text: "Azure Alert Notification",
attachments: [{
title: request.content.data.context.name,
pretext: request.content.data.context.description,
title_link: request.content.data.context.portalLink,
text: request.content.data.context.resourceGroupName + ": " + request.con
color: alertColor,
fields: [
{
title: "Status",
value: request.content.data.status + " @ " + request.content.da
},
{
title: "Severity",
value: request.content.data.context.severity,
},
...conditionFields,
]
}]
}
};
}
}

The schema of the incoming message as of the official Azure Alert Webhook Docs is:

{
"status": "Activated",
"context": {
"timestamp": "2015-08-14T22:26:41.9975398Z",
"id": "/subscriptions/s1/resourceGroups/useast/providers/microsoft.insights/alert
"name": "ruleName1",
"description": "some description",
"conditionType": "Metric",
"condition": {
"metricName": "Requests",
"metricUnit": "Count",
"metricValue": "10",
"threshold": "10",
"windowSize": "15",
"timeAggregation": "Average",
"operator": "GreaterThanOrEqual"
},
"subscriptionId": "s1",
"resourceGroupName": "useast",
"resourceName": "mysite1",
"resourceType": "microsoft.foo/sites",
"resourceId": "/subscriptions/s1/resourceGroups/useast/providers/microsoft.foo/si
"resourceRegion": "centralus",
"portalLink": "https://portal.azure.com/#resource/subscriptions/s1/resourceGroups
},
"properties": {
"key1": "value1",
"key2": "value2"
}
}
BitRocket

Follow the install instructions here:

https://github.com/FinndropStudios/BitRocket

Thanks to Finndrop Studios

Manuel Bachl (m.bachl@finndrop.de)


Thies Schneider (t.schneider@finndrop.de)
Dead Simple Screen Sharing

The endpoint for this integration is no longer available, and the access to API is paid only.

To know more about the service: https://deadsimplescreensharing.com/


EasyRedmine

EasyRedmine is a fork of redmine, a project management tool, which brings together different additional
plugins like Help Desk, Finance, CRM and many more.

Full documentation/installation instruction:

https://github.com/wirdgroup/rocketchat-easyredmine

Thanks to WIRDGroup
Giphy Integrations

Giphy BANKTEXT App


Install the Giphy App from the App Marketplace https://BANKTEXT/marketplace.

Under Administration Settings -> Apps -> Giphy

Giphy Preview

Thanks to RocketBooster

https://apps.rocketbooster.net/giphy

GifRocket
Follow the install instructions here:

https://github.com/FinndropStudios/GifRocket

Thanks to Finndrop Studios

Manuel Bachl (m.bachl@finndrop.de)


Thies Schneider (t.schneider@finndrop.de)
GitLab

Setting up GitLab webhook integration gives you the ability to receive event notifications from GitLab directly
in your desired BANKTEXT room.

These events include and are not limited to:

Comments
Issues events
Merge requests
Deployment events

In configuring this integration, make sure your BANKTEXT is publicly available on a URL.

GitLab BANKTEXT Integration


To configure the webhook integration between GitLab and BANKTEXT, you need to:

1. Create a new webhook integration on BANKTEXT

2. Link to the GitLab repository webhook setting

Follow these steps below to do that

Creating a new GitLab webhook integration

On your BANKTEXT workspace, go to Administration -> Workspace -> Integrations


Switch to the Incoming tab and create a New Integration
Fill in the details of your webhook including the name of the webhook, the room to post into, the user to
post as and enable it
GitLab new incoming Webhook

Enable Scripts and paste the following code into the Scripts box
/* eslint no-console:0, max-len:0 */
// see <https://gitlab.com/help/web_hooks/web_hooks> for full json posted by GitLab
const MENTION_ALL_ALLOWED = false; // <- check that bot permission allow has mention-all befo
const NOTIF_COLOR = '#6498CC';
const IGNORE_CONFIDENTIAL = true;
const refParser = (ref) => ref.replace(/^refs\/(?:tags|heads)\/(.+)$/, '$1');
const displayName = (name) => (name && name.toLowerCase().replace(/\s+/g, '.'));
const atName = (user) => (user && user.name ? '@' + displayName(user.name) : '');
const makeAttachment = (author, text, color) => {
return {
author_name: author ? displayName(author.name) : '',
author_icon: author ? author.avatar_url : '',
text,
color: color || NOTIF_COLOR
};
};
const pushUniq = (array, val) => ~array.indexOf(val) || array.push(val); // eslint-disable-li

class Script { // eslint-disable-line


process_incoming_request({ request }) {
try {
let result = null;
const channel = request.url.query.channel;
const event = request.headers['x-gitlab-event'];
switch (event) {
case 'Push Hook':
result = this.pushEvent(request.content);
break;
case 'Merge Request Hook':
result = this.mergeRequestEvent(request.content);
break;
case 'Note Hook':
result = this.commentEvent(request.content);
break;
case 'Confidential Issue Hook':
case 'Issue Hook':
result = this.issueEvent(request.content, event);
break;
case 'Tag Push Hook':
result = this.tagEvent(request.content);
break;
case 'Pipeline Hook':
result = this.pipelineEvent(request.content);
break;
case 'Build Hook': // GitLab < 9.3
result = this.buildEvent(request.content);
break;
case 'Job Hook': // GitLab >= 9.3.0
result = this.buildEvent(request.content);
break;
case 'Wiki Page Hook':
result = this.wikiEvent(request.content);
break;
default:
result = this.unknownEvent(request, event);
break;
}
if (result && result.content && channel) {
result.content.channel = '#' + channel;
}
return result;
} catch (e) {
console.log('gitlabevent error', e);
return this.createErrorChatMessage(e);
}
}

createErrorChatMessage(error) {
return {
content: {
username: 'Rocket.Cat ErrorHandler',
text: 'Error occured while parsing an incoming webhook request. Details attac
icon_url: '',
attachments: [
{
text: `Error: '${error}', \n Message: '${error.message}', \n Stack: '
color: NOTIF_COLOR
}
]
}
};
}

unknownEvent(data, event) {
return {
content: {
username: data.user ? data.user.name : (data.user_name || 'Unknown user'),
text: `Unknown event '${event}' occured. Data attached.`,
icon_url: data.user ? data.user.avatar_url : (data.user_avatar || ''),
attachments: [
{
text: `${JSON.stringify(data, null, 4)}`,
color: NOTIF_COLOR
}
]
}
};
}
issueEvent(data, event) {
if (event === 'Confidential Issue Hook' && IGNORE_CONFIDENTIAL) {
return false;
}
const project = data.project || data.repository;
const state = data.object_attributes.state;
const action = data.object_attributes.action;
let user_action = state;
let assigned = '';

if (action === 'update') {


user_action = 'updated';
}

if (data.assignee) {
assigned = `*Assigned to*: @${data.assignee.username}\n`;
}

return {
content: {
username: 'gitlab/' + project.name,
icon_url: project.avatar_url || data.user.avatar_url || '',
text: (data.assignee && data.assignee.name !== data.user.name) ? atName(data.
attachments: [
makeAttachment(
data.user, `${user_action} an issue _${data.object_attributes.title}_
*Description:* ${data.object_attributes.description}.
${assigned}
See: ${data.object_attributes.url}`
)
]
}
};
}

commentEvent(data) {
const project = data.project || data.repository;
const comment = data.object_attributes;
const user = data.user;
const at = [];
let text;
if (data.merge_request) {
const mr = data.merge_request;
const lastCommitAuthor = mr.last_commit && mr.last_commit.author;
if (mr.assignee && mr.assignee.name !== user.name) {
at.push(atName(mr.assignee));
}
if (lastCommitAuthor && lastCommitAuthor.name !== user.name) {
pushUniq(at, atName(lastCommitAuthor));
}
text = `commented on MR [#${mr.id} ${mr.title}](${comment.url})`;
} else if (data.commit) {
const commit = data.commit;
const message = commit.message.replace(/\n[^\s\S]+/, '...').replace(/\n$/, '');
if (commit.author && commit.author.name !== user.name) {
at.push(atName(commit.author));
}
text = `commented on commit [${commit.id.slice(0, 8)} ${message}](${comment.url})
} else if (data.issue) {
const issue = data.issue;
text = `commented on issue [#${issue.id} ${issue.title}](${comment.url})`;
} else if (data.snippet) {
const snippet = data.snippet;
text = `commented on code snippet [#${snippet.id} ${snippet.title}](${comment.url
}
return {
content: {
username: 'gitlab/' + project.name,
icon_url: project.avatar_url || user.avatar_url || '',
text: at.join(' '),
attachments: [
makeAttachment(user, `${text}\n${comment.note}`)
]
}
};
}

mergeRequestEvent(data) {
const user = data.user;
const mr = data.object_attributes;
const assignee = mr.assignee;
let at = [];

if (mr.action === 'open' && assignee) {


at = '\n' + atName(assignee);
} else if (mr.action === 'merge') {
const lastCommitAuthor = mr.last_commit && mr.last_commit.author;
if (assignee && assignee.name !== user.name) {
at.push(atName(assignee));
}
if (lastCommitAuthor && lastCommitAuthor.name !== user.name) {
pushUniq(at, atName(lastCommitAuthor));
}
}
return {
content: {
username: `gitlab/${mr.target.name}`,
icon_url: mr.target.avatar_url || mr.source.avatar_url || user.avatar_url ||
text: at.join(' '),
attachments: [
makeAttachment(user, `${mr.action} MR [#${mr.iid} ${mr.title}](${mr.url})
]
}
};
}

pushEvent(data) {
const project = data.project || data.repository;
const web_url = project.web_url || project.homepage;
const user = {
name: data.user_name,
avatar_url: data.user_avatar
};
// branch removal
if (data.checkout_sha === null && !data.commits.length) {
return {
content: {
username: `gitlab/${project.name}`,
icon_url: project.avatar_url || data.user_avatar || '',
attachments: [
makeAttachment(user, `removed branch ${refParser(data.ref)} from [${p
]
}
};
}
// new branch
if (data.before == 0) { // eslint-disable-line
return {
content: {
username: `gitlab/${project.name}`,
icon_url: project.avatar_url || data.user_avatar || '',
attachments: [
makeAttachment(user, `pushed new branch [${refParser(data.ref)}](${we
]
}
};
}
return {
content: {
username: `gitlab/${project.name}`,
icon_url: project.avatar_url || data.user_avatar || '',
attachments: [
makeAttachment(user, `pushed ${data.total_commits_count} commits to branc
{
text: data.commits.map((commit) => ` - ${new Date(commit.timestamp).
color: NOTIF_COLOR
}
]
}
};
}

tagEvent(data) {
const project = data.project || data.repository;
const web_url = project.web_url || project.homepage;
const tag = refParser(data.ref);
const user = {
name: data.user_name,
avatar_url: data.user_avatar
};
let message;
if (data.checkout_sha === null) {
message = `deleted tag [${tag}](${web_url}/tags/)`;
} else {
message = `pushed tag [${tag} ${data.checkout_sha.slice(0, 8)}](${web_url}/tags/$
}
return {
content: {
username: `gitlab/${project.name}`,
icon_url: project.avatar_url || data.user_avatar || '',
text: MENTION_ALL_ALLOWED ? '@all' : '',
attachments: [
makeAttachment(user, message)
]
}
};
}

createColor(status) {
switch (status) {
case 'success':
return '#2faa60';
case 'pending':
return '#e75e40';
case 'failed':
return '#d22852';
case 'canceled':
return '#5c5c5c';
case 'created':
return '#ffc107';
case 'running':
return '#607d8b';
default:
return null;
}
}

pipelineEvent(data) {
const project = data.project || data.repository;
const commit = data.commit;
const user = {
name: data.user_name,
avatar_url: data.user_avatar
};
const pipeline = data.object_attributes;

return {
content: {
username: `gitlab/${project.name}`,
icon_url: project.avatar_url || data.user_avatar || '',
attachments: [
makeAttachment(user, `pipeline returned *${pipeline.status}* for commit [
]
}
};
}

buildEvent(data) {
const user = {
n
aavm
aet:
ard
_aut
ral.
:us
dear
t_an
.aum
se,
r_avatar
};

return {
content: {
username: `gitlab/${data.repository.name}`,
icon_url: '',
attachments: [
makeAttachment(user, `build named *${data.build_name}* returned *${data.b
]
}
};
}

wikiPageTitle(wiki_page) {
if (wiki_page.action === 'delete') {
return wiki_page.title;
}

return `[${wiki_page.title}](${wiki_page.url})`;
}

wikiEvent(data) {
const user_name = data.user.name;
const project = data.project;
const project_path = project.path_with_namespace;
const wiki_page = data.object_attributes;
const wiki_page_title = this.wikiPageTitle(wiki_page);
const action = wiki_page.action;

let user_action = 'modified';

if (action === 'create') {


user_action = 'created';
} else if (action === 'update') {
user_action = 'edited';
} else if (action === 'delete') {
user_action = 'deleted';
}

return {
content: {
username: project_path,
icon_url: project.avatar_url || data.user.avatar_url || '',
text: `The wiki page ${wiki_page_title} was ${user_action} by ${user_name}`
}
};
}
}
Save the settings
The Webhook URL and Token are generated after saving

Copy these credentials, they will be used later

GitLab webhook url and token

GitLab Webhooks settings

After creating the new incoming webhook integration on BANKTEXT, it is time to link it up with the GitLab
repository.

Go to your GitLab project page then navigate to Settings > Webhooks

Fill in the URL and token you copied from the BANKTEXT setting

Select the type of events you want to be notified on and Add webhook
GitLab webhook setting

After successful configuration, you can test the Webhook with any event trigger and see the
notification in your specified BANKTEXT room.

GitLab webhook test

More material

GitLab-BANKTEXT webhook example: https://github.com/malko/rocketchat-gitlab-hook


GitLab webhook help: https://docs.gitlab.com/ee/user/project/integrations/webhooks.html
Google Calendar

This integration uses BANKTEXT incoming webhook. With this integration, you get your event notifications
right into BANKTEXT.

Prerequisites

1. A Google Cloud Platform project with the Google Calendar API enabled. To create a project and enable
an API, refer to Create a project and enable the API.
2. Prepare authorization credentials for a desktop application. To learn how to create credentials for a
desktop application, refer to Create credentials (make sure you download the JSON file).
3. Have a Channel for the event messages to be posted.

You can simply install and use the BANKTEXT Google Calendar app on your workspace instead
of manually configuring the integration.

Prepare Incoming Webhook

1. Go to Administration > Workspace > Integration.


2. Click +New > Incoming.
3. Turn on Enabled.
4. Enter a name for the integration.
5. Enter the channel name where the integration messages are to be posted in the Post to Channel field.
6. Enter an existing username the integration uses to post as that user in the Post as field.
7. Optionally enter an alias that appears before the username in the Alias field.
8. Enter an image URL to use as the avatar for this integration in the Avatar URL field if you have one.
9. Optionally enter an emoji to use as the avatar instead in the Emoji field.
10. Turn on Script Enabled.
11. Copy and paste the contents of script.js in the Script field.
12. Scroll to the bottom of the screen and click Save.
13. The webhook URL is generated upon saving successfully saving the integration in the Webhook URL
field.

Run Integration Program


The integration program runs on a server, periodically grabs the event data from your calendar, and sends
that data to your BANKTEXT server to be processed and sent to the channel you set up in the previous
section.

To install the integration program:

1. Install the go binary and then run the go get github.com/debdutdeb/rocketchat-google-


calendar command in your terminal.
2. Edit your bashrc , zshrc or fish config and add $(go env GOPATH)/bin to your PATH .
This way you won't have to specify the whole path to the command every time. Use the help option to
learn all the command line options and modify its execution process - rocketchat-google-
calendar -h . Running the command gives an output that looks like this:

Usage of ./rocketchat-google-calendar:
-calendars string
List of calendar IDs, separated by commas. (default "primary")
-credentials string
Enter path to the credentials file. (default "credentials.json")
-eventin string
The upper limit of upcoming event start time. Lower bound is the moment of API access
-waitfor string
Time to wait before attempting a POST to BANKTEXT webhook. (default "5m")
-webhook string
Enter the webhook url you got from BANKTEXT.

3. Enter the appropriate values for the respective options. The full command should be like this:

rocketchat-google-calendar \
-webhook https://the-incoming-webhook-url \
-calendars primary \
-credentials /full/path/to/cedentials.json \
-waitfor 5m -eventin 30m

4. Click the link which prompts you to authorize the app to use your Google account.

5. Once you get the token, please copy and paste it on the terminal and hit enter.

Your integration is now running.

Notifying Once Every Day


The example command above fetches the event data from the Google servers every 5 minutes. You can
change that behavior however you like.

One everyday use case is to be notified about all the meetings/events daily in the morning. You can achieve
this by combining the two flags -eventin and -waitfor .
Use 24h for both of those options. This way, the integration program fetches data every 24 hours, lists the
events that will occur in those 24 hours, and sends them to your configured channel.
GitHub

Setting up GitHub webhook integration with BANKTEXT gives you the ability to

1. Receive event notifications from GitHub directly in your specified BANKTEXT room (Incoming
WebHook)
2. Send commands to GitHub and optionally receive a response (Outgoing WebHook).

These events include and are not limited to:

Comments

Issues events
Pull Requests
Merge requests
Deployment events
Comments and discussions
Tags, label and branch actions
etc.

In configuring this integration, make sure your BANKTEXT is publicly available on a URL.

GitHub BANKTEXT Integration


We are going to see how to create both incoming and outgoing webhook integration between BANKTEXT
and GitHub.

BANKTEXT Incoming webhook with GitHub

To configure an incoming webhook integration between GitHub and BANKTEXT, you need to:

1. Create a new webhook integration on BANKTEXT

2. Link the GitHub repository through webhook settings

The following steps explain how to do this

Creating new GitHub webhook integration


Go to the Administration -> Workspace -> Integrations settings on your BANKTEXT workspace

Switch to the Incoming tab and create a New Integration

Fill in the details of your webhook including the name of the webhook, the room to post into, the user to
post as and enable it

Create new GitHub incoming webhook

Enable Scripts and paste any of the following example code into the Scripts box.

You can customize your webhook integration script to suit your desire as explained here.
GitHub Example Script 1

This script will generate notifications for the following repository events:

Issue events (create, edit, close, reopen, assign, label, etc)


Issue comment events
Push events (singular and multiple commits)

/* exported Script */

String.prototype.capitalizeFirstLetter = function() {
return this.charAt(0).toUpperCase() + this.slice(1);
}

const getLabelsField = (labels) => {


let labelsArray = [];
labels.forEach(function(label) {
labelsArray.push(label.name);
});
labelsArray = labelsArray.join(', ');
return {
title: 'Labels',
value: labelsArray,
short: labelsArray.length <= 40
};
};

const githubEvents = {
ping(request) {
return {
content: {
text: '_' + request.content.hook.id + '_\n' + ':thumbsup: ' + request.content
}
};
},

/* NEW OR MODIFY ISSUE */


issues(request) {
const user = request.content.sender;

if (request.content.action == "opened" || request.content.action == "reopened" ||


var body = request.content.issue.body;
} else if (request.content.action == "labeled") {
var body = "Current labels: " + getLabelsField(request.content.issue.labels).
} else if (request.content.action == "assigned" || request.content.action == "una
// Note that the issues API only gives you one assignee.
var body = "Current assignee: " + request.content.issue.assignee.login;
} else if (request.content.action == "closed") {
if (request.content.issue.closed_by) {
} el v
s ae r { body = "Closed by: " + request.content.issue.closed_by.login;
var body = "Closed.";
}
} else {
return {
error: {
success: false,
message: 'Unsupported issue action'
}
};
}

const action = request.content.action.capitalizeFirstLetter();

const text = '_' + request.content.repository.full_name + '_\n' +


'**[' + action + ' issue #' + request.content.issue.number +
' - ' + request.content.issue.title + '](' +
request.content.issue.html_url + ')**\n\n' +
body;

return {
content: {
attachments: [
{
thumb_url: user.avatar_url,
text: text,
fields: []
}
]
}
};
},

/* COMMENT ON EXISTING ISSUE */


issue_comment(request) {
const user = request.content.comment.user;

if (request.content.action == "edited") {
var action = "Edited comment ";
} else {
var action = "Comment "
}

const text = '_' + request.content.repository.full_name + '_\n' +


'**[' + action + ' on issue #' + request.content.issue.number +
' - ' + request.content.issue.title + '](' +
request.content.comment.html_url + ')**\n\n' +
request.content.comment.body;

return {
content: {
attachments: [
{ thumb_url: user.avatar_url,
text: text,
fields: []
}
]
}
};
},

/* COMMENT ON COMMIT */
commit_comment(request) {
const user = request.content.comment.user;

if (request.content.action == "edited") {
var action = "Edited comment ";
} else {
var action = "Comment "
}

const text = '_' + request.content.repository.full_name + '_\n' +


'**[' + action + ' on commit id ' + request.content.comment.commit_id
' - ' + + '](' +
request.content.comment.html_url + ')**\n\n' +
request.content.comment.body;

return {
content: {
attachments: [
{
thumb_url: user.avatar_url,
text: text,
fields: []
}
]
}
};
},
/* END OF COMMENT ON COMMIT */

/* PUSH TO REPO */
push(request) {
var commits = request.content.commits;
var multi_commit = ""
var is_short = true;
var changeset = 'Changeset';
if ( commits.length > 1 ) {
var multi_commit = " [Multiple Commits]";
var is_short = false;
var changeset = changeset + 's';
var output = [];
}
const user = request.content.sender;
var text = '**Pushed to ' + "["+request.content.repository.full_name+"]("+request
+ request.content.ref.split('/').pop() + "**\n\n";

for (var i = 0; i < commits.length; i++) {


var commit = commits[i];
var shortID = commit.id.substring(0,7);
var a = '[' + shortID + '](' + commit.url + ') - ' + commit.message;
if ( commits.length > 1 ) {
output.push( a );
} else {
var output = a;
}
}

if (commits.length > 1) {
text += output.reverse().join('\n');
} else {
text += output;
}

return {
content: {
attachments: [
{
thumb_url: user.avatar_url,
text: text,
fields: []
}
]
}
};
}, // End GitHub Push

/* NEW PULL REQUEST */


pull_request(request) {
const user = request.content.sender;

if (request.content.action == "opened" || request.content.action == "reopened" ||


var body = request.content.pull_request.body;
} else if (request.content.action == "labeled") {
var body = "Current labels: " + getLabelsField(request.content.pull_request.l
} else if (request.content.action == "assigned" || request.content.action == "una
// Note that the issues API only gives you one assignee.
var body = "Current assignee: " + request.content.pull_request.assignee.login
} else if (request.content.action == "closed") {
if (request.content.pull_request.merged) {
var body = "Merged by: " + request.content.pull_request.merged_by.login;
} else {
var body = "Closed.";
}
} else {
return {
error: {
success: false,
message: 'Unsupported pull request action'
}
};
}

const action = request.content.action.capitalizeFirstLetter();

const text = '_' + request.content.repository.full_name + '_\n' +


'**[' + action + ' pull request #' + request.content.pull_request.num
' - ' + request.content.pull_request.title + '](' +
request.content.pull_request.html_url + ')**\n\n' +
body;

return {
content: {
attachments: [
{
thumb_url: user.avatar_url,
text: text,
fields: []
}
]
}
};
},
};

class Script {
process_incoming_request({ request }) {
const header = request.headers['x-github-event'];
if (githubEvents[header]) {
return githubEvents[header](request);
}

return {
error: {
success: false,
message: 'Unsupported method'
}
};
}
}
GitHub Example Script 2

This script will generate notifications for the following repository events:

New and closed issue events


Comment events (issues only)

Push events (singular and multiple commits)

/* exported Script */

// Begin embedded images


const gh_cmit_svg = '<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class
const gh_pr_svg = '<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class="
const gh_iss_svg = '<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class=
const svg_inline_prefix = 'data:image/svg+xml;ascii,';
// End embedded images

const getLabelsField = (labels) => {


let labelsArray = [];
labels.forEach(function(label) {
labelsArray.push(label.name);
});
labelsArray = labelsArray.join(', ');
return {
title: 'Labels',
value: labelsArray,
short: labelsArray.length <= 40
};
};

const githubEvents = {
ping(request) {
return {
content: {
text: ':thumbsup: ' + request.content.zen
}
};
},

issues(request) {
const user = request.content.sender;
const attachment = {
author_icon: svg_inline_prefix + gh_iss_svg,
author_name: '#' + request.content.issue.number + ' - ' + request.content.issue
author_link: request.content.issue.html_url,
fields: []
};

if (request.content.issue.labels) {
attachment.fields.push(getLabelsField(request.content.issue.labels));
}

if (request.content.issue.assignee) {
attachment.fields.push({
title: 'Assignee',
value: request.content.issue.assignee.login,
short: true
});
}

const actions = {
'assigned': ':inbox_tray:',
'unassigned': ':outbox_tray:',
'opened': ':triangular_flag_on_post:',
'closed': ':white_check_mark:',
'reopened': ':triangular_flag_on_post:',
'labeled': ':label:',
'unlabeled': ':label:',
'edited': ':pencil:'
};

const text = actions[request.content.action] + ' issue';

return {
content: {
icon_url: user.avatar_url,
alias: user.login,
text: text,
attachments: [attachment]
}
};
},

issue_comment(request) {
const user = request.content.comment.user;
var attachment = {
author_icon: svg_inline_prefix + gh_iss_svg,
author_name: '#' + request.content.issue.number + ' - ' + request.content.issue
author_link: request.content.comment.html_url,
fields: []
};

if (request.content.issue.labels) {
attachment.fields.push(getLabelsField(request.content.issue.labels));
}

if (request.content.issue.assignee) {
attachment.fields.push({
title: 'Assignee',
value: request.content.issue.assignee.login,
short: true
});
}

const text = ':speech_balloon: ' + request.content.comment.body;

return {
content: {
icon_url: user.avatar_url,
alias: user.login,
text: text,
attachments: [attachment]
}
};
},

pull_request(request) {
const user = request.content.sender;
const attachment = {
author_icon: svg_inline_prefix + gh_pr_svg,
author_name: '#' + request.content.pull_request.number + ' - ' + request.conten
author_link: request.content.pull_request.html_url
};

let text = 'Pull request';


switch (request.content.action) {
case 'assigned':
text += ' assigned to: ' + request.content.assignee.login;
break;
case 'unassigned':
text += ' unassigned of ' + request.content.assignee.login;
break;
case 'opened':
text += ' opened';
break;
case 'closed':
if (request.content.pull_request.merged) {
text += ' merged';
} else {
text += ' closed';
}
break;
case 'reopened':
text += ' reopened';
break;
case 'labeled':
text += ' added label: "' + request.content.label.name + '" ';
break;
case 'unlabeled':
text += ' removed label: "' + request.content.label.name + '" ';
break;
case 'synchronize':
text += ' synchronized';
}
return {
content: {
icon_url: user.avatar_url,
alias: user.login,
text: text,
attachments: [attachment]
}
};
},

//// GitHub push event


push(request) {
var commits = request.content.commits;
var multi_commit = ""
var is_short = true;
var changeset = 'Changeset';
if ( commits.length > 1 ) {
var multi_commit = " [Multiple Commits]";
var is_short = false;
var changeset = changeset + 's';
var output = [];
}
const user = request.content.sender;
const attachment = {
author_icon: svg_inline_prefix + gh_cmit_svg,
author_name: "Message: " + request.content.head_commit.message + multi_commit,
author_link: request.content.compare,
fields: []
};

if (request.content.repository.full_name) {
attachment.fields.push({
title: 'Repo',
value: "["+request.content.repository.full_name+"]("+request.content.reposito
short: is_short
});
}

for (var i = 0; i < commits.length; i++) {


var commit = commits[i];
var shortID = commit.id.substring(0,7);
if ( commits.length > 1 ) {
output = '[' + shortID + '](' + commit.url + ') - ' + commit.message
if (i == 0){
attachment.fields.push({
title: changeset,
value: output,
short: is_short
});
} else{
attachment.fields.push({
title: changeset,
value: output,
short: is_short
});
}
} else {
output = "[" + shortID + "](" + commit.url + ")"
attachment.fields.push({
title: changeset,
value: output,
short: is_short
});
}
}

const text = ':ballot_box_with_check: Pushed to ' + "["+request.content.ref.split

return {
content: {
icon_url: user.avatar_url,
alias: user.login,
text: text,
attachments: [attachment]
}
};
}, // End GitHub Push
};

class Script {
process_incoming_request({ request }) {
const header = request.headers['x-github-event'];
if (githubEvents[header]) {
return githubEvents[header](request);
}

return {
error: {
success: false,
message: 'Unsupported method'
}
};
}
}

Save the settings

The Webhook URL and Token are generated after saving


Copy these credentials, they will be used later
GitHub webhook url and token

GitHub Webhook Setting

After creating the new incoming webhook integration on BANKTEXT, it is time to link it up with the GitHub
repository.
Go to the GitHub project repository then navigate to Settings > Webhooks
Add webhook and fill in the URL and token you copied from the BANKTEXT setting

Select the list of events you want to be notified on and Add webhook

GitHub webhook setting

After successful configuration, you can test the Webhook with any event trigger and see the
notification in your specified BANKTEXT room.
GitHub webhook notifications

BANKTEXT GitHub Outgoing Webhook

Sending outgoing webhooks only works on public repositories

Create a new Outgoing WebHook

Select the channel where you will use the commands and receive the responses
Set URLs as https://api.github.com/repos/User-Or-Org-Name/Repo-Name like
https://api.github.com/repos/RocketChat/BANKTEXT
Enable Scripts

Use this Script to listen for commands pr ls , pr list and help


/* exported Script */
/* globals Store */

class Script {
prepare_outgoing_request({ request }) {
let match;

console.log('lastCmd', Store.get('lastCmd'));

match = request.data.text.match(/^pr last$/);


if (match && Store.get('lastCmd')) {
request.data.text = Store.get('lastCmd');
}

match = request.data.text.match(/^pr\s(ls|list)\s*(open|closed|all)?$/);

if (match) {
Store.set('lastCmd', request.data.text);
let u = request.url + '/pulls';
if (match[2]) {
u += '?state='+match[2];
}
return {
url: u,
headers: request.headers,
method: 'GET'
};
}

match = request.data.text.match(/^help$/);
if (match) {
Store.set('lastCmd', request.data.text);
return {
message: {
text: [
'**GitHub commands**',
'```',
' pr ls|list [open|closed|all] List Pull Requests',
'```'
].join('\n')
}
};
}
}

process_outgoing_response({ request, response }) {


var text = [];
response.content.forEach(function(pr) {
text.push('> '+pr.state+' [#'+pr.number+']('+pr.html_url+') - '+pr.title);
});

return {
content: {
text: text.join('\n'),
parseUrls: false
}
};
}
}

Save your integration

Customizing your integration scripts


The purpose of the integration script is to transform data in one format (the format provided by your incoming
service, such as GitHub) into another format (the format expected by BANKTEXT). Therefore, should you
wish to customize either of the scripts presented above, you will need two resources:

GitHub API specifications


Specifications for BANKTEXT integration message objects

Note that data comes into your script from GitHub as the request.content object.
Graylog

Graylog is a powerful open-source log management platform. It aggregates and extracts important data from
server logs, which are often sent using the Syslog protocol. It also allows you to search and visualize the
logs in a web interface.

Follow the install instructions here:

https://github.com/jeanmorais/rocketchat-graylog-hook
Jenkins notifications via BANKTEXT
Marketplace

To be able to receive Jenkins notifications:

1. Go to Administration > Apps > Marketplace, search for Jenkins Integration


2. Install the app.
3. Click the Settings tab and enter a name in the Jenkins Integration Username Alias and a user
avatar in the Jenkins Integration avatar field
4. Save Changes.
5. A webhook is generated after saving.
JFrog Xray

Add JFrog Xray notifications via a new WebHook in BANKTEXT. See the project's documentation for
integration instructions.

JFrog Xray Integration


MicroBadger

Add MicroBadger Docker image changes notifications via a new WebHook in BANKTEXT. See the
project's documentation for integration instructions.

MicroBadger Integration
Microsoft Teams

Goal

Receive message from Microsoft Teams (Incoming WebHook)


Send message to Microsoft Teams Channel(Outgoing WebHook)

Create Incoming WebHook in BANKTEXT


Note: I would advise to create New Team so not all members in your organisation have access to this
Integration

1. Create Incoming Webhook with Default parameters:


Go to Integrations --> Create New integration --> Select Incoming WebHook
Assign Name

Assign Post to Channel (This will be the Channel where you want to receive msg from Teams)
Assign Post as (Create Bot user and add bot the above mentioned Channel)
Copy and paste below script in Script section

The number 16 in the following script ( request.content.text.slice(16) ) should be


updated to 9 + MS Teams bot username length . This command is used to remove the
bot tag from the text received from MS Team so that only the message is displayed in
BANKTEXT (e.g. if the bot username in MS Teams is rocket.bot, which is 10 characters long,
then 16 should be updated to 19 = 9 + 10).
class Script {
process_incoming_request({ request }) {
// UNCOMMENT THE BELOW LINE TO DEBUG IF NEEDED.
// console.log(request.content);
if ('edited_message' in request.content) {
request.content = request.content;
}
let from = request.content.from;
let who = from.name;
let icon_url = '/avatar/' + from.name + '.jpg'
let body = request.content.text.slice(16);

if(!body) {
if(request.content.hasOwnProperty("sticker") && request.content.sticker.emoji) {
// It's a sticker
body = request.content.sticker.emoji
} else {

return {}
}
}

return {
content: {
username: who,
icon_url: icon_url,
text: body,
},
response: {
type: "message",
attachments: [{
contentType: "application/vnd.microsoft.card.adaptive",
content: {
type: "AdaptiveCard",
version: "1.4",
body: [{
type: "TextBlock",
text: "Message received",
}],
},
}],
}
};
}
}

1. Save and then open your Incoming WebHook You should be able to see Webhook URL just copy
that, We will need that during Creating Outgoing WebHook in MS Teams.
Create Outgoing WebHook in MS Teams:

1. Select the appropriate team and select Manage team from the (•••) drop-down menu.
2. Choose the Apps tab from the navigation bar.
3. From the window's lower right corner select Create an outgoing webhook.
4. In the resulting popup window complete the required fields:
Name - The webhook title and @mention tap. (This will be your bot name in MS Teams)

Callback URL - Paste the URL here we copied from BANKTEXT.

Description - A detailed string that will appear in the profile card and the team-level App
dashboard.
Profile Picture (optional) an app icon for your webhook.
Select the Create button from lower right corner of the pop-up window and the outgoing webhook
will be added to the current team's channels.
Note : The Name We mentioned above will be the bot name so when you send message to
BANKTEXT Mention to Bot example @namebot

Create Incoming WebHook in MS Teams:

1. Navigate to the Team where you want to add the webhook and select (•••) More Options from the top
navigation bar and Select Apps and select More apps.
Choose Connectors from the drop-down menu and search for Incoming Webhook.
Select the Configure button, provide a name, and, optionally, upload an image avatar for your
webhook.
Select appropriate Teams and Channel.
The dialog window will present a unique URL that will map to the channel. Make sure that you
copy and save the URL—you will need to provide it to BANKTEXT Outgoing WebHook.
Select the Done button. The webhook will be available in the team channel.

Create Outgoing Webhook in BANKTEXT:

1. Create Outgoing WebHook from Integration:


Select Message Sent as Event Trigger
Select the Channel (same as mentioned in Incoming Webhook)
Paste the URL we copied from Microsoft Teams
Select Bot Post as (same as in Incoming Webhook)
Paste Below Script:
class Script {
prepare_outgoing_request({ request }) {
console.log(request.data);
if (request.data.bot) {
//Don't repost messages from the bot.
return { };
} else {
return {
url: request.url,
method: 'POST',
headers: {"ContentType":"application/json","Content-type":"application/js
data: {
context: 'http://schema.org/extensions',
type: 'MessageCard',
// text: '{\'<b>' + request.data.user_name+ '</b>:': \"Isravel - Hello W
text: request.data.user_name.bold() + ": " + request.data.t
// text: encodeURIComponent( request.data.user_nam
},
// method: 'GET'
};
}
}
}

Enjoy!
NewRelic

NewRelic offers a performance management solution enabling developers to diagnose and fix application
performance problems in real-time. It also provides a notification/alerting facet to their offerings.

Full documentation/installation instruction:

https://github.com/kajisaap/rocketchat-newrelic

Thanks to CloudFactory
Nextcloud and WebDAV integrations

You can integrate Nextcloud with any application that uses the WebDAV protocol. BANKTEXT offers
seamless integration between Nextcloud and the BANKTEXT workspace.

With this integration, you can access, browse, navigate your Nextcloud directories and share files from your
Nextcloud server all within BANKTEXT.

For the following integration to work on your BANKTEXT workspace, contact your administrator,
or follow the Webdav Integration administrator guide to enable Webdav

Adding a new Nextcloud/WebDAV server


Once the integration has been enabled by the admin, any user will be able to link their servers to
BANKTEXT.

Adding a new Nextcloud server requires you to have available the;

WebDAV URL: The WebDAV URL used for the connection

Username: Your Nextcloud username


Password: Your Nextcloud password

To get your Nextcloud WebDAV URL:

navigate to the Files section of your Nextcloud server,

Click Settings at the bottom left, and you will see a WebDAV field with the URL that looks like this
https://EXAMPLE.COM/remote.php/dav/files/USERNAME/
Copy the URL and proceed

Back on your BANKTEXT workspace, navigate to the button on the right side of your message
composer inside any chat or room
Click Add Server

Fill in the information on the dialogue that appears, including the Nextcloud WebDAV URL you copied
earlier, Nextcloud username, and Nextcloud password
Click Add new WebDAV Account
Refresh your server

Click the button on the right side of your message composer inside any chat or room again, and this
time, you will see the server you just added

From here, you have the ability to access and share your Nextcloud files on BANKTEXT
Nextcloud BANKTEXT App

The Nextcloud BANKTEXT App integration offers a very powerful Open Source collaboration platform with
a very high level of security and ownership. The flexibility to enjoy features from both solutions combined
gives you a step further to use the ultimate open-source alternative to MS 365.

Nextcloud BANKTEXT App Setup

Prerequisites

To use the Nextcloud Rocket.App, you are expected to have the following workspaces running:

BANKTEXT following our deployment guide


Nextcloud

Connecting Nextcloud with BANKTEXT requires your BANKTEXT sever to be on an SSL-


protected domain. This is strictly for security reasons.
You need to make the following changes to your BANKTEXT settings
Have two-factor Authentication disabled on your BANKTEXT settings Administration >
Workspace > Settings > Accounts > Two Factor Authentication
Disable Restrict access inside any Iframe Administration > Workspace > Settings >
General > Restrict access inside any Iframe

Enable to send and receive data inside an iframe Administration > Workspace > Settings >
General > Iframe Integration

Setup

When that is all done, follow these procedures to get setup

Go to your Nextcloud Dashboard and navigate to the Apps section

Navigate down to the Social & Communication category and locate the BANKTEXT App then
Download and Enable
Head over to your Nextcloud settings section and you will find a BANKTEXT menu, open it to
proceed with linking your BANKTEXT workspace

Fill in the BANKTEXT URL, admin username, and password to authenticate, click on Connect and
Save. This will automatically generate an access token and userId to be used
After connecting, the Admin User ID and Admin Token will be automatically filled, and your app is ready
for use
Now along with other existing Nextcloud apps, you should see you now have BANKTEXT included

Clicking on the BANKTEXT icon will open up the chat interface like normal, all within Nextcloud.
Features
Using this integration gives you the possibility to:

Extend and streamline communication with external parties using BANKTEXT’s federation and bridges
into Slack and Microsoft Teams.
Easily collaborate on projects and documents using BANKTEXT’s chat right in Nextcloud.

Use a single productivity platform that integrates with other tools, including Nextcloud, and keeps all
communications and notifications in one place.
Leverage more advanced user governance features, access levels, and role-based permissions
Easily map even the most complex organizational structure into groups, teams, and discussions.
Securely collaborate and communicate with anyone via the world’s leading social media channels such
as Whatsapp, Messenger, Twitter, Instagram, Telegram, and others.
Turn their chats into productivity tools using integrations with various HR tools, CRM solutions, ticketing
systems, project management solutions, and developer tools to build powerful workflows.
Make digital workplaces and communities more engaging and collaborative using BANKTEXT’s
marketplace of apps.
Ensure full governance of all their communications using message audits, flexible retention policies,
powerful engagement analytics and dashboards, and more.
Send advanced message formatting like code snippets, formula syntax, message threads, and more.
Nixstats notification

Add Nixstats notifications via a new WebHook in BANKTEXT

1. In BANKTEXT go to Administration > Workspace > Integrations and create New Integration.
2. Choose Incoming WebHook.
3. Follow all instructions like Enable, give it a name, link to channel, etc. Set "Enable Script" to true and
enter the javascript in the "Script" box.
4. Hit Save changes and copy the Webhook URL (added just below the script box).
5. Go to https://nixstats.com -> Settings -> Notification Contacts -> Add (or Edit a contact) contact.
6. Paste the BANKTEXT URL you've copied in step 4.

Paste this javascript in the "Script" textarea on BANKTEXT webhook settings


/* exported Script */
/* globals console, _, s */

/** Global Helpers


*
* console - A normal console instance
* _ - An underscore instance
* s - An underscore string instance
*/

class Script {
/**
* @params {object} request
*/
process_incoming_request({ request }) {
var url;
var url_title;
if(request.content.domain_id)
{
url = 'https://nixstats.com/domains/'+request.content.domain_id;
url_title = request.content.name+" @ nixstats.com";
}
else
{
url = 'https://nixstats.com/server/'+request.content.server_id;
url_title = request.content.server_name+" @ nixstats.com";
}
return {
content:{
text: request.content.subject,
"attachments": [
{
"author_name": url_title,

"author_link": url,
"author_icon": "https://nixstats.com/images/favicon.png"
}
]
}
};
}
}

Render nixstats graphs in BANKTEXT


Add Nixstats notifications via a new WebHook in BANKTEXT
1. In BANKTEXT go to "Administration"->"Integrations" and create "New Integration".
2. Choose Outgoing WebHook.
3. Select Message Sent as Event trigger.
4. Enter ns as trigger word.
5. Enter <https://api.eu.nixstats.com/v1/> as URLs.

6. Avatar URL <https://nixstats.com/images/favicon.png> .

7. Token, this is your nixstats API token, create an API key.


8. Script Enabled set to True.

Paste this javascript in the "Script" textarea on BANKTEXT webhook settings


/* exported Script */
/* globals Store */

class Script {
prepare_outgoing_request({ request }) {
let match;

match = request.data.text.match(/^ns servers\s(ls|list)\s*(.*)?$/);


if (match) {
let u = request.url + 'servers?perpage=99&token='+request.data.token;
return {
url: u,
headers: request.headers,
method: 'GET'
};
}

match = request.data.text.match(/^ns graphs\s(.*)?$/);


if (match) {
var matched = false;
var options;
var serverrequest = HTTP('GET', request.url + 'servers?perpage=99&token='+request.data.
var serverlist = []
JSON.parse(serverrequest.result.content).servers.forEach(function(pr) {
serverlist.push({'name': pr.name, 'id': pr.id});
});

serverlist.forEach(function(serv) {
if(serv.id == match[1])
{
matched = serv.id;
}
if(serv.name == match[1])
{
matched = serv.id;
}
});

if(!matched){
return {
message: {
text: 'Server not found.'
}
};
}
else
{
let u = request.url + 'server/'+matched+'?charts=yes&token='+request.data.token;
return {
url: u,
headers: request.headers,
method: 'GET'
};
}
}

match = request.data.text.match(/^help$/);
if (match) {
return {
message: {
text: [
'**Nixstats commands**',
'```',
' ns servers ls|list',
' ns graphs serverid|servername',
'```'
].join('\n')
}
};
}
}

process_outgoing_response({ request, response }) {


var text = [];
var attach = [];
if(response.content.charts)
{
response.content.charts.forEach(function(pr) {
attach.push({
"color": "#000000",
"text": pr.title+" on "+response.content.name,
"image_url": pr.url,
});
});
text.push('Performance of '+response.content.name);
}
else
{
text.push('```');
response.content.servers.forEach(function(pr) {
text.push(''+pr.id+"\t "+pr.last_data.load.replace(",",",\t")+"\t"+pr.name+'');
});
text.push('```');
}
return {
content: {
text: text.join('\n'),
attachments: attach,
parseUrls: false
}
};
}
}
After saving the data you can use the following commands to retrieve data:

ns servers list to list your servers with their IDs and load average.

ns graphs [serverid] to retrieve a graph of Memory, Network, Load average and Disk usage of the
specified server.
PagerDuty

PagerDuty is an alarm aggregation and dispatching service for system administrators and support teams. It
collects the alerts from your monitoring tools, gives you an overall view of all of your monitoring alarms, and
alerts an on-duty engineer if there's a problem.

Admin Settings

Log in as an administrator and go to Administration > Workspace > Integrations > New Integration >
Incoming Webhook and configure the following settings:

Enabled: Enable this option to integrate the PagerDuty with BANKTEXT.


Name (Optional): Enter the preferred name for your PagerDuty connection.
Post to Channel: Messages that are sent to the Incoming Webhook will be posted here. Start with @
for the user or # for the channel. Eg: @john or #general

Post as: Choose the username that this integration will post as. The user must already exist.
Alias (optional): Choose the alias that will appear before the username in messages.
Avatar URL (optional): An option to override the avatar used to post from this integration. Should be a
URL of an image.
Emoji (optional): Use an emoji as an avatar. Example: :ghost:

Script Enabled: Enable this option to add the script.


Script: Paste contents of rocketchat_pagerduty_incoming.js into the Script field.

Webhook URL: Copy the Webhook URL as soon as you save the integration and proceed to the
configuration of generic webhook integration in PagerDuty.
Token: An auto-generated token.
Example Payload: Customize the payload template.

Click Save.

PagerDuty

To configure your webhook:

1. In PagerDuty, navigate to the Service Extensions > New Extension.


New Extension

1. For Extension Type select Generic Webhooks(v3).


2. Enter a unique Extension Name e.g. rocketchatpage and choose the service.
3. Select the Service you wish to add.
4. Add the Webhook URL.

More details:
PagerDuty WebHook Docs
Prometheus

Prometheus is an open-source systems monitoring and alerting toolkit. To integrate alerts from Prometheus'
Alertmanager follow the install instructions here:

GitHub - pavel-kazhavets/AlertmanagerRocketChat: Integration of Alertmanager notifications i…


GitHub

Alternative integration that creates concise messages:

GitHub - puzzle/prometheus-rocket-chat: A BANKTEXT webhook that receives Prometheus Al…


GitHub
Review Board

Add ReviewBoard notifications via a new WebHook in BANKTEXT

1. In BANKTEXT go to Administration > Workspace > Integrations and create New Integration
2. Choose Incoming WebHook
3. Follow all instructions like Enable, give it a name, link to channel etc. Set Enable Script to true and
enter the contents of this script
4. Press Save changes and copy the WebHook URL (added just below the script box)
5. In ReviewBoard, configure a new WebHook per these instructions
RunDeck Job Notifications

This plugin can be set to notify a channel when a job Starts, Fails or has Succeeded

Rundeck is an open orchestration and scheduling platform used for operations support tasks, enterprise job
scheduling, deployment, and more.

It's commonly found in the ChatOps space due to its flexible API.

1. Download the rundeck-rocketchat-notifier from GitHub.


2. Set up an Incoming Integration and take note of the URL.
3. Install the plugin on your RunDeck machine as per the instructions in the git repo linked above.

Once configured you'll have notifications like the example below:


Sentry

Add Sentry notifications via a new WebHook in BANKTEXT This script works for the sentry.com and self-
hosted versions.

1. Follow all instructions for creating an incoming webhook.


2. Login to your project on Sentry and go to Settings > Developer Settings > Create New Integration >
Internal Integration > Next.
3. Give your integration a name, copy the webhook URL generated, and paste it into the Webhook URL
field.

4. Turn on Alert Action Rule. This is important so that your incoming webhook URL is notified when there
is an event on Sentry.
5. Enter appropriate values for the Permissions section and select the types of events to notify your
incoming webhook.
6. Click Save Changes.
7. Clone Sentry's example project and follow the instructions in the repository to run the backend and
frontend to test and trigger different event types.

The script below gets different attributes of a Sentry event and sends it as a message to your configured
channel when creating the webhook.

class Script {

process_incoming_request({request}) {
// console is a global helper to improve debug
// console.log(request.content);

return {
content: {
text: "Error in project *" + request.content.project + "\n*Message:* " +
request.content.message + "\n*Culprit:* " + request.content.culprit
}
};
}
}

Use the console.log(request.content) line to debug the JSON content posted by Sentry.
Simple Telegram Bot

A simple relay communication between BANKTEXT and Telegram is possible by configuring a basic bot.
The guide below shows a community example of how this can be achieved with webhooks.

This gives you the possibility of relaying messages between Telegram and BANKTEXT in a specified room
of your choice.

BANKTEXT Enterprise workspaces have the Telegram App packaged with many more
functionalities and other Omnichannel features to use.

Note: This integration is not designed to work for Omnichannel Conversations. Please check out
the Telegram App for serving your Omnichannel conversations with Telegram.

Getting Started

Make sure Your BANKTEXT workspace URL is publicly available.

1. Log in to your Telegram account on your mobile or using a browser.


2. Add and open a conversation with the user BotFather .

3. Click start.
4. Send /newbot to start creating a new bot.

5. Follow the instructions to continue.


Set the bot's username. Telegram successfully creates the bot and shows how to access it.
6. Copy the token provided, it is needed for the configuration.

Configuration

Before configuring the Telegram integration, make sure you:


Create a channel on BANKTEXT for incoming and outgoing conversations.

Create a user with bot the role to be used for the relay.

Creating an Incoming Telegram webhook in BANKTEXT


The incoming webhook is responsible for relaying messages from Telegram into BANKTEXT into a specific
Channel.

To create an incoming webhook:

Go to Administration > Workspace > Integrations in BANKTEXT


Create a new Incoming Webhook following the guide Create a new incoming webhook
Enable the integration
Set the webhook integration name.
Set the Post to Channel as the channel created above.
Set Post as, as the user created above.
Enable the script and paste the following code.
class Script {
addQuotePrefix(str) {
let tmp = str.split('\n'),
res = [];

for (const frag of tmp) {


res.push(`> ${frag}`);
}

return res.join('\n');
}

process_incoming_request({ request }) {
// UNCOMMENT THE BELOW LINE TO DEBUG IF NEEDED.
// console.log(request.content);
if ('edited_message' in request.content) {
request.content.message = request.content.edited_message;
}
let from = request.content.message.from;
let who = from.username
let icon_url = '/avatar/' + from.username + '.jpg'
if(!who) {
if (from.first_name && from.last_name) {
who = `${from.first_name} ${from.last_name}`
} else if (from.first_name) {
who = from.first_name
} else {
who = from.last_name
}
icon_url = `/avatar/${request.content.message.from.first_name}.jpg`
}
let body = request.content.message.text

if(!body) {
if(request.content.message.hasOwnProperty("sticker") && request.content.message.sti
// It's a sticker
body = request.content.message.sticker.emoji
} else {
return {}
}
}

if(request.content.message.reply_to_message) {
var quotedMessage =
"*" +
request.content.message.reply_to_message.from.username +
"*\n" +
request.content.message.reply_to_message.text;

quotedMessage = this.addQuotePrefix(quotedMessage);
body = quotedMessage + '\n' + body;
}
return {
content: {
username: who,
icon_url: icon_url,
text: body
}
};
}
}

Save the integration.

This creates a new incoming integration with a webhook URL and token provided.

Setting Telegram webhook

Copy the incoming webhook URL provided by BANKTEXT after saving.


Change the following URL with yourTelegramBotToken and Incoming webhookURL and open it
on your browser.

https://api.telegram.org/bot<my-telegram-authorization-token>/setwebhook?url=<Incoming_Webhoo

A response indicating success is sent which looks like this:

{
"ok": true,
"result": true,
"description": "Webhook was set"
}

Test Telegram Incoming Integration

Test your incoming Webhook by sending a telegram message to the Telegram bot.

The message sent gets posted in channel by the user you specified in the incoming webhook
configuration page.

Creating a Telegram Group with Bot access

A Telegram group can be configured to send and receive messages to and from BANKTEXT.

Create a Telegram group and grant bot access.


Create a new Telegram group.
Get the group chat id. This can be gotten by:
Adding the user RawDataBot to the group

On joining, a response like below is seen with the chat id

Your chat id is -873457731, your id is 1140377161

Also you can send me username or joinchat link in a private message

Kisses, your bot

Change the bot group privacy settings so it can listen to all messages by:
Sending the message /setprivacy to BotFather.

Choosing the bot you want to edit.


Setting the status to Disable.

Creating an Outgoing Telegram webhook in BANKTEXT

The outgoing integration is used to relay messages back from BANKTEXT to Telegram.

Go to Administration > Workspace > Integrations in BANKTEXT.

Create an outgoing webhook following this guide Create a new outgoing webhook .
Select the Message sent as the Event Trigger.
Enable the integration.
Set any Trigger Words which messages must have before they get relayed if needed.
Specify the channel to listen to.
Set the URL following this format:

https://api.telegram.org/bot<my-telegram-authorization-token>/sendMessage?chat_id=<chat-id>

Enable Script and paste the following code


class Script {
prepare_outgoing_request({ request }) {
if (request.data.bot) {
//Don't repost messages from the bot.
return { };
} else {
return {
url: request.url + '&parse_mode=HTML' + '&text=' + encodeURIComponent('<b>' +
method: 'GET'
};
}
}
}

Save the integration.


Add your bot to the telegram group and enjoy cross-platform communication between BANKTEXT and
Telegram.

Multiple Outgoing Triggers can be configured to cover all use cases.


The scripts can be customized as needed. Learn more here Script details
TravisCI

Add TravisCI notifications via a new WebHook in BANKTEXT

Receive alerts

1. Create a new Incoming WebHook.


2. Select the channel where you will receive the alerts. You may wish to create a dedicated channel for
your notifications.
3. Select an account from which the alerts will be posted. You may wish to create a dedicated account just
for notifications.
4. Set the "Enable Scripts" option to True .

5. Copy scripts below and paste it in Script field.


6. Save the integration. This will generate a webhook URL and secret for you.

7. In your .travis.yml file add WebHooks parameter with webhook URL generated.

notifications:
webhooks: <webhook_url_generated>

This script will generate notifications for the following build events:

Build finished status for any pushed code

Build finished status for new Pull Request

Screenshot of messages generated by TravisCI integration script

Note: If status is passed, message color is green otherwise it is red.


const buildMessage = (obj) => {
const min = Math.floor(obj.duration / 60);
const sec = obj.duration - min * 60;

let template = `Build [#${obj.number}](${obj.build_url})`;


template += ` ([${obj.commit.substring(0, 7)}](${obj.compare_url})) of`
template += ` ${obj.repository.owner_name}/${obj.repository.name}@${obj.branch}`;
if(obj.pull_request) {
let pr_url = `https://github.com/${obj.repository.owner_name}/`;
pr_url += `${obj.repository.name}/pull/${obj.pull_request_number}`;
template += ` in PR [#${obj.pull_request_number}](${pr_url})`;
}
template += ` by ${obj.author_name} ${obj.state} in ${min} min ${sec} sec`;

let status_color = '#36A64F';


if(obj.state !== 'passed') {
status_color = '#A63636'
}

return {
text: template,
color: status_color
};
};

class Script {
process_incoming_request({ request }) {
msg = buildMessage(request.content);

return {
content:{
attachments: [
{
text: msg.text,
color: msg.color
}
]
}
};
}
}

If you want more customizations, please look in TravisCI documentation: https://docs.travis-


ci.com/user/notifications/#Configuring-webhook-notifications
Uptime Robot

Add Uptime Robot notifications via a new WebHook in BANKTEXT. See the project's documentation for
integration instructions.

Uptime Robot Integration


Zapier

Zapier integration has been deprecated from BANKTEXT 6.0.

You can install the Zapier app from Marketplace to avoid disruptions.

Zapier lets you connect BANKTEXT to hundreds of other web services. Automated connections called
Zaps, set up in minutes with no coding, can automate your day-to-day tasks and build workflows between
apps that otherwise wouldn't be possible.

Before you get started, there are a few things that you have to check.

You are required to have a BANKTEXT server accessible publicly

A user with the impersonate user permission to be used for authentication.


Zapier OAuth is configured by default at Admin -> oAuth Apps -> Zapier

Log in or create a new Zapier account


From your Zapier dashboard, click on My Apps then click on Add Connection.

Search for BANKTEXT and choose it in the popup that shows


A new window will open. Fill in your workspace url(keep the trailing slash) and continue
You are then redirected to your workspace to authenticate. Authenticate with any user having the
impersonate user permission
Accept all the privileges needed and Authorize
Your new connection is ready to be used with other Zapier apps
You can test the connection by clicking on the 3 dots by the side as seen below

Once that is done you can start creating an automation! Use a pre-made Zap or create your own with the
Zap Editor. Creating a Zap requires no coding knowledge and you'll be walked step-by-step through the
setup.

Each Zap has one app as the Trigger, where your information comes from and which causes one or more
Actions in other apps, where your data gets sent automatically.
django-rocketchat-auth 1.2
Authenticate BANKTEXT user with Django Framework

Authenticate the users with Django Web Framework. This application implements the API used by
BANKTEXT IFrame authentication. Also, it handles logout by wiring up a method on Django signals.

Tested with Django 2.0.4 and BANKTEXT 0.62.2. If you have any problems, please open an
issue.

Configuration
1. Install this app in your project:
pip install django-rocketchat-auth

2. Add “rocketchat_auth” to your INSTALLED_APPS setting like this:


INSTALLED_APPS = (
...
'rocketchat_auth',
)

3. Get a BANKTEXT authentication token, so we can use the API.


4. Update your settings.py:
MONGO_DB = 'localhost:27017'
# or more verbose (e.g. for Heroku)
# MONGO_DB = '<dbuser>:<dbpassword>@<dbhost>:<dbport>/<dbname>?authSource=<dbname>'

ROCKETCHAT_URL = 'http://localhost:3000'

ROCKETCHAT_AUTH_TOKEN = '<YOUR AUTH TOKEN FROM STEP 3>'


ROCKETCHAT_USER_ID = '<YOUR USER ID>'

CORS_ORIGIN_WHITELIST = (
'localhost:8000',
'localhost:3000',
)

5. Include the rocketchat_auth URLconf in your project urls.py like this:


urlpatterns += [url(r'^rocketchat/', include('rocketchat_auth.urls'))]

6. Since we will put your Django app into an iframe, we have to set up some security measures that would
prevent it from happening.
Install django-cors-headers and set your BANKTEXT domain in CORS_ORIGIN_WHITELIST.

Configure Django's XFrameOptionsMiddleware to exempt your login page for BANKTEXT requests
or disable it (dangerous).

Configure Django's CsrfViewMiddleware to exempt your login page for BANKTEXT requests or
disable it (dangerous).
7. To access this settings, go to: Administration > Workspace > Settings > Accounts

Enabled: Enable this option to authenticate users using your own login page in place of the
Rocket. Chat's login page via the iframe integration. Please check the Iframe integration page for
more information.
Iframe URL: Enter **** the URL (http://localhost:8000/login/?next=/rocketchat/redirect)of the page
you want to show as the login page of your BANKTEXT instance.
API URL: Enter the URL (http://localhost:8000/rocketchat/api), which refers to the endpoint on the
third-party system. This will check if the user is already logged in to that system.
API Method: Specify the API (POST) method that BANKTEXT will use to submit information to the
API URL.
Add Jira notifications via webhook

N_otify on issue creation, deletion, status, resolution, comment, or priority changes._

1. In BANKTEXT go to Administration > Workspace > Integrations and create New Integration
2. Choose Incoming Webhook

3. Follow all instructions like Enable, give it a name, link to channel etc. Set Enable Script to true and
enter the content of this script in the Script box
4. Hit Save changes and copy the Webhook URL (added just below the script box)

5. Go to your jira as administrator and follow instructions on adding an outgoing webhook here

You can tweak the content of the script to suit your needs better.

Add Jira integration via outgoing webhook


Integration for BANKTEXT that summarizes any JIRA issues mentioned.

1. Go to https://github.com/gustavkarlsson/rocketchat-jira-trigger and follow the instructions.

Example of Jira integration:

Jira integration
OAuth Applications
With BANKTEXT OAuth Applications, you can set up custom applications to be used
for Open Authentication.

To access this menu, navigate to Administration > Workspace > OAuth Applications.

This dashboard shows the various OAuth apps linked.

Adding New OAuth Application


To add a new OAuth app from your OAuth Applications dashboard, click the +New Application button at the
top right.

You are presented with a screen to fill out the required information for the OAuth app.

Fill in the information according to the app you are linking.

1. Active: Enable this to set active the OAuth App.


2. Application Name: Takes in the name of the application. This will be seen by your users.
3. Redirect URI: After OAuth2 authentication, users will be redirected to an URL on this list. You can add
one URL per line.
4. Save: When you are done filling in the information, hit Save to commit the changes.

Viewing and Editing OAuth Apps


From the OAuth dashboard( Administration > Workspace > OAuth Applications. ), you can see a list of
OAuth Apps created where you can click on any to view and edit the configurations made.
Mailer
Use the Mailer tool to send emails to users inside your BANKTEXT server.

To access this menu, navigate to Administration > Workspace > Mailer.

Use the From field to set the address to send the email.

Check the Dry Run option to send the email only to the address defined in From .

You can also filter who receives the email by using a valid user query in the Query field.

Then, you can write a subject and a body for the email. When you write the body, add brackets to add
dynamic data to the body.

Add the following brackets to the email body:

[unsubscribe] : creates an unsubscribe link. The email body must have an unsubscribe link.
[name] : uses the full name of the user that receives the email
[fname] : uses the first name of the user that receives the email
[lname] : uses the last name of the user that receives the email
[email] : uses the email address of the user that receives the email
User Status

The BANKTEXT User Status setting lets you manage users' presence and status in your workspace.

A Presence is used to determine the Status of a user in the workspace.

By default, BANKTEXT has the following Presence presets.

Online: Used to indicate a user is online and available.

Away: Indicates a user is idle and away from the workspace. See how to configure the Idle time limit
here Default User Preferences or as a user in User Presence.
Busy: This shows a user is busy and unavailable on the workspace.
Offline: Used to indicate a user is offline and not connected.

To access this menu,

Navigate to Administration > Workspace > User Status

Presence Service
With the Presence service enabled, users can see the status of other users in the workspace.

To enable the Presence service,

Navigate to Administration > Workspace > User Status > Presence service. The Presence service
cap side panel opens up.
Toggle the Service status to on.

The Presence service automatically gets disabled when concurrent connections are up to 200 on
BANKTEXT Free Edition(Community Edition).
Enterprise workspaces have no cap on the Presence service.
When the Presence service gets disabled automatically due to the cap on concurrent
connections,
Users see the status indicator for all users, including themselves as disabled .

The workspace Administrator has to manually reactivate the Presence service when the total
number of connections drops below the connection limit of 200.
Workspace users and administrator(s) are notified that Presence is inactive because the
workspace has exceeded the connection limit.

Custom Status
To create a custom status,

Navigate to Administration > Workspace > User Status > New custom status. A side panel opens
up.
Enter a name for your custom status.

Select a presence to tie with your custom status.


Hit Save

Use Custom Status

Created custom status shows up along with the default status presets to all users across your workspace.

To set a custom status,

Click on your avatar by the top left of your workspace


A dropdown is seen
Select the custom status from the list of statuses.

Delete/Edit Custom Status

To delete or edit a custom status,

Navigate to Administration > Workspace > User Status

Search and click the custom status you want to edit or delete.
Hit Delete or Edit to delete or update the selected status, respectively.
Permissions

BANKTEXT has a vast and customizable permissions system. Most actions a user can make require
particular permission, so you can customize what users can do and see.

To access this menu:

Navigate to Administration > Workspace > Permissions

Permission changes are immediate and transparent. Users do not need to log out, log in, or
refresh for permissions to be applied.

Roles
A Role is a set of permissions that are given to users. BANKTEXT comes with a set of default roles that
can be modified.

Roles are shown as little tags on the side of a username on messages.

Scope of Roles

Roles can have different scopes. Currently, we have two scopes Global and Rooms .

Global scope: A role with the Global scope is valid for the whole server.

Room scope: A role with the Room scope gets applied to rooms, where a user has to be elected to that
role in that channel.

An example of Global scope role is the admin role having permissions valid for the whole server, while
a moderator role is a Room scope role which has permissions valid only in a channel they were elected
for.

Creating Custom Roles

As a workspace administrator, you can create new roles with custom permissions for your workspace.

As from BANKTEXT V6.0.x.x the creating and editing of custom roles is an enterprise
feature.

To create a new role,


Navigate to Administration > Workspace > Permissions
Click on New role
A side panel opens, provide the details required

Role: Name of the role.


Description: Set a description of the role.
Scope: Select what scope the role is to take effect on.
Save

You can now allocate permissions to the role by checking the checkbox corresponding to each permission
beneath the role.

Default Roles

admin (Users) - Have access to all settings and administrator tools.

moderator (Subscriptions) - Have moderation permissions for a channel. It has to be elected by


a channel owner.
owner (Subscriptions) - Have owner permissions for a channel. Users who create a channel
become the owner of that channel. They can also elect more owners for that channel.

user (Users) - Normal user rights. Most users receive this role when registering.

bot (Users) - Special Role for bot users, with some permissions related to bot functionality.

leader (Subscriptions) - it doesn't have any special permissions but is used when setting a
leader to a channel. Leaders appear on the header of a channel.
anonymous (Users) - unauthenticated users that access the server when the Allow Anonymous
Read setting is activated.
guest (Users) - anonymous users that want to write and participate in channels when the Allow
Anonymous Read and Allow Anonymous Write settings are activated.
livechat-agent (Users) - Agents of Live Chat. They can answer to Live Chat requests.

livechat-manager (Users) - Manager of Live Chat, can manage agents and guests.

livechat-guest (Users) - Users coming from a Live Chat channel.

Permissions Available
Permission Purpose

Permission to use the Mailer Tool. Accessible fro


access-mailer
Administration -> Mailer.

Permission to create and edit roles and


access-permissions permissions. Accessible from Administration ->
Permissions.

Permission to manage different OAuth services a


add-oauth-service apps. Accessible from Administration -> OAuth
Apps.

add-user-to-any-c-room Permission to add a user to a public channel.

add-user-to-any-p-room Permission to add a user to a private channel.

add-user-to-joined-room Permission to add a user to a joined channel.

Permission to call api without rate limitation. See


api-bypass-rate-limit
Rate Limiter.

archive-room Permission to archive a channel.

Permission to promote user to Admin. Requires


assign-admin-role view-user-administration permission. Accessible
from Administration -> Users.

Permission to assign roles for a user. Requires


assign-roles view-user-administration permission. Accessible
from Administration -> Users.

Permission to use the Auto Translate Tool.


auto-translate Accessible from Administration > Workspace >
Settings > Message > Auto Translate.

ban-user Permission to ban a user.

bulk-create-c Permission to bulk create public channels.

bulk-register-user Permission to bulk add users.

Permission to start a meeting. Requires Video


call-management Conference -> BigBlueButton enabled. Accessibl
from More -> BBB Video Chat -> Start Meeting.

Permission to prune a channel's messages and/o


clean-channel-history
files.

Permission to prune a group's messages and/or


clean-group-history
files.
clean-direct-history Permission to prune direct messages and/or files.
close-livechat-room Permission to close your own Live Chat channels

close-others-livechat-room Permission to close other Live Chat channels.

create-c Permission to create public channels.

create-d Permission to start direct messages.

create-p Permission to create private groups.

Permission to create Personal Access Tokens.


create-personal-access-tokens Accessible from My Account -> Personal Access
Tokens.

Permission to create new users. Accessible from


Administration -> Users. Click the + sign found on
create-user
the top right hand corner of the Users list to create
new user.

delete-c Permission to delete public channels.

delete-d Permission to delete direct messages.

delete-message Permission to delete a message within a channel

delete-p Permission to delete private channels.

delete-user Permission to delete users.

edit-message Permission to edit a message.

Permission to enable or disable other accounts.


edit-other-user-active-status
Accessible from Administration -> Users.

Permission to change other user's name, usernam


edit-other-user-info or email address. Accessible from Administration
Users.

Permission to modify other user's passwords.


edit-other-user-password Requires edit-other-user-info permission.
Accessible from Administration -> Users.

edit-privileged-setting Permission to edit privileged settings.

Permission to edit a room's name, topic, type


edit-room (private or public status) and status (active or
archived).

edit-room-retention-policy Permission to edit's a room's retention policy.

Permission to forcefully delete messages,


force-delete-message
independent of any deletion blocking setting.
Permission to bypass join codes when entering a
join-without-join-code
channel with a join code set.

leave-c Permission to leave the public channel.

leave-p Permission to leave the private channel.

Permission to use the "Mail Messages" tool in the


mail-messages
channel actions menu.

Permission to manage all apps. Accessible from


manage-apps
Administration -> Apps.

Permission to manage assets. Must also be admi


manage-assets
Accessible from Administration -> Assets.

Permission to manage cloud. Requires view-user


manage-cloud administration permission. Accessible from
Administration -> Cloud.

Permission to add custom emojis to the server.


manage-emoji
Accessible from Administration -> Custom Emoji.

Permission to manage all outgoing integrations.


manage-outgoing-integrations
Accessible from Administration -> Integrations.

Permission to manage all incoming integrations.


manage-incoming-integrations
Accessible from Administration -> Integrations.

Permission to manage OAuth apps. Accessible


manage-oauth-apps
from Administration -> OAuth.

User can create and edit own outgoing integration


manage-own-outgoing-integrations
webhooks.

User can create and edit own incoming integratio


manage-own-incoming-integrations
- webhooks.

Permission to manage sounds. Accessible from


manage-sounds
Administration -> Custom Sounds.

mention-all Permission to mention everyone in a channel.

mention-here Permission to notify active users in a channel.

Permission to impersonate other users using


message-impersonate message alias. Accessible from Administration ->
Permissions. |

Permission to mute other users in the same


mute-user
channel.

pin-message Permission to pin a message in a channel.


Permission to post messages on read-only
post-readonly
channels.

preview-c-room Permission to preview public channels.

Permission to close Live Chat rooms. Requires


remove-closed-livechat-rooms view-livechat-rooms permission.
Accessible from Live Chat -> Current Chats.

remove-user Permission to remove users from channels.

Permission to set E2E key. See End to End


reset-other-user-e2e-key
Encryption.

Permission to use the data importer tools. Must


run-import also be an admin. Accessible from Administration
> Import.

run-migration Permission to run migrations.

Permission to add additional information to both t


save-others-livechat-room-info
visitor and Live Chat rooms.

Permission to bypasses rate limit of 5 messages


send-many-messages
per second.

set-leader Permission to set leaders for channels

set-moderator Permission to set moderators for channels.

Permission to set other users as owner of a public


set-owner
channel.

set-react-when-readonly Permission to react to messages in only channels

Permission to set room read-only. Accessible from


set-readonly
Room Info -> Edit.

snippet-message Permission to create message snippets.

start-discussion Permission to start a discussion.

Permission to start a discussion, which gives


start-discussion-other-user permission to the user to create a discussion from
message sent by another user as well.

unarchive-room Permission to unarchive channels.

user-generate-access-token Permission to create authorization tokens for user

Permission to view the list of users in a broadcast


view-broadcast-member-list
channel.
view-c-room Permission to view public channels.
Permission to view direct messages. Does not
view-d-room affect the ability to begin/start a direct message wi
another user.

Permission to view full profile of other users


view-full-other-user-info
including account creation date, last login, etc.

view-history Permission to view the channel history.

view-join-code Permission to view the join code of channels.

view-joined-room Permission to view current joined channels.

view-l-room Permission to view Live Chat channel.

Permission to view Live Chat analytics. Requires


view-livechat-analytics Live Chat feature enabled and view-Livehat-
manager permission.

view-livechat-manager Permission to view other Live Chat managers.

view-livechat-rooms Permission to view a list of Live Chat channels.

Permission to view logs. Accessible from


view-logs
Administration -> View Logs.

View Omnichannel Contact Center Permission to manage access to the contact cent

Permission to manage channels on the admin


view-other-user-channels
screen.

Permission to find new channels and users. User


without this permission won't see channels that
view-outside-room
they are not part of when searching using the
spotlight.

view-p-room Permission to view private channels.

view-privileged-setting Permission to view privileged settings.

Enables Administration -> Channels module.


Enables Permission to view public, private, and
view-room-administration
direct message statistics. Does not include
permission to view conversations or archives.

Enables Administration -> Info module. Enables t


permission to view system statistics such as
view-statistics
number of users logged in, number of rooms,
operating system information.

Enables Administration -> Users module. Only


includes partial, read-only list view of other user
accounts currently logged into the system. No use
view-user-administration
account information is accessible with this
permission. Add view-full-other-user-info to see a
complete list of other users via the Administration
> Users.
Permission to check the details about who used t
auditor-log
Message Auditing Panel and their search results

Permission to check the details about who used t


can-audit-log
Message Auditing Panel and their search results

Permission to who can view engagement


view-engagement-dashboard
dashboard

Allow file download on mobile permission to allow mobile users to be able to


devices download and upload files from and to the server
Settings
These are the various settings for admin users to configure their workspaces.

To access the settings page, go to Administration > Workspace > Settings.

Accounts: Common BANKTEXT user account settings such as anonymous reads, usernames, passwords,
and email modifications can be configured under Accounts.

Analytics: Investigate how users interact with your workspace.

Assets: Learn how to provide scalable assets for your brand's identity.

Atlassian Crowd: Discover how to link BANKTEXT with Atlassian Crowd.

Bots: Find out how to set the fields that can be utilized and referenced while developing bots.

CAS: Learn how to configure Central Authentication Service to allow members to use one set of credentials
to sign in to multiple sites over multiple protocols.

Conference Call: Choose Pexip or Jitsi as conference call providers for your BANKTEXT workspace while
enabling any for direct messages, private and public rooms, and teams.

Custom Emoji Filesystem: Specify whether to store emojis on GridFS or your storage.

Custom Sound Filesystem: Find out how to specify how custom sounds are saved on your workspace.

Device management: Become familiar with configuring security and access control rules for your
workspace.

Discussion: Learn how to configure whether users can accept invitations to join particular talks from other
channels.

E2E Encryption: Discover how to turn on end-to-end encryption to maintain the confidentiality of user
communications.

Email: Learn how to configure how broadcast email template formats are sent from your BANKTEXT server.

Federation: Learn how to configure multiple workspaces to communicate with each other.

File Upload: Configure the type of storage and turn on or off user-document upload on your workspace
server.

General: Learn how to configure available workspace settings.

IRC Federation: Learn to configure how to connect to other IRC servers.

Layout: Under the Layout option, you can personalize the appearance of your BANKTEXT workspace by
specifying various colors or providing custom CSS.

LDAP: Learn how to configure Lightweight Access Directory Protocol so that no one can access or cannot
access information about your server or business.

Livestream & Broadcasting (Youtube): Enable channel administrators to broadcast to Youtube Live.

Logs: Learn to configure how server logs are received, the log level, and other essential log settings.

Message: Message settings such as message pinning, starring, deleting, and others can be found under the
Message option.

Meta: Enable better search engine optimization (SEO) for your BANKTEXT server by providing custom
metadata for your instance.

Mobile: Check how you can help users using BANKTEXT mobile app to save files to the device storage
while enforcing biometrics, pin, or Face ID to gain access to your workspace.

OAuth: Ensure that users of your workspace can connect to it using third-party authentication providers
such as Facebook, GitHub, Google, Apple, and more.

Omnichannel: Explore the Omnichannel option to talk to your clients from BANKTEXT without the need to
install the messaging apps they are using, such as WhatsApp.

OTR: Under off-the-record chats, enable private, encrypted messaging in direct discussions, which are also
deleted when conversations are finalized.

Push: Customize notification behaviors for users using the BANKTEXT mobile apps.

Rate Limiter: Limit network traffic and potential bot attacks on your BANKTEXT server by limiting the
number of hits on the server within a specified timeframe.

Retention Policy: Learn to configure whether to enable the automatic removal of old messages and files
across your workspace.

SAML: Enable using the Security Assertion Markup Language standard to exchange authentication and
authorization information.

Search: Check how to select and configure your workspace's search provider.

Setup Wizard: Learn how to provide specific details about your BANKTEXT workspace, such as the
company name, type, and size.

SlackBridge: Master how to set up BANKTEXT direct communication with Slack.

Smarsh: Become familiar with setting up email communication preservation.

SMS: Discover how to enable, choose, and configure any SMS gateway providers, which are Twilio, Mobex,
or Vortelesys, to use for your workspace.

Threads: You can find out how to enable message threads on specific conversations in your workspace.

Troubleshoot: Learn how to configure how error correction should be handled in your BANKTEXT
workspace.

User Data Download: The ability for workspace users to download data can be controlled, and you can find
it under User Data Download.

WebDav Integration: Learn how to enable your workspace users to add, edit, and delete files on a
WebDAV server.

WebRTC: Discover how to enable real-time communication to ensure the transmission of audio/video data
and other data among browsers.
Accounts
Modify workspace member account settings.

To access this setting, navigate to

Administration > Workspace > Settings > Accounts.

These are the basic Account configuration settings. Most of the options are either True or False
depending on whether you want the setting enabled or not.
Allow anonymous read: If enabled, allows people to use the chat without having to create an account
or log in. Anonymous users are only allowed to read messages on public channels.
Allow anonymous write: If enabled, allows Anonymous users to post messages on public channels.
Allow users to delete own account: Setting this to true allows users to delete their account. When a
user is deleted, all their messages are deleted too.
Allow User Profile Change: Setting this to false blocks users from changing the information on their
profile.
Allow User Avatar Change: Setting this to false blocks users from changing their avatar.
Allow Name Change: Setting this to false blocks users from changing their names.
Allow Custom Status Message: Setting this to true allows users to create the custom status message.
Allow Username Change: Setting this to false blocks users from changing their usernames.
Allow User Email Change: Setting this to false blocks users from changing their email.

Allow User Password Change: Setting this to false blocks users from changing their password.
Allow Password Change for OAuth Users: Setting this to false blocks OAuth users from changing
their password.
Allow Email Notifications: Setting this to true enables the users to receive email notifications.
Custom Fields to Show in User Info: Other fields to be displayed in the user info. Please see more in
Custom fields.
Login Expiration in Days: After this number of days of inactivity, the user is logged out.

Show Default Login Form: Setting this to false removes the login form from the login screen. This
setting is useful when you are using a third-party login system.
Placeholder for email or username login field: This changes the placeholder for the email or
username field on the login screen.
Placeholder for password login field: This changes the placeholder for the password field on the login
screen.
Confirm Placeholder for Password Login Field: This confirms the placeholder for the password field
on the login screen.
Forget user session on window close: This logs out users when they close the window running
BANKTEXT.
Fields to Consider in Search: Specifies the fields to be considered when searching for users. The
default is username, name, bio, and nickname.
Default Directory Listing: This sets the default directory to be listed.
Allow Invisible Status Option: Setting this option allows users to set the invisible status.
Reset section to default: Click the button to reset all these basic configurations back to their default
value.

Two Factor Authentication


Enable Two Factor Authentication: Here you can enable or disable Two Factor Authentication for
users, and set for how long a token is valid.

Maximum Delta: Let you set the number of tokens that are valid at any given time.

Enable Two-Factor Authentication via TOTP: This lets you set whether or not users can set up two-
factor authentication with authentication apps like Google Authenticator.
Enable Two Factor Authentication via Email: Sets whether users receive certain emails with a
temporary code to authorize some actions.
Auto opt in new users for Two Factor via Email: When set to true users have the Two-Factor
Authentication via Email enabled by default. This can be disabled on their profile page.
Time to expire the code sent via email in seconds: Receives in seconds how long the two-factor
code sent to a user's email is valid.
Remember Two Factor for (seconds): This lets you set how long in seconds users won't be able to
request an authorization code if it was already provided.
Enforce password fallback: Turning this on forces users to enter their passwords in order to perform
some important tasks.

Default User Preferences

Default user preferences for notifications are universal for all the users in your workspace until a
user changes it for themselves.
Enable Auto-Away: When set to True, it automatically changes the User's status to Away they exit
BANKTEXT.
Idle Time Limit: Sets how long in milliseconds for a User to go idle.
Require Interaction to Dismiss Desktop Notification: Enabling this sets the notification prompt active
until the User interacts with it.
Desktop Notifications Default Alert: This lets you set when the desktop notification alert is triggered.
The default is All messages. This only concerns the groups and channels the user belongs to.
Push Notifications Default Alert: Setting this to allow the users to set whether they want to receive
push notifications or not. The default is All messages.
Mobile Notifications Default Alert: Sets when the default notification alert plays on mobile devices.
Unread Tray Icon Alert: Disabling this stops the unread tray icon from displaying.
Use Emojis: Setting this to false disables the use of emojis.

Convert ASCII to Emoji: When this is true, ASCII characters are converted to emojis.
Auto Load Images: Turning this off prevents images from auto-loading when a room/chat is opened.

Save Mobile Bandwidth: When enabled acts like a data saver.

Collapse Embedded Media by Default: Setting this to true causes embedded media cards to collapse.
Hide Usernames: When enabled, it'll hide usernames in conversation rooms.
Hide Roles: When set to true, user roles like admin, and moderator are not be shown in chat rooms.

Hide Right Sidebar with Click: Enabling this gives the ability for the right sidebar to be hidden.
Display Avatars: Setting this to true displays the user's avatars in chat.
Group by Type: This lets you group conversations by type.
Sidebar Channel List Mode: This lets you choose from Extended, Medium, and Condensed how the
sidebar should be.
Display Avatars in Sidebar: Disabling this disables avatars from showing in the sidebar.
Unread on top: Turning this on displays all unread messages at the top.

Sort by: This lets you sort the list by the user activity or in alphabetical order.
Also send thread message to channel behavior: Select the behavior of messages sent in a thread.

Group favorites: Setting this to false disables favoriting groups.


Enter key Behavior: Lets you configure the action of the Enter key. The available options are: Normal
mode (send with Enter), Alternative mode (send with Enter+Ctrl/Alt/Shift/CMD)

MessageBox View Mode: Lets you select how message boxes appear. The available options are
Normal, Cozy, and Compact.
Offline Email Notifications: Lets you set when users should receive email notifications. The available
options are Disabled and Every Mention/DM.
New Room Notification: Configures the notification when a new room is created/joined.

New Message Notification: Lets you select the notification for new messages. The default options are
None and Default.
Mute-Focused Conversations: When set to true, no notifications are sent for focused/open
conversations.
Notifications sound volume: Lets you set the notification volume.
Enable New Message Template: Enable this setting to allow users to create a new message template.

Avatar

Resize Avatar: Set this to true to resize user avatars to a predefined size. You need ImageMagick or
GraphicsMagick installed on your server for this feature to work.
Avatar Size: The desired size after the avatar resizing. The unit is pixels (px).
Avatar External Provider URL: Lets you set a URL from which avatars can be loaded. Example:
https://acme.com/api/v1/{username}
Room Avatar External Provider URL: The URL where the room avatar is loaded from.
Avatar cache time: This sets how long in milliseconds you want users avatar to be cached.

Block Unauthenticated Access to Avatars: Enabling this restricts access to users avatars for those
that are not authenticated.
Set Default Avatar: If this setting is set to true, BANKTEXT tries to find a default avatar based on OAuth
Account or Gravatar.

Iframe

Enabled: Enable this option to authenticate users using your own login page in place of the
BANKTEXT's login page via the iframe integration.
Iframe URL: Enter the URL of the page you want to show as the login page of your BANKTEXT
instance. The login page then communicates back to BANKTEXT using postMessage API.

The Login page can be created in any programming language and/or web framework.

By setting API URL and API Method parameters enables BANKTEXT to call the third-
party system to either log in or verify if the user is already logged in.

API URL: Enter the URL, which refers to the endpoint on the third-party system, and this checks if the
user is already logged in to that system.
API Method: Specify the API (POST) method, to be used by BANKTEXT to submit information to the
API URL.

If the user has already logged into the third-party system, the API URL should communicate to
BANKTEXT and return a JSON object containing either a token or loginToken property,
otherwise (if the user is not already logged in) the API URL should return an empty body with
the status 401.
Failed Login Attempts

Enable collect login data: When set to true, it allows for the collection of failed login attempts.
Block failed login attempts by Username: Blocks failed login attempts with username.

How many failed attempts until block by User: Lets you set how many failed login attempts before
blocking the user.
Time to unblock User (In Minutes): Sets in minutes how long to unblock a user after blocking.

Block failed login attempts by IP: Enables the blocking of IP addresses after failed login attempts.

How many failed attempts until block by IP: Lets you set how many failed login attempts before
blocking an IP address.
Time to unblock IP (In Minutes): Sets how long to unblock a blocked IP.
IP Whitelist: Takes in a list of comma-separated IP addresses to be whitelisted.

Notify of failed login attempts: When set true, a channel is notified of all failed login attempts.
Channel to send the notifications: Specifies the channel where the failed login attempts is sent to. We
recommend you create the channel first without the # symbol in the channel name.

Login Logs

Log (on console) failed login attempts: Logs all failed login attempts on the console.
Show Username on failed login attempts logs: When enabled, usernames are shown on the console
for all failed login attempts.
Show UserAgent on failed login attempts logs: Shows the user agent on failed login attempts when
enabled.
Show Client IP on failed login attempts logs: When set to true, it shows the client IP address on the
console on any failed login attempt.
Show Forwarded IP on failed login attempts logs: Show the forwarded IP on any failed login
attempts.

Password History

Enable Password History: When enabled, users won't be able to update their passwords to some of
their most recently used passwords.
Password History Length: Lets you set number of most recently used passwords to prevent users from
reusing them.

Password Policy
Enable Password Policy: When this is set to true, new passwords must follow the corresponding
configured policies.
The various settings that fall under this have simple descriptions for understanding.

Registration
Send email to user when user is activated: When enabled, an email is sent to the user after their
account has been activated.

Send email to user when user is deactivated: If set to true , users get an email after account
deactivation.

Default username prefix suggestion: This is the prefix that is suggested when a user is creating a
username. Default is user .

Require Name For Signup: If this is set to true, the name of the user is required to create an account.

Require Password Confirmation: If this is set to true, the user has to input their password twice when
registering.
Only allow verified users to login: Enable this option only to allow the verified users only to log in.

Verify Email for External Accounts: If this is set to true, users has to confirm their email via a
confirmation email sent to their email. (For this setting to work, the SMTP settings must be already set
up. See Email Configuration)
Manually Approve New Users: If this is set to true, new users have to wait for a user with the view-
user-administration permission to approve their account before using BANKTEXT.
Allowed Domains List: This blocks emails with different domains than the ones on the list.

Blocked Domains List: This blocks emails with domains that are on the list.
Blocked Username List: This blocks usernames that are on the list.
Use Default Blocked Domains List: Blocks the email domains listed here
Use DNS Domain Check: When this is set to true, users won't be able to register with invalid domains.
Registration Form: This changes how the registration form is presented. Currently, there are 3 options:
Public: The form is made public and anyone is able to access it.
Disabled: The form is disabled and users can not register through it.
Secret URL: The form is only accessible using a specific URL.
Registration Form Secret URL: String to be added to the secret URL. Is recommended to use a
random string for that. Example:
https://open.BANKTEXT/register/[secret_hash] .You can copy this URL to share the form
with anyone.

Invite URL Type: URL type can either be direct or through a proxy.

Registration Form Link Replacement Text: Text to be shown in place of the registration form when the
registration form is disabled.

Registration with Authentication Services: Set this to true to allow registration with third-party
authentication services like Google or Twitter.
Default Roles for Authentication Services: Default roles users are given when registering through
authentication services.
Default Roles for Users: Default roles users are given when registering through manual registration.
Password Reset: Set this to true to allow users to reset their password.

Custom Fields: A valid JSON of key-value pairs of additional fields to be added during user
registration.
Custom Fields

In BANKTEXT you can set customized fields for user registration. By adding an address or role field,
where the user could select from various roles of a company, for example.

Note: Currently you may need some basic understanding of Javascript, and BANKTEXT's internal working
structure to set other custom fields than in the example below. A more user-friendly interface is planned for
the future.

You can set custom fields under Administration > Accounts > Registration > Custom
Fields .

Custom fields show up when a user registers, and when an admin looks for that user's information.

In order to display custom fields in user profiles you can use this syntax under Administration >
Accounts > Custom Fields to Show in User Info

[{"Designation": "designation"}, {"Department": "department"}]

For now, set custom fields using a JSON object.

Make sure to use a valid JSON , where keys are the field names containing a dictionary of field
settings. Example:
{
"role": {
"type": "select",
"defaultValue": "student",
"options": ["teacher", "student"],
"required": true,
"modifyRecordField": {
"array": true,
"field": "roles"
}
},
"twitter": {
"type": "text",
"required": true,
"minLength": 2,
"maxLength": 10
},
"crmUserId": {
"type": "text",
"required": false,
"minLength": 12,
"sendToIntegrations": true,
}
}

In the example above we set three new fields with the following properties:
type: defines the type of the field, currently there are 2 types: select and text , where select
creates a dropdown list, and text creates a plain text form. If you put a URL into the text field, it will be
interpreted as a hyperlink (it will be clickable in the userinfo tab).
defaultValue: used with a select form type to set the default option for the list.

options: used with a select form type for the values that should be on the dropdown list, which
follows the ["item1", "item2","item3"] pattern. Use a javascript Array to create it.

required: defines if the field is required for registration; use true or false in this property.

minLength: used with a text to define the minimum length required in the form.

maxLength: used with a text to define the maximum length required in the form.

modifyRecordField: this property is required when you add a field that already exists in BANKTEXT.

array: used inside the modifyRecordField property to define if the existing field is an array.

field: used inside the modifyRecordField property; it should be the name of the existing field.

public: defines the field as visible for other users when looking at this user's profile.

private: defines the field as private, so only users with view-full-other-user-info permission
can see this field when viewing this user's profile.
sendToIntegrations: define the field as shareable with external applications, such as Omnichannel
integrations.

Note: Fields work with tabs for indentation, avoid using spaces .

Show custom fields on the user's info


The list of custom fields shown on the user's info panel can be configured under Administration ->
Accounts -> Custom Fields to show in User Info .

The list of fields needs to be specified as JSON array in the form

[{"label1":"key2"},{"label2":"key2"},...]

A label can by any text, the key needs to be a custom field name defined above.

Fields are only shown if the user has the permission to view private fields or if the field is set to
"public":true .
Analytics
See how users interact with your workspace.

Setting up analytics allows you to see how users interact with your server and help measure the metrics and
monitor the different user experience measures.

To access analytics, navigate to Administration > Workspace > Settings > Analytics.

You have access to various configurations that can be done.

Remember always to hit Save changes to apply any changes made.

Google Analytics
Lets you set up Google Analytics.

Enable: When enabled, Google Analytics is active, and you are prompted to set a Tracking ID.
Tracking ID: Takes in your Google Analytics tracking ID.

Features Enabled
Lets you set various properties to analyze and track.

Messages: When set to true, actions users perform on messages are tracked.
Rooms: When enabled, actions like; create, leave, delete on channels or groups are tracked

Users: This Lets you track events related to actions on users like; password reset times,
profile picture change, etc.

Piwik
Gives you the ability to set up Matomo, formerly Piwik, for analytics.
Enable: When set to true, it enables Piwik analytics on your server.
URL: The url where the Piwik resides, be sure to include the trailing slash. Example:
//piwik.BANKTEXT/
Client ID: The site id to be use for identifying your site. Example: 17

Additional Piwik Sites: Takes in additional Piwik website URLs and site IDs to track the same data into
different websites. Example;
[ { "trackerURL" : "https://my.piwik.domain2/" , "siteId" : 42 }, {
"trackerURL" : "https://my.piwik.domain3/" , "siteId" : 15 } ]

Prepend Domain: Lets you set whether or not to prepend the site domain to the page title when
tracking.

All Subdomains: Lets you track visitors across all subdomains.

Hide Outgoing Links: Takes in URLs, one domain per line without any separator to hide their clicks in
the outlinks report.
Assets

Manage the assets and various resources used by your BANKTEXT workspace. This involves logos, icons,
and other images for customizing your workspace.

Customize your workspace to have a branded look from the assets settings.

To access the assets section, go to Administration > Workspace > Settings > Assets.

Remember to hit Save Changes to apply any changes made.

Enable SVG favicon: When enabled, you can set an SVG favicon.
logo (svg, png, jpg): This lets you set the logo for your server. It is visible at the bottom left of the side
panel.
login background (svg, png, jpg): Set a login background image.
favicon (ico): Lets you set a favicon of .ico extension.

favicon (svg): Lets you set a favicon of .svg extension.

favicon 16x16 (png): Lets you set a favicon of size 16X16

favicon 32x32 (png): Lets you set a favicon of size 32x32

android-chrome 192x192 (png): Lets you set the 192x192 icon displayed on Android Chrome
browser.
android-chrome 512x512 (png): Lets you set the 512x512 icon displayed on Android Chrome
browser.
apple-touch-icon 180x180 (png): Lets you set the 180x180 apple icon shown on web page.

apple-touch-icon-precomposed 180x180 (png): Lets you set the precomposed 180x180 apple icon
shown on web page.

mstile 70x70 (png)


mstile 144x144 (png)
mstile 150x150 (png)
mstile 310x310 (png)
mstile 310x150 (png)
safari pinned tab (svg): Lets you set the icon displayed when a tab is pinned on the Safari browser.
Bots
Set the fields that can be referenced and used when developing bots.

BANKTEXT Bots setting lets you specify the various fields that can be accessed by bots helper methods.
These fields can be referenced and used when developing bots.

To access this menu, navigate to Administration > Workspace > Settings > Bots.

User Fields: This takes in comma-separated fields that can be accessed by bots helper methods.
CAS
Central Authentication Service allows members to use one set of credentials to sign in
to multiple sites over multiple protocols.

Central Authentication Service (CAS) allows users to use one set of credentials to sign in to many sites over
many different protocols.

BANKTEXT includes a CAS plugin that allows you to use your existing CAS server for user authentication.

For more information on CAS, see github.com/apereo/cas.

To access this setting, navigate to Administration > Workspace > Settings > CAS.

Remember to hit Save Changes in order to apply any changes made.

Your BANKTEXT workspace is the CAS client. You must provide a compatible CAS Server.

Once you know your CAS server's URL, proceed with the settings below

Enabled: Enable CAS on your workspace


SSO Base URL: The base URL of your external SSO service e.g
https://sso.example.undef/sso/
SSO Login URL: The login URL of your external SSO service e.g
https://<<CAS_server_url>>/cas/login
CAS Version: Only use a supported CAS version supported by your CAS SSO service e.g
(1.0|2.0)

The /cas and /cas/login URLs are defaults but not mandatory. Check with your CAS server provider
if the defaults do not work.

Trust CAS username: When enabled, BANKTEXT trusts that any username from CAS belongs to the
same user on BANKTEXT.
This may be needed if a user is renamed on CAS, but may also allow people to take over BANKTEXT
accounts by renaming their own CAS users.
Allow user creation: Allows CAS User creation from data provided by the CAS ticket when enabled.

Attribute Handling
Always Sync User Data: When set to true, it synchronizes external CAS User data into available
attributes upon login. Note: Attributes are always synced upon account creation anyway.

Attribute Map: Use this JSON input to build internal attributes (key) from external attributes (value).
External attribute names enclosed with '%' are interpolated in value strings.
Example, {"email":"%email%", "name":"%firstname%, %lastname%"}
The attribute map is always interpolated. In CAS 1.0, only the username attribute is available.
Available internal attributes are: username, name, email, and rooms; rooms is a comma-separated list of
rooms to join upon user creation e.g: {"rooms": "%team%,%department%"} would join CAS users on
creation to their team and department channel.

CAS Login Layout

Login Popup Width: Lets you set the width in px of the popup screen during login.

Login Popup Height: This lets you set the popup height in px .

Login Button Label: Set the button's label.


Login Button Text Color: Sets the login button text color from the existing variable.

Login Button Background Color: Sets the background color of the login button.

Autoclose Login Popup: When enabled, the popups automatically close after authenticating.

After successful configuration, your registration and login screens have the CAS button available.

CAS by ja-sig requires ssl/tls all connections.

Any Drupal 7 or 8 sites can serve as a compatible CAS Server. See


https://www.drupal.org/project/cas.
Custom Emoji Filesystem
Specify how emojis are stored

By specifying the Emoji file system, you have the flexibility of specifying how emojis are stored.

To access this setting, navigate to Administration > Workspace > Settings > Custom Emoji Filesystem.

Storage Type: A dropdown to select the storage type for your emojis example GridFS or
FilesystemSystem
Path: Full path to emoji location.
Custom Sound Filesystem
Specify how custom sounds are stored

By specifying the sound file system, you have the flexibility of specifying how custom sounds are stored.

To access this setting, navigate to Administration > Workspace > Settings > Custom Sound Filesystem.

Storage Type: A dropdown to select the storage type for your sounds example GridFS or
FilesystemSystem
Path: Full path to emoji location.
Device management settings
Configure security and access control policies for device management

To access this setting,

Navigate to Administration > Workspace > Settings > Device management


Enable login detection emails: When enabled, emails are sent to workspace members each time new
logins are detected on their accounts.
Allow workspace members to turn off login detection emails: When enabled, individual members
can set their preferences. It is useful when frequent login expirations are set, causing members to log in
frequently.

Follow the guide to manage and control the devices linked to your workspace.
Discussion
Discussions are an additional way to organize conversations that allows invite users
from outside channels to participate in specific conversations

Discussions are created from parent channels or groups. BANKTEXT Discussions are a way of tackling
all specific topic-related conversations.

To access this setting, go to Administration > Workspace > Settings > Discussion.

Enable: When enabled, users will be able to create discussions.


E2E Encryption
Prevent third parties from accessing your data while its transferred from one end
system to another

End-to-end encryption (E2EE) is a system of communication where only the communicating users can read
the messages. BANKTEXT uses this to prevent potential eavesdroppers.

IMPORTANT: E2E encryption functionality is currently in beta and includes notable


restrictions that workspace owners should carefully consider before activating this feature for
production use as follow:
E2E encrypted messages will not appear in search operations

Bots or other ancillary systems interacting via webhooks or REST API will not be able to read
E2EE encrypted messages
File uploads are not encrypted

BANKTEXT enables users to reset their private E2EE key to avoid permanent data loss
during the beta period.

To access this setting, go to Administration > Workspace > Settings > E2E Encryption.

Enable encryption for Direct Rooms by default: When set to true, direct rooms will be encrypted by
default.
Enable encryption for Private Rooms by default: When enabled, private rooms will be encrypted by
default.

End to End Encryption User Guide


Email
Configure broadcast emails from inside BANKTEXT.

Configure email setting to be able to broadcast emails directly from BANKTEXT.

To access this menu, go to Administration > Workspace > Settings > Email.

Here you find various Email settings and tools:

Email Configuration
Edit Email Content
Mailer
Direct Email Reply
Edit your Email Content

You can customize the predefined emails sent out to users on your workspace.

To customize email content, select the email type you want to change and modify. The email body can take
in placeholder values used to set customized data e.g [Site_Name] is replaced with your BANKTEXT
server name.

Available placeholder fields can be seen at the bottom of the field being edited.

You can use BANKTEXT internationalization engine by wrapping sentence string with { } ,
see all internationalization strings here.

Device Management - Login Detected

The email users receive when a user login is detected from a new device.

Subject: The email subject.


Body: Email body.

Direct Reply

Direct email reply

Email Address Changed

Formats email to send when users change their email.

Subject: The email subject.


Body: Email body.

Forgot Password

The email users receive when they trigger the forget password action.

Subject: Subject of the email.


Body: Email body.

Header and Footer


Defines the header and footer style to use for all your emails.

Header: Header to use for all emails sent.


Footer: The email footer to use for all emails.
Footer When Direct Reply is Enabled: Let you define the footer for when direct reply is enabled.

Invitation

Email format for when a user is invited to join the workspace.

Subject: The email subject.


Body: Email content.

Offline Message

Use Deep Link URL Format: When enabled, deep linking is made possible in emails sent.

Password Changed

Email format for when a user's password is changed.

Subject: The email subject.


Body: Email body.

Privacy

Set a level of privacy to the emails sent.

Show Message in Email Notification: Whether or not to show messages in email notifications.

Add Sender to Reply-To: When enabled, message senders will be added to the Reply-To email
header property.

Registration

Email to send on new user registration.

Subject: Email subject.


Body: The body of the email.

Registration via Admin

Format of the email to send to a user when registered by an admin.


Subject: The email subject.

Body: Email body.

SMPT

Email configuration

Style

Here you define the styling to be applied to all emails.

Send only plain text emails: When enabled, emails are sent in plain text only.
Email Style: Write CSS to style every email.

Subject

Let you specify email subjects for various notification types.

Direct Message Email Subject: Email subject to use for direct message notification.
Mention Email Subject: Email subject for when a user is mentioned in a room.

Mention All Email Subject: Email subject when a message is posted in a room.

Verification

Format of email to use when sending user verification.

Subject: Email Subject.


Body: The email body.
Direct email reply

Enable this feature to allow users to reply to chat messages by directly replying to email notifications they
receive. We currently use subaddressing for this feature.

To set up credentials,

Navigate to Administration > Workspace > Settings > Email > Direct Reply
Enable Direct Reply: Switch on to allow direct replies through emails.
Debug Direct Reply: Enables debugging for direct replies.
Protocol: Select the email server protocol ( IMAP or POP ).

Host: Your email server hostname (e.g. imap.example.com or pop.example.com ).

Port: The port (143 or 993 for IMAP and 110 or 995 for POP).
IgnoreTLS: Ignore TLS true if port 143 or 110.

Email Check Frequency: Email check frequency (in minutes) if POP server (>=2).

Delete Emails: Delete intercepted emails. We recommend keeping true if you don't want to keep
copies of email messages, in case IMAP server.
Separator: A separator (default and recommended) is the character separating the base and tag part of
the email. E.g.: base+tag@domain (separator: +). More info here

Username: The email server username.


Reply-To: The reply-to email address.
Password: The email server password.
Click Save changes to commit.

Now, you can reply chat messages via email. It supports full formatting like inline, multiline, bold,
italics, etc.

Switch from IMAP to POP

Before you switch from IMAP to POP over the same email address, you must empty all the folders.
Keeping all emails results in duplicate messages, because all those messages in POP are treated as
new messages.

Note

Currently, only emails in English are supported, or at least the quote On <date>, <author>
wrote: is in English.
An Email body in languages other than English may also work until and unless On <date>, <author>
wrote: is in English or a copy of older email is removed manually.

Only text messages are supported; attachments are not supported yet.

Known issues

Quoted headers

Quoted headers aren't picked up if the email client breaks it up into multiple lines.

GMail breaks up any lines over 80 characters for you.

On <date>, <author>
wrote:
> blah

Not to mention that we are searching for on and wrote . It doesn't work with other languages.

Possible solution: while replying, remove everything else than your actual message.

Weird signatures

Lines starting with - or _ sometimes mark the beginning of signatures:

Hello

--
Rick

But some users change this convention:

Hello

Mr Rick Olson
Galactic President Superstar Mc Awesomeville
GitHub

**********************DISCLAIMER***********************************
* Note: blah blah blah *
**********************DISCLAIMER***********************************

Problem?
Your message wasn't posted? Did you get an Invalid Email in the Admin console? This most likely
means that the email format was not as expected. Maybe you were blocked or the message/room was
deleted.
Email configuration

The BANKTEXT Emails, Notifications, Email verification, and Mailer features depend on this Email
configuration.

This page guides you through configuring SMTP settings for your BANKTEXT workspace.

This configuration is only available for Self-managed workspaces. SaaS workspaces already
have this pre-configured.

Set up your Credentials

Go to Administration > Workspace > Settings > Email > SMTP.

Protocol: Select the mailing protocol to use. SMTP(Simple Mail Transfer Protocol) or SMTPS (Simple
Mail Transfer Protocol Secure) protocol.
Host: Your SMTP server hostname (e.g. mail.example.com )

Port: The SMTP port (usually 587 for modern secured SMTP servers).
IgnoreTLS: Enable to ignore TLS(Transport Layer Security).

Pool: Enable this option to use pooled connections, otherwise a new connection is created for every
mail.
Username: Your SMPT username.
Password: Your SMPT password.
From Email: The email to be shown as the sender.
Save changes
Send a test mail to my user - Use this option to send a test mail to yourself.
Enterprise
Manually update your Enterprise license

Use this setting to update your enterprise license manually. See this section on how to get Enterprise
License.

If your workspace is registered and the license is provided by BANKTEXT Cloud, you don't need
to update the license here manually.

To access this menu, go to Administration > Workspace > Settings > Enterprise.

Enterprise License: A field to enter your enterprise license.


Status: This shows the current status of your applied license, whether it is valid or invalid.

When all your changes are done, hit the Save changes button to commit it.
Federation

Federation allows for an unlimited number of workspaces to communicate with each other. Federating a
workspace makes it visible to other workspaces over the federated network, thus making communication
with other Federation-enabled servers possible.

To access Federation on your workspace,

Navigate to Administration > Workspace > Settings > Federation.

BANKTEXT provides Federation using the Matrix Protocol and the BANKTEXT Federation Network.

Matrix Bridge: See how to federate your BANKTEXT workspace with the Matrix Protocol.
BANKTEXT Federation Network: Learn how to federate with BANKTEXT basic federation.

BANKTEXT basic federation is deprecated from version 6.0. Thus, we strongly

recommend using Matrix Bridge .


Matrix Bridge

BANKTEXT Matrix Bridge operates by leveraging the Matrix protocol, an open standard for decentralized
communication over the internet.

It is designed to provide secure, interoperable, and decentralized real-time communication between


BANKTEXT and any Matrix-compatible applications or servers seamlessly.

Using the BANKTEXT Matrix Bridge integration requires you to have a Matrix homeserver available. We
recommend Synapse, which is the most stable compared to other versions like Dendrite.

The Matrix Bridge feature has been verified with Synapse v1.71.0 .

Matrix Admin Guide

See how to run an Matrix homeserver and setup federation with BANKTEXT.

Matrix User Guide


Learn how to use BANKTEXT for federated communication.

Matrix Bridge FAQs

Common questions about BANKTEXT Matrix Bridge implementation.


Matrix Admin Guide

As a workspace administrator, you can set up Matrix protocol for federated communication.

****Matrix Homeserver Setup: Setup a Matrix Homeserver following the automated or manual guide.
****Matrix Bridge Configuration: Configure the Matrix protocol settings for your workspace after
manual installation.

****Matrix Allow/Block List: See how to create a list of allowed and blocked IP addresses from
communicating with your workspace.
Matrix Homeserver Setup

In the Matrix protocol and federated architecture, Homeservers are key components that host user accounts
and other data related to communication. It also facilitates communication between users on different
servers by relaying messages through a network of Matrix servers until it reaches the destination.

BANKTEXT listens to events happening in the Homeserver and sends events relayed to other networks.

You can choose to install a Homeserver using any of the following methods:

Automated Installation: Install Synapse and BANKTEXT using a simple setup script.
Manual Installation: Manually install and configure your Homeserver with BANKTEXT.

We recommend using automatic installation since this comes with some configurations done.

System Requirements

8GB of RAM
2CPU
20GB of Storage
Ubuntu 20.04

You are required to have a domain available to host your Matrix Homeserver.

Important warning about the installation


You must be aware of this vital setting before proceeding with the installation.

Enabling ephemeral events like user typing indicator can affect the performance of your Matrix
Homeserver and BANKTEXT server for federated communicaation.
This can be enabled by adding the following property in your Application Service configuration file:

de.sorunome.msc2409.push_ephemeral: true

Add and enable the following properties to make public rooms visible and searchable on other Matrix
networks.
allow_public_rooms_without_auth: true
allow_public_rooms_over_federation: true

Following the automated installation enables everything by default and can be disabled by editing the
generated configuration at data/matrix/synapse .

Automated Installation
The Automated install makes it simple for you to install a Matrix Homeserver pre-configured with
BANKTEXT.

Prerequisites

You are required to have the following on your system before installing.

Docker
Docker compose (> 2.3.3)

Installation Steps

Open your terminal in any directory of your choice.


Download and execute the script by running the following command. This creates a docker-
compose and a .env file that can be edited as needed

bash <(curl -L -s https://go.BANKTEXT/i/federation-setup)

Follow the instructions provided by the script to configure the workspace:


Server's hostname: Add your domain name.

Create A domain records pointing to your server's IP address as requested.

synapse.<your-domain>

matrix.<your-domain>

traefik.<your-domain>
Enter your email address. This is used to issue an SSL certificate for your domain.
Start the container by running the following command:

docker compose up -d
Installing with the Automated setup automatically sets the values at Administration >
Workspace > Settings > Federation > Matrix Bridge.

BANKTEXT Matrix setup CLI is coming soon!

Testing the Setup

To test and make sure your Matrix setup is successful,

Download and execute the test script in the same directory where the setup was initiated.

bash <(curl -L -s https://go.BANKTEXT/i/federation-test)

You get a notice about the setup status.

Manual installation
Follow this guide to set up a Matrix Homeserver with Synapse manually.

Install Synapse.
Obtain Lets Encrypt Certificate.
Setup Element (Optional).
Configure Nginx using the certificates, reverse proxying the requests to Synapse.
Point all the generated DNS records to your server's IP address (all to the same IP).
Configure the support for Application Service on the Matrix Homeserver: This can be done by creating a
registration.yaml file under the app/matrix-federation-config directory with the
content provided in Workspace > Settings > Federation > Matrix Bridge > Registration File.
App Service Registration File content

Complete the configuration steps outlined in Matrix Bridge Configuration .

Testing your setup

To test your manual installation,

Ensure Synapse is up and running.

Confirm the federation setup is running, go to Matrix Federation Tester, and paste your Matrix
Homeserver name (only the server name, not the full link).
Matrix Allow/Block List
Blocking or allowing specific domain names or IPs address to communicate with your
Matrix Homeserver

Synapse

To create allow/block lists on the Synapse installation, change it directly in the configuration file
(homeserver.yaml). You can block undesired communication with specific homeservers or allow only the
desired ones.

Block List

Add the following to the Synapse configuration file:

ip_range_blacklist : Creates a block list by IP ranges (List all IPs you want as a YAML array).

To learn more, see Blacklisting IP ranges.

Allow List

Add the following to the Synapse configuration file:

ip_range_whitelist : Creates an allow list by IP ranges (List all IPs you want as a YAML array).

federation_domain_whitelist : Creates an allow list by domain names (List all domain names
you want as a YAML array).

After creating the desired configuration, restart the Synapse server; everything you specified should be
blocked.

To learn more, see federation_domain_whitelist.

Dendrite

Currently, Dendrite does not support creating allow/block lists.


Matrix Bridge Configuration
Configure the BANKTEXT workspace to link with your Matrix Homeserver.

This BANKTEXT workspace configuration to link with Matrix Homeserver applies only to
Manual installation . It is automatically done for Automated Installation .

To access this setting,

Navigate to Administration > Workspace > Settings > Federation > Matrix Bridge.
Enable: Turn on to enable federation with Matrix.

AppService ID: A unique identifier for the Application Service. It is automatically generated by
BANKTEXT
Homeserver Token: A unique homeserver token to authenticate requests to Application Services.

App Service Token: A unique Application Service token to authenticate requests to homeservers. It is
automatically generated by BANKTEXT
Homeserver URL: The URL of the Matrix server you want to use as your Proxy homeserver. e.g.
http://localhost:8008
Homeserver Domain: Your Matrix homeserver's name, the same as you've configured in your Matrix
configuration file.
Bridge URL: The URL for the Matrix bridge. It is the location you want your bridge should run.

Ensure the port you use for the bridge is free in your host.
We recommend you use a brand new Matrix Homeserver as your Proxy homeserver.

We strongly recommend not connecting to this Matrix Homeserver with other Matrix clients.

AppService User Localpart: The bot user associated with the application service (Sometimes, it's
used to execute some actions).
Registration: Automatically generated and updated by BANKTEXT based on all the values provided in
the above settings (The Application Service is configured using this file).

After any change is made to these settings, update the registration.yml file for the
Application Service in pp/matrix-federation-config .Then restart your Matrix
Homeserver and BANKTEXT Server.

To learn more, see Manual installation .


Matrix User's Guide

As a BANKTEXT User, you can communicate with users on other federated platforms provided your
workspace Administrator has set up and enabled Matrix federation.

Create federated rooms: See how to create federated rooms.


Invite external users: Learn how to invite external users from other Matrix servers to communicate in
BANKTEXT.
Communicate with federated users: Initiate and chat with external users.

Assign roles for users in federated rooms: Share roles with federated users in a room.
Create federated rooms

Creating a channel/group

You can create federated channels having both BANKTEXT and other federated users.

To create a federated channel,

Start by creating a channel within your BANKTEXT workspace.


Enable Federated.
Add members (optional) and click Create.

Important:

Federated Channels can not be Encrypted, Read-Only, or Broadcasted for now_._


You cannot create Threads or Discussions within federated Channels.

Whenever your user is invited to participate in a federated room created in an external server, the server
name is displayed at the top of that room. This helps the user to differentiate when there are multiple rooms
with the same name but all from different servers.

Creating a Direct Message 1:1

You can create a Direct Message with other federated users.

Create a federated DM with these steps:

Create a 1:1 Direct Message


Set the federated user you wish to message following the syntax to invite external users.

Creating a Multi-user Direct Message


Using Multi Direct Message, you can send Direct Messages to multiple users(federated or not) at once.

To create a federated Multi Direct Message:


Create a Multi-user Direct Message
Select the users to whom you want to send messages following the syntax to invite external users.

Slash commands
You can also use an available slash command to create and invite users for Direct Messages rooms. The
general syntax for the available slash command is:

/federation dm @username:server.com

Where:

/federation : The slash command itself.


dm : The command you want to execute, dm is the only one available now.

@username:server.com : The external user you want to invite, using the syntax to invite external
users.

Creating a Multi-user Direct Message using slash command

To create Multi-user Direct Messages using slash commands, you need to open the message box in any
channel and type the following command using the syntax to invite external users:

/federation dm @username1:server.com @username2:server2.com

Creating a Direct Message 1:1 using slash command


To create a 1:1 Direct Message using slash commands, open the message box in any channel and type the
following command using the syntax to invite external users:

/federation dm @username1:server.com

Editing a federated room


Only the name and topic of a federated room can be edited after it is created.

Deleting a federated room


Deleting federated rooms are not supported for now.

Invite links
They are not supported yet.
Invite external users to your BANKTEXT server

Invite external users' syntax


Whenever you want to invite someone from an external server, use the following syntax to identify them
when you click Add members:

@username:server.com

Which is represented by the following parts:

@username : The username from the external server (red part).


(:) : A colon character separating the external username and the external server name.

server.com : The external server name(blue part).

Once the Matrix Bridge is well configured and running, the external users' syntax is interpreted in any Add
Members inputs all over the system.

After you invite an external user for the first time, a copy for that user will be created in your local
BANKTEXT instance. This means you no longer need to use the external user syntax to invite that specific
user. You can invite the local user, which will appear as a suggestion in any Add Members input.

Once the external user exists and the external server runs, the external user will auto-join the
room. They can not decide if they want to join the room or not for now.
Communicate with a federated user
Start to communicate and collaborate accross platforms in a decentralized way

After you have configured everything and created some federated channels, you're now able to:

Send and receive messages.


Send and receive messages with emojis.

Send and receive messages using the whole Markdown Spec.


Send and receive attachments (Files, audio, and video).
Quote messages.
React to messages.
Edit Messages.
Delete Messages (only your messages).

Mention internal and external users inside any federated room.


Send and receive users' typing indicator.
Assign user roles within the room context.

There are also some features not directly related to rooms:

Users' avatar synchronization.


Servers' allow list/block list.
Assign roles for users in federated rooms

Room members can assign room roles for federated users within a federated room context. Roles in
federated rooms are slightly different from the regular BANKTEXT Roles for the Room Scope.

Federated rooms support three roles:

Owner: Owns a room and fully controls it and its activities.


They can invite users, assign new owners, promote/demote moderators, remove users from the room,
and edit the room name and topics.
Moderator: Moderators can manage user actions and details of the room.
They can invite users, assign new moderators, remove users from the room, and edit the room name
and topics.
User (default): Room users can send and perform message actions in the room. Users cannot perform
any room management related task

Matrix uses the concept of power levels to define room roles with the Owner being the most powerful,
followed by the Moderator and the User the least powerful.

IMPORTANT

BANKTEXT global roles are not supported in federated rooms. It doesn't matter if they are Room
Scoped.

For rooms created using Element as a Matrix client, only Owners (admins) can assign room
roles/permissions, and you need to change the Change permissions room setting
to Moderator . Otherwise, Moderators using BANKTEXT as their Matrix Client, cannot assign
roles to other users.

This can be done by navigating to Room info > Room settings > Roles & Permission on your
Element client.

Rooms that are created with Element as the client has a set of room permission possibilities.

Changing the permissions for event-specific features can lead to unexpected behavior for users
on BANKTEXT as their Matrix client.

The main rules for assigning roles in federated rooms are:


Only room owners (admin) can assign roles at the moment of the room creation.
All the users added to federated rooms have a User role by default.
Users with the same role cannot assign roles (promote/demote) between them.

Users with a specific role cannot demote other users from the room with the same role.
Users can only demote and promote users in the layer again right below his/her roles.
Whenever a user wants to promote a user to a role as powerful as his/her own, undoing that change will
not be possible (a confirmation modal will double-check the operation).
Whenever a user wants to demote himself/herself, it will not be possible to regain the same privileges
the user has had. The only possibility is for a user with the necessary permission to give back the same
role for that user(a confirmation modal will double-check the operation).

For any other applicable rule, they are the same as regular BANKTEXT rooms (e.g., Room owners cannot
demote themselves if they are the last room owner).
Matrix Bridge FAQs

What is the Matrix Protocol?

Matrix is an open standard for interoperable, decentralized, real-time communication over IP.

How does Matrix work in BANKTEXT?

BANKTEXT aims to enable seamless communication and collaboration across platforms,


empowering individuals and organizations to connect on their terms and fluently share information
with other platforms.

What is a Homeserver?

It's an implementation of the Matrix spec, there are some existing homeservers. The most famous
are Synapse and Dendrite.

How do I install Synapse?

Installing Synapse.
Configuring federation.

What are the prerequisites for using Matrix on BANKTEXT?

See how to install and configure BANKTEXT Matrix Bridge integration.

How do I test my BANKTEXT Matrix Bridge setup?

See how to test your setup.


How can I block undesired homeservers to contact me?

See how to create allow/block lists in your Matrix homeserver configuration.

What happens when I invite someone from an external server?

Whenever you invite someone to chat with you either through public, private, or DM rooms, a copy
for that external user will be created in your local workspace. And a copy for your user will be
created in the external (inviter) server as well. From there, every message is stored on both sides.

Will the copies for external users created in my local workspace be counted as a valid
seats (Enterprise license)?

No, all the copies being created to support the Matrix Bridge feature will NOT be counted as valid
seats. Only users you create in your local workspace are counted as valid seats.

Can I change the role of an federated user in my local workspace?

No, all the external users created in your local workspace will be created as a User (user role) and
without an email and password, which means they cannot log in directly to your workspace. The
only way for them to communicate with your local workspace is through the open channel you
have with them.

Will I be able to see the presence status for a federated user?

Unfortunately, not at this point. When it comes to presence status, the support from Bridges is very
unstable, and due to that, we don't support it yet.

For more information about the Matrix Protocol, visit FAQs.


BANKTEXT Basic Federation

BANKTEXT basic federation is deprecated as from BANKTEXT 6.0 . We

recommend federating using Matrix Bridge.

BANKTEXT Federation lets your server becomes part of the BANKTEXT Federated Network. This makes
your server visible and can be found over the network, and messages, files can be exchanged with other
Federation-enabled BANKTEXT servers.

BANKTEXT uses industry standards, like DNS records, to keep the process seamless and seek the most
hassle-free communication between servers.

Configuration
The following configurations can be done
Enabled: It determines whether or not Federation is enabled on this server.
Status: It is the current Federation status, which can be one of the following:
Could not enable, settings are not fully set: make sure all the options are correctly filled and
saved
Booting: the federation is initializing
[HUB Only] Registering with Hub: the federation is trying to register with the Hub
[HUB Only] Disabled, could not register with Hub: the federation could not register with the Hub
Disabled: the federation is disabled
Running: the federation is running and ready to communicate with other servers
Domain: Fill this option with your domain name, usually the one that hosts the BANKTEXT.

Public Key: All Federation communications are double-encrypted, which means messages cannot be
delivered by mistake to the wrong peer. This is your public key, which is specially generated for
BANKTEXT and by BANKTEXT, and is shared with peers you communicate with.
The encryption process encrypts the message using the Server A private key, and the Server B public
key.
When a server receives the message, it uses the Server B private key and the Server A public key to
decrypt it.
So, let's say the message ended up on Server C: this server won't have Server B private key to decrypt
it, so the message can't be read at all.
Discovery Method: How are you going to be found in the BANKTEXT Federated Network? You can
choose through DNS or, as a fallback, the BANKTEXT Hub.
Important: We recommend using the DNS method. The Hub is a tool to allow users to easily adapt, try,
and validate the feature or as a different way to be part of the BANKTEXT Federated Network until DNS
record changes are made. Also, the Hub requires external communication and access to a specific e-
mail address owned by your domain, as explained below, which introduces extra configuration steps in
some protected internal networks.

Adding Federation to your Server


You have two ways to add your server to the BANKTEXT Federated Network:

Recommended: Configure your DNS

To add your server to the Federated Network using the DNS, fill in all the configuration fields required. Make
sure to pick true on the Enabled , and select DNS as your Discovery Method option, save, and
follow the guide below.

Let's suppose we have a domain named mydomain.com , and my BANKTEXT server is hosted at
mydomain.com , port 443 .

You must add two DNS records:

SRV Record (2.0.0 or newer)


Service: _rocketchat

Protocol: _https

Name: mydomain.com

Weight: 1

Priority: 1

TTL: 1 hour

Target: mydomain.com

Port: 443

Public Key TXT Record

Host: rocketchat-public-key.mydomain.com

Value: <my public key, as shown on the configuration screen>

Note: Some DNS providers do not allow entering the full public key string. So, after saving, make sure the
string is complete: it starts as -----BEGIN PUBLIC KEY----- and ends as -----END PUBLIC
KEY----- . If that is not the case, follow your provider's instructions. For example, AWS Route 53 needs to
split the string in two pieces, as follows:

"-----BEGIN PUBLIC KEY--- .............. "


"...-----END PUBLIC KEY--------- "

If you use http instead of https

We recommend using HTTPS for all kinds of communications, but sometimes that is not possible. If you
need, in the SRV DNS entry replace:

the protocol: change _https to _http

the port: change 443 to 80

Legacy Support: If your DNS provider does not support SRV records with _http or _https

Some DNS providers will not allow setting _https or _http on SRV records, so we have support for
those cases, using our old DNS record resolution method.

Legacy Support: SRV Record


Service: _rocketchat

Protocol: _tcp

Name: mydomain.com

Weight: 1

Priority: 1

TTL: 1 hour

Target: mydomain.com

Port: 443

Legacy Support: protocol TXT Record (if not provided, HTTPS will be used)

Host: rocketchat-tcp-protocol.mydomain.com

Value: https or http

Test your configuration from CLI

From your CLI, issue the following commands and make sure the answers look like the following:

dig srv _rocketchat._https.mydomain.com


...
;; ANSWER SECTION:
_rocketchat._https.mydomain.com. 1800 IN SRV 1 1 443 mydomain.com.
...

dig -t txt rocketchat-public-key.mydomain.com


...
;; ANSWER SECTION:
rocketchat-public-key.mydomain.com. 1799 IN TXT "-----BEGIN PUBLIC KEY----- THEPUBLICKEY :) -
...

Conclusion

When the SRV and the Public Key TXT records are added to the DNS records, other peers should be able
to find you after the propagation.

Alternative: Register on Hub

To add your server to the Federated Network using the Hub, fill in all the configuration fields needed. Make
sure to pick true on the Enabled field), pick the Hub as your Discovery Method option, save, and
follow the guide below.

Confirm Domain Ownership


When you click Save on the Federation config screen, you begin your registration process. This process
takes a few seconds, and if you are not yet registered to the Hub, you should receive an email at
webmaster@mydomain.com , where mydomain.com is the domain address you configured on the
Domain field.

Make sure the data is correct and confirm the changes.

After that step, other peers should be able to find you in the BANKTEXT Federated Network.

Using BANKTEXT Federation


Click here to learn how to use BANKTEXT Federation.
Cross-server Federated Channels

With BANKTEXT Basic Federation enabled and configured on your BANKTEXT workspace, you can
talk with users on other federated servers.

BANKTEXT basic federation is deprecated as from BANKTEXT 6.0.

We recommend federating with Matrix Bridge

Using BANKTEXT Federation


After enabling federation, you should be able to start chatting with other servers.

Inviting users from a different server


To do so, you should go to the Directory section, Users tab, and pick Every Workspace from the
dropdown menu.

Directory Search Users

Then, you should be able to look for users on remote servers called peers. You can search using a
combination of a username and a domain or an e-mail address, like:

Username: myfriendsusername@anotherdomain.com

E-mail address: joseph@remotedomain.com

If the remote server is within BANKTEXT Federated Network; you will be able to see the users:

Directory Search Result


Inviting remote users and chatting
If you click on one of those listed users, you will invite them to your server without login access. Also, you
and everyone else on your server will be able to chat with that new remote user.

Chat

From now on, you can invite that user only to private rooms or discussions. Those channels are going to be
replicated to the remote server, without the message history.
File Upload
Configure file upload and storage

Configure file uploads and storage on your workspace.

To access the menu on your workspace, navigate to Administration > Workspace > Settings > File
Upload

Remember always to hit Save Changes to apply any changes made.

General Settings

File Uploads Enabled: Use this setting to enable or restrict file uploads on your workspace

Maximum File Upload Size (in bytes): Use this setting to define the maximum allowed file size for
uploads. Set it to -1 to remove the file size limitation.

Accepted Media Types: Use this setting to define the files the users can upload.
Comma-separated list of media types. Leave it blank for accepting all media types.

Blocked Media Types: Define what types of files are blocked on the workspace.
Comma-separated list of media types. This setting has priority over the Accepted Media Types.

Protect Uploaded Files


Yes: Only authenticated users can have access to the uploaded files.

No: If in possession of the uploaded file's URL, unauthenticated users can access and download
said files.
Rotate images on upload: Turn on to enable image rotation. This affects the image quality.

Enable JSON Web Tokens protection to file uploads: Turn on to enable JWT protection on file
uploads.
File Upload Json Web Token Secret: Set the JWT secret to be used.
Storage Type
AmazonS3: Uses the Amazon S3 storage type
Google Cloud Storage: Uses the Google Cloud Storage storage type

WebDAV: Uses the WebDav storage type


FileSystem: Uses the FileSystem storage type
File Uploads Enabled in Direct Messages: Use this setting to enable or restrict file uploads on Direct
Messages

Amazon S3
You can find a more detailed guide on how to set up your Amazon S3 server here.

Bucket name: The bucket name you've created on Amazon S3


Acl(Optional): A Canned ACL configuration (see a complete list here)
Access Key: Your Amazon Access Key ID (optional)
Secret Key: Your Amazon Secret Access Key (optional)
Note: If no AWSAccessKeyId and AWSSecretAccessKey are set, the underlying AWS SDK the
will fallback to trying to retrieve credentials from the usual locations.

CDN Domain for Downloads(Optional): If you had set a CDN for your bucket, put it here

Region(Optional): If you have created your bucket on region different from the US Standard, you have to
set their code here (see a list of region codes here)
Bucket URL(Optional): Override the URL to which files are uploaded. This URL is also used for
downloads unless a CDN is given
Signature Version: Identifies the version of AWS Signature that you want to support for authenticated
requests.
Force Path Style: Enable force path style.

URLs Expiration Timespan: Time after which Amazon S3 generated URLs are no longer valid (in
seconds). If set to less than 5 seconds, this field is ignored.
If you run into issues with files not loading consistently for some users located further from server
location. Increasing this time might help.

Proxy Avatars: Proxy avatar file transmissions through your server instead of direct access to the
asset's URL
Proxy Uploads: Proxy upload file transmissions through your server instead of direct access to the
asset's URL
Amazon S3 CORS Configuration

Set the following CORS Configuration to your bucket.

XML format (if using the old AWS console Interface):

[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"PUT",
"POST",
"GET",
"HEAD"
],
"AllowedOrigins": [
"*ROCKET_CHAT_DOMAIN*"
],

"ExposeHeaders": [],
"MaxAgeSeconds": 3000
}
]

JSON format (if using the new AWS console Interface):

[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"PUT",
"POST",
"GET",
"HEAD"
],
"AllowedOrigins": [
"*ROCKET_CHAT_DOMAIN*"
],
"ExposeHeaders": [],
"MaxAgeSeconds": 3000
}
]

Note: Replace *ROCKET_CHAT_DOMAIN* with the domain of your BANKTEXT installation, e.g.
https://chat.example.com . Setting CORS to * posses a security risk because it allows
for requests from any host on the Internet.
FileSystem

System Path: The local path for where the uploaded files are stored.

Google Cloud Storage


The settings used when configuring a Google Cloud Storage server. You can find more details here.

Google Storage Bucket Name: The bucket name to which the files should be uploaded.
Google Storage Access Id: The access ID (or username) of the service account which has access to
your Cloud Storage bucket.
The Access Id is generally in an email format, for example: "example-
test@example.iam.gserviceaccount.com"

Google Storage Secret: A .pem containing your private key and certificate.
You can find a guide here on how to get your keys.

Proxy Avatars: Proxy avatar file transmissions through your server instead of direct access to the
asset's URL
Proxy Uploads: Proxy upload file transmissions through your server instead of direct access to the
asset's URL

More Information

About Google Storage Secret

The value here takes an argument of a PEM file to connect to your Cloud Storage bucket. When
you create a service account, you have the ability to download a JSON file that contains a number
of variables. You need the unescaped private key, along with one of the certificates linked at the
bottom of the JSON.

Syntax then looks just like a regular PEM file:

-----BEGIN PRIVATE KEY-----


unescaped private key goes here
-----END PRIVATE KEY-----
----BEGIN CERTIFICATE-----
first certificate goes here
-----END CERTIFICATE-----

Enter this into BANKTEXT to allow the authentication with Google and store items in the bucket.
WebDAV
The settings used for WebDAV as storage server.

Upload Folder Path: WebDAV folder path to which files are uploaded to.

WebDAV Server Access URL: The URL of the WebDAV server (WebDAV URLs of Common Cloud
Storage Services).
WebDAV Username: Username for the remote WebDav server.
WebDAV Password: Password for the remote WebDAV server.
Proxy Avatars: Proxy avatar file transmissions through your server instead of direct access to the
asset's URL.
Proxy Uploads: Proxy uploads file transmissions through your server instead of directly accessing the
asset's URL.
Minio

Introduction
Minio is an object storage server built for cloud applications and DevOps. Minio is S3 compatible and
provides an open-source alternative to AWS S3. You can download and install Minio pretty quickly. Minio
also provides an official Docker image. For further details, check out Minio documentation website.

AccessKey and SecretKey


Once you install and deploy Minio server, you can get the AccessKey and SecretKey from the startup
message.

2017-01-24T19:53:21.141689279Z
2017-01-24T19:53:21.141730078Z Endpoint: http://172.17.0.2:9000 http://127.0.0.1:9000
2017-01-24T19:53:21.141735582Z AccessKey: 5fD3434325fDaGE77BNJlSoV1xGp
2017-01-24T19:53:21.141738933Z SecretKey: Quie2teech4oofoo9Dahsoo7aithauja
2017-01-24T19:53:21.141742292Z Region: us-east-1
2017-01-24T19:53:21.141745405Z SQS ARNs: <none>
2017-01-24T19:53:21.141749472Z
2017-01-24T19:53:21.141752499Z Browser Access:
2017-01-24T19:53:21.141755711Z http://172.17.0.2:9000 http://127.0.0.1:9000
2017-01-24T19:53:21.141758830Z
2017-01-24T19:53:21.141762000Z Command-line Access: https://docs.minio.io/docs/minio-client-q
2017-01-24T19:53:21.141765638Z $ mc config host add myminio http://172.17.0.2:9000 1H2MI5B
2017-01-24T19:53:21.141768751Z
2017-01-24T19:53:21.141771631Z Object API (Amazon S3 compatible):
2017-01-24T19:53:21.141774638Z Go: https://docs.minio.io/docs/golang-client-quicks
2017-01-24T19:53:21.142003548Z Java: https://docs.minio.io/docs/java-client-quicksta
2017-01-24T19:53:21.142019474Z Python: https://docs.minio.io/docs/python-client-quicks
2017-01-24T19:53:21.142024004Z JavaScript: https://docs.minio.io/docs/javascript-client-qu
2017-01-24T19:53:21.142027614Z
2017-01-24T19:53:21.142030994Z Drive Capacity: 262 GiB Free, 303 GiB Total

To override Minio auto-generated keys, you may pass secret and access keys explicitly as environment
variables. Find more details here.

Setup BANKTEXT to use Minio


To setup Minio as the file storage server in BANKTEXT, go to File Uploads section under
Administration , then set Storage Type: GridFS (default) to AmazonS3 . Next, access the
AmazonS3 menu and update the following details:
Configuration Name Description

Bucket name Minio Bucket Name

Access Key Minio server Access Key

Secret Key Minio server Secret Access Key

Region us-east-1

http://[your.minio.domain/bucketna
Bucket URL e]

Signature Version v2 (This may not be needed if using ssl)

Force Path Style true (this may not be needed if using ssl)

0 (if you want that your files don't have an expiry


URLs expiration time date)

Set up Production
In production, you can use a reverse proxy with Minio server. Check out the documentation for Nginx,
Apache and Apache2.

You can secure access to Minio server with TLS. Check out the documentation here.

Note: If you specify a different region in Minio, ensure it is the same as the S3 region. Find a complete list of
regions here.
Recommendations for File Upload

GridFS
GridFS is the MongoDB specification for storing and retrieving large files such as images, audio files, video
files, etc. It is a kind of a file system to store files, but its data is stored within MongoDB collections. GridFS
has the capability to store files even greater than its document size limit of 16MB.

GridFS divides a file into chunks and stores each chunk of data in a separate document, each of maximum
size 255k.

GridFS, by default uses two collections fs.files and fs.chunks, to store the file's metadata and the chunks.
Each chunk is identified by its unique _id ObjectId field. The fs.files serves as a parent document. The
files_id field in the fs.chunks document links the chunk to its parent.

Though GridFS is used in BANKTEXT for file storage because MongoDB offers this functionality with zero
configuration, but GridFS is not recommended for day to day file storage needs in a production environment
because it puts an immense amount of load on the database.

GridFS is only sustainable if you are using Retention Policy and only storing a small number of
files per week, which are not hefty, but it is not recommended by us because it is not scalable.

FileSystem
It stores the files on the FileSystem of the server where your BANKTEXT instance is running. It is a good
option, but the problem arises when you start to scale. Because if you decide to have multiple BANKTEXT
servers to support a larger number of users, the FileSystem needs to be shared between all the BANKTEXT
servers.

If you want to have two separate virtual/physical servers, you will somehow have to share the folder too
where your files are stored using, for example NFS. It will require a lot of configurations.

We suggest FileSystem only when you are running a single BANKTEXT instance.

What we recommend as the best option for the file upload system are Amazon S3 and Google
Cloud Storage.
File Upload FAQs

Why am I getting the "Request Entity Too Large" error on file upload?

The error shown below is when the upload limit is less than the size of the file in

If you are using nginx as your load balancer, it could be nginx limit that is throwing the following
error not your BANKTEXT limit.

Please follow the nginx instructions here to resolve this issue.


General
Configure general settings of your workspace.

To access the general settings of your workspace, navigate to Administration > Workspace > Settings >
General

Remember always to hit Save Changes to apply any changes made.

General Settings
Show Setup Wizard: This setting SHOULD NOT be altered. It is been set automatically from
Pending -> In Progress -> Completed depending on whether your workspace's general setup
procedure has been completed. Changing this manually can lock your workspace. Please refer to this
issue
Site URL: This sets the URL of the workspace. Example: https://chat.domain.com/

Site Name: This sets the name of the workspace. Example My BANKTEXT Server

Document Domain: Lets you set the document domain.


Language: This sets the default language for the workspace. This setting is overridden if the user has
changed his language preference.
Allow Invalid Self-Signed Certs: Enable to allow invalid and self-signed SSL certificates for link
validation and previews.

Enable Content-Security-Policy: Do not disable this option unless you have a custom build and are
having problems due to inline-scripts
Restrict access inside any Iframe: Lets you set restrictions to load the BANKTEXT inside any iframe
Options to X-Frame-Options: Options to X-Frame-Options. You can see all the options here.
Enable Favorite Rooms: Lets you set if users can mark a room as favorite

First Channel After Login: Insert here the name of the channel that the user enters after logging in.
Setting this field to empty or setting invalid name results in the user being directed to the workspace's
home page. Example: #welcome

Unread Count: This setting changes the behavior of the unread counter
All messages: All messages are counted on the counter, regardless if they are mentioned or not.
User mentions only: Only mentions using @yourUsername are counted on the counter.

Group mentions only: Only group mentions using @all or @here are counted on the counter.

User and group mentions only: All mentions are counted, this includes @all , @here and
@yourUsername
Unread Count for Direct Messages: This setting changes the behavior of the unread counter on Direct
Messages
All messages: All messages sent by another user are counted on the counter.
Mentions only: Only mentions using @yourUsername are counted on the counter.

DeepLink_Url: Lets you set the DeepLink URL


CDN Prefix: If you want to use a CDN to load the assets of your workspace, insert here your CDN
Prefix.
Use CDN Prefix for all assets: This defines if all assets from the workspace come from a CDN.
CDN Prefix for JS/CSS: Insert here the prefix for the CDN that should load the JS/CSS assets.

Force SSL: You can use this setting to force SSL on your workspace. We strongly discourage the usage
of this setting, this should be done at the reverse proxy level by redirecting to HTTPS.
Force SSL should never be used with reverse proxy. If you have a reverse proxy, you should do
the redirect there. This option exists for deployments like Heroku, which does not allow the
redirect configuration at the reverse proxy.

Google Tag Manager Id: You can use Google Tag Manager on BANKTEXT by setting your Id on this
setting.
Bugsnag API Key: If you are integrating Bugsnag with BANKTEXT, you should put your Bugsnag API
Key here.
Store Last Message: Store the last message sent in each room. This enables the viewing of the last
message on the left sidebar (should be on by default)
Robots.txt File Contents: This sets the content of the Robots.txt file, used to help index your
workspace on different search engines and crawlers
Default Referrer Policy: This controls the 'referrer' header that's sent when requesting embedded
media from other workspaces. For more information, refer to MDN. Remember, a full page refresh is
required for this to take effect
Enable second-layer encryption for data transport: Lets you enable second-layer encryption.

This feature is currently in alpha

Reset Section to Default: Click to reset the general settings to default.

Apps

Number of days to keep logs from apps stored: Lets you set how long in days to keep logs from
BANKTEXT Apps.
Enable the App Framework: Use this setting to enable the BANKTEXT Apps Framework. This allows
you to add BANKTEXT Apps from our Marketplace to your workspace.

Enable development mode: Development mode allows the installation of apps that are not from the
BANKTEXT's Marketplace.
Apps' Source Package Storage type: Choose where all the apps' source code should be stored. Apps
can have multiple megabytes in size each.
Directory for storing apps source package: Absolute path in the filesystem for storing the apps'
source code (in zip file format)

REST API
Max Record Amount: This sets the maximum number of records the REST API should return when not
set to unlimited.
Default Count: The default count for REST API results if the consumer did not provide any.
Allow Getting Everything: This setting affects the count query parameter. See more at Offset and
Count Information
Yes: Allows the usage of the number 0 as count parameter. Setting count to 0 returns ALL
the data from that endpoint
No: Setting the number 0 on count , returns 0 results.

Enable Direct Message History Endpoint: This enables the /api/v1/im.history.others


which allows the viewing of direct messages sent by other users that the caller is not part of.
Enable Shields: Enables the usage of Shields via API. Shields are available at
/api/v1/shield.svg
Shield Types: Types of shields to enable as a comma-separated list, choose from online , channel
or * for all

Require authentication for users shields: Let you set if user authentication is required for shields.

Enable CORS: Use this setting to enable CORS for the REST API. Enabling CORS makes the
workspace only accept API Calls from specific origins.

Setting this to false makes your workspace only accept requests from the same domain of the
said workspace. E.g. BANKTEXT workspace will only accept requests from the BANKTEXT
domain.

CORS Origin: Here, you can set what origins are allowed to make requests to your workspace. You can
use * to accept from all origins. For multiple Origins, use a comma-separated list. E.g
https://domain1.com, https://domain2.com, https://domain3.com
Use REST instead of WebSocket for Meteor calls: Set if Rest is used instead of WebSocket for
Meteor calls.
User Limit for Adding All Users to Channel: This limits the number of users that can be added to a
Channel at the same time.

Update

Update Latest Available Version: Updates to the specific versions available


Enable the Update Checker: Checks automatically for new updates / important messages from the
BANKTEXT developers and receives notifications when available. The notification appears once per
new version as a clickable banner and as a message from the Rocket.Cat bot, both visible only for
administrators.

Notifications
Always notify mobile: Choose always to notify mobile devices regardless of presence status.

Max Room Members Before Disabling All Message Notifications: Max number of members in the
room when notifications for all messages get disabled. Users can still change per room setting to
receive all notifications on an individual basis. (0 to disable)

Iframe Integration

To be able to use the microphone, camera, and geolocation in an iframe, be sure to allow the
iframe features policy. Example

<iframe src="https://open.BANKTEXT/" allow="geolocation; microphone; camera"></if

Enable Send: This setting defines if BANKTEXT can send events to the parent window.
Send Target Origin: Origin with protocol prefix, which commands are sent to e.g.
https://localhost , or * to allow sending to anywhere.

Enable Receive: This setting defines if a parent window can send commands to BANKTEXT.
Receive Origins: Origins with protocol prefix, separated by commas, which are allowed to receive
commands e.g. https://localhost , http://localhost , or * to allow receiving from
anywhere.

NPS
See this section for NPS

Net Promoter Score (NPS) survey

Stream Cast

Stream Cast Address: IP or Host of your BANKTEXT central Stream Cast. E.g.
192.168.1.1:3000 or localhost:4000

Timezone

Default timezone for reporting: Sets the default timezone that is used when showing dashboards or
sending emails.
Custom timezone: Let you set custom timezones

Translations
Custom Translations: With this setting, you can configure custom translations for your workspace.
Should be a valid JSON where keys are languages containing a dictionary of keys and translations.
Example:

{
"en": {
"Channels": "Rooms"
},
"pt": {
"Channels": "Salas"
}
}

UTF8

UTF8 Names Validation: RegExp used to validate usernames and channel names
UTF8 Channel Names Validation: RegExp used to validate channel names

If you are having problems with names when creating channels (e.g., when using non-English
characters), changing these values will probably fix it. For example, using [\w_-]+ should
allow any non-space character to be part of a name.
Net Promoter Score (NPS) survey

NPS aims to assess user satisfaction and make the BANKTEXT experience even more pleasant for users.

By allowing it to run on your workspace, you are helping BANKTEXT to:

Build a better product & better user experience


Develop and prioritize features aligned with our users’ needs
Get accurate user feedback on what needs fixing versus what needs improvements.

What do the users see?


A banner is exhibited with the question: “How likely are you to recommend us to a friend or colleague?”
and a scale from 0-10 to collect the answer.

If the user clicks on a score, a modal is exhibited to collect text feedback.

Both actions can be dismissed by the user.

How does NPS work?


NPS surveys are triggered every 6 months via BANKTEXT cloud. The workspace needs to be registered in
BANKTEXT cloud. Otherwise, the survey is never triggered.

All users in the workspace receive the survey on the same day.

Admins get notified one month before the NPS is rolled out via an in-app banner and alert via Rocket.Cat.
That means admins can quickly turn off the NPS in case they prefer.

How is NPS data collected?


All feedback received through the NPS is anonymous. It does not collect any personal data.

The following data elements are transmitted via statistics collector:


Per-user who participates in the NPS

An anonymous but unique hash value per user. The hash is created locally in form of a SHA256-
hash of the combined user ID and NPS ID.
The user ID is a local workspace value per user and is not transmitted outside of the workspace
for the NPS campaign.
The NPS ID is a string that identifies the NPS campaign to which the user is responding
From the hash itself, the user ID and NPS ID cannot be reversely identified.

The user role (e.g. guest, admin)


The numerical NPS score of the user (a number between 1-10)
An optional comment from the user (e.g. “I like the emojis a lot!”)
A workspace ID, which is a unique string per workspace but does not indicate who uses it

How to turn off NPS survey?


Our users have total freedom to disable the NPS survey. Simply follow the steps below to switch NPS off:

Within your BANKTEXT workspace, navigate to Administration > Workspace > Settings > General
> NPS
Uncheck “Enable NPS Survey”

Once the setting is turned off, the NPS survey stays off indefinitely.
IRC

Internet Relay Chat (IRC) is a text-based group communication tool. Users join uniquely named channels, or
rooms, for open discussion. IRC also supports private messages between individual users and file-sharing
capabilities. This package integrates these layers of functionality with BANKTEXT.
IRC Federation
Connect to other IRC servers

IRC Federation is in beta. Use on a production system is not recommended at this time.

IRC Federation allows your server to connect to other IRC servers.

Internet Relay Chat (IRC) is a text-based group communication tool. Users join uniquely named channels, or
rooms, for open discussion. IRC also supports private messages between individual users and file-sharing
capabilities. This package integrates these layers of functionality with BANKTEXT.

After configuring, you are able to communicate directly from your BANKTEXT to any external IRC server.

To access this setting, go to Administration > Workspace > Settings > IRC Federation.

Enable: When enabled, provides settings for IRC Federation integration.

Protocol: This lets you set the protocol your IRC server uses. exampleRFC2813 .

Host: The host on which your IRC is running on, for example irc.BANKTEXT

Port: The port to bind to on the IRC host server.


Name: What to name your IRC server as.
Description: Description of your IRC server.
Local Password: Set the local password if existing.

Peer Password: Lets you specify the peer password.

After configuring, hit Save Changes and Restart your server.


Layout
Customize the look of your workspace

The layout feature gives you the possibility to customize the look of your BANKTEXT workspace.

This involves aspects like specifying the content and setting custom CSS and Javascript.

To access this setting, go to Administration > Workspace > Settings > Layout.

Remember to Save changes to apply any customization made.

Colors

This section has color settings and definitions you can edit or customize to have a different look on
your UI elements.

Colors can be set using existing Expressions or Color by specifying them from the color picker
provided.

Old Colors

A list of pre-defined color variables for old versions of BANKTEXT (<6.0) can be found here.

Custom CSS
Here, you can define custom CSS to modify how your workspace looks.

Example

The simple CSS code below changes the color of your BANKTEXT rooms and the hover color on the
sidebar.
.rcx-content--main {
--rcx-color-surface-room: #5d91f7;
}
.rcx-sidebar--main {
--rcx-color-surface-hover: #e07c41;
}

Customized BANKTEXT UI

Learn more about the classes and colors available for easy customization in the guide below.

Customizing Colors
BANKTEXT Developer

Custom Scripts
This takes in javascript code that will be executed on specified events.

Custom Script for Logout Flow: Set a script to be run during any logout process.
Custom Script for Logged Out Users: Custom Script that will run ALWAYS and to ANY user that is
NOT logged in. e.g. (whenever you enter the login page).
Custom Script for Logged In Users: Custom Script that will run ALWAYS and to ANY user that is
logged in. e.g. (whenever you enter the chat and you are logged in)

Example

Setting a custom script for logged-in users, like the example below, will alert "Welcome" whenever a user
logs in and is on the /home page.
if(window.location.pathname == '/home'){
alert("Welcome")
}

Home page content


The section allows you to change the content of your workspace homepage.

Home Title: The title on the header of the first screen that your users will see when they log in.
Show home page button on sidebar header: When enabled, the Home button will be shown on your
server's navbar.
Block content: The content of the first screen that your users will see when logging in.
Show custom content to homepage: Enable to show custom content on the homepage.

Show custom content only: Turn this on to onhide all other white blocks in the
homepage.
Terms of Service: Here, you can set the terms of service of your workspace. You can also redirect to
YOUR-SERVER-URL/terms-of-service. This is shown by default on the links below your login page.
Login Terms: Specifies the terms on which users are to accept before login in.
Privacy Policy: Here you can set the privacy policy of your server. Can also be accessed via
YOUR-
SERVER-URL/privacy-policy . This is shown by default on the links below your login page.

Legal Notice: By default this screen is accessed on the links under the login page, here you can set the
legal notice of your server. Can also be accessed via YOUR-SERVER-URL/legal-notice .

Side navigation footer: This is the logo or text on the bottom left of the sidebar. We recommend using
the images set on your Assets for better consistency.

Login
Customize your login page.

This is an Enterprise feature.

Hide Logo: Enable this to hide the BANKTEXT.


Hide Title: Turn this on to hide the title on the login page.

Hide "Powered by": Enabling this hides the "Powered by" on the login page.
Login Template: Select the direction of the login page. Horizontal / Vertical .

Show Default Login Form: Enable to show the default login form.

User Interface
Display Roles: Toggles the display of user roles shown beside the usernames on messages.

Group Channels By Type: Enabling this separates the channels by category (Channel, Private
Room, Direct Message or Discussion) on the left sidebar.
Use Full Name Initials to Generate Default Avatar: This makes the default avatars are generated
using the person's Full Name instead of Username. E.g. By default the userblue.ducks with the
name Richards Nate will have an avatar with the letters BD by default but if this setting is active, it
will be RN .

Use Real Name: Enabling this changes the display of Usernames to Full Names.

Click to Create Direct Message: Turn this on for workspace users to be able to create a direct message
with another user when they click on thier profile. This skips the viewing of the user's profile.
Number of users' autocomplete suggestions: Sets the number of autocomplete suggestions shown
when you begin tagging any user with the @ symbol.

Unread Counter Style:


Different Style for user mentions: Makes the notification counter differentiate normal messages
from mentions
Same style for mentions: Makes the count mark mentions and normal messages the same
Allow Special Characters in Room Names: When enabled, it allows for the use of special characters
like ! @ # $ % ^ & * in room names

Show top navbar in embedded layout: If set to true, it shows the top navbar when embedding using ?
layout=embedded at the end of the URL.
LDAP

Lightweight Directory Access Protocol (LDAP) lets anyone locate data about your server or company.
BANKTEXT lets you connect with your Active Directory application or Identity Management System through
LDAP. You can leverage advanced settings such as background sync, roles mapping from groups, auto-
logout, and advanced user data sync.

To configure LDAP authentication,

Go to Administration > Workspace > Settings > LDAP

Enable LDAP, and add configurations to connect with your LDAP server.

BANKTEXT supports a variety of LDAP capabilities and associated identity management features. For
example, you can import users from an active directory into your workspace.

The LDAP features supported by community and enterprise editions are detailed in Identity
Management.

LDAP Actions
These actions are found at the top of the LDAP settings screen.

Test Connection: This will use your provided values and test for a connection. It will test the
authentication and encryption but not the syncing settings.
Test LDAP Search: Searches and notify if a user is found as configured in the user search page.
Sync Now: Syncs your LDAP data based on the Data Sync configurations.
LDAP Documentation: This will redirect you to the BANKTEXT LDAP Documentation.

If you dont get a response alert for these actions, always check the logs Administration >
Workspace > View Logs to confirm if they were succesful or there is an error.

LDAP Connection Setting

LDAP User Search


LDAP Data Sync Settings

LDAP Examples
LDAP Connection Setting

Set up Authentication, Timeouts, and Encryption for your LDAP connection. Go to the Connection tab of
the LDAP settings and set the following parameters:

Enable: Turns LDAP Authentication ON or OFF.


Server Type: Allows you to select the type of server you are connecting to.

Host: The LDAP connection host or domain, e.g. orldap.example.com 10.0.0.30.


Port: The LDAP connection Port, usually 389 or 636.

Reconnect: Enable to try reconnecting automatically when the connection is interrupted for some
reason while executing operations.
Login Fallback: Enable to allow regular password users to log in on BANKTEXT. It will also let LDAP
users continue using BANKTEXT if the LDAP server is down.

Authentication

Enable: Enable or disables authentication to skip binding the user DN and password.
User DN: The administrative account login details or LDAP user with access to the active directory.
This user can perform user lookups to authenticate other users when they sign in. This is typically a
service account explicitly created for third-party integrations. Use a fully qualified name, such as
cn=Administrator,cn=Users,dc=Example,dc=com. DN means Distinguished Name.

Password: The password for the User DN.

Encryption

Encryption: The encryption method used to secure communications to the LDAP server. Examples
include No encryption, SSL/LDAPS (encrypted from the start), and StartTLS (upgrade to encrypted
communication once connected).
CA Cert: The CA certificate to use in signing.

Reject Unauthorized: Disable this option to allow certificates that can not be verified. Usually, Self
Signed Certificates will require this option disabled to work.

Timeouts

Timeout (ms): Waiting time in milliseconds after a search is initiated before returning an error.
Connection Timeout (ms): Maximum time in milliseconds before connection timeout.

Idle Timeout (ms): Waiting time in milliseconds after the latest LDAP operation until closing the
connection. Each operation opens a new connection.
After completing the settings, be sure to Save changes.
LDAP User Search

Perform an LDAP user search. Go to the User Search tab and configure these settings:

Find user after login


When enabled, a search to find the user's DN is performed after binding to ensure it successfully prevents
login with empty passwords when allowed by the AD configuration.

Search Filter

Base DN: The fully qualified Distinguished Name (DN) of an LDAP subtree you want to search for users
and groups. There is no limit to the number of groups you can add, but they must be defined in the same
domain base as the users who belong to them. Example:
ou=Users+ou=Projects,dc=Example,dc=com .

If you specify restricted user groups, only users that belong to those groups will be in scope. We
recommend setting the top level of your LDAP directory tree as your domain base and using a
search filter to control access.

Filter: If specified, only users that match this filter will be allowed to log in. If no filter is selected, all users
within the scope of the defined domain base can sign in.
E.g., for Active Directory
memberOf=cn=ROCKET_CHAT,ou=General Groups

E.g., for OpenLDAP (extensible match search)


ou:dn:=ROCKET_CHAT

Scope: The search scope.


Search Field: The LDAP attribute that identifies the LDAP user who attempts authentication. This field
should be sAMAccountName for most Active Directory installations, but it may be uid for other LDAP
solutions, such as OpenLDAP. You can use mail to identify users by email or whatever attribute you
want. You can use multiple values separated by a comma to allow users to log in using multiple
identifiers like username or email.
Search Page Size: The maximum number of entries each result page will return to be processed.
Search Size Limit: The maximum number of entries to return. It must be greater than the Search Size.

Group Filter
The group filter is for OpenLDAP as it doesnt have a memberOf filter.
Enable LDAP User Group Filter: Enable to restrict users access in a LDAP group. It is useful for
allowing OpenLDAP servers without a memberOf filter to limit group access.

Group ObjectClass: The objectclass that identifies the groups. E.g.


OpenLDAP:groupOfUniqueNames .
Group ID Attribute: E.g. *OpenLDAP:*cn .

Group Member Attribute: E.g. *OpenLDAP:*uniqueMember .

Group Member Format: E.g. *OpenLDAP:*uid=#{username},ou=users,o=Company,c=com .

Group name: Group name to which the user should belong.


LDAP Data Sync Settings

With LDAP, you can sync your data. Here are some basic data sync settings in BANKTEXT.

Unique Identifier Field: The field that will link the LDAP user and the BANKTEXT user. You can
include multiple values separated by a comma to get the value from the LDAP record.
Merge Existing Users: Whether or not to merge existing users. When importing a user from LDAP and
a user with the same username already exists, the new user data (including info and password) will
merge into the existing data.
Update User Data on Login: Enable to update user data on login.
Default Domain: If provided, the default domain generates a unique email for users whose emails were
not imported from LDAP. The mounting of the email will beusername@default domain or
unique id@default domain .

Avatar

Sync User Avatar: Enable syncing the user's avatar.

User Avatar Field: The field used as an avatar for users. Leave blank to usethumbnailPhoto first
and jpegPhoto as a fallback.

Mapping

Username Field: Usually, the sAMAccountName is used as a username for new users. Leave empty
to let the user pick their BANKTEXT username. You can use template tags too, for example:

#{givenName}.#{sn}

Email Field: The LDAP field binds the user's email.


Name Field: LDAP name filed for binding.
LDAP Enterprise Settings

Advanced Sync

Sync User Active State: Determine if users should be enabled or disabled on BANKTEXT based on
the LDAP status. The ' pwdAccountLockedTime ' attribute will be used to determine if the user is
disabled. This setting is not yet compatible with all LDAP Servers, so if you don't use the
' pwdAccountLockedTime ' attribute, you may want to disable it completely.

Attributes to Query: Specify which attributes should be returned on LDAP queries, separating them
with commas. Defaults to everything. * represents all regular attributes and + represents all
operational attributes. Make sure to include every attribute that is used by every BANKTEXT sync
option.

Auto Logout Deactivated Users

Enable Auto Logout: Set true to enable auto-logout.

Auto Logout Interval: Allows you to set the interval for auto-logout.

Background Sync

Background Sync: Enable periodic background sync.


Background Sync interval: The interval between synchronizations, using the Cron Text format.

Background Sync Import New Users: Will import all users (based on your filter criteria) that exist in
LDAP and do not exist in BANKTEXT.
Background Sync Update Existing Users: This will sync the avatar, fields, username, etc (based on
your configuration) of all users already imported from LDAP on every Sync Interval.
Avatar Background Sync: Enable a separate background process to sync user avatars.
Avatar Background Sync Interval: The interval between avatar sync, using the Cron Text format.

Sync Channels
Auto Sync LDAP Groups to Channels: Enable this feature to automatically add users to a channel
based on their LDAP group.
Channel Admin: When the above setting causes a channel to be created automatically during user
sync, this setting will determine what user will become the channel's admin.
User Group filter: The LDAP search filter checks if a user is in a group. If the search returns any results,
the user is considered to be in the group. When performing the search, the following strings, if present in
the filter, will be substituted with data from the user and group whose membership status is being
checked:

#{username} - Replaced with the username of the user in RocketChat

#{groupName} - Replaced with the name of the group in LDAP

#{userdn} - Replaced with the LDAP Distinguished Name of the user


LDAP Group BaseDN: The LDAP group base DN
LDAP Group Channel Map: The map of LDAP groups to BANKTEXT channels in JSON format. For
example, the following objectives will add any user in the LDAP group "employee" to the general
channel on BANKTEXT.

{
"employee": "general"
}

Auto Remove Users from Channels: Enabling this will remove any users in a channel that does not
have the corresponding LDAP group! This will happen in every login and background sync, so removing
a group on LDAP will not instantly remove access to channels on BANKTEXT.

Sync Custom Fields

Sync Custom Fields: Enable to activate custom field sync


Custom Fields Mapping: A map of the custom field to sync

Sync Roles
Sync LDAP Groups: Enable this setting to activate role mapping from user groups on the community
edition of BANKTEXT.
Auto Remove User Roles: Enable this setting to automatically remove roles from LDAP users that
don't have the corresponding group. This will only remove roles automatically that are set under the user
data group map below.
User Group Filter: The LDAP search filter checks if a user is in a group. If the search returns any
results, the user is considered to be in the group. When performing the search, the following strings, if
present in the filter, will be substituted with data from the user and group whose membership status is
being checked:

#{username} - Replaced with the username of the user in RocketChat

#{groupName} - Replaced with the name of the group in LDAP

#{userdn} - Replaced with the LDAP Distinguished Name of the user


LDAP Group BaseDN: The LDAP BaseDN is used to determine if users are in a group.
User Data Group Map: The mapping of LDAP groups to BANKTEXT roles in JSON format. For
example, the following object will map the rocket-admin LDAP group to BANKTEXT's "admin" role and
the "tech-support" group to the "support" role. It's also possible to map one group to multiple roles
("manager" group to "leader" and "moderator" roles).

{
"rocket-admin": "admin",
"tech-support": "support",
"manager": ["leader", "moderator"]
}

Sync Teams

Enable team mapping from LDAP to BANKTEXT: Enables team mapping from LDAP to BANKTEXT
Team mapping from LDAP to BANKTEXT: Team mapping from LDAP to BANKTEXT

Validate mapping for each login: Determine if users' teams should be updated every time they log in to
BANKTEXT. The team will be loaded only on their first login if this is turned off.
LDAP Teams BaseDN: The LDAP BaseDN used to look up user teams.

LDAP Team Name Attribute: The LDAP attribute that BANKTEXT should use to load the team's name.
You can specify more than one attribute name by separating them with a comma.
LDAP query to get user groups: LDAP query to get the LDAP groups that the user is part of
LDAP Examples

Here are some examples of the LDAP settings and their values. The examples will be based on these
environments:

Host = ldap.domain.com

Group = CN=ROCKET_ACCESS,CN=Users,DC=domain,DC=com (Access Control


Group)

Proxy User = rocket.service@domain.com or CN=rocket


service,CN=Users,DC=domain,DC=com (DN or userPrincipalName)

Proxy User password = urpass (Proxy Users password)

Replace the values above with your respective environment.

Log on with a username

LDAP_Enable = True

LDAP_Dn = dc=domain,dc=com

LDAP_Url = ldap://ldapserver

LDAP_Port = 389

LDAP_Bind_Search =

{"filter": "(&(objectCategory=person)(objectclass=user)
(memberOf=CN=ROCKET_ACCESS,CN=Users,DC=domain,DC=com)(sAMAccountName=#
{username}))", "scope": "sub", "userDN": "rocket.service@domain.com",
"password": "urpass"}

If you need to auth users from subgroups in LDAP use this filter:

LDAP_Bind_search = {"filter": "(&(objectCategory=person)(objectclass=user)


(memberOf:1.2.840.113556.1.4.1941:=CN=ROCKET_ACCESS,CN=Users,DC=domain,DC=co
m)(sAMAccountName=#{username}))", "scope": "sub", "userDN":
"rocket.service@domain.com", "password": "urpass"}

Log on with an email address


LDAP_Enable = True
LDAP_Dn = dc=domain,dc=com

LDAP_Url = ldap://ldapserver

LDAP_Port = 389

LDAP_Bind_Search =

{"filter": "(&(objectCategory=person)(objectclass=user)
(memberOf=CN=ROCKET_ACCESS,CN=Users,DC=domain,DC=com)(mail=#{username}))",
"scope": "sub", "userDN": "rocket.service@domain.com", "password":
"urpass"}

Log on with either an email address or username

LDAP_Enable = True

LDAP_Dn = dc=domain,dc=com

LDAP_Url = ldap://ldapserver

LDAP_Port = 389

LDAP_Bind_Search =

{"filter": "(&(objectCategory=person)(objectclass=user)
(memberOf=CN=ROCKET_ACCESS,CN=Users,DC=domain,DC=com)(|(mail=#{username})
(sAMAccountName=#{username})))", "scope": "sub", "userDN":
"rocket.service@domain.com", "password": "urpass"}

Log in
When you enable LDAP, the login form will log in users via LDAP instead the internal account system.

LDAPS - SSL Connection

Use stunnel to create a secure connection to the LDAP server. Create a new configuration file
/etc/stunnel/ldaps.conf with the following content:

options = NO_SSLv2

[ldaps]
client = yes
accept = 389
connect = your_ldap_server.com:636

To enable Stunnel automatic startup, change the ENABLED variable in /etc/default/stunnel4 to 1 :


# Change to one to enable stunnel automatic startup
ENABLED=1

Finally, on the BANKTEXT server under /admin/LDAP set these values:

LDAP_Url = localhost

LDAP_Port = 389
Livestream & Broadcasting
Integration between BANKTEXT and YouTube Live

The Livestream & Broadcasting integration has been deprecated, may not work as expected, and
will not receive updates.

The integration between BANKTEXT and YouTube Live allows channel owners to broadcast their live
camera feed to Livestream inside a channel.

To access the broadcasting settings,

Navigate to Administration > Workspace > Settings > Livestream & Broadcasting.

This feature is currently in beta! Kindly report any bugs here.

Configuration
The integration between Rocket and YouTube Live allows channel owners to broadcast their live camera
feed to Livestream inside a channel. You can only use the Broadcasting feature with the Livestream feature.

Users can not create live broadcasts using their webcams if you switch the Broadcasting Enable to false in
your broadcast settings, but they can still link to a live stream from YouTube.

To use YouTube Live integration, the workspace administrator needs a Google Account to access the
Google API Console. With this, the administrator has access to a valid Client ID, API Key, and Secret, which
is essential for broadcasting.

To learn more about Youtube live integration, please read YouTube Data API Overview.

Livestream
After a correct set-up, the Livestream tab allows you to Broadcast your camera when editing the source
URL. While we prepare the broadcast and live stream for your session, opening the popout can take a little
while. A blinking icon and "Preparing" status displays in the control bar. After that initial phase, the
broadcast will be ready and available to start with your click.
Logs
Configure server logs

Here you have the interface to configure how server logs are received.

Logs are a very useful way to monitor workspace activities in detail, and they can start as a very helpful point
for debugging in case of any failures or errors.

To access this section, navigate to Administration > Workspace > Settings > Logs.

Log Level: A dropdown to select the level of logs to receive


Log View Limit: The limit of logs to view
Trace method calls: When enabled, it gives the ability to trace every method call
Trace method filter: The text here is evaluated as RegExp ( new RegExp('text') ). Keep it empty
to show a trace of every call.

Trace subscription calls: If enabled, every subscription call will be traced.

Trace subscription filter: The text here is evaluated as RegExp ( new RegExp('text') ). Keep it
empty to show a trace of every call.

Log Exceptions to Channel: A channel that receives all captured exceptions. Leave empty to ignore
exceptions.

Prometheus
Prometheus is an open-source monitoring solution.

Enable: When enabled, Prometheus monitoring is activated.


Port; The port to listen to.
Reset Interval (ms): Takes in time in milliseconds when the connection should be reset.

Collect NodeJS GC: When enabled, NodeJS garbage collector is activated.


API: Track User Agent: If set to true, API calls user agent are tracked.
Message
Configure message settings

To access this menu, navigate to Administration > Workspace > Settings > Message.

Remember to hit Save Changes in order to apply any changes made.

Basic Settings
Allow Message Pinning: When enabled, allow messages to be pinned to any channel.
Allow Message Starring: When enabled, users are able to star messages.
Video Recorder Enabled: Requires video/webm files to be an accepted media type within File
Upload settings.
Allow message Editing: When enabled, users have the ability to edit messages.

Block Message Editing After (n) Minutes: Takes in time in minutes in which users are allowed to edit
messages. After that they are unable. Enter 0 to disable blocking.
Allow message-deleting: Toggle on to allow users to be able to delete messages.
Block Message Deleting After (n) Minutes: This lets you set a duration in minutes in which users are
allowed to delete messages.
Allow Unrecognized Slash Commands: When enabled, unknown Slash Commands are allowed.
Allow user direct messages to yourself: When enabled, users are able to send direct messages to
themselves.
Always Search Using RegExp: When enabled, all searches use RegExp. We recommend setting this
True if your language is not supported on MongoDB text search.
Show Deleted Status: When enabled, shows deleted when a message is deleted.

Allow Message bad words filtering: Turn on to allow filtering of blacklisted words in messages.

Add Bad Words to the Blacklist: Takes in a list of comma-separated words that are to be filtered
from the workspace.
Remove words from the Blacklist: Takes in any word already on the Blacklist and removes it.

Keep Per Message Editing History: Whether or not to keep message editing history.
Maximum Channel Size for ALL Message: This lets you set the maximum size of a channel.

Maximum Allowed Characters Per Message: This lets you specify the maximum number of characters
a message can contain.

Allow converting long messages to attachments: When enabled, long messages can be converted
to attachments.
Grouping Period (in seconds): Takes in time in seconds in which messages are grouped with the
previous message if both are from the same user and the elapsed time was less than the informed time
in seconds.
Embed Link Previews: Turn on to enable embedded link previews when links are posted in a chat.
Embed Request User Agent: This lets you set a request user agent.
Embed Cache Expiration Days: Set how long in days where embed cache expires.
Embed Ignored Hosts: Comma-separated list of hosts or CIDR addresses, eg. localhost ,
127.0.0.1 , 10.0.0.0/8 , 172.16.0.0/12 , 192.168.0.0/16

Safe Ports: Comma-separated list of ports allowed for previewing.

Time Format: Specify the format of time on your server. See also: Moment.js
Date Format: Set the format of the date in your server.
Time and Date Format: This lets you set the time and date format.
Maximum Number of Chained Quotes: This lets you set the maximum number of Chained quotes.
Hide System Messages: Select from a dropdown which system messages are to be hidden.
DirectMesssage_maxUsers: Specifies the maximum uses for direct messages.

Message Erasure Type: Select from the drop-down what to do with messages of users who removed
their accounts.
Code highlighting languages list: Comma-separated list of languages (all supported languages at
https://github.com/highlightjs/highlight.js/tree/9.18.5#supported-languages ) that are used to highlight
code blocks.

Hex Color Preview


Enabled: Set true to allow preview for hex colors.

Message Attachments

Enable image thumbnails to save bandwidth: When set to true, thumbnails are served instead of the
original image to reduce bandwidth usage. Images at original resolution can be downloaded using the
icon next to the attachment's name.
Thumbnail's max width (in pixels): Takes in the thumbnail's max width in pixels

Thumbnail's max height (in pixels): Takes in the thumbnail's max height in pixels
Remove EXIF metadata from supported files: Enable to strip out EXIF metadata from image files
(jpeg, tiff, etc.). This setting is not retroactive, so files uploaded while disabled will have EXIF data

Audio Message

Audio Recorder Enabled: When set to true, users are able to record audio.
Audio Message Bit Rate: Lets you set the bit rate for audio messages.

Read Receipts

Show Read Receipts: Whether to show read receipts.


Detailed Read Receipts: This shows each user's read receipts.

Delivered messages have a checkmark on the right.


The checkmark turns blue when the message is read.
Read receipt indicator

With read receipt enabled, the message info action shows a list of users that have read the message.

Auto-Translate

Enable Auto-Translate: Enabling auto-translation allows users with auto-translate permission to


have all messages automatically translated into their selected language. Fees may apply.

Service Provider: A drop-down to select the translation service provider.

DeepL

API Key: Takes in DeepL API key.

Google

API Key: Takes in the Google API key.

Microsoft

Ocp-Apim-Subscription-Key: Takes in your Microsoft Ocp-Apim-Subscription-Key.

Google Maps

Enable Mapview: Enabling map view displays a location share button on the right of the chat input field.

Google Static Maps API Key: The Google Static Maps API Key. This can be obtained from the Google
Developers Console for free.

Katex
Katex Enabled: When enabled, allows the use of katex for math typesetting in messages.

Allow Parenthesis Syntax: When enabled, you can use [katex block] and (inline katex) syntaxes.
Allow Dollar Syntax: When enabled, allows using $$katex block$$ and $inline katex$
syntaxes.
Meta
Set custom Meta properties

With the Meta configuration, you can set custom meta properties for your workspace.

Meta elements are tags used in HTML and XHTML documents to provide structured metadata about a Web
page. They are very important for SEO, among other uses.

To access this setting:

Navigate to Administration > Workspace > Settings > Meta.


Language: This lets you set the meta language. eg en

Facebook App Id: When provided, allows the Facebook scraper to associate the Open Graph entity
with your server.
Robots: Specify to tell search engines what to and what not to index or follow
Google Site Verification: Input metatag to verify you own the server/site.
MSValidate.01: A tag that is to be added to your site (header) to verify your site with the Bing webmaster
tool.
Custom Meta Tags: Any custom meta tags you wish to include. Example

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
Mobile
Define behaviors for connecting to your workspace from mobile devices

These settings are applied to the users using Mobile App on your workspace. This gives you the flexibility to
define some behaviors when connecting to your workspace from a mobile device.

To access this setting:

Navigate to Administration > Workspace > Settings > Mobile.


Allow Save Media to Gallery: When enabled, files shared in chats are saved on the user's device
gallery.

Screen Lock

Force screen lock: When enabled, your users are required to use a PIN, BIOMETRIC, or FACE ID to
unlock the app.
Force screen lock after: The time in seconds to request the password again after the expiry of the
latest section.
OAuth

Beyond the basic username/password authentication, BANKTEXT supports several other authentication
methods. These OAuth methods mostly require a client ID and a secret.

To set up your desired OAuth method,

Navigate to Administration > Workspace > Settings> OAuth.

You can view a list of some OAuth methods that are supported by BANKTEXT, including Google, Github,
LinkedIn, etc.

Add Custom OAuth


To add a custom OAuth,

Click Add custom OAuth.

Give a unique name for your custom OAuth.


Click Add.
When configuring your OAuth Provider, you must include a Callback URL. Use
https://yourcompany.BANKTEXT/_oauth/customoauth

Refresh OAuth Services


To update the options shown on your workspace login page based on your saved settings, click Refresh
OAuth Services.
Facebook OAuth Setup

Facebook OAuth requires you to fill in a Facebook App Id and Secret.

To enable Facebook OAuth on your workspace,

Login to your Facebook Developer account and navigate to My Apps.


Click on Create App. Select the app type from the list of options and Next.
Fill in the required details, then click Create App.
A dashboard with various app products is displayed. Click Set Up under Facebook Login.

Select Web as the platform for the app.

Go to Facebook Login > Settings page. Fill in the Valid OAuth Redirect URIs field with your
workspace callback URL. Click Save Changes.
To view the OAuth credentials in your app, select Settings > Basic. Copy your App ID and App Secret.
Switch the App mode from Development to Live.
Navigate to OAuth settings (Administration > Workspace > Settings> OAuth) in your workspace.
In the Facebook tab, fill in the OAuth credentials you copied earlier and toggle on Facebook Login.
Click Save Changes. A Sign in with Facebook button appears on your workspace's login page. Users
can now sign in with Facebook by clicking that button.
Google OAuth Setup

Google OAuth requires you to fill in the Google Id and Google Secret of your Google OAuth app.

To enable Google OAuth on your workspace,

Go to the Google Cloud console and create a new project or select an existing one.
From the sidebar, Navigate to API & Services > OAuth consent screen and fill in the required fields to
Create a consent screen.

Navigate to Credentials, Click New Credentials, then select OAuth client ID.
Select Web application as the application type, then fill in the required details
Add the following authorized redirect URIs

https://YOU DOMAIN/_oauth/google?close
https://YOU DOMAIN/_oauth/google

It is necessary to register with ?close to avoid receiving a Erro 400:


redirect_uri_mismatch (reference)

Click Create

Your OAuth Client is created, and your Client ID and Secret are displayed in a modal box. Copy
or download these credentials.
On your BANKTEXT workspace, navigate to Administration > Workspace > Settings> OAuth >
Google
Fill in the OAuth credentials you copied earlier and toggle on Google Login.
Click Save Changes. A Sign in with Google button appears on your workspace's login page. Users
can now sign in with google.
GitLab OAuth Setup

Google OAuth requires you to fill in the Application ID and Secret of your GitLab OAuth app.

To enable GitLab OAuth on your workspace,

Go to GitLab Applications.
Fill in the Application Name, redirect URI, and Scope. Click Save application.
After the application is created successfully, the OAuth credentials are displayed.
Copy the Application ID and Secret.

Navigate to OAuth settings (Administration > Workspace > Settings> OAuth) in your workspace.
In the GitLab tab, fill in the OAuth credentials you copied earlier and toggle on OAuth Enabled.
Click Save Changes. A Sign in with GitLab button appears on your workspace's login page. Users can
now sign in with GitLab by clicking that button.
GitHub OAuth Setup

GitHub OAuth requires you to fill in the GitHub Client ID and Secret .

To enable GitHub OAuth on your workspace,

Go to your GitHub Developers Settings.


Navigate to OAuth Apps and click New OAuth App.
Fill in the required information, including the callback URL, and click Register application.

If your callback URL is wrong, GitHub does not display any error. Instead of logging in, you
receive an error message saying, "No matching login attempt found."

Your Client Id and a button to Generate a new client secret are now displayed. Click the button to
generate a new client secret for your OAuth credentials.

Copy the Application ID and Secret.


Navigate to OAuth settings (Administration > Workspace > Settings> OAuth) in your workspace.

In the GitHub Enterprise tab, fill in the OAuth credentials you copied earlier and toggle on OAuth
Enabled.
Click Save Changes. A Sign in with GitHub button appears on your workspace's login page. Users
can now sign in with GitHub by clicking that button.
LinkedIn OAuth Setup

LinkedIn OAuth requires you to fill in the LinkedIn Client ID and Secret .

To enable LinkedIn OAuth on your workspace,

Go to LinkedIn Developers Portal. Click Create app.


Fill in the required information, then hit Create app.
In the Auth tab of the app, add the Authorized redirect URL.

Copy the LinkedIn Client ID and Secret.

Navigate to OAuth settings (Administration > Workspace > Settings> OAuth) in your workspace.
In the LinkedIn tab, fill in the OAuth credentials you copied earlier and toggle on LinkedIn Login.
Click Save Changes. A Sign in with LinkedIn button appears on your workspace's login page. Users
can now sign in with LinkedIn by clicking that button.
NextCloud OAuth Setup

NextCloud OAuth requires you to fill in the NextCloud Client ID and Secret .

To enable NextCloud OAuth on your workspace,

Login to your Nextcloud server as admin


Go to Settings > Administration > Workspace > Security.
Locate the OAuth 2.0 clients section.

Fill in the client name and the redirect URL. Click Add.
Copy the Client ID and Secret from the new OAuth App.

Navigate to OAuth settings (Administration > Workspace > Settings> OAuth) in your workspace.
In the NextCloud tab, fill in the OAuth credentials you copied earlier and toggle on OAuth Enabled.
Click Save Changes. A Sign in with NextCloud button appears on your workspace's login page.
Users can now sign in with NextCloud by clicking that button.
WordPress OAuth Setup

The easiest way to configure BANKTEXT using WordPress as your identity backend is to use the
MiniOrange OAuth Plugin (Version 2.5.6 or higher)

To enable WordPress OAuth on your workspace,

Log into your WordPress site as an administrator and navigate to Plugins. Click Add New.
Search for "MiniOrange OAuth Server."
Install and activate the WP OAuth Server ( OAuth Provider ) plugin.
Navigate to the MiniOrange oAuth Server . Click Add client (Red).

Fill in the required information, including the Callback URL, and click Save client.

Copy your Client ID and Secret.

From the Endpoints tab, copy the Authorize Endpoint, Access Token Endpoint, and Get User Info
Endpoint.
Navigate to OAuth settings (Administration > Workspace > Settings> OAuth) in your workspace.
In the WordPress tab, configure the OAuth credentials you copied earlier in this manner:

WordPress OAuth Configuration

WordPress Login => true


URL = https://your.domain.com (omit any trailing “/”).

Id = Client ID
Secret = Client Secret
Identity Path = Get User Info Endpoint
Identity Token Sent Via = Payload
Token Path = Access Token Endpoint
Authorize Path = Authorize Endpoint
Scope = Profile

Click Save Changes. A Sign in with WordPress button appears on your workspace's login page.
Users can now sign in with WordPress by clicking that button.

For button customization, your inputted button text won't be displayed. However, the app will
display your custom OAuth name at the top.
Troubleshooting WordPress OAuth

Whenever you have an issue with OAuth in WordPress, enable Level 2 Logging to view your logs.

Go to Administration > Logs > Log Level > View Logs.

While monitoring the log, open the login screen in an incognito browser and attempt a login.
The log displays the OAuth response in real time, which provides helpful troubleshooting information.

Visit this forum for more information on troubleshooting for "The redirect URI provided is missing or does
not match."
MS Office 365 OAuth Setup

This guide shows how you can set up OAuth integration between Microsoft accounts and BANKTEXT.

This is achieved with the use of Azure Active Directory which is an identity service by Microsoft that provides
single sign-on and other authentication methods.

Follow these steps to enable Office 365 OAuth on your BANKTEXT instance.

Create Custom O365 OAuth


To create a custom authentication method for your BANKTEXT instance:

Navigate to Administration > Workspace > Settings > OAuth and click on Custom OAuth and set the
new OAuth integration name

Create new custom OAuth

After creating the new integration, you are given the callback URL followed by other fields to
configure
365OAuth integration details page

Creating an Azure Active Directory App

Log in to your Azure portal then navigate to the Azure Active Directory tab

Azure Portal
Create a new App Registration

Azure Active Directory new App Registration

Fill in the name and other fields including the redirect URI provided by BANKTEXT when creating the
new OAuth integration

Azure AD app details

After registering your new app, take note of Application (client) ID it will be needed to configure
the integration later.
On your new app's page, navigate to Certificates and Secret tab to create a New client secret

AD create new app secret

After creating, take note of the client secret immediately. It is only displayed once and is needed
in configuring the integration back in BANKTEXT

AD client secret

Configuring O365 OAuth


After creating the Azure Active Directory App with its secret, head over back to your BANKTEXT O365
custom OAuth integration page and set the various fields

Enable: Set to true to enable this OAuth integration


URL: https://login.microsoftonline.com/consumers

Token Path: /oauth2/v2.0/token

Token Sent Via: Payload


Identity Token Sent Via: Header
Identity Path: /openid/userinfo

Authorize Path: /oauth2/v2.0/authorize

Scope: openid
Param Name for access token: access_token

Id: <Your Azure AD Application (client) ID>

Secret: <Your Azure AD client secret>

Do the configurations and Save changes

OAuth 365 integration settings page


After saving, you will find the O365 Oauth button on the login and signup page. Clicking on them brings
up a popup to authenticate your Microsoft account

O365 Button on login and sign in pages

Simply sign in to your Office account to authenticate

Microsoft account sign in


Accept the permission required to proceed

Microsoft login grant permision


Other OAuth Setup

Here are some other OAuth methods supported by BANKTEXT.

Apple OAuth
Apple OAuth requires you to fill in Accounts_OAuth_Apple_id and
Accounts_OAuth_Apple_secretKey.

To enable Apple OAuth on your workspace,

Navigate to OAuth settings (Administration > Workspace > Settings> OAuth) in your workspace.
In the Apple tab, toggle on Sign In with Apple.

If you want Apple login enabled only on mobile, you can leave all other fields empty.

Twitter OAuth
Twitter OAuth requires you to fill in a Twitter Client Id and Secret.

To enable Apple OAuth on your workspace,

Go to the Twitter Developer Portal. Navigate to the Apps page to create or view your existing apps. Copy
the following credentials:

Twitter Id: The OAuth Id of your Twitter OAuth app


Twitter Secret: Your Twitter OAuth app secret
Twitter Callback URL: Set default to point to <server_url>/_oauth/twitter

TokenPass OAuth
Tokenpass OAuth requires you to have a Tokenpass server URL, Id, and secret.

These can be gotten from the Tokenpass developers portal by creating an application for OAuth integration.

Tokenpass Login: Enables Tokenpass login

Tokenpass Server URL: Your server URL. Example https://domain.com (excluding trailing
slash)
Tokenpass Id: Tokenpass app Id

Tokenpass Secret: Your Tokenpass app Id


Tokenpass Callback URL: Set default to point to <server_url>/_oauth/tokenpassv
Drupal OAuth
Using Drupal OAuth requires you to provide a Drupal client ID and Secret.

Drupal OAuth is made possible with the OAuth2 Client module. Follow this guide to create client
credentials.

Drupal Login Enabled: This lets you enable Drupal OAuth for login
Drupal Server URL: Your server URL. Example https://domain.com (excluding trailing slash)

Drupal OAuth2 Client ID: The OAuth Id from the Drupal configuration
Drupal oAuth2 Client Secret: Your Drupal OAuth secret
Drupal Callback URL: Set default to point to <server_url>/_oauth/drupal

Dolphin OAuth
Setting up Dolphin OAuth requires a Dolphin connect URL, Id, and secret

Visit this configuration page to see how to get these values:

URL: Enter the URL under the Information section of the OAuth2 module
Enable: This lets you enable Dolphin OAuth
Id: Dolphin connect Id

Secret: Dolphin connect secret


Login Style: A dropdown to select the login style
Button Text: Text to be displayed on the OAuth button
Button Text Color: Text color of OAuth button
Button Color: Color of the button

Okta OAuth
To use Okta OAuth, you need to go to the OAuth section of your BANKTEXT settings and create a custom
OAuth.

Navigate to OAuth settings (Administration > Workspace > Settings> OAuth) in your workspace.
Create a custom OAuth.
Go to your Okta developers panel and create a new Sign in OAuth app for a web application.
Fill in all the required information and save.
Your new app is created with all the credentials needed for configuration.
Omnichannel Admin's Guide
Enable and configure Omnichannel

Configure how Omnichannel can be used to streamline conversations from various mediums into
BANKTEXT. Omnichannel adds the ability to set up and receive conversations from pop-up Live Chat
widgets on your website or from your business Facebook.

Enabling and using BANKTEXT Omnichannel gives seamless, effortless, and high-quality customer
experiences all within a defined channel on your BANKTEXT workspace.

To access this section:

Navigate to Administration > Workspace > Settings > Omnichannel

Remember to hit Save Changes in order to apply any changes made here.

Enable Omnichannel: When set to true, it enables the Omnichannel feature on your BANKTEXT
instance.
Workspace administrators and omnichannel managers can now see the Omnichannel section to
manage, while Omnichannel Agents have access to their respective Omnichannel features.
Request comment when closing conversation: If enabled, the agent will need to set a comment
before the conversation is closed.
Accept new omnichannel requests when the agent is idle: Toggle true to let Omnichannel agents
receive new chat requests when they are idle.
File Uploads Enabled: Enable this to allow file uploads on Omnichannel communication channels.

Ask visitors if they would like a transcript after chat closed: When enabled, Omnichannel visitors
will be asked if they need a transcript of their conversation after closing.
Message to Show When Asking About Transcript: This lets you set a message that will be shown to
the visitor when asking if they need a transcript.

Canned Responses

Canned Responses is an Enterprise feature.

Under this section, you can enable or disable the use of Canned Responses.
Canned Response allows for OmnichannelAgents to use predefined message replies.

Enable Canned Responses: Turn on to enable the use of Canned Replies.

Learn more about Canned Responses below:


Canned Responses

External Frame
Use an external frame to embed BANKTEXT into your own solution or interact with your CRM.

External frame enabled: Turn on to enable External frame.


External frame URL: Add the URL of your external frame.
Encryption key (JWK): If provided, it will encrypt the user's token with the provided key, and the
external system will need to decrypt the data to access the token.

Live Chat
Manage Omnichannel Live Chat settings.
Livechat Title: The title shown on your Live Chat widget.
Livechat title background color: The Live Chat background color.
Enable message character limit: Toggle on to enable the message character limit.
Livechat message character limit: Set a limit on message characters allowed on the visitor.
Display Offline Form: When enabled, the offline form will be seen by visitors when there is no available
agent.
Clear guest session when chat ended: Toggle on to clear guest session when a chat ends.
Validate Email Address: When turned on, the visitor's email address will be validated.
Offline Form Unavailable Message: A message to show when the online form is unavailable.
Title: The offline form title.
Color: The style color of the Live Chat widget. This also changes the color of the Live Chat icon.
Instructions: Instructions to your visitor to fill out the form to send a message.

Email Address to Send Offline Messages: An email address to which you want all offline messages to
be sent.
Offline Success Message: A message seen by the visitor after successfully sending an offline
message.
Allow Visitor to Switch Departments: When enabled, Live Chat visitors will be able to switch
departments.
Show agent information: Enable this to show information about the agent attending to a visitor in the
Live Chat widget.

Show agent email: When set to true, the Omnichannel Agent's email will be visible to the visitor.

Conversation Finished Message: Set a message to be sent to a visitor when the conversation is
finished.
Conversation Finished Text: Additional text to show after a conversation is finished.

Show Pre-registration Form: This lets you set whether or not to show the pre-registration form.
Show name field: Toggle to show or hide the name field.
Show email field: Toggle to show or hide the email field.
Monitor History for Changes on: This lets you monitor history changes on Page URL or Page Title.

Send Visitor Navigation History as a Message: When set to true, you can send a visitor's navigation
history to them as a message.
Registration Form Message: The message seen on the registration form.

Livechat Allowed Domains: Comma-separated list of domains allowed to embed the Live Chat widget.
Leave blank to allow all domains.
Send Livechat offline messages to a channel: Whether to send Live Chat offline message to a
channel.
Channel Name: The channel to which Live Chat offline messages should be sent to.

See how to install the Live Chat widget and manage the Live Chat appearance on this Omnichannel guide.
Business Hour
Set your business hours to automatically manage when your Live Chat agents are online.

Configuring multiple business hours is an Enterprise feature.

Business hours enabled: Toggle on to enable business hours.


Business Hour Type (Single or Multiple): Set the type of business hour. Community workspaces can
only set a single business hour.

Learn more on how to create and manage Business Hours here.

Business Hours

CRM Integration
Integrate your BANKTEXT Live Chat events using webhooks to other external tools or CRMs.

See more details about this below.

Webhooks

Facebook
Configure the integration between BANKTEXT and Facebook and communicate directly with your
Facebook users.

You are required to request an OmniChannel API Key and an OmniChannel API
Secret from BANKTEXT support through omni@BANKTEXT. This can take a few days
depending on demand.

Facebook integration enabled: Set true to enable Facebook integration.


OmniChannel API Key: The OmniChannel API Key provided by support.
OmniChannel API Secret: The OmniChannel API Secret provided by support.

Facebook Messenger Manager's Guide


GDPR
Configure GDPR data processing and consent.

Allow to collect and store HTTP header information: This lets you determine whether Live Chat is
allowed to store information collected from HTTP header data, such as IP address, User-Agent, and so
on.
Force visitors to accept data processing consent: When toggled on, visitors are not allowed to start
chatting without consent.
Data processing consent text: Set the consent text that visitors see about how you process their data.

Queue Management

Configure Omnichannel Queue and how simultaneous chats get managed.

Waiting queue: Turn on to enable the Omnichannel queue.


Waiting queue message: A message that is displayed to the visitor when they get in the queue.
Max. number of simultaneous chats: Set the maximum number of simultaneous chats that agents can
tend to.
Calculate and dispatch Omnichannel waiting queue statistics: Processing and dispatching queue
statistics such as position and estimated waiting time. If the Livechat channel is not in use, it is
recommended to disable this setting and prevent the server from doing unnecessary processes.
Queue processing delay timeout: Set time in seconds in which queue delay processing will timeout.
Number of recent chats to calculate estimate wait time: The number of served chats to be used when
calculating queue time.
Maximum waiting time in queue: The maximum time in minutes for which a chat can be kept in queue,
-1 means unlimited .

See more about Queuing here.

Omnichannel Queue

Routing
Routing allows you to define the behavior of your Live Chat queues.
Omnichannel Routing Method: Select your preferred routing method. Please refer to this article
Queue Types (Routing Algorithm) for information on the types of routing methods used in
BANKTEXT.

Accept with No Online Agents: When enabled, Omnichannel conversations will be accepted even
when there are no Agents online.

Assign new conversations to bot agent: Enable this, and the routing system will attempt to find a bot
agent before addressing new conversations to a human agent.
Max number of items displayed in the queue: Set the maximum number of items displayed in the
incoming Omnichannel queue.
Show Queue List to All Agents: Enable this to show the Omnichannel Queue list to all Omnichannel
Agents.
External Queue Service URL: Set your External Queue Service URL if your Omnichannel Routing
Method is External Service.
Secret Token: Enter the secret token.
Last-Chatted Agent Preferred: Enable to allow the allocation of chats to the agent who previously
interacted with the same visitor if the agent is available when the chat starts.

Assign new conversations to the contact manager: This setting allocates a chat to the assigned
Contact Manager as long as the Contact Manager is online when the chat starts.

Sessions
The Sessions setting allows you to define how open chat sessions are to be handled.
How to Handle Open Sessions When Agent Goes Offline: Select what happens to an open chat
session when an Agent goes offline.
None: Nothing happens.
Forward: Gets forwarded to another Agent.
Close: The chat gets closed.
How Long to Wait After Agent Goes Offline: Set the time in seconds before the action specified above
happens.

Comment to Leave on Closing Session: Set a comment to be displayed to the Visitor on closing the
chat.
How Long to Wait to Consider Visitor Abandonment?: This lets you set how long in seconds to wait
for before considering the Visitor abandoned the chat.
How to handle Visitor Abandonment: Select what to do when Visitors abandon chats.
Custom message when room is automatically closed by visitor inactivity: Set a message that will
be sent when a chat gets automatically closed due to the Visitor's inactivity.
How long to wait before closing a chat in On Hold Queue?: Define how long in seconds the chat will
remain in the On Hold queue until it's automatically closed by the system.
Custom message for closed chats in On Hold queue: Custom Message to be sent when a room in
On-Hold queue gets automatically closed by the system.
Allow agents to manually place chat On Hold: When enabled, the agent will have the option to place
a chat On Hold, provided the agent has sent the last message.
Timeout (in seconds) for automatic transfer of unanswered chats to another agent: Specify the
time in seconds for unanswered chats to be transferred to other agents.

Video and Audio Call


Configure the provider responsible for your Video and Audio calls.

Call Provider: Select the Call provider between Jitsi and Web.RTC to use for Omnichannel Calls.

Extend the functionality of video and audio calling with any of the available BANKTEXT Conference Call
Apps like Jitsi, Pexip, BigBlueButton, and Google Meet.
Queue Types (Routing Algorithm)

There are the following types of queues in BANKTEXT Omnichannel solutions:

Auto Selection [default]

Manual Selection
External Service

Load Balancing

Load Rotation

Auto Selection
Each new chat will be routed to the agent that are accepting chats with the lower count. If there is more than
one available agent with the same count, the chat will get the first in order.

Consider the following department configuration:

When a new chat comes, it'll be routed to agent-1 , because he has 0 count and is the first in order, and
the agent-1 's count will be increased to 1 :

A new incoming chat will be routed to agent-2 and so on until all agents have one chat each. So the next
round comes, starting with agent-1 .

Manual Selection
With this queue method active, agents will have a new Incoming Live Chats section:

Each new chat will be available on the Incoming Live Chats section to all agents. So any agent can
take a new incoming chat.

When the agent clicks on the incoming Live Chat, the system will show the preview of the chat containing
the messages sent by the visitor, so the agent can decide if he will take the chat or not. If the agent decides
to take it, the incoming chat will be removed from the incoming chats list of the other agents.

External Service
You can use an External Service to integrate your own agent routing rule into Live Chat.

Once you set up the External Service as the Live Chat routing method, you must define the
External Queue Service URL and Secret Token settings in the Omnichannel admin panel.

BANKTEXT will send a GET request to the External Queue Service URL and the setting Secret
Token is sent as a header X-RocketChat-Secret-Token , so you can validate if the request came
from the BANKTEXT.
If your endpoint returns a response status other than 200, BANKTEXT will try 10 times until it receives a
valid response.

Here is an example of the JSON data format that Live Chat will wait for after submitting the get request:

{
"_id": "CbbQkRAifP6HtDLSr",
"username": "valid.username"
}

After receiving the return from the endpoint in the format described above, Live Chat will check that the
username the field represents a valid Live Chat agent and then follows the normal process flow.

Load Balancing

Load Balancing is an enterprise-only feature. It is also an auto-assignment algorithm, but it will consider the
agent's online status and the time they have been chatting, contrary to auto-selection, which only considers
the agent's online status. For instance, an agent was away on a short break; once he comes back, he will be
assigned more chats than his fellow agent. So in this way, the algorithm will maintain a chat load balance
between agents.

Load Rotation

Agent queues for service between online agents, without considering the previous chat's history attended or
the number of open rooms in attendance. It's a mix between the Load Balancing and Auto Selection
algorithms.
OTR
Off-the-record chats are temporary, encrypted messages. These types of messages
are not stored even in your own workspace.

To try this, be sure to have users online and engaged in a conversation at the same time.

This feature is currently in beta. Search operations will not find encrypted messages of encrypted
rooms. The mobile apps and multi-DMs may not support the encrypted messages (currently
under implementation). File uploads will not be encrypted in this version.

Off-the-record (OTR) Messaging is a feature that allows users to exchange temporary, encrypted
messages directly with each other. This happens by using the local, non-persistent session storage of
their browser rather than storing messages on the BANKTEXT workspace. After an OTR session ends and
the session storage is cleared, the OTR messages are removed and can no longer be restored.

As an administrator, you can enable/disable OTR for your workspace:

Navigate to Administration > Workspace > Settings > OTR


Enable OTR.
Push

Enable and configure push notifications for your workspace members using mobile devices.

By default, community workspaces come with 10,000 free monthly push notifications. If you need
more, please contact us to discuss upgrading to an Enterprise plan.

Push Notifications Configuration

To be able to use push notifications, you are required to accept the Cloud Service Privacy
Terms Agreement in the Administration > Workspace > Settings > Setup Wizard > Cloud
Info settings.

To enable push notifications:

Go to Administration > Workspace > Settings > Push


Enable: Turn on to enable push notifications on your BANKTEXT instance
Enable Gateway: Setting this to true allows you to use a custom push notification gateway

BANKTEXT SaaS workspaces use the BANKTEXT gateway by default and cannot be changed.

On self-managed workspaces, you can either use the default BANKTEXT gateway or set up a
custom notification gateway.

Gateway: Specify the gateway to use. Multiple lines can be used to specify multiple gateways
Production: Enable this for workspaces in production

With the configuration all done, you can Send a test push to my user to send a test push to yourself.

To successfully send a test push to your user, you need to be logged in to the workspace on your
mobile device and then close or minimize the application.

Privacy

In Privacy, you can configure what information you want your push notification to have.
Show Channel/Group/Username in Notification: Toggle this on to make the channel name, group
name, and username visible in notifications.
Show Message in Notification: Enabling this makes messages visible in notifications.

Hide message content from Apple and Google (and the Gateway, if enabled): Turn this on to hide
the content of a message from Google/Apple or any other push gateway.
This adds only the message id to the notification data. The mobile client dynamically fetches the content
from the server and updates the notification before displaying it.

For Enterprise workspaces, failure in fetching a message using the message id provided in
the push data results in a "You have a new message" being sent.

With the push configuration completed, follow this guide to set the default user preferences for notifications
Default User Preferences .

Manage channel-based notifications using the

Broken link

On some channels, notifications can stop if the number of users exceeds the set limit. The limit is
set in the Administration > General > Notifications. Notifications

Connect to cloud
When you purchase a package for push notifications as a self-managed customer, you need to connect
your workspace BANKTEXT Cloud.

Link and sync your account in the Connectivity Services menu.

Registration

Check the count of notifications used per month


To check the count of notifications used per month:

Go to cloud.BANKTEXT
Switch to the Workspaces tab
Select the workspace you want to check the count for

The push notifications block shows the number of used notifications per your current limit per month.
Rate Limiter
Control the rate of requests sent or received by your workspace to prevent cyber
attacks and scraping.

BANKTEXT Rate Limiter is used to control the rate of requests sent or received by your BANKTEXT
workspace. It can be used to prevent cyber attacks like DoS (Denial of Service) attacks and limit web
scraping.

To access this setting, go to Administration > Workspace > Settings > Rate Limiter.

API Rate Limiter

Enable Rate Limiter: This lets you enable API rate limiter.
Enable Rate Limiter in development: When Rate Limiter is set to True , the rate limiter is enabled for
development. It limits the number of calls to the endpoints in the development environment.

Default number calls to the rate limiter: Number of default calls for each endpoint of the REST API,
allowed within the time range defined below.
Default time limit for the rate limiter (in ms): Takes time in seconds to limit the number of calls at each
endpoint of the REST API (in ms).

DDP Rate Limiter


Customize rate-limiting for methods and subscriptions to avoid a high load of WebSocket(A communication
protocol that allows for simultaneous data transmission in one channel) messages on your workspace.

Limit by IP: enabled: Enables limit by IP.


Limit by IP: requests allowed: This lets you set the number of requests allowed.
Limit by IP: interval time: Takes in the interval for limiting IP.
Limit by User: This lets you enable DDP rate-limiting by user
Limit by User: requests allowed: The number of requests allowed
Limit by User: interval time: The time interval in seconds for limiting the user

Limit by User per Method: When set to true, it enables limiting user's rate per method
Limit by User per Method: requests allowed: The number of requests allowed
Limit by User per Method: interval time: The interval for limiting user per method
Limit by Connection per Method: Lets you set connection limit by method

Limit by Connection per Method: requests allowed: The number of request requests allowed
Limit by Connection per Method: interval time: Interval for limiting connection per method

Feature Limiting
Setting this up gets your sever full protection from email and username enumeration by brute force attack.

Default number calls to the rate limiter for registering a user: Number of default calls for user
registering endpoints (REST and real-time API's), allowed within the time range defined in the API Rate
Limiter section.
Retention Policy
Automatically prune old messages and files across your workspace

The Retention Policy allows you to automatically remove old messages and files with custom rules on
channels and globally.

Permissions
Retention policies depend on two types of permissions:

edit-privileged-setting : It is required to set a global policy.

edit-room-retention-policy : It is required to set a per-channel policy.

To enable channel owners to set their policies, assign edit-room-retention-policy


permission to channel owners. By default, it is assigned to administrators only.

Configuration
Retention policies have two levels, global policies (enforced everywhere) and per-channel policies
(implemented in specific channels).

To enable retention policies,

Navigate to Administration > Workspace > Settings > Retention Policy


Toggle on Enabled.

Global policies

Tweaking these settings without extreme caution can destroy all message history across your
server. Please read this entire section before you enable this feature.

To update the Global Policies settings,

Navigate to Administration > Workspace > Settings > Retention Policy > Global Policies

The policy is split into three parts: one for all channels, one for all private groups, and one for all direct
messages. Each type has two options:
Applies to channels/private groups/direct messages: Enabling this option applies the global
retention policy to this type of message. For example, if you only wish to prune messages in private
groups, enable the option for private groups and disable the others.
Maximum message age in channels/private groups/direct messages: This option establishes how
old messages may be in days. For example, to make the policy automatically delete all messages older
than 30 days, enter 30 ; to make the policy automatically delete all messages older than a year, enter
365 , etc.

Furthermore, other options allow you to specify how the policy works:

Exclude pinned messages: If enabled, pinned messages are not deleted. For example, when you pin
a few messages with essential links, these messages stay intact.
Only delete files: If enabled, messages are not deleted, but files are. They are replaced by a simple File
removed by automatic prune message. When used together with Exclude pinned messages, only
unpinned files are deleted.
Timer Precision: It establishes how often the deletion script should run. When your policies have a long
lifetime or do not care about the policy's precision, you can lower this to save processing power.

Do not prune discussion messages: If enabled, discussion messages are not deleted. All the
discussions in your workspace remain intact.

If you don't enable Do not prune discussion messages, all your discussion messages will be
deleted irrespective of the dates.

Do not prune Threads: When enabled, threads are not deleted. All the threads in your workspace remain
intact.

Per-channel Policies

Tweaking these settings without extreme caution can destroy all message history across your
server. Please read this entire section before you turn the feature on.

Ensure you have the edit-room-retention-policy permission.

To enable retention policy in a room,


Navigate to the Kebab menu of the channel on the top right corner of the channel screen
Click Prune Messages. Update the options.
Newer than: Set a date and time to prune messages newer than the select moment.

Older than: Set a date and time to prune messages older than the select moment.
Only prune content from these users: Select users to delete their messages. Leave empty to
prune everyone's content.

Inclusive: If you check the inclusive checkbox, messages sent on and between Newer than and
Older than dates are deleted (messages are deleted between and including those dates). If you
don't check the inclusive checkbox, messages between Newer than and Older than dates are
deleted, and the messages sent on those dates are not deleted.
Do not prune pinned messages: Pinned messages are not deleted if enabled. For example, if you
pinned a few messages with important links, they stay intact.
Do not prune discussion messages: If enabled, messages in the discussions are not deleted.
Do not prune threads: If enabled, messages in the threads are not deleted.

Only remove the attached files, keep messages: If enabled, messages are not deleted, but files
are. They are replaced by a simple File removed by automatic prune message. When used together
with Exclude pinned messages, only unpinned files are deleted.
Click Prune.

Info Available to Users


Users can see if a channel's messages will be pruned by either scrolling to the top of the message history or
opening the channel info. A message is displayed if a policy (global or per-channel) is present. For example,
Messages older than 30 days are automatically pruned here, or Unpinned files older than a year are
automatically pruned here.
SAML
Create role mapping from user groups by selecting any field you want to sync with
BANKTEXT

SAML(Security Assertion Markup Language) is an XML-based format and protocol for exchanging
authentication and authorization data between parties.

This standard of authentication has significant advantages over logging in using a username/password:

No need to type in credentials

No need to remember and renew passwords


No weak passwords

To access this setting, navigate to Administration > Workspace > Settings > SAML

BANKTEXT server settings

Simple SAML php

Active Directory Federation Services

Oracle Identity Cloud Service


BANKTEXT server settings

Connection

Enable: Enables the SAML connection


Custom Provider: The SAML provider name
Custom Entry Point: The custom entry point
IDP SLO Redirect URL: This is the URL provided by your IdP for logging out. In SAML-terminology, it
refers to the location (URL) of the SingleLogoutService with the Redirect binding
(urn:oasis:names:tc:SAML:2.0:bindings: HTTP-Redirect)
Custom Issuer: The URI is the unique identifier of your service. By convention, this is also the URL of
your (unedited) metadata. Again, where you set Custom Provider to 'my-app', this will be:
https://my-rocketchat-domain.tld/_saml/metadata/my-app
Enable Debug: Set to true to enable debugging

Certification

Custom Certificate: This is the public certificate for IdP providers used to verify SAML requests. The
format for this is PEM without -----BEGIN CERTIFICATE----- and --

Public Cert Contents: The public part of the self-signed certificate you created for encrypting your
SAML transactions. Example of self-signed certificate on the SimpleSAMLphp website here.
Format for this is PEM WITH -----BEGIN CERTIFICATE----- and -----END CERTIFICATE-

Signature Validation Type: Select the type of signature validation. This setting will be
ignored if no Custom Certificate is provided .
Private Key Contents: The private key matches the self-signed certificate you created as PKCS#1
PEM. Format for this is PEM WITH -----BEGIN PRIVATE KEY----- and -----END PRIVATE
KEY .

Enterprise

Roles

Sync User Roles: Enable to sync user roles on login (overwrites local user roles).
Role Attribute Name: If this attribute is found on the SAML response, its values will be used as role
names for new users.

Advanced
Identifier Format: Format of the identifier. Leave this empty to omit the NameID Policy from the request

NameID Policy Template: The NameID policy template. You can use any variable from the Authorize
Request Template here.
Custom Authn Context: Leave this empty to omit the authn context from the request.
To add multiple authn contexts, add the additional ones directly to the AuthnContext Template setting.

Authn Context Comparison: Select the Authn context comparison method


AuthnContext Template: You can use any variable from the AuthnRequest Template here.
To add additional authn contexts, duplicate the AuthnContextClassRef tag and replace the
authnContext variable with the new context.

AuthnRequest Template: The following variables are available:


newId : Randomly generated id string
instant : Current timestamp
callbackUrl : The BANKTEXT callback URL.
entryPoint : The value of the Custom Entry Point setting.

issuer : The value of the Custom Issuer setting.


identifierFormatTag : The contents of the NameID Policy Template if a valid Identifier Format is
configured.
identifierFormat : The value of the Identifier Format setting.
authnContextTag : The contents of the AuthnContext Template if a valid Custom Authn
Context is configured.
authnContextComparison : The value of the Authn Context Comparison setting.
authnContext : The value of the Custom Authn Context setting.
Logout Response Template: The following variables are available:
newId : Randomly generated id string
inResponseToId : The ID of the Logout Request received from the IdP
instant : Current timestamp
idpSLORedirectURL : The IDP Single LogOut URL to redirect to.
issuer : The value of the Custom Issuer setting.

identifierFormat : The value of the Identifier Format setting.


nameID : The NameID received from the IdP Logout Request.
sessionIndex : The sessionIndex received from the IdP Logout Request.
Logout Request Template: The following variables are available:
newId : Randomly generated id string
instant : Current timestamp
idpSLORedirectURL : The IDP Single LogOut URL to redirect to.
issuer : The value of the Custom Issuer setting.
identifierFormat : The value of the Identifier Format setting.
nameID : The NameID received from the IdP when the user logged in.

sessionIndex : The sessionIndex received from the IdP when the user logged in.
Metadata Certificate Template: The following variables are available:

certificate : The private certificate for assertion encryption.


Metadata Template: The following variables are available:
sloLocation : The BANKTEXT Single LogOut URL.
issuer : The value of the Custom Issuer setting.

identifierFormat : The value of the Identifier Format setting.

certificateTag : If a private certificate is configured, this will include the Metadata Certificate
Template, otherwise it will be ignored.
callbackUrl : The BANKTEXT callback URL.

Mapping

User Data Custom Field Map: Configure how user custom fields are populated from a record in SAML
(once found).

General

User Interface

Button Text: Text to display on the button


Button Text Color: Lets you set the button text color
Button Color: The button color

Behavior
Generate Username: Enable to generate username
Normalize username: Set the type of normalization to perform on a username
Immutable field name: Select the field name to be immutable

Overwrite user fullname (use idp attribute): Enable to overwrite user fullname
Overwrite user mail (use idp attribute): Enable to overwrite user mail
Logout Behaviour: Lets you set the behavior to happen on logout
Update Room Subscriptions on Each Login: When enabled, room subscriptions is updated on each
login. Ensures the user is a member of all channels in SAML assertion on
every login .

Include Private Rooms in Room Subscription: When set to true, private rooms are able to use for a
subscription. Adds a user to any private rooms that exist in the SAML assertion.

Default User Role: Lets you set the default user role. You can specify multiple roles, separating them
with commas.
Allowed clock drift from Identity Provider: The clock of the Identity Provider may drift slightly ahead of
your system clocks. You can allow for a small amount of clock drift. Its value must be given in a number
of milliseconds (ms). The value given is added to the current time at which the response is validated.

Mapping

User Data Field Map: Configure how user account fields (like email) are populated from a record in
SAML (once found). As an example, {"name":"cn", "email":"mail"} chooses a person's
human-readable name from the cn attribute, and their email from the mail attribute. Available fields in
BANKTEXT: name , email and username . Everything else is discarded.

{
"email": "mail",
"username": {
"fieldName": "mail",
"regex": "(.*)@.+$",
"template": "user- regex "
},
"name": {
"fieldNames": [
"firstName",
"lastName"
],
"template": " firstName lastName "
},
" identifier ": "uid"
}
Simple SAML php

As a popular open-source IdP, SimpleSAMLphp can be used to provide an authentication endpoint for
BANKTEXT and the built-in SAML support. Assuming that you have a SimpleSAMLphp IdP up and running
following this guide QuickStart instructions, you can find the metadata for the BANKTEXT SAML Service
Provider (SP) here, where 'my-app' is whatever you put in the Custom Provider box in the BANKTEXT
SAML admin page:

https://my-rocketchat-domain.tld/_saml/metadata/my-app

1. Copy the XML on this page


2. Open the metadata converter page in your SimpleSAMLphp admin UI found at: /admin/metadata-
converter.php
3. Paste the XML, and submit it
4. Copy the resulting PHP output to the file in your SimpleSAMLphp installation under metadata:
/metadata/saml20-sp-remote.php
5. You should now see your SP on the SimpleSAMLphp Federation page, listed as a trusted SAML 2.0
SP at: module.php/core/frontpage_federation.php

IdP Attribute Mapping


Use the following attributes required to return user information to BANKTEXT:

Idp Returned Attribute Name Usage

cn User's Full Name

email User's Email Address

username User's username


Active Directory Federation Services
Authenticating BANKTEXT and Microsoft ADFS via SAML

It is possible to set up the authentication between BANKTEXT and Active Directory Federation Services by
setting up SAML authentication scenario.

Microsoft ADFS provides an IdP service that can be consumed by BANKTEXT for authentication.

If you are using Active Directory without Federation Services, you should perform the user
synchronization via LDAP only.

This document considers that your ADFS environment is deployed and running. For further info,
please refer to this guide.

The BANKTEXT configuration should be done as follows:

Navigate to Administration > Workspace > Settings > SAML and configure the entry points and the
IdP path.
Add the private key certificate related to the ADFS server.

ADFS uses .pfx certificate extensions (widely used on Windows landscapes) and BANKTEXT
uses .pem files. So, before setting the certificate here, it must be converted.

Set the Custom Authn Context and User Data Field Map according to the scenario you have on your
Active Directory Federation Services.

The Custom Authorization context fields must match the authentication methods selected on
ADFS. Microsoft Federation Services provides two authentication methods: Forms authentication
and Windows Authentication.
Forms authentication: If this option is selected as 'primary', a login form provided by ADFS will be called
by the SAML assertion to perform the login operation. For this method, the recommended "Custom
Authn Context" in BANKTEXT should be
urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
Windows authentication: if this option is selected as 'primary', ADFS will expect the login assertions
on the Windows Domain level. To set a full SSO scenario between BANKTEXT and ADFS, the
recommended "Custom Authn Context" should be _urn:federation:authentication:windows_
Oracle Identity Cloud Service

Configuring the Identity Provider


Oracle Identity Cloud Service is integrated as a SAML Identity Provider. For a detailed explanation of the
SAML options on BANKTEXT, and check the SAML Documentation.

Step by Step configuration of Oracle Identity Cloud Service

Before you begin

Before you create your IDCS application, make sure you have enabled SAML per the SAML
Documentation. You will need to have entered a Custom Provider and a Custom Issuer URL on the SAML
settings page in BANKTEXT.

Note: Leave the Custom Entry Point and IDP SLO Redirect URL values as the default values for now. We
will obtain these URLs below, but you must save the SAML settings with your Custom Issuer URL so you
can visit this URL and obtain values that are necessary when creating the IDCS application below.

Adding a new Application

On your Oracle Cloud Applications Dashboard, find a button to add a new application. It should open the
following pop-up:

Select SAML Application to open the configuration wizard.

App Details
The only information needed on this page is the application name and URL. The URL you need to use here
is the same one that is set on the Custom Issuer SAML configuration field on the BANKTEXT settings.

SSO Configuration
To get the values for those new settings, you need to access the same Custom Issuer URL that you used on
the previous page. It should show an XML file similar to the one below:

On the AssertionConsumerService tag, you need to copy the value of the Location attribute. Then paste
this value on the Assertion Consumer URL field on the Oracle Settings. On the SingleLogoutService tag,
you need to copy the value of the Location attribute, then paste it in the Single Logout URL param of the
Advanced Settings. On the same SingleLogoutService tag, you need to copy the value of the
ResponseLocation attribute, then paste it in the Logout Response URL param of the Advanced Settings.

Finally, the Entity Id param receives the URL of the XML file itself (the same URL you used as the
application URL).

Before clicking on Finish, click the Download Identity Provider Metadata button to download another XML
file.

BANKTEXT Settings
There are two BANKTEXT settings that need to be copied from the IDP Metadata you just downloaded:
Custom Entry Point and IDP SLO Redirect URL.

For the first one, locate the tag md:SingleSignOnService and copy the value of the Location attribute (ends
with /idp/sso ).

For the second param, locate the tag md:SingleLogoutService and copy the value of the Location attribute
(ends with /idp/slo ).

There may be multiple occurrences of those tags in the XML file, so make sure that the copied URLs end
with /idp/sso and /idp/slo and not /sp/sso and /sp/slo .

Testing

Everything should be properly configured now. You can now add users to your SAML Integration app on the
Oracle Dashboard and then test the login on your BANKTEXT instance.
Keycloak

https://www.keycloak.org/ is another popular open-source IdP that you can use in connection with
BANKTEXT.

Prerequisites

BANKTEXT server accessible like e.g., 'https://r.example.com'


Keycloak server accessible like e.g., 'https://sso.example.com'

Keycloak:

Decide/set up a realm you want to use, e.g. master . The realm will be referenced by the placeholder
<realm> .

Setting up BANKTEXT
Go to the SAML settings in BANKTEXT administration:

Decide the keycloak server "nickname" - e.g. keycloak .


For the custom entry point and IDP SLO Redirect URL, go for
https://sso.example.com/auth/realms/<realm>/protocol/saml
Note the Custom Certificate - this is the Keycloak's realm certificate. Check out the realm settings,
examine the Keys tab, get the RSA Certificate and paste it into the field. Don't include the-----
BEGIN/END CERTIFICATE----- headers/footers.
Generate the Public Certificate and Private Key if needed, or leave them as they are if they are present.

Setting up Keycloak
Go to https://r.example.com/_saml/metadata/keycloak - you should get an XML file. Save
the raw file to your disk. Go to keycloak and open the "Add Client" dialogue. Select the SAML protocol, and
import the XML file from the previous step. You will be redirected to a partially pre-filled client setting page.
The client ID referenced by Keycloak should be the same as the metadata URL.

Create client, and now revisit its settings:


Check out Valid Redirect URIs - make sure that it is set to
https://r.example.com/_saml/validate/keycloak .
Set the Name ID Format to email .

Go to the SAML Keys tab, and make sure that the public key (certificate) is the same as the
BANKTEXT's public key. Note that the -----BEGIN/END CERTIFICATE----- header/footer is not
supposed to be part of the Keycloak's public key view, but the rest should be the same. If they are not the
same, save the BANKTEXT public key one into a text file, and import it from Keycloak - use the import
PEM functionality.

Go to the Mappers tab, and create mappers for the required data that BANKTEXT expects. You
shouldn't need email or username , but you probably need cn .
Click Create, and choose the type User Property and set the SAML Attribute NameFormat
to basic . For the first name, set Name and Property to firstName , and SAML Attribute
name to cn .

Troubleshooting
You should be done by now. However, you may run into some problems for various reasons:

Q: I keep getting the Unable to validate response url: Error: Status is:
urn:oasis:names:tc:SAML:2.0:status:Responder error.

A: Make sure that the respective Keycloak user has an e-mail address. This may not be the case e.g., for
Keycloak admin.
Q: How do I generate a certificate pair?
A: Try openssl req -newkey rsa:3072 -new -x509 -days 3652 -nodes -out
saml.crt -keyout saml.pem . Then, just copy the file contents to the respective fields.
Search
Select workspace search provider and configure search related settings

Here you can configure how searches work on your BANKTEXT server. This gives you the option to select
a search provider.

To access this setting, navigate to Administration > Workspace > Settings > Search.

Search Provider: A dropdown that lets you select which search provider you wish to use. Can be
Default provider or Chatpal Provider .

Chatpal Provider

Backend Type: Lets you choose the backend type for your Chatpal provider. Select if you want to use
Chatpal as a Service or as On-Site Installation.
API Key: Your Chatpal API key. Find some descriptions on how to run a local instance on GitHub. The
URL must be absolute and point to the Chatpal core, e.g.
http://localhost:8983/solr/chatpal
HTTP Headers: List of HTTP Headers, one header per line. Format: name:value
Main Language: The language that is used most in conversations.
Default Result Type: Defines which result type is shown by the result.
Page size: Lets you set the page size.
Suggestions enabled: When enabled, suggestions are shown while searching.
Include All Public Channels: When set to true, it searches in all public channels, even if you haven't
joined them yet.
Index Batch Size: The batch size of index documents (on bootstrapping)
Index Timeout: The time between 2 index windows in ms (on bootstrapping)
Index Window Size: The size of index windows in hours (on bootstrapping)

Default Provider

Global search: When enabled, the search is done globally.


Page Size: The page size.

The global search feature is currently in Beta and may not function as expected.
Setup Wizard
Basic info about your workspace such as organization name and country

This section has basic configurations for the setup wizard of your workspace.

To access this menu, navigate to Administration > Workspace > Settings > Setup Wizard.

Remember to hit Save Changes in order to apply any changes made.

Organization Info

Organization Type: A dropdown for you to select the type of organization. Example Enterprise

Organization Name: The name of your organization. Example RocketChat

Industry: The industry to which your organization belongs. Example Technology Services

Size: The size of your organization.


Country: The country your organization is based in. Example South Africa

Website: Your organization's website. Example https://BANKTEXT

Server Type: The type of server you are running. Example Public Community

Allow Marketing Emails: When enabled, marketing emails are sent.


Register Server: Enable to register your server.
Organization Email: Lets you set your organization email.

Cloud Info

Cloud Service Privacy Terms Agreement: Enable to agree to Cloud terms and privacy policies
SlackBridge
Enable BANKTEXT to communicate directly with Slack

SlackBridge lets you mirror Slack and BANKTEXT servers in real-time.

To access this menu, navigate to Administration > Workspace > Settings > SlackBridge

Remember to hit Save Changes in order to apply any changes made.

Enabled: Toggle to true to enable SlackBridge


API Tokens: Takes in API tokens of your Slack servers. You can configure multiple slack servers by
adding one API Token per line.
File Upload: Enable to permit file uploads between servers.
SlackBridge Out Enabled: Choose whether SlackBridge should also send your messages back to
Slack
SlackBridge Out All: Send messages from all channels that exist in Slack, and the bot has joined
SlackBridge Out Channels: This lets you choose which channels will send messages back to Slack.

Alias Format: Import messages from Slack with an alias; %s is replaced by the username of the user. If
empty, no alias is used.
Exclude Bots: Takes in a regular expression to not propagate messages from any bot whose name
matches the regular expression. If left empty, all messages from bots are propagated.
Reactions: Enable to get reactions

Remove channel links: Remove the internal link between BANKTEXT channels and Slack channels.
The links are afterward recreated based on the channel names.
Smarsh
Configurations to preserve email communication

Smarsh is used to confidently and efficiently preserve email communications.

To access this menu, navigate to Administration > Workspace > Settings > Smarsh.

Smarsh Enabled: Whether the Smarsh eml connector is enabled or not (needs 'From Email' filled in
under Email -> SMTP).
Smarsh Email: Smarsh Email Address to send the .eml file to.

Missing Email: The email to show for a user account when their email address is missing. It generally
happens with bot accounts.
Smarsh Timezone: This lets you set the Smarsh timezone
Smarsh Interval: The amount of time to wait before sending the chats (needs 'From Email' filled in
under Email -> SMTP).
SMS
Enable and configure SMS gateways on your workspace.

This setting lets you configure various SMS gateways on your workspace.

To access this menu, navigate to Administration > Workspace > Settings > SMS.

Enabled: This lets you enable or disable SMS service on your server.
Service: Select the available SMS services e.g Twilio , Mobex , Voxtelesys

Omnichannel Department (Default): If set, all new incoming chats initiated by this integration are
routed to this department.

Mobex
Create a Mobex account at https://mobex.biz/ and get a plan with the needed credentials to configure your
Mobex SMS integration.

Mobex SMS Gateway Address: IP or Host of your Mobex service with the specified port. E.g.
http://192.168.1.1:1401 or https://www.example.com:1401

Mobex SMS REST API Address: IP or Host of your Mobex REST API. E.g.
http://192.168.1.1:8080 or https://www.example.com:8080
Username: Your username
Password: Your Mobex password
From: Originating address/phone number when sending a new SMS to Live Chat client
List of numbers to send SMS from: Comma-separated list of numbers to use in sending brand new
messages, eg. 123456789 , 123456788 , 123456888

Twilio

Account SID: Your account's SID. It is provided by Twilio.


Auth Token: Your Twilio auth token
File Uploads Enabled: When enabled, file uploads will be active in SMS
Accepted Media Types: Comma-separated list of media types. Leave it blank for accepting all media
types.

Voxtelesys
Auth Token: Your Voxtelesys auth token
URL: The Voxtelesys URL e.g https://smsapi.voxtelesys.net/api/v1/sms

File Uploads Enabled: When enabled, file uploads are made available
Accepted Media Types: Comma-separated list of media types. Leave it blank for accepting all media
types.
Threads
Threads allow organized discussions around a specific message

Threads are a key part of the messaging experience in BANKTEXT rooms and direct messages. They’re
used to organize conversations and enable users to discuss topics without adding noise to rooms or direct
messages.

Collapsed Reply Threads offer an improved experience for users communicating in threads and replying to
messages that include a unified threads inbox to read all conversations in one view. Threads improve the
ability to process room content, find, follow, and resume conversations more easily, and keep threaded
conversations focused.

To access this setting, go to Administration > Workspace > Settings > Threads.

Enable: When enabled, users are able to create threads in conversations.


Troubleshoot
Manage how troubleshooting is handled on this workspace.

Configure how troubleshooting is handled in your workspace

To access this section, go to Administration > Workspace > Settings > Troubleshoot.

We recommend these settings be altered only with the guidance of the BANKTEXT Development
or Support Teams. Do not touch them if you don't know what you are doing!

Disable Notifications: This setting completely disables the notifications system. When enabled,
sounds, desktop notifications, mobile notifications, and email notifications immediately stopped.
Disable Presence Broadcast: This setting prevents all instances from sending the status changes of
the users to their clients, keeping all the users with their presence status from the first load.
Disable Instance Broadcast: Setting this to true prevents the BANKTEXT instances from sending
events to the other instances. It may cause syncing problems and misbehavior.
Disable Sessions Monitor: This setting stops the processing of user sessions, causing the statistics to
stop working correctly.
Disable Live Chat Activity Monitor: Activating this setting stops the processing of Live Chat contacts
sessions, causing the statistics to stop working correctly.
Disable Statistics Generator: This lets you stop the processing of all statistics making the info page
outdated until someone clicks on the refresh button and may cause other missing information around the
system.
Disable Data Exporter Processor: This setting stops the processing of all export requests from users,
so they will not receive the link to download their data.
Disable Workspace Sync: Enabling this stops the sync of the server with BANKTEXT's cloud may
cause issues with the marketplace and enterprise licenses.
User Data Download
Configurations to allow or disallow workspace members from downloading workspace
data

This setting lets you configure aspects that involve users downloading their data from the server.

Using this, users can download their entire BANKTEXT data.

To access this setting:

Navigate to Administration > Workspace > Settings > User Data Download.

Enable User Data Download: When set to true, users are able to download their data.
System Path (Exported Files): Specify the path where exported files should be located.
System Path (Compressed File): This lets you set where compressed files should be.
Processing Frequency (Minutes): Takes in the frequency in minutes for processing data download.

Message Limit per Request: This lets you limit the number of messages that can be downloaded per
request.

Users can find where to initiate data download at My Account > Preferences > My Data
Webdav Integration
Configure WebDAV servers like Nextcloud

A framework for users to create, change and move documents on a server. Used to link WebDAV servers
such as Nextcloud.

To access this setting,

Navigate to Administration > Workspace > Settings > Webdav Integration.


Webdav Integration Enabled: When set to true, WebDAV is available on the server,
Navigating to the button on the right side of your message composer inside any chat or room
Click Add Server

To integrate a WebDAV server, follow this article on Nextcloud and WebDAV integrations
WebRTC
Broadcast audio, and video material, as well as transmit arbitrary data between
browsers without the need for a middleman

WebRTC (Web Real-Time Communication) is a technology that allows Web apps and sites to record and
potentially broadcast audio and/or video material, as well as transmit arbitrary data between browsers
without the need for a middleman.

To access this setting, go to Administration > Workspace > Settings > WebRTC.

Enable for Public Channels: WebRTC will be enabled for all public channels if set to true.
Enable for Private Channels: When enabled, private channels will have WebRTC.
Enable for Direct Messages: If set to true, direct messages will have WebRTC.
STUN/TURN Servers: A list of STUN and TURN servers separated by a comma.
Username, password, and port are allowed in the format username:password@stun:host:port
or username:password@turn:host:port .
Engagement Dashboard
This feature adds the ability to evaluate user engagement on the channels.

Engagement Dashboard is BANKTEXT Enterprise feature.

The BANKTEXT engagement dashboard gives you great insights into users, messages, and channel
activities.

To access this menu, navigate to Administration > Workspace > Engagement Dashboard

You can download the data for any matrix you want in CSV, using the download button at the top left.

User
The user tab shows you the following matrices.

New users: The new users matrix represents the total number of new users for a select period. You can also
see the number by which users increased/decreased from the last interval of the select period.

Active users: It represents the total number of users using the application daily, weekly and monthly. You
can also see the number by which active users increased/decreased, as shown below:

Users by the time of day: It represents the total number of users by time of the day for a select period of
time. The darker the color of the brick, the more users are online at that time. You can also check the exact
count of users for an hour by hovering over the mouse cursor on the respective brick.

When is the chat busier?: It represents the time by day or hour when your chat is busier.

Messages
The Messages tab shows you the following engagement matrices.

Messages Sent: It represents the total number of messages sent for a select period of time. You can also
see the number by which the sent message count increased/decreased from the last interval of a select
period.

Where are the messages being sent?: It represents the public, private, and top 5 most popular channels to
which the most messages are being sent for a select period of time.

Channels
This table shows you the count of messages being sent and the increment/decrement of count from the last
interval for a selected period for all your channels. You can also download this information in a CSV file.
Device Management

As a workspace administrator, you can manage and control the devices linked to your workspace.

To access this menu, navigate to Administration > Workspace > Device Management.
You are prompted for two-factor authentication. The two-factor authentication via email feature in Device
Management ensures that only authorized users access the module and will prevent unauthorized
access.
Enter the six-digit authentication code sent to your registered email address and click Verify.
After the successful verification, you will get to see the devices that are linked to your workspace.

To view the linked device information:

Click on the device name to see details about the device, such as Client, Operating system, User, Last
Login, Device Id, and IP address.

To search for devices:

You can easily search for devices by username, device model, or device operating system.

To log out of the device:

Choose the device that you want to disconnect and then click Logout.

If the device is logged out, the user will be notified that the workspace admin has ended the session on the
device. Users can sign in again with the same devices when they want.

Follow this guide to configure security and access control policies for device management
Omnichannel
You can use BANKTEXT to talk to your customers and website visitors, regardless of
which channel they choose to connect with you.

BANKTEXT Omnichannel allows you to integrate various customer communication channels into your
workspace. You can incorporate the Omnichannel Live Chat pop-up widget into your website, serving as an
entry point for communication or direct support to your customers or visitors.

You can also use advanced Omnichannel Apps, which provide a seamless communication experience
between BANKTEXT and external users from other communication platforms like WhatsApp, SMS,
Facebook, Instagram Direct, Twitter, Telegram, etc.

Using Omnichannel helps acquire and retain customers in a multi-channel environment to save valuable
potential sales while building relationships, providing an exceptional experience and the ability to interact
through various communication channel

BANKTEXT Omnichannel has three primary users; Admins, Managers, and Agents.

Enable Omnichannel
To enable the Omnichannel feature on your workspace,

Go to Administration > Workspace > Settings > Omnichannel


Toggle on Enable Omnichannel.

Click Save Changes.

Kindly contact your workspace administrator to enable Omnichannel. Learn how to configure
Omnichannel on your BANKTEXT workspace.

Now the administrator and BANKTEXT Omnichannel Manager can access Omnichannel Settings by
navigating to Administration > Omnichannel. Only users with Administrator and Omnichannel Manager
roles assigned to them can access this menu.

Current Chats: View all existing Omnichannel conversations.

Analytics: Analyze the productivity of your Live Chat Agents.

Real-time Monitoring: Monitor your incoming and ongoing Live Chat conversations in real time.

Managers: Organize Omnichannel managers.

Agents: Manage Omnichannel agents and their departments.

Department: Set up Omnichannel departments.


Custom Fields: Add custom fields to receive additional information from visitors during registration before
initiating a Live Chat conversation.

Livechat Triggers Manager's Guide: Configure Omnichannel LiveChat trigger to open the LiveChat
widget.

Livechat Widget Installation: Embed the LiveChat widget into your web pages.

LiveChat Widget Appearance: Customize the LiveChat widget to suit your branding style.

Webhooks Manager's Guide: Configure Omnichannel webhooks to integrate the BANKTEXT


Omnichannel to any third-party system, e.g., CRM, Zoho.

Business Hours Manager's Guide: Set up business hours to specify the working days and hours of your
business.

Monitors Omnichannel Guide: Set up users to monitor all Omnichannel activities.

Units Manager's Guide: Organize a unit of multiple departments and assign a monitor to oversee them.

Canned Responses: Save message snippets with shortcuts to enable faster communication.

Tags Manager's Guide: Create tags to sort Live Chat conversations quickly.

Priorities Manager's Guide: Change the order of Omnichannel queues based on Estimated Due Time.
Current Chats

Omnichannel Current Chats contains all the existing conversations that have not been deleted.

To see the current chats,

Navigate to Administration > Omnichannel > Current Chats

You are required to have View Omnichannel Contact Center permission to access this section.
Contact your workspace administrator to grant/revoke this permission.

Omnichannel Current Chat Filters


You can filter through the current chats with any of the following options:

Sort by Guest name: To sort the conversations by Guest/Visitor's name, enter the name in the field
provided, and your conversations are sorted by visitor name.
Sort by Agent: To sort the conversations served by an agent, select the agent from the Served By
dropdown field
Sort by Department: To sort the conversations by department, enter the department name in the
Department field, and your conversations are sorted by department.

Sort by Status: To sort the conversations by Open/Closed Status, choose the desired status from the
Status dropdown field, and your conversations are sorted. A conversation can be Open, On Hold, or
Closed
Sort by From and To date: To sort the conversations per From and To date, enter the From and To
Date in the field, and your conversations are sorted

Clear filters
To clear the filters, click on the three dots icon and select Clear filters.

Delete all closed chats


To delete closed chats, click on the three dots icon and select Delete all closed chats. This will delete all
the chats that are marked closed by the agents.
Analytics

This is an out-of-the-box analytics dashboard that allows you to track your Live Chat Agents' performance
(productivity) over any period of time. It gives managers the insight they need to make data-driven decisions
that improve the customer experience.

To access the Omnichannel Analytics settings,

Go to Administration > Omnichannel > Analytics.


You can filter the analytics based on Type, Department, Start, and End date.

Omnichannel Agents Conversation Analytics


To view conversation history analytics,

Select conversations from the Type dropdown menu.


Select your desired department.
Select your desired start date and end date.

Details of Conversation Matrices

Total Conversations: It represents the total number of conversations during the selected period of time.

Open Conversations: It represents the total number of open conversations for your selected department
during the chosen period.

On Hold Conversations: Shows the conversations on hold.

Total Messages: It represents the total number of messages received in all the conversations during a
selected period.

Busiest Day: It shows the day during which you received the most chats for your selected time.

Conversation Per Day: It shows the average count of conversations you received per day.

Busiest Time: It shows the hour during which you received the most chats for your selected period of time.

You can also see the percentage of conversations, the average of chat duration, and the total
messages handled by each one of your agents from your selected department from the Chart field.

Omnichannel Agent Productivity Analytics


To view Productivity history analytics,
Select Productivity from the Type dropdown menu.
Select your desired department
Select your desired start date and end date

Details of Productivity Matrices:

Average of Response Time: This matrix represents the average of your agent’s team’s responses to all the
conversations that are automatically assigned to them during a selected time.

Average of First Response Time: This matrix represents the average of the team’s first response to all the
chats they pick up.

Average of Reaction Time: This matrix represents the average of the team’s reaction to the assigned chats.

You can also see the Average of First Response Time, Best First Response Time, Average of
Response Time, and Average of Reaction Time of each of your agents from your selected department.
Real-time Monitoring

Real-time monitoring allows you to monitor your incoming and ongoing Live Chat conversations in real-time.

To access the Omnichannel Real-time monitoring dashboard, Go to Administration > Omnichannel >
Real-time Monitoring.

These monitoring metrics can be filtered by the department and set to be updated in a specified amount of
time by changing the Update every field.

When a Live Chat conversation is initiated, it is reflected immediately on the monitoring dashboard in real-
time.

Monitoring Conversations Metrics


This section shows matrices about all Live Chat conversations.

Total Conversations: It represents the total number of conversations at the current time.

Open Conversations: This shows the number of open conversations for your selected department at
the current moment.
On Hold Conversations: This shows the number of conversations on hold at the moment.
Total Messages: It represents the total number of messages received in all the current-day
conversations.
Total Visitors: It represents the total number of Live Chat users for your selected department for the
current day.

Monitoring Chat Metrics

Total Abandoned Chats: It represents the total number of conversations abandoned by the visitor for
your selected department's current day.
Average of Abandoned Chats: Shows in percentage the number of abandoned chats.
Average of Chat Duration Time: It represents the average duration of all the conversations of your
selected department for the current day.

Monitoring Live Chat Metrics by Time


Busiest Time: It represents the hour(s) during the current day when you received the largest number of
incoming chats.

Average of Service Available Time: It represents how many hours the Omnichannel service was
available during the day. It means that at least one agent is available to serve Omnichannel
conversations.
Average of Service Time: It represents the average time the agents spend serving chats in the current
day.

Average of Response Time: If the selected chat pickup method is auto-selection, the chat is
automatically assigned to an agent. This metric represents the average of agents' responses to all the
conversations automatically assigned to them.
Average of First Response Time: This matrix represents the average of the agent's first response to all
the chats he picks up.
Average of Reaction Time: This metric represents the average of the agent's reaction to the assigned
chats.
Average of Waiting: It represents the average time your visitor spent in the waiting queue.
Managers

Omnichannel managers are responsible for managing Omnichannel conversations, they can monitor and
see analytics of Omnichannel activities.

To access this menu, go to Administration > Omnichannel > Managers. Here, you can view, add or
remove managers.

View Omnichannel Managers


On the Omnichannel managers screen, a list of all the existing managers is seen with their details and can
be paginated if you have many managers.

Add a new Omnichannel manager


To add a user as an Omnichannel manager,

Search or select the user from the username field.


Click Add.

This will automatically assign the Live Chat Manager role to that user, who can now monitor and see
analytics of Omnichannel activities.

Remove the Omnichannel manager


To remove or revoke Omnichannel manager access from a user, click the delete icon by the right of the user
on the Omnichannel Managers list. This will remove the Live Chat Manager role from that user, and they
won't be able to monitor, view analytics or see the Omnichannel menu.
Agents

Omnichannel Agents are responsible for handling Omnichannel conversations. An agent can belong to a
particular department and gets notified when a new conversation gets initiated if they are available.

To access this menu, go to Administration > Omnichannel > Agents. Here, you can view, add or remove
agents.

Add Omnichannel Agent


To add a user as an Omnichannel agent,

Search or select the user from the username field.


Click Add.

This will automatically assign the Omnichannel Agent role to that user.

View Omnichannel Agent


On the Omnichannel Agent menu, a list of all the existing agents is available with their details and can be
paginated if you have many agents. An agent's status can be seen on the Live Chat Status tab showing
whether they are available or not.

Click an agent to edit their agent details.

Assign Omnichannel Agent to a Department

You may need to assign a particular agent(s) to be in charge of conversations involving a particular
department. To assign an agent to a department,

From the Omnichannel Agents page, click on the agent and click Edit on the sidebar

A section is opened with the agent's details, scroll down to the Departments field and select the
departments that the agent can respond to
Click Save.

Remove Omnichannel Agent


To remove a user from the agents' list, click on the delete icon on the right against the agent. This will also
remove the Omnichannel Agent role from that user.
Departments

An Omnichannel Department is a collection of rooms that can be configured based on a category as


needed. These departments can be related directly to the various departments in your company. Live Chat
conversations can be directed to a specific department.

A typical use case is when you have Live Chat conversations initiated from different places or
pages of your website and need them handled by various departments or groups of knowledge
experts. You can assign an agent to a department.

To access this menu,

Go to Administration > Omnichannel > Departments. Here, you can View, Create New, Edit, or
Delete a department.

Create Omnichannel Department


To create a new Omnichannel department:

Click +New on the top right of the screen


Fill in the required information and click Save.

From community edition workspaces on version 6.0 and above, you can only create one
department. To create multiple departments, you are required to upgrade to the enterprise edition
of BANKTEXT. For workspaces with multiple departments on previous versions of BANKTEXT,
you can continue with those departments but can't create a new one until you upgrade to
Enterprise.

Omnichannel Department Information


1. Enabled: Enables your new department.
2. Name: Name of the new department.
3. Description. An optional field that lets you set the department description

4. Show on the registration page: Allow your visitor to have the option to choose the department they
want to talk to. The option will appear to your customer in the Live Chat widget.
5. Email: Forward your Omnichannel conversations to the email address you choose during offline hours.
6. Show on offline page: A radio button if you want your department to show offline during off-business

hours. If you enable it, it will appear in the widget.


7. Send this department's Live Chat offline messages to a channel: Mention the name of the channel
you want to direct the offline messages to.

8. Request tag(s) before closing the conversation: Request your agent to set tags for the conversation
for later searching purposes.
9. Conversation closing tags: As an administrator, you can add some conversation tags for this
department.
10. Agents: Assign the agents to this department.

Depending on how many departments you've created, you might have the following behavior:

No departments: All Live Chat agents will receive incoming chats using a round-robin rule.

One department: All incoming chats will be offered to agents only in that department using a round-
robin rule.
More than one department: The visitor must choose what department he wants to talk to at registration.

Archive Omnichannel Department


When an Omnichannel department is no longer needed, but you don't want to delete it just yet, you can
archive it. You can also unarchive it later if you discover a need for it.

For community edition workspaces below version 6.0 with multiple departments, archiving
departments can be instrumental if you want to avoid getting an enterprise license. Instead of
deleting a department when you no longer need it, you can archive it. When you need that
department later, you can unarchive it. This gives community edition workspaces below version
6.0 the ability to retain the same number of departments they had before the upgrade.

To archive an Omnichannel department,

Click the kebab menu across the department you want to archive.
Then, select Archive. Navigate to the Archived tab, and you'll see the archived departments.

To unarchive an Omnichannel department,


From the list of archived departments, Click the kebab menu across the department you want to
unarchive.

Then, select Unarchive. The department is added back to the list of active departments.

Edit Omnichannel Department


To edit an Omnichannel department,

Click the kebab menu across the department. Then, select Edit.

A panel is opened with all the current omnichannel department information you can modify. Update the
department details and click Save.

Delete Omnichannel Department


To delete an Omnichannel department,

Click the kebab menu across the department. Then, select Delete.

As a workspace administrator, navigate to Administration > Settings > Omnichannel and


Enable department removal to allow deleting departments.
Custom Fields

Custom fields can be added to receive additional information from visitors during registration before initiating
a Live Chat conversation or used to set other properties of a visitor/room. They can be set upon a Visitor or
Room.

To access this menu, go to Administration > Omnichannel > Custom Fields. Here, you can View, Create
New, Edit, or Delete an existing field.

The Live Chat registration form has the Name, Email, and I need Help With…(Department) fields
by default.

Create Omnichannel Custom Field


To create a new custom field:

Click on +New from the custom field panel


Fill in the required information and click Save.

Omnichannel Custom Field Information

Field: Enter the desired field that you want to add to your Live Chat registration form. E.g., last name.
Label: The label of the field.
Scope: A dropdown for you to set the scope of the custom field
Visitor: If the visitor option is selected, the field will be available as an Omnichannel visitor's
property
Room: When selected, the field will be available against an Omnichannel room.
Visible: Whether or not to make it visible

Searchable: This lets you set if searching in the Omnichannel Contact Center can be done with the
custom field.

Enterprise Edition Omnichannel Custom Fields

The rest of the settings (mentioned below) are Enterprise only.


Validation: This lets you set validation Validation.
Required: When enabled, the field will be set as required.
Type: Choose the input type ( Input/Select ) of the field

Default value: Set the default value of the field

Options: Comma-separated list used to select a pre-configured value. Spaces between elements are
not accepted.
Public: Set it Public this will be displayed in external applications, such as Live Chat

When a custom field is created and made public, any value supplied in that field is available on the Live
Chat agent's side.

Edit Omnichannel Custom Field


To edit an Omnichannel Custom Field:

Click on the field you want yo update.

A section is opened with all the current details of that field which can be modified. Update the field and
click Save.

Delete Omnichannel Custom Field


To delete an Omnichannel Custom Field, click on the delete icon on the right of the field from the Custom
Field list.
Livechat Triggers

Omnichannel Live Chat Triggers are a set of events that can be configured that when they happen, causes
the Live Chat widget to perform an action or opens up automatically.

To access this menu, go to Administration > Omnichannel > Live Chat Triggers. Here, you can View,
Create New, Edit or Delete existing Live Chat Triggers.

Create New Omnichannel Live Chat Trigger


To create a new Omnichannel Live Chat Trigger:

Click +New on the top right of the screen

A page for the department details is seen. Fill in these details and click Save

Omnichannel LiveChat Trigger Information

Enable: Enables the Live Chat Trigger

Run only once for each visitor: Enable to let the trigger only run once for each visitor. If false, you get a
recurring pop-open. (e.g., If your user goes to a different website and comes back to the same website, it
pops open)
Name: Name your new trigger.
Description: Allows you set the description of the trigger.

Condition: Allows you set the condition for which the action will be triggered. Depending on what
condition to track, you can set additional properties for validation.
Action: Define the action you want the Live Chat widget to perform. For now, there is only one option of
sending a message to the visitor. You can also select if you want to impersonate the next available
agent in the queue or use a bot/custom agent.

Edit Omnichannel Live Chat Trigger


To edit an Omnichannel Live Chat Trigger:

Click on the Trigger from the list of Triggers


A section is opened with all the current details of that Trigger, which can be modified and saved.

Delete Omnichannel Live Chat Trigger


To delete an Omnichannel Live Chat Trigger, click on the delete icon by the right of the Trigger from the
Triggers.
Livechat Widget Installation

The Live Chat Widget is a chat interface that can be embedded into a webpage. Visitors on your website
can click the widget to initiate a conversation. It can serve as an excellent tool for use cases like the
following:

Offering Live and real-time support to customers/users.


Embedded to get information from people interacting with your website.

Livechat Widget Installation


To install the Live Chat widget,

Go to Administration > Omnichannel > Live Chat Installation.

Copy the code snippet and paste it above the last </body> tag on your website.

The Live Chat widget appears at the bottom right of your webpage.

Deploying Live Chat Widget to a different domain


To run the Live Chat Widget on a domain different from your BANKTEXT server,

After installing the widget, navigate to Administration > Workspace > Settings > General.
Disable Restrict access inside any iframe on your BANKTEXT server.

Troubleshoot Livechat Widget Installation


If you have issues displaying the Live Chat Widget, check your browser developer console to examine the
details of any errors you might be experiencing.

Failed to read 'localStorage' properly from Window


An error like this is related to your browser settings for third-party cookies. Try with another browser or
review your browser settings to confirm it's not blocking third-party cookies.

Trying to access localhost:3000

Review the Site URL setting under Administration > Workspace > Settings > General and the server
name setting on your reverse proxy (if you have one) to guarantee they are all aligned and correspond to the
same URL used in your Live Chat Widget installed script.
Livechat Widget Appearance

The Live Chat Widget's appearance can be customized to fit your branding style. Whether agents are online
or not, you can customize the widget appearance for offline and online hours. The fields on the registration
form and the messages displayed after a conversation are both customizable.

To access Live Chat Appearance,

Go to Administration > Omnichannel > Live Chat Appearance.

Live Chat Widget Online Appearance

Title: Set the title of your widget.


Title bar color: Set the color of the title bar of your widget.
Message Character Limit: Enable to set the maximum amount of characters per message.
Show agent information: Enable to show agent’s name.
Show agent email: Enable to show agent’s email.

Live Chat Widget Offline Appearance

Display Offline Form: Turn on to display offline form.


Offline Form Unavailable Message: The message visitors will see when Live Chat form is
unavailable.
Offline message: Set Offline Message.
Title offline: The Live Chat Widget title
Title bar color offline: Set title bar color for when offline.
Email Address to Send Offline Messages: Set the email address to which offline messages will be
sent to.

Offline Success Message: Set up the message you want to send to the visitor after successfully
sending an offfline message.

Live Chat Widget Registration Form

Enabled: Enables the registration form.


Show name field: Enable to show Name field.
Show email field: Enable to show the Email field.
Registration Form Message: Show any message on the registration form if you want. It appears right
under the widget title.
Conversation Finished

Conversation Finished Message: Set up the message tiltle you want to send to the visitor when the
conversation is finished.
Conversation Finished Text: Set up the message text you want to display to the visitor when the
conversation is finished.
Webhooks

Omnichannel webhooks allow you to integrate the BANKTEXT Omnichannel to any third-party system, e.g.,
CRM, Zoho, etc.

To access Webhooks settings,

Navigate to Administration > Workspace > Omnichannel > CRM Integration.

Create Omnichannel Webhook


To create a new Omnichannel webhook, you need to update the following details:

Webhook URL: The Webhook URL from the system you want to connect(destination).
Secret Token: Enter the secret token that can be used to verify the webhook.

The field Secret Token is sent to a header X-RocketChat-Livechat-Token so you can


validate if the request became from Livechat.

If your endpoint returns a response status other than 200 , BANKTEXT will retry ten times,
waiting ten seconds between retries.
Send Request on: Select the action(s) you want this integration to have.

Send Request on Chat Start: Sends a post request to the webhook endpoint when an Omnichannel
chat starts.
Send Request on Chat Close: Sends a request when a chat gets closed.
Send Request on Chat Taken: Sends a request when an Omnichannel agent Takes a chat.
Send request on Chat Queued: A request gets sent when a chat gets queued.

Send Request on Forwarding: Triggers request to be sent when a chat gets forwarded to another
Omnichannel department or Agent.
Send Request on Offline Messages: Sends a request when a visitor leaves an offline message.

Send Request on Visitor Messages: A request is sent when an Omnichannel visitor sends a
message.
Send Request on Agent Messages: Sends a request when an Omnichannel Agent sends a message
or reply.

Send Visitor Navigation History on Request: Sends a request about visitor's navigation history. This
feature depends on "Send Visitor Navigation History as a Message" to be enabled.

Send request on lead capture: Sends a request when a lead is captured.

Lead capture email regex: Specify the regex for lead captured email.
Lead capture phone regex: Set the regex for lead-captured phone numbers.

If you enable Send Request on Chat Start, BANKTEXT sends a webhook to the external system
telling it that a new conversation has started.

Sample JSON Data

Here is an example of JSON data sent in the request.


Livechat session

{
"_id": "Tc5SyBZHovD4k8BXv",
"label": "James",
"createdAt": "2023-02-02T10:16:07.230Z",
"lastMessageAt": "2023-02-02T10:22:14.087Z",
"tags": [
"self"
],
"visitor": {
"_id": "63db8d4990fe6eda42ad429a",
"token": "e36e352c742eee48860d576fcefb372afc44ebc95750fa1e3b646195f702341a",
"name": "James",
"username": "guest-3",
"email": [
{
"address": "fongang.rodrique+local-on@BANKTEXT"
}
],
"phone": null
},
"agent": {
"_id": "aXjjcPwq4Pcp7xftH",
"username": "user1",
"name": "User One",
"email": "uaser1@mail.com"
},
"type": "LivechatSession",
"messages": [
{
"u": {
"_id": "63db8d4990fe6eda42ad429a",
"username": "guest-3",
"name": "James"
},
"_id": "2untSdndqBP7opGWw",
"username": "guest-3",
"msg": "Hi",
"ts": "2023-02-02T10:16:09.615Z"
},
{
"u": {
"_id": "aXjjcPwq4Pcp7xftH",
"username": "user1",
"name": "User One"
},
"_id": "7xjkw8ZFitMSNGmeJ",
"username": "user1",
"mtsg""::""2H0o2w3-c0a2n-0I 1e
2Th0l
:p :o
21y0u 3o
5.t9d
1a
Zy
"?
,",
"agentId": "aXjjcPwq4Pcp7xftH"
},
{
"u": {
"_id": "63db8d4990fe6eda42ad429a",
"username": "guest-3",
"name": "James"
},
"_id": "y7p77YFfkHJeg5gD9",
"username": "guest-3",
"msg": "don't worry,thank you",
"ts": "2023-02-02T10:22:14.087Z"
},
{
"u": {
"_id": "aXjjcPwq4Pcp7xftH",
"username": "user1",
"name": "User One"
},
"_id": "ciAggDuN8ioqDrTby",
"username": "user1",
"msg": "Thank you for visiting",
"ts": "2023-02-02T10:23:11.437Z",
"agentId": "aXjjcPwq4Pcp7xftH",
"closingMessage": true
}
],
"servedBy": {
"_id": "aXjjcPwq4Pcp7xftH",
"username": "user1",
"ts": "2023-02-02T10:16:07.375Z"
},
"closedAt": "2023-02-02T10:23:11.344Z",
"closedBy": {
"_id": "aXjjcPwq4Pcp7xftH",
"username": "user1"
},
"closer": "user"
}

Message sent

{
"_id": "Tc5SyBZHovD4k8BXv",
"label": "James",
"createdAt": "2023-02-02T10:16:07.230Z",
"lastMessageAt": "2023-02-02T10:16:09.615Z",
"vi
"s_ it
do"r
: ":
"6{
3 db8d4990fe6eda42ad429a",
"token": "e36e352c742eee48860d576fcefb372afc44ebc95750fa1e3b646195f702341a",
"name": "James",
"username": "guest-3",
"email": [
{
"address": "fongang.rodrique+local-on@BANKTEXT"
}
],
"phone": null
},
"agent": {
"_id": "aXjjcPwq4Pcp7xftH",
"username": "user1",
"name": "User One",
"email": "uaser1@mail.com"
},
"type": "Message",

"messages": [
{
"u": {
"_id": "aXjjcPwq4Pcp7xftH",
"username": "user1",
"name": "User One"
},
"_id": "7xjkw8ZFitMSNGmeJ",
"username": "user1",
"msg": "How can I help you today?",
"ts": "2023-02-02T10:21:05.391Z",
"agentId": "aXjjcPwq4Pcp7xftH"
}
]
}
Facebook Messenger Manager's Guide

The Facebook Messager page allows you manage conversations from Facebook Messenger on the pages
you have connected.

This integration has known vulnerabilities and has been deprecated for BANKTEXT 6.0. As a
BANKTEXT Enterprise user you can make use of the Facebook App.

To access Facebook Messenger manager's guide,

Navigate to Administration > Omnichannel > Facebook Messenger.

Select Facebook Messenger and Enable it. You'll be prompted to log in. Be sure to use the credentials
that are tied to the page you wish to receive messages from. You'll have to do a standard Facebook
OAuth login and grant your BANKTEXT instance access to your pages.
Once you're returned from Facebook, you'll see a list of the pages associated with that account. If you
see none, ensure the account has pages, then click RELOAD PAGES.
Enable the pages you'd like to get messages from.

Now, the Live Chat agents recieves any incoming chats from that page. Responses go back to Facebook as
if you were using Messenger itself.

To learn more about Rocket,Chat and Facebook, see Facebook App.


Business Hours

Multiple Business Hours is BANKTEXT Enterprise feature.

Setting business hours lets you specify the working days and hours of your business. This reflects on the
Live Chat widget availability making it easy for agents to be notified and hence receive queries.

The enterprise workspaces can set up multiple business hours according to different time zones and their
business needs, while community workspaces can only set up one set of business hours.

To access Business Hours settings,

Navigate to Administration > Omnichannel > Business Hours.

Create New Omnichannel Business Hours


To create a new business hour,

Click +New.

Fill in the required details and click Save.


Enabled: Enables the working hour.
Name: Name of the working hour
Departments: Select the departments the working hours apply to.

Timezone: Select the timezone


Open Days of the Week: Pick open days of the week. Each selected day lets you set an open and
close time.

View and Edit Omnichannel Business Hours


On the Business Hours page, a list of all the created business hours is seen.

To edit a bussiness hour,

Click on that bussiness hour from the list.


Update the bussiness hour and click Save.
Monitors

Monitors in Omnichannel are users that have the ability to monitor Omnichannel activities and have access
to Current Chats, Analytics, Real-time Monitoring, Agents, Departments, Business Hours and Canned
Responses.

A monitor is only able to view analytics or activities of a department if they are assigned to a unit.

To access Omnichannel Monitors,

Go to Administration > Omnichannel > Monitors.

List Omnichannel Monitors


On the Monitors page, a list of all the users with livechat-monitor role is displayed. From here, you
can add new monitors or delete existing monitors.

Add New Omnichannel Monitor


To add a new monitor(s),

Enter the person's username in the username field and hit the Add button. This will automatically assign
that user the livechat-monitor role.

Delete Omnichannel Monitor


To delete an Omnichannel Monitor,

Click the Delete icon on the right across the user. This will remove the livechat-monitor role from
that user.
Units

Using Omnichannel units, you can group a set of departments for management purposes. As an
Omnichannel manager, you can make a unit of multiple departments and assign a monitor to oversee them.

To access Units settings,

Go to Administration > Omnichannel > Units.

List Omnichannel Units


On the Units page, you see a list of all the existing units and a button to initiate the creation of a new unit.
Clicking on an existing unit opens up a page where you can edit it.

Create Omnichannel Unit


To create a new unit,

Click on +New
Update the required information and click Save.

Name: The name of the new unit.


Visibility: Set its visibility. Private/Public. A private unit will be available only for you.

Departments: Add the desired departments to your unit.


Monitors: Lets you assign monitors to the unit.

Delete Omnichannel Unit


To delete a unit, click the Delete icon by the right of the unit from the Units screen.
Canned Responses

Canned responses allow you to save message snippets that you can call with shortcuts (preceded with ! )
to communicate quickly. They can be configured to work both in Omnichannel conversations or general
messaging within your BANKTEXT workspace.

Canned Responses BANKTEXT Admin's Guide


As a BANKTEXT workspace admin, you can enable and disable Canned Responses on your server.

Enable BANKTEXT Canned Responses

To enable canned responses on your workspace,

Go to Administration > Workspace > Settings > Omnichannel > Canned Responses
Activate the toggle to enable and Save Changes

When Canned Responses is enabled, it'll be available to users with the corresponding *-
canned-responses role.

To enable Canned Responses for the first time, Omnichannel needs to be enabled first.
Canned Responses can be used only in the normal workspace when Omnichannel is
disabled.

Canned Responses Permissions


Under the Administration > Workspace > Permissions section, you can define which user roles should be
able to view, create and delete the canned responses.

To save a new canned response for your workspace, visit Canned Responses Omnichannel
Managers Guide.

See the guides below to learn more:

Canned Responses Omnichannel Manager's Guide

You can find the canned response agent guide here.


Canned Responses Omnichannel Manager's
Guide

Canned responses allow you to save message snippets that you can call with shortcuts
(preceded with ! ) to communicate a quick note to your visitors in Omnichannel and for
messaging in regular conversations inside your BANKTEXT's workspace.

If you are using canned responses for the first time, please check the BANKTEXT Admin's guide for canned
responses or contact your workspace Administrator to enable canned responses on your workspace.

Create Canned Responses


To create Canned Responses, follow these steps

Go to Administration > Omnichannel > Canned Responses. A list of Canned Responses can be
seen if they exist
Click on + New

Update the required information and Hit Save. A new Canned Response is ready to be used by typing
! in the message box.
Shortcut: The shortcut of your new canned response.
Message: Enter your message using any placeholders available. You can also preview the
message anytime by switching between the Editor and Preview tab.

Tags: Set the tags for your canned response. This helps agents find canned responses specific to a
particular topic
Sharing: Lets you set the usage level of your Canned Response
Public: Anyone across your workspace can access your canned response.
Department: Anyone in the selected department can access your canned response.
Private: Only you and Omnichannel managers can access your canned response.

Manager create canned response from within chatroom


You can create a canned response on the go from within a conversation.

To create a canned response in a conversation,

Click on the Canned Responses icon by the top right.


Click on Create and fill in the required details.
Filtering Canned Responses
You can filter canned responses from the main page by:

1. Search: Searching the Canned Message shortcut or message text.


2. Sharing: You can filter by sharing.
3. Created By: You can filter by name of the user who created the canned responses.

You can find the canned response agent guide here.


Tags

As a Live Chat Manager, you can set Tags to be assigned to the Live Chat conversations by the agents.
Tags can be used to sort Live Chat conversations easily. Omnichannel Tags are used for marking and
classifying Omnichannel conversations.

A practical use case is using tags to mark the progress made on a Live Chat query. You can have
tags like new , blocked , in progress, completed etc.

To access Tags settings,

Go to Administration > Omnichannel > Tags.

List Omnichannel Tags


On the Tags menu, you see a list of tags if they exist. Clicking on one opens up a page where it can be
edited.

Create Omnichannel Tags


To create a new Tag:

Click on + New
Update the required information and click Save
Name: Enter the name you wish for the Tag
Description: A description of what the Tag is
Departments: This lets you select a list of departments in which the Tag is available. Leave it empty
to set it available to all departments.

When created, Omnichannel Agents can use the Tag on conversations.

Delete Omnichannel Tags


To delete an existing Tag,

Click on the Delete icon across the Tag from the main settings screen.
SLA Policies

Omnichannel SLA Policies allow you to change the order of Omnichannel queues based on Estimated
Wait Time. It means chats with a shorter wait time will appear in the queue before others with longer or no
due time set. SLA Policies are not mandatory for each chat. Thus, the Omnichannel queue has
conversations with and without SLA policies.

Estimated Wait Time is the time defined for a customer to be served. For example, if the
estimated wait time is 10 minutes, the customer is supposed to wait in queue for up to 10 minutes
until an agent takes the chat.

To configure SLA Policies in your workspace,

Navigate to Administration > Workspace > Settings > Omnichannel > Queue Management.
Under the sorting mechanism, select SLA Policies. Click Save Changes.

Create Omnichannel SLA Policies


To create an Omnichannel SLA Policy,

Navigate to Administration > Omnichannel > SLA Policies.


Click on + New.
Update the required information and click Save.
Name: The name of the SLA Policy.
Description: The description of the SLA Policy
Estimated due time: The time in minutes for the SLA Policy.

An SLA policy name and estimated due time are unique and can not be duplicated. Two SLA
policies can not have the same name and estimated due time.

List Omnichannel SLA Policies


To view a list of all existing SLA Policies
Navigate to Administration > Omnichannel > SLA Policies. It lists the current SLA Policies in your
workspace.
Click an SLA Policy to edit it and update the details.

Delete Omnichannel SLA Policies


To delete an existing SLA Policy,

Navigate to Administration > Omnichannel > SLA Policies.

From the SLA Policies list, click the Delete icon across the SLA Policy you want to delete.

Change the SLA Policy of a chat


To change the SLA policy of a conversation,

Navigate to Room Information > Edit.

Select the SLA policy and click Save. After updating the SLA policy, the chat is moved to reflect its
priority position to determine the queue order.
Priorities

OmniChannel Priorities helps you streamline conversations coming through multiple queues to prioritize
them and enhance productivity. It is helpful for agents to determine the conversations they should prioritize
when responding to customers. The omnichannel queue contains chats with and without priorities because
they are not assigned by default.

To configure Priorities in your workspace,

Navigate to Administration > Workspace > Settings > Omnichannel > Queue Management.
Under the sorting mechanism, select priorities. Click Save Changes.
Navigate to Administration > Omnichannel > Priorities. It lists the default priorities: Highest, High,
Medium, Low, and Lowest.
Select a priority to edit it and customize the name.
Click Reset to return the name of all the priorities back to default.

Change the Priority of a chat


To manually change the priority of a conversation,

Hover over the chat and click the kebab menu. Select the priority option you want to assign to that chat.

After the priority is updated, the chat is moved to reflect its priority position in the queue. For example, a
chat with the priority 'highest" is transferred to the top of the chat queue.
You can also change the priority of a chat from the Edit room tab of the chat by navigating to Room
Information > Edit.

Organizations can benefit from automation using chatbots to determine the priority of each
conversation based on the nature of its contents.

Filter Omnichannel chats by Priorities


As an Omnichannel manager, you can filter the chats based on their priorities. You can join or forward a
high-priority chat to follow up and ensure they are resolved on time.

To filter chats based on priorities,

Navigate to Administration > Omnichannel > Current Chats.


You can preview the priority of each chat from this table.
Message Auditing

BANKTEXT allows authorized users to audit messages and read conversations in a workspace. The user
must have an auditor role and Can Audit permission to access the auditing panel. As an
organization, you may want to inspect the omnichannel conversations and watch out for agents that use
improper language with customers. An auditor can do the following:

Review messages in private rooms.


Review messages by users.
Review direct messages between users.

Review omnichannel messages.


Check the audit history of individuals using the Message Auditing Panel.

To access the Message Auditing Panel,

Navigate to Administration > Audit > Messages,

If you cant find the audit options, don't hesitate to get in touch with your workspace administrator
to assign message auditing permmisions to you.
See Messaging Auditing Log to learn more about the auditing log history.

Search and Review Messages


You can sort messages with various filters in your workspace.

By Channel/Room

To search for a specific message in a room,

Update the Message field with the key phrase of the message you are searching .lf you wish to pull all
messages, leave the Message field empty.

Select the start and end date to limit the search results to a specific time frame. The three-dots icon
also provides other time options like Today, Last Week, etc.
Select the room you want to search in from the Channel dropdown**.**
Click Apply to reveal the messages gotten between the periods.

By Users
To search for a specific message by users,

Update the Message field with the key phrase of the message you are searching .lf you wish to pull all
messages, leave the Message field empty.

Select the start and end date to limit the search results to a specific time frame. The three-dots icon
also provides other time options like Today, Last Week, etc.
Type the username and select the user(s) for which you want to search messages in the Users field.

Click Apply. The selected users' conversations between those periods that match the search phrase are
displayed.

By Direct Messages

To search for a specific message by a direct message(DM),

Update the Message field with the key phrase of the message you are searching .lf you wish to pull all
messages, leave the Message field empty.

Select the start and end date to limit the search results to a specific time frame. The three-dots icon
also provides other time options like Today, Last Week, etc.
Select at least two users whose direct messages you want to check in the Users field.

Click Apply. The conversations between the users selected in that time frame that matches the search
phrase are displayed.

By Omnichannel

To search for a specific Omnichannel conversation:

Update the Message field with the key phrase of the message you are searching .lf you wish to pull all
messages, leave the Message field empty.

Select the start and end date to limit the search results to a specific time frame. The three-dots icon
also provides other time options like Today, Last Week, etc.
Enter the visitor's number in the Visitor field.
Enter the agent's name who served the conversation you want in the Agent field.
Click Apply.
Review All Message Auditing Panel Search
Results

The Message Auditing Panel returns all messages that match the search values defined in the mandatory
fields for each option. However, the auditor cannot read the encrypted messages of other users. If you want
to audit these messages, BANKTEXT recommends that you disable message encryption.

To disable message encryption,

Navigate to Administration > Workspace > Settings > E2E Encryption.


Toggle off the Enabled option to disable E2E Encryption.
Click Save Changes.
Check Historical Edits and Deletions of
Messages

BANKTEXT lets you view any message history, including modified or removed messages.

To update message history settings,

Navigate to Administration > Workspace > Settings > Message.


Enable Allow Message Editing and Keep Per Message Editing History to see a history of all
messages and not only the last edit made.

Disable Allow Message Deleting. Otherwise, messages show only the deleted status, and you cannot
see the complete message history.
Assign Message Auditing Permissions to
Specific Users

The Auditor permission grant users access to Message Auditing features. As a workspace administrator,
you can assign this permission to any role you want to give audit access to.

To assign message audit permissions,

Navigate to Administration > Workspace > Permissions.


To access the Message Auditing Panel, check the Can Audit box under the role you want to
assign.
Message Auditing Log
Review log history of users who have accessed the Message Auditing Panel.

The Message Audit Log allows you to verify who run audits and when a conversation was inspected. The
user must have an auditor-log role and Can Audit Log permission to access the Audit Logs.

To access the message auditing log,

Navigate to Administration > Audit > Logs.

If you are interested in the entire log history, clear the start and end date fields. The full log history results are
returned, from the oldest audits to the most recent. However, if you want to see who audited messages
within a specific time frame, select the start (left) and end dates(right). The three-dots icon also provides
other time options like Today, This Week, etc.

The message auditing logs returns a table with following information:

Username : The name, username, and avatar of the auditors.


Looked for : The search term of each audit.
When : The date and time when each audit was made.
Results: The number of search results returned by each audit.
Filters: Filters that were applied for each audit depending on the type of audit.

Assign Message Audit Log Permission to Specific Users


The Audit Log permissions grant users access to Message Audit Log features. As a workspace
administrator, you can assign this permssion **** to any role you want to give audit log access to.

To assign message audit permissions,

Navigate to Administration > Workspace > Permissions.

To access the Message Auditing Panel, check the Can Audit Log box under the role you want to
assign.
BANKTEXT Cloud
Setup and manage your BANKTEXT cloud account.

BANKTEXT Cloud lets you connect your workspace to our cloud services and better manage your
workspaces. You have the option to choose between cloud-hosted workspace or self-hosted workspaces.

Create your new cloud account: Sign up for a new cloud account.

Manage your cloud account: Manage your workspaces, add organization information, view invoices, and
more services with your cloud account.

Cloud Account Setup Wizard: Set up your first Admin user and register your server.

Cloud FAQs: Frequently asked questions on BANKTEXT cloud.


Create your new cloud account

BANKTEXT Cloud allows you to connect your self-hosted BANKTEXT workspace to the services we
provide in our Cloud. It enables you to manage your workspace better. You can explore the workspace
capabilities for free by signing up for a 30-day BANKTEXT Enterprise Edition Trial. You will get a
notification in advance of when the trial is coming to an end. If you purchase any plan, your trial version will
automatically convert to a paid plan at the end of the trial period.

If you are a self-managed customer, a cloud account is optional, but if you are a SaaS customer, it
is created by default when you first start your workspace with us.

Create a new cloud account


Log in to your BANKTEXT Cloud account using your email or create a new account if you don't have one.

Go to BANKTEXT Cloud.
Click Create Account to register your new BANKTEXT cloud account.
Fill in the required information.
Read and accept the BANKTEXT Terms and Conditions and Privacy Policy.

Click Next. You will receive an email with the confirmation link to sign in to your cloud account.
Confirm your email address by clicking on the link sent. Your cloud account has been created and is
ready to use.
You will see a Workspaces screen listing every workspace connected to your cloud account.
Manage your cloud account

You can use your cloud account to manage your workspaces, add organization information, view invoices,
upgrade or downgrade your workspaces, and more services.

Sign in to your BANKTEXT Cloud Account


You can log in to your cloud account with your email and password or via a login link to your email.

Connect to your cloud account with a login link

Go to BANKTEXT Cloud.

Enter your Email Address and then click Send Login Link. You will receive an email with the link to
sign in to your cloud console.
From the email, click Sign In or copy and paste the URL into your web browser to access your cloud
account.

Using your password, you can also connect to your cloud account without an email invitation.

Reset your password

To reset your password,

Go to BANKTEXT Cloud.

Enter the email address associated with your account.


Click Reset Password.
You will receive an email to finish the password reset process.
Custom domain for your Cloud-hosted
workspace

Any Cloud Portal account with a Cloud-hosted workspace can apply custom domains

If your custom domain stops working for any reason, there is no redirect option.

To set a custom domain,

Access and log in to your cloud account.


Click Edit next to your default URL

Edit workspace URL

Select Use custom domain, set your new domain, and click Save.
A message tells you to wait for DNS verification, and your domain URL displays a pending status.
Registrars usually process nameserver updates within 24 hours. Once complete, you will receive an email
from BANKTEXT Cloud.
Profile

To update your cloud account profile,

Click your Avatar icon.


Select My Profile.

Update the required information.


Click Save Changes.
Organization Settings

As a workspace administrator, you can update information about your organization.

To update your organization's information,

From the sidebar menu, click Organization.

Update your organization details.


Then, click Save Changes.
Workspaces

As a workspace administrator, you can view and manage all the workspaces linked to your account.

Manage Workspaces
When you log in, you will see the list of workspaces linked to your cloud account.

To register a self-managed workspace, click Register self-managed to enable your self-hosted workspace.

If you want multiple cloud workspaces under the same cloud account, please contact us at
support@BANKTEXT.

To view workspace Information,

Click the workspace to see the following workspace information:


Workspace plan
Push notification limit
Total usage
Push notification usage.

After your first sign-up, you are given a BANKTEXT Enterprise Edition for 30 days. No payment is required.
On the 30th day, you will be charged according to your chosen plan. The minimum volume or resources on
Cloud provided per workspace is for 25 members, so you will be billed accordingly even if you have less
than 25 users. Workspace members will continue to receive mobile push notifications for the remainder of
the trial.

Upgrade/Downgrade your plan

This is currently available for BANKTEXT SaaS workspaces.

You can change your workspace plan from the BANKTEXT Cloud Console, with the option to upgrade,
downgrade or switch to monthly or yearly plans.
Log in to your BANKTEXT Cloud account
Click and open the workspace you wish to upgrade the plan for
Click on Subscribe or Manage Subscription button
A side panel opens up with details for you to manage the subscriptions

Plans / Seats: This lets you toggle your billing plan to Monthly/Yearly

Cloud Enterprise [Monthly/Yearly]: Increase or decrease the number of seats for your workspace
depending on the plan selected above.

After the subscription has been modified, hit Save to continue


Validate the checkout and payment and Subscribe to apply the changes

After a successful checkout, your subscription gets activated, and you receive an invoice through
email about the purchase. Decreasing already purchased seats will refund the cost as a
BANKTEXT Cloud account credit.

Restart Workspace
When facing issues with your workspace, you can restart your workspace. This process disconnects you
from your workspace so that it can be shut down and restarted. A server restart is required when you face
minor performance issues, e.g., slow messages. After you restart your workspace, it will take 1-5 minutes
(depending upon your number of users) for the workspace to continue again.

To restart your workspace,

From the sidebar menu, click Workspaces


Select the Workspace and click Restart your workspace.

Cancel Workspace
You can cancel your workspace to end your subscription and hibernate your server.

To cancel a workspace,

From the sidebar menu, click Workspaces.

Click the **** three-dot icon beside the workspace.

Select Cancel.

Please be aware that the workspace administrator in your Cloud Console is the only person who
can end your subscription. Self-managed customers can't cancel their workspaces.
When you cancel a Saas service, the status remains canceling until the end of your billing cycle. After the
billing cycle is ended, the status is changed to canceled.

If you change your mind within 30 days of your workspace getting canceled, please reach out to
us at support@BANKTEXT to get your workspace restored. After 30 days, you will have to create
a new one.

Update Workspace
You can upgrade your workspace to the latest workspace version.

To update your workspace,

From the sidebar menu, click Workspaces.

Click the **** three-dot icon beside the workspace.

Select Update.
Invoices
Check and download a copy of your monthly invoice.

You can view the list of invoices and filter by product and workspace. You can download invoices either as
PDF or CSV. You can also multi-select invoices to download specific invoices.

To view your invoices,

From the sidebar menu, click Invoices.


You can see the list of your invoices and other associated details like workspace, product status, and
date.
Select the invoice and click Download.

To find more billing information, please go to our pricing page.


Payment Methods
Add a payment method to your BANKTEXT Cloud account.

You can add your credit or debit card as a new payment method for your BANKTEXT account. The payment
methods will then be an option when you make the payments. You have the option to set a card as your
default payment method.

To add a new payment method,

From the sidebar menu, click Payment Methods.


Then, click Add Payment Method.
Add your credit/debit card details. Click Add Card.

To delete a card,

Select the card, and click Delete.

If you have only one credit card added, you can't delete the only payment method on your own.
Please get in touch with support@BANKTEXT to get it deleted.
Support
Get help from BANKTEXT Help Desk if you are facing issues.

When you are facing technical issues, you can get help from us through BANKTEXT Support. Using the
Help Desk, you can raise your queries via tickets, read articles, and engage with our community.

To access the BANKTEXT Help Desk,

From the sidebar menu, click Support.


If you are already a member, you can enter your email address and password to sign in or create an
account by clicking Sign Up.
You will receive an invitation email with the confirmation link to access BANKTEXT Support's Customer
Self-Service Portal
Click ACCEPT THE INVITATION, then proceed to set up your password.

To create a ticket,

Navigate to My Area > Tickets.

Click Add ticket.


Fill in the required information about the ticket you want to raise.
Click Submit.

Use our ticketing system to request service following the service-level agreement (SLA).
BANKTEXT does not accept tickets sent by personal email.
Learn more about BANKTEXT from our knowledge base portal and articles.
Security
Manage the security of your BANKTEXT Cloud account.

Password
You can reset your password easily by signing out and clicking Reset password on the BANKTEXT Cloud
login page.

A password reset link is sent to your email if it matches an account.

Two Factor Authentication


Setting up 2FA(Two Factor Authentication) provides a higher layer of securing to your BANKTEXT Cloud
account.

Before setting up 2FA, you must set a password for your account first.

To set up 2FA:

Click on Enable to enable the feature

A modal is shown, prompting you to enter your TOTP (time-based one-time password) or to create one if
you don't have
Download and have available any Authenticator app of your choice to proceed. Some popular
Authenticators include Google Authenticator, Authy, and Duo
Scan the QR Code provided with your Authenticator app or setup the Authentication keys manually

Copy the code displayed by the newly added Authentication means ( BANKTEXT Cloud ) and fill in
the field prompting to enter the code, then proceed

A list of backup codes is provided. Save them securely in case you lose access to your Authenticator
app
After that, the 2FA setup is completed

You should now see on the security page the number of backup codes left and have the ability to disable
2FA or generate new codes.

With 2FA enabled on your account, you will be required to provide the Authenticator code when
resetting your password and when logging in through password or passwordless means.
Contact Sales

You can talk to a Rocketeer in the sales or partnership team. Visit the BANKTEXT contact page to connect
with the Sales Team and Customer Support Team.
Cloud Account Setup Wizard

The Cloud Setup Wizard guides you through registering your server to receive free push notifications.

After entering your administrative and organization information during the setup of your BANKTEXT
workspace, register your server to the BANKTEXT Cloud or run it as a standalone service.

Connecting your workplace to the cloud gives you access to interact with services like

Mobile push notifications gateway


Live Chat Omnichannel proxy
OAuth proxy for social network
Apps Marketplace

To register your server,

Connect it to your cloud account. If you already have one- enter the cloud email address. Otherwise,
create a new account.
You will receive an email to the registered email with a confirmation link. You must verify the security
code that matches the one in the email.
Click Verify Registration. Confirm the registration and go back to your server.
Your workspace is ready. Click Go to your workspace to access it.

To continue as a Standalone Server,

Click Continue as standalone.


Then click Confirm. Your workspace is now ready for use.
BANKTEXT Voice Channel

Omnichannel means fulfilling customers’ needs at every touchpoint and providing the same functionality
and experience across channels, no matter how a customer chooses to interact. The Voice channel is the
most crucial touchpoint because it is the human connection people crave. A standalone telephony solution
creates data silos with disconnected insights into customer interactions and agent performance across
channels.

To fulfill this gap and avoid fragmented experiences for agents and customers, BANKTEXT offers a voice
channel feature set. It is a key part of our Omnichannel contact center because we know your customers
expect to be able to get through to your live agent on the phone when they need to. It helps you get the most
out of your in-house or remote back-office teams and deliver the experience that meets your customers'
expectations.

In the following articles, we help you onboard and start using BANKTEXT's voice channel as an
extension to our Omnichannel feature set, with outstanding customer experience.

Features

Inbound Calls

Inbound Calls are great for having local visibility in various markets around the world. These calls
allow you to receive calls on your business platform initiated by your customers using their mobile
or landline phones.

Outbound Calls

With outbound calls, you can initiate calls toward your customers.

Key capabilities of the Voice Channel


Feature Community Edition Enterprise Edition

Inbound calls ✓ ✓

Call history ✓ ✓

In-App SIP extension


✓ ✓
management

Call mute ✓ ✓

Outbound calls x ✓

Calls on hold x ✓

Call Dialer x ✓

Call notes x ✓

Device selection x ✓

Call transfer x Coming soon

VoIP on mobile x Coming soon

Voicemail x Coming soon

To configure Voice Channel on your BANKTEXT workspace, follow the administration guide. If you have
it configured already, follow the agent's guide to start using it.
Getting Started with Voice Channel

To use any BANKTEXT products, you need to sign up for an Enterprise Edition free trial or have
BANKTEXT community version deployed. If you already have an account and our other solutions, please
proceed.

Requirements:
Asterisk 16.19.0 or higher (We used FreePBX 16.0.10.40 with Asterisk 18.6.0)
Valid SSL certificate (valid domain)
You need BANKTEXT version 5.0.0 or higher.

Please note that:

A private branch exchange (PBX) is a telephone system within an enterprise that switches calls
between users on local lines while enabling all users to share a certain number of external phone lines.
Asterisk is an open-source software implementation of a PBX.
FreePBX is a web-based open-source GUI (graphical user interface) that controls and manages
Asterisk (PBX).

To set up a voice channel, you have two paths:

1. Configure without previously having a PBX server


2. Configure with an active PBX server

Further Information:

Technical Specification
Admin Guides
Agent Guides
Voice Channel Admin Guide

This section explains various voice channel components and settings on the admin’s console.

Configure without previously having a PBX server

Configure with an active PBX server


Configure without previously having a PBX
server

PBX is a piece of architecture that forwards incoming calls to BANKTEXT from telephony service providers.
We are using it for call bookkeeping data like how many queues there are, extension data, agents allocated
to a queue, routing system, and others.

For the purpose of this guide, we are using FreePBX as our call management server. You can use any
Asterisk distro of your choice.

Requirements:
Asterisk 16.19.0 or higher (We used FreePBX 16.0.10.40 with Asterisk 18.6.0)
Valid SSL certificate (valid domain)
You need BANKTEXT version 5.0.0 or higher.

1. Prepare FreePBX

Install your FreePBX server, as usual (that’s out of the scope of this tutorial), and update it using your OS
package manager. In such a case, it’s:

yum update -y

Enter your server web interface http://your.domain.name and set the password and update
settings, and do the activation process. Do not skip the activation process, as you’ll need some features later
that are only available if you activate your server instance. Complete the firewall basic configuration.

2. Configure the FreePBX firewall


Now you need to prepare the FreePBX firewall to accept AMI (Asterisk Manager Interface) and WSS
(WebSocket Secure).

2.1 Configure custom services AMI and WSS

Navigate to Connectivity > Firewall > Services > Enable Firewall. Under the Services tab, search for
WebRTC and mark Internet and Other options, Local is active by default.
Firewall - services

We want WebRTC in the Internet zone because the Webphone will connect from the client’s IP address,
which could be anywhere.

Navigate to the Custom Services tab and hit the Create new service, name the service AMI, select TCP,
and write the port range 5038:5039. Click Save.

Create new service

Mark the Other option and Save.

AMI goes in the “Other” zone because only some specific endpoints should be connecting to AMI.
AMI service

2.2 Whitelist BANKTEXT

Now you don’t want your BANKTEXT to get banned by the FreePBX firewall so you have to add it to the
Whitelist List. First, you need to know the IP or IP Networks from your BANKTEXT instance. When you have
a SaaS BANKTEXT instance you will have a URL (subdomain) like MyChosenName.BANKTEXT, so just
ping it. In this demo:

BANKTEXT will be connecting from the whole network 51.81.0.0/16


If you have your own BANKTEXT instance self-hosted or similar, you should know what’s your IP address
or network.

Now, navigate to Connectivity > Firewall > Networks, and add the IP address needed or Network. Select
the Other zone and Save:
Network definitions

BANKTEXT will be in the Other zone.

3. Configure SSL

We used Letsencrypt for this demo.

This will only work if you have your FreePBX already activated.

Navigate to Admin > Port Management. Change the Admin (web portal) to another port and set
Letsencrypt to port 80. Click Update Now.
Port management

Please note that until here, you have been accessing the server by HTTP (not HTTPS) on port 80. Until you
finish the SSL configuration, you are going to be using the newly selected port, 8080, in this demo.

Now navigate to Admin > Certificate Management, and click on New Certificate > Generate Let’s
Encrypt Certificate:

Certificate management

Fill out the form according to your settings and click Generate Certificate:
Generate certificate

Once it’s generated, mark it as the system’s default:

Default certificate

Now you can start using it. Go to the Admin > System Admin > HTTPS Setup and then to the Settings tab.
Here select the certificate that was just generated and click on Install, wait, then select the Protocols TLS
1.2 and 1.3 as others are considered deprecated or insecure:
HTTPS setup

Finally, click on Save and Restart Apache (A server restart is suggested here). Test in incognito that the
changes are applied and the certificate is recognized as valid.

Additionally, you can go back to the Admin > System Admin > Port Management to enforce HTTPS,
select your FQDN and select the force (arrow) button from HTTP (8080) to HTTPS (443), then click hit Save:

Test it. Congratulations! you have an HTTPS-valid SSL FreePBX server up and running.

4. Configure Asterisk to use PJSIP as the main (or only) SIP channel

We are using chan_pjsip as the only SIP driver. Go to Settings > Advanced Settings, search for SIP
Channel Driver, and choose chan_pjsip. Hit Submit.
PJSIP

5. Configure Asterisk HTTP/WebSocket features

Using the article Configuring Asterisk for WebRTC Clients 1 in Asterisk’s Wiki, we are going only for the
principal parameters if you need more details, the article is a great guide.\

5.1 Enable Asterisk’s WebSocket and mini-HTTP

First, check that you have the needed modules loaded using the command module show like
<module_name>

Modules

We are reusing the Let’s Encrypt certificates for the Asterisk mini-HTTP server, WebSockets, TLS
encryption, and others. Start by going to Settings > Advanced Settings (again), search for the Asterisk
Builtin mini-HTTP server section and, configure as shown, apply changes. Asterisk restart is also
recommended here:
Asterisk Builtin mini-HTTP server

Using the command http show status verify that both HTTP and HTTPS are up and running:

HTTP and HTTPS status

If HTTP does but HTTPS doesn’t check that Asterisk can read the certificate and private key files:
Add capture of file reading error.

5.2 Enable the WS and WSS SIP transports

Navigate to Settings > Asterisk SIP Settings. In the General SIP Settings tab configure your audio
codecs, enable video, and select video codecs (vp8 and vp9 needed for WebRTC), NAT, etc. Then in the
SIP Settings (chan_pjsip) tab, choose your valid SSL certificate for TLS/SSL/SRTP and enable all the
desired transports, especially WS and WSS:
SIP transports

Click submit and apply changes (an Asterisk restart is recommended)

5.3 Test Asterisk HTTP mini-server

Navigate to https://mysub.domainname.domain:8089/httpstatus and verify that it loads, SSL


Port is present, and the SSL certificate is valid:

Asterisk status

Congratulations! You have a valid SSL Asterisk WebRTC-ready server up and running.
SIP Extensions

Now that you have your Asterisk server up and running let's create some WebRTC-ready PJSIP extensions
and configure them.
To create an extension:

Navigate to Applications > Extensions, and click the Advanced tab. Configure as follows:

SIP Extension

You can install the FOP2 and FOP2ś WebRTC webphone plugins in your FreePBX server, if the
plugin works, your WebRTC configuration is complete and working. Is not complicated, and it
could help you to diagnose any issue, but it’s out of the scope of this tutorial.
Configure asterisk manager interface and users

Lastly, BANKTEXT needs an AMI connection to be able to read your Asterisk configuration and connect
extensions to RC users.

So, navigate to the Settings > Asterisk Manager Users menu. Here you can create a user to be used by
BANKTEXT and limit the access of this user only to the IP address or network where your BANKTEXT is.

Asterisk manager

You can now proceed to BANKTEXT and start configuring the voice channel there.
Configure with an active PBX server

If you have:

1. An active PBX server


2. SIP extensions created
3. Asterisk manager configured
4. And Omnichannel activated

You can start to configure the voice channel BANKTEXT workspace.

1. Enable Voice Channel

1. Navigate to Administration > Workspace > Settings > Voice Channel


2. Enable voice channel, as shown below:

Voice channel

BANKTEXT establishes two connections with Asterisk, one via AMI to read configuration and list
extensions, queues, and some other things, and the second one is the WebRTC SIP registration.

2. Configure AMI connection

Go to the menu Avatar Menu > Administration - Settings - Voice Channel, and in the Management
Server section under the Settings tab, fill the form with the FQDN of your server and the user/password that
gotten as shown here or it should be provided to you by your Asterisk manager.
AMI connection

2.1 Test AMI Connection

To test AMI connection, turn to the Extensions tab. Here you should see a list of the existing extensions in
Asterisk:

Extensions

Also enabling the AMI debug you may see connections coming and the RC AMI user connected:

manager set debug on


manager show connected
BANKTEXT connected to the Asterisk’s AMI

If you see it, your BANKTEXT is connected to Asterisk’s AMI.

3. Configure WebSocket Server Connection


BANKTEXT needs a WebSocket connection to forward calls from Asterisk to BANKTEXT.

The parameters for a FreePBX connection are:


Websocket connection

Change them according to your Asterisk server conditions. Then in the Settings tab, assign at least one
extension to a BANKTEXT user. When that user logs in to BANKTEXT the webphone will try to connect to
Asterisk.

3.1 Test WebSocket Connection

To test the WebSocket Connection, you just need to log in with a user associated with an extension and
check if the extension registers successfully.

WebSocket not connected

The phone icon with a slash over means that the WebSocket connection is possible, BANKTEXT could
send a SIP Options packet to Asterisk, and it was successfully answered. Click on the phone icon, and it will
turn green. Now the user is ready to receive calls, and in Asterisk, you should have received a SIP register
packet, and the extension should be properly registered. Validate it with:
pjsip show endpoints

BANKTEXT configured with Asterisk

Congratulations! You have successfully configured BANKTEXT with Asterisk!

The next step now is to associate your BANKTEXT agents with Asterisk extensions.
Associate agents with extensions in BANKTEXT

As a BANKTEXT administrator, you can associate one agent with one extension. This extension can be part
of multiple queues.

An extension is simply a named set of actions in Asterisk. Asterisk will perform each action in
sequence when that extension number is dialed.

Extensions in Asterisk are assigned to queues. The extensions and queues are both created and managed
in Asterisk by the Asterisk manager. An agent needs to associate with one of these extensions to be able to
take calls in a queue. You, as a BANKTEXT admin can take one of these extensions and associate it with
an agent.

Both extensions and queues are managed in Asterisk by the Asterisk manager.

To associate and an agent to an extension:

Go to Administration > Workspace > Settings > Voice Channel > Extension tab
Click Associate Agent
Select the agent name and associate it with a free extension, as shown below:
Agent to extension association

Following are some essential points to know:

An extension becomes unavailable after it has been associated with an agent.


An extension can be associated with multiple queues.

Extensions and agents have a one-to-one relationship.


Extension and queue have a one-to-many relationship.

Once this call center agent makes themselves available for VoIP, the incoming calls in that queue will be
forwarded to them based on the routing system configured in Asterisk.

Please note that to reduce the scope of this project, the only available administration feature is
the ability to connect BANKTEXT Agent with the existing Asterisk extensions. In future releases,
you'll be able to create new extensions and queues from BANKTEXT, and many other cool
administration capabilities will roll out.

Now your agents can start using voice-as-channel on BANKTEXT.


Voice Channel Technical Specification

VoIP is the technology behind BANKTEXT voice-as-channel feature.

What is VoIP?

Voice over Internet Protocol refers to the standards that facilitate voice-based phone calls using an
internet connection instead of a local telephone company.
Through VoIP technologies, BANKTEXT is able to incorporate telephony-based communication protocols
into its applications, promoting the transition between analog and digital technologies.

How does VoIP work?

Voice over IP converts your voice into a digital signal, compresses it, and sends it over the internet. A VoIP
service provider sets up the call between all participants. The digital data is then uncompressed into the
sound that you hear through your handset on the receiving end.

Why is VoIP Important for the Omnichannel environment?

In a contact center environment, Voice is an essential and influential channel. Agents using an omnichannel
stack should be able to make audio/video calls to external PSTN networks, cellphone networks, and VoIP
endpoints supporting SIP protocol.

Once BANKTEXT voice-as-channel or VoIP is in place; our Enterprise Edition provides many call center
features.

BANKTEXT VoIP architecture


Here we try to describe in detail the technical and architectural aspects of bringing in a telephony protocol
“SIP” on the client side in order to enable Voice calls on the platform. We also describe Automatic Call
Distribution, by which the calls will be distributed to different agents.

In a contact center environment, voice is an essential and powerful channel. Agents using Omnichannel
should be able to make and receive audio/video calls from external PSTN networks, cellphone networks,
and VoIP endpoints supporting SIP protocol.

SIP is an application protocol used to carry all forms of digital media, including voice messages—
so SIP is a specific technology that supports VoIP calls.

Web clients are built using browser-based WebRTC technology. This technology does not enforce any
signaling protocol. SIP is chosen for the signaling because there are existing systems that support WebRTC
over SIP, and hence there is no need to define any custom signaling protocol. Also, enabling SIP on the
agent side would allow us to connect to enterprise telephony infrastructure.
Asterisk is the first PBX provider implemented. We have plans to add new providers as we go.

Architecture

The agent connects to Opensource SIP PBX Asterisk. Using the agent configuration, an agent
registers to the partner’s/customer’s SIP Server. Agent endpoint operates as any SIP endpoint and is
able to receive or make a call via customer PBX.
To achieve this, there is an association made between the BANKTEXT agent and the SIP identity.

ACD (Automatic Call Distribution) queues, wait-treatment, etc, are managed by the customer’s/Partner’s
PBX. Reaching out to external networks (PSTN/Mobile Network/Another SIP Server, is handled at the
customer’s/Partner’s PBX.

VoIP Architecture

ACD Queues:

When Omnichannel endpoints log in as SIP agents, the problem of call distribution has to be handled. You
can not expect the customer to know the agent’s identity. If they happen to know the agent's identity, there is
a possibility of multiple customers trying to reach the same agent. This can increase the abandonment rate
(As a particular agent will remain busy serving). Which can reduce the overall effectiveness of the agents in
the organization (As some agents will always be busy, and some will be relatively free). This overwhelms
the agents because of the activity on their console. A typical call center solves this problem by using ACD
(Automatic Call Distribution queues).

Agents are partitioned into different queues on the PBX. These queues represent different departments in
the organization. The customer does not dial the agent’s number. They dial the ACD number, and ACD
forwards the call to the available agent based on the algorithm being used.

PBX Connectors:
Admins and managers use BANKTEXT's UI to configure and monitor the customer-managed PBX. To
receive real-time PBX events, BANKTEXT’s backend has to connect to the PBX manager interface. The
customer is responsible for creating the configuration on PBX so that the management APIs/interface is
accessible from BANKTEXT’s backend.

Connector Architecture
Voice Channel Agent Guides

This section explains various voice channel components on the agent’s console.
How to make myself available to accept calls?

To make yourself available for accepting call center calls:

Click the phone button on your BANKTEXT home screen, as shown below:

Make yourself available to take calls

An incoming call will now be forwarded to you according to the queue and the routing system being used.
How to take a call in BANKTEXT voice channel?

After you make yourself available to receive/make calls, you can start taking inbound calls.

Call Operations

Call In Progress

Click the Accept button to accept the call. The ongoing call appears as shown below:

Ongoing call

Please note that messages are not available on a phone call room.

Mute/Unmute Call

You have controls to mute/unmute calls.


Mute/Unmute

Hold/Unhold

If you're using BANKTEXT's enterprise edition you can hold and unhold acording to your workflow needs.

Hold/Unhold

Device Settings

Enterprise edition also offers you the flexibilty to switch device during an ongoing call.
Device settings

Call Wrap-up

After the call ends you can leave your notes in the call wrap-up. It is an enterprise-only feature.

Call wrap-up
How to initiate an outbound call as an agent?

After you make yourself available to receive/make calls, you can start making outbound calls.

To make an outbound call, you can either dial from the dial pad or navigate to the contact center and call a
contact from there.

Initiating a call from the dialpad


Initiating a call from the Contact Center
Voice Channel FAQs

What are the prerequisites for using voice-as-channel on BANKTEXT?

For using VoIP on your BANKTEXT instance you need:

WebRTC-based browser (Chrome/FF/Safari/Chromium-based edge)


A PBX server (We used Asterisk Version 16.19.0 (With PJSIP stack))
SIP trunk provider.

Does BANKTEXT host a PBX server?

No. BANKTEXT does not host any PBX server. It's up to you to get your own PBX server.

What call plans does BANKTEXT provide?

BANKTEXT does not provide any call plans. You have to get them from your PBX provider.
BANKTEXT Conference Call

When it comes to conference calling BANKTEXT supports multiple feature-rich options. BANKTEXT's
conference call allows you to use the following video conferencing platforms, available as apps on our
marketplace.

Pexip
Jitsi
BigBlueButton (BBB)
Google Meet

To configure conference calls on your BANKTEXT workspace, visit the administration guide. If you have it
configured already, follow the user's guide to start using it.

BANKTEXT Edition Specific Conference Call Features

Feature Community Edition Enterprise Edition Mobile

Create calls ✓ ✓ ✓

List in the channel


users who joined a x ✓ x
call

Contextual bar
containing call x ✓ x
history

Options to start with


✓ ✓ ✓
camera and mic off

Mark calls as ended


✓ ✓ ✓
after 24 hours

Ring users before


x ✓ x
starting a call

Disable call button in


x ✓ x
the workspace

Provider-Specific Conference Call Features


Google Meet
Feature Pexip (EE) Jitsi BBB
(EE)

Start calls from


✓ ✓ ✓ ✓
BANKTEXT

Identify
moderator ✓ ✓ ✓ x
automatically

Control
microphone
x ✓ x x
from
BANKTEXT

Control camera
from x ✓ x x
BANKTEXT

Load user
names from x ✓ ✓ x
BANKTEXT

Load user
avatars from x ✓ ✓ x
BANKTEXT

End calls
x x ✓ x
automatically
Conference Call Admin Guide
Guide for BANKTEXT administrators to configure video conference

To configure conference calls on your BANKTEXT workspace,

Navigate to Administration > Workspace > Settings > Conference Call


Select Default Provider

The default provider options will be empty if you have not set up any conference call apps from
the marketplace.

Pexip app (Enterprise only): Learn to configure conference calls with the Pexip app in BANKTEXT.

Jitsi app: Configure conference calls with the Jitsi app in BANKTEXT.

BigBlueButton (BBB): Understand how to configure conference calls with the BigBlueButton app in
BANKTEXT.

Google Meet app (Enterprise only): Configure conference calls with the Google Meet app in BANKTEXT.
Pexip app
Enterprise only feature

This app can also work in a fully air-gapped environment. If you are an Enterprise customer
running an air-gapped workspace, follow the Air-gapped App installation guide and continue with
the configuration instructions below.

Pexip is a purpose-built video communication platform that empowers large organizations to transform their
operations with video conferencing. Pexip’s unique technology provides a customized solution for an
innovative and fully bespoke application of video, data privacy, and business continuity for secure spaces
and frictionless collaboration for connected spaces.

The integration between BANKTEXT and Pexip, a video conferencing communication platform, enables
secure and compliant communication that is ideal for organizations operating within strict regulatory
requirements for internal and external communications, such as government, financial services, healthcare,
and others.

Architecture
This integration is made possible by connecting BANKTEXT with Pexip infinity through its external policy
API. The BANKTEXT Pexip App acts as a relay between the two platforms. BANKTEXT users initiate a
video call to a Pexip conferencing node and trigger an external policy request to Pexip. The policy server
creates a single-use Virtual Meeting Room (VMR) and responds with the meeting parameters. This VMR is
made available in the BANKTEXT room for its duration.

Ensure that the BANKTEXT external policy server can connect to the Pexip Infinity Conferencing
Nodes over HTTPS on port 443.
BANKTEXT Pexip Architecture

Setup
For a complete setup, here are some requirements you need:

A BANKTEXT workspace with Enterprise license.


A Pexip infinity server deployed with:
Valid certificates and intermediate certificates.
A suitable network routing between BANKTEXT and Pexip Infinity
Only one location for each BANKTEXT workspace, but that location can contain multiple
Conferencing Nodes.

Download the Pexip app

To Download the Pexip app,

Go to Administration > Apps > Marketplace.


Search for the Pexip app.
Click Install and accept the needed permissions.

App Configuration

To set up the Pexip app on your BANKTEXT workspace,


Confirm that the app is enabled.

Configure the Pexip server with a remote policy to make service configuration requests before
connecting with BANKTEXT.
On the Pexip App Info screen, navigate to Details.

Copy the policy server URL (GET policy/v1/service/configuration) and update the Pexip settings.
Copy the POST events URL and add it to the Events Sink on your Pexip server.

The events sink informs the workspace when a call on Pexip Infinity has ended. This way, the call
message block on your workspace is updated with the appropriate call status.

On the Pexip App Info screen, navigate to Settings. Update the Base URL with the URL of your
running Pexip server.
Click Save Changes.

Configure conference call using the Pexip app

To configure the Pexip video conference on your workspace,

Go to Administration > Settings > Conference Call.


Select Pexip as your Default Provider
Select the options that meet your needs and click Save Changes.

The Pexip app is successfully configured on your server. Follow the conference call user's guide to start
using it.

Using the Pexip app

After successfully installing and configuring the Pexip app, you can initiate a secure Pexip call inside any
BANKTEXT room by using the slash command /pexip or the call icon in the room header.

When you use the /pexip command, a new Pexip Virtual Meeting Room(VMR) is created, and a link is
made available in the room for users to use and Join call. When you click the call icon in any BANKTEXT
room hit Start call. It rings and notifies users in that room to Accept or Reject the call. On joining the call,
they are prompted to provide their details and grant permission for Camera and Microphone usage. The list
of users joining the VMR can also be seen within the BANKTEXT room.
Jitsi app

This app can also work in a fully air-gapped environment. If you are an Enterprise customer
running an air-gapped workspace, follow the Air-gapped App installation guide and continue with
the configuration instructions below.

Jitsi is a collection of open Source projects which provide state-of-the-art video conferencing capabilities
that are secure, easy to use, and easy to self-host. The Jitsi Meet project (Jitsi Video Bridge) is a tried and
true bandwidth-efficient WebRTC-compatible SFU (server-based) solution from our gracious FOSS partner,
Jitsi. BANKTEXT users can now enjoy reliable and robust group video, audio, and screen-sharing
experiences through Jitsi.

Download the Jitsi app

A Jitsi server is required for this integration.

To Download the Jitsi app on your workspace,

Go to Administration > Apps > Marketplace.


Search for the Jitsi Video Conference Provider app.
Click Install

Set up the Jitsi app


To set up the Jitsi app on your workspace,
Confirm that the app is enabled.
Go to the settings tab and update the following fields:
Domain: Your Jitsi domain
Title prefix: Text added before the title when identifying a video conference
Title suffix: Your room suffix
Use SSL: Your Jitsi SSL

Chrome Extension Id: Your Jitsi chrome extension Id


Use Authentication Token: When enabled, BANKTEXT will generate a JWT token using the
settings below.
Application ID (iss): The app id to use when generating authentication tokens.
Application Secret: The app secret to use when generating authentication tokens.

Limit token to Jitsi Room: If enabled, generated tokens will grant access only to the intended Jitsi
room.

Token Auditor: The auditor's name to use when generating authentication tokens.
Token Expiration: The expiring time of the authentication tokens.
Click Save Changes

Configure conference call using the Jitsi app

To configure the Jitsi video conference on your workspace,

Go to Administration > Settings > Conference Call


Select Jitsi as your Default Provider
Select the options that meet your needs and click Save changes.

The Jitsi app is successfully configured on your server. Follow Conference Call User's Guide to start
using it.
BigBlueButton (BBB) app

BigBlueButton is an open-source web collaboration software utilized by education organizations for e-


learning and training. According to user needs, the software provides a wide range of customization and
integration options. BigBlueButton enables users to conduct web-conferencing and share documents,
audio, and video files for online learning. The software’s “whiteboard” feature allows presenters to mark
valuable topics in the presentation. In addition, its “polling” feature engages learners and helps the presenter
to receive feedback. BigBlueButton’s “desktop sharing” feature extends beyond slides and allows
moderators to share their screens with the audience enabling a better understanding of topics.

Download BigBlueButton app

A BigBlueButton server is required for this integration.

To download the BigBlueButton app,

Go to Administration > Apps > Marketplace.


Search for the BigBlueButton app.
Click Install

Set up the BBB app


To set up the BBB app on your workspace,

Confirm that the app is enabled.

Run sudo bbb-conf --secret on the BBB server. It gives you a URL and a Secret. See BBB's
documentation.
Use this URL and Secret in the Settings tab of the app to connect to BBB
Click Save Changes

Configure conference call using the BBB app


To configure the BBB video conference on your workspace,

Go to Administration > Settings > Conference Call

Select BigBlueButton as your Default Provider


Select the options that meet your needs and click Save changes.

The BigBlueButton app is successfully configured on your server. Follow Conference Call User's Guide
to start using it.
Google Meet app
Enterprise only feature

The app is currently in Beta, and some features may not function as expected.

Download the Google Meet app


To download the BigBlueButton app,

Go to Administration > Apps > Marketplace.

Search for the Google Meet app.


Click Install.
Confirm that the app is enabled.

Configure conference call using Google Meet


To configure the Google Meet video conference on your workspace,

Go to Administration > Settings > Conference Call


Select GoogleMeet as your Default Provider
Select the options that meet your needs and click Save changes.

The Google Meet app is successfully configured on your server. Follow Conference Call User's Guide
to start using it.
Conference Call User's Guide

Contact your workspace administrator or follow Conference Call Admin Guide to configure
conference calls in your workspace.

In BANKTEXT, you can initiate video and audio conferences using your desired provider in any room.

Initiating a call - Direct Message

To start a call in Direct Message,

Click on the phone icon from the room's header. You may have pre-flight options like turning on/off
the camera or microphone. However, these options depend on the conference call provider you have
selected.

Click the call button. The pop-up changes to the “calling state”. Now, you can perform other actions
while you wait for the receiver to answer. The ringer stays active for 30 seconds. After that Call again
button appears in the room.

Incoming direct call

Three things happen once you receive a call:

A pop-up appears wherever you are in the BANKTEXT application.


The incoming call ringer starts to ring.

An incoming call item will be highlighted in the left sidebar.

These options are available when you have an incoming call:

Accept and join the call room.

Decline and give the other user feedback through the chat.
Dismiss and silently ignore the call.

Start a call - Room


You can also start a call in other rooms like Team, Channel, Discussion, and Multiple Direct Messages.
To start a call in a room,

Click on the phone icon from the room's header. You may have pre-flight options like turning on/off
the camera or microphone. However, these options depend on the conference call provider you have
selected.

Click the call button. A message is sent in the room, where all participants in the call are shown as
thumbnails.

The ringing feature is unavailable in any room except Direct Messages(DMs).

Conference logs
After a conference call is ended, the room keeps a record of the following:

The user who initiated it


The start time
The name of the conference
The attendees
Omnichannel Video/Audio Call Configuration

To set Omnichannel call provider,

Go to Administration > Workspace > Settings > Omnichannel > Video and Audio Call > Call
Provider.
Select Default Provider. It uses the default provider that you set when configuring conference calls.

To learn how to use conference calls as an Omnichannel agent visit here.


BANKTEXT Federation

Federation allows for unlimited communication between workspaces by making them visible to each other
on the federated network.

BANKTEXT uses the Matrix communication protocol for decentralized and interoperable communications.
Organizations can easily connect and collaborate with external parties using any federated BANKTEXT
workspace or Matrix-compatible platform by bridging BANKTEXT through Matrix.

To enable and set up Federation on your workspace,

Go to Administration > Workspace > Settings > Federation.


Setup and Configure federation with Matrix with this guide.

BANKTEXT basic federation is deprecated from version 6.0. Thus, we strongly

recommend using Matrix Bridge .

Matrix Bridge

Features
The BANKTEXT Federation implementation currently supports the following features on Community(CE)
and Enterprise(EE) editions:
Feature CE/EE EE Only

Create federated channels,


groups, DMs, and multi-user
DMs from the UI.
Create federated rooms

Invite external users to federated


channels, groups, DMs, and
multi-user DMs from the UI.
Invite external users to
your BANKTEXT server

Search public rooms in the


Matrix Network.

Invite multiple users to multi-user


DMs using slash commands.

Invite an external user to DMs


using slash commands.

Send/Receive attachments
(Files, audio, and video
messages)

Edit, Delete and Qoute


messages.

Message reactions and sending


emojis.

Mention internal and external


users in federated channels.

User's avatar synchronization.

User's typing indicator (More


Info)

Define permissions for users


inside rooms (More info) .

Support for Markdown spec.

Servers allow list/block list (More


info).
BANKTEXT Mobile
Accessing BANKTEXT through the mobile apps.

Installing BANKTEXT Mobile


You can download the BANKTEXT mobile app on Google Play for Android devices and App Store for iOS
devices.

Sign Up for BANKTEXT


To create a BANKTEXT account, you must join a workspace.

Launch the BANKTEXT app on your mobile device.


Enter your workspace URL. If you don't have one, you can join our community workspace.
Click Create an account. Sign up with any available third-party authentication providers like Google or
submit a name, username, email, and password.
A confirmation email is sent to your email. Click Login or access the URL of your provided workspace to
log in.

Login to BANKTEXT
To log in to BANKTEXT mobile app,

Launch the BANKTEXT app on your mobile device.


Enter your workspace URL. Click Login.
If you created an account with a third-party authentication app like Google, choose the respective option
or provide a username/email, and password combination to log in.
You will be prompted to input your email and check your mailbox to verify if you have not verified your
email.
After verification, you are taken to your workspace's homepage upon successful login.

Exploring your Workspace


The homepage of your workspace has a navigation menu, toolbar, and main body, allowing you to
perform different actions.

Navigation Menu

The navigation menu at the top displays your profile avatar, name, and workspace name. Additionally, it
includes these five action items:
Edit Status: It is used to set a custom status.
Chats: It displays the rooms you belong to, enabling you to select any and start a conversation.

Profile: It takes you to the screen for managing your profile.

Display: It takes you to the display settings screen to choose between expanded or condensed
messages, the sort order, and the grouping order of your rooms.
Settings: It takes you to the app settings screen, such as language, default browser, and theme.

Toolbar

The toolbar (action bar) has three action icons.

Create New: It is used to create new rooms.

Search: It searches your whole workspace for rooms and users.

Directory: It is used to browse between all the channels, teams, and users in the workspace.

Main Body

Your workspace's main body includes all the rooms you belong to. You can tap a room from the list to start a
conversation or follow up on an existing conversation.

Settings
BANKTEXT mobile app allows you to configure different app features such as language, theme, and more
in the settings screen.
Contact Us: Email BANKTEXT support team for your worries or inquiries. It redirects you to your default
email client.
Language: Set your preferred language from a range of BANKTEXT supported languages.
Review this app: Review BANKTEXT on either Google Play Store or Apple App Store. Depending
device's operating system, you are taken to the respective store.

Share this app: Share the BANKTEXT app link from the store to others so they can visit the link to
install the mobile app.
Default browser: Select the browser where links in BANKTEXT should be opened by default. You also
have an in-app browser option.
Theme: Choose between using your device's default or a light or dark theme.
Security and Privacy: Modify security and privacy settings. You can reset your end-to-end encryption
key, set a screen lock for devices that support biometrics, log analytics events, and send crash reports to
our backend. Crash reports help us track and solve bugs.
License: Open and read BANKTEXT mobile's MIT License.
Version: Display the version of BANKTEXT mobile app that you are using.
Server version: Returns information about the current BANKTEXT server version of your workspace.

Clear local server cache: Delete cached information from your workspace.
Logout: Logout from your workspace.

Creating a Workspace
To create a new workspace,

Click the title of your current workspace


Click Create a new workspace.
You are redirected to **** BANKTEXT Cloud.
Follow Create your new cloud account to create a new workspace.

Adding a Workspace
To add a workspace that you are already part of,

Click the title of your current workspace.


Click Add Server.
Enter workspace URL

Click Connect to log in to the workspace.


Rooms on BANKTEXT Mobile
How to create different types of rooms from BANKTEXT Mobile app.

Channel

To create a Channel on BANKTEXT mobile app,

Click Create New icon on the navigation menu.


Click Channel.
Search and select the users you want to add to the team.
Give the channel a name and choose if the channel is public or private.
Update your preferred privacy and encryption settings for the channel.
Click Create Channel.

Team

To create a Team on BANKTEXT mobile app,

Click Create New icon on the navigation menu.


Click Team.
Search and select the users you want to add to the team.

Give the team a name and choose if the team is public or private.
Update your preferred privacy and encryption settings for the channel.
Click Create Team.

Direct Message

To create a Direct Message on BANKTEXT mobile app,

Click Create New icon on the navigation menu.


Click Direct Message.
Search and select the users you want to start a Direct Message with.
Click Create.

Discussion

To create a Discussion on BANKTEXT mobile app,


Click Create New icon on the navigation menu.

Select the name of the parent channel or group of the discussion.


Add the name of the Discussion.
Search and select the users you want to add to the discussion.
Click Create.
Messages and Threads on Mobile

Messaging
BANKTEXT has different types of messages you can send in a room.

Text: In a room, type your message in the New Message input box and click Send.

Photos and Videos: To use your camera, click the +plus icon in the room and select Take a photo or
Take a video. After taking the photo or video, click use photo or use video to send them to the chat.
For photos, you can edit the picture you took before sending it.
Gallery: To send a video or image from your device, click the +plus icon in the room and select Choose
from Library. Select the video or image. Then, click Send. You can add a message before sending it.
Files: To send videos, photos, and any other type of file, click the +plus icon in the room and select
Choose file. Select the file and attach any message you want to it. Then, click Send.

Threads
To create a thread,

Long-press the message you'd like to reply to.


Select Reply in thread.
Type your reply. Check the Also send to the channel box below your message if you want to return
your response to the channel.
Click Send.
Push Notifications

There are two ways to set up push notifications with BANKTEXT:

Push Gateway
Self Configured

Push Gateway
Select this option if you and your users intend to use the official BANKTEXT mobile applications. We set up
a push gateway holding our keys to enable push alerts to be received on our official mobile application by
any server. Doing this safeguards the secret keys required to transmit notifications to you and your users via
Apple(APN) and Google (FCM) systems.

Self Configured
When you self-configure the push notifications, things become more complicated. First, you need to get keys
from both Apple and Google and compile/release your mobile applications to the app stores so your public
keys will be distributed to your users. You will also need to add your keys to BANKTEXT.

Then, compile them for iOS and Android and submit them to the appropriate app stores for review. Finally,
direct your users to download your custom version of the BANKTEXT mobile applications.

Configuring for Android

The BANKTEXT native application for Android supports the FCM system. You can configure it with the
following steps:
Create a Firebase project in the Firebase console if you don't already have one. Click Add project. If you
already have a Google project associated with your mobile app, select it from the Project name drop-
down menu. Otherwise, enter a project name to create a new project.
(Optional) Edit your Project ID. Your project automatically receives a unique ID used in publicly visible
Firebase features such as database URLs and your Firebase Hosting subdomain. You can change it
now if you want to use a specific subdomain.
Complete the setup steps and click Create a project (or Add Firebase if you're using an existing project)
to begin provisioning resources for your project. This typically takes a few minutes. When the process
completes, the project overview is displayed.
Now that you have a project, you can add your Android app. Click Add Firebase to your Android app
and follow the setup steps. If you're importing an existing Google project, this may happen automatically,
and you can download the config file.
When prompted, enter your app's package name. It's essential to enter your app's package name; this
can only be set when you add an app to your Firebase project.
During the process, you'll download a google-services.json file. You can download this file
again at any time.

After you add the initialization code, run your app to send verification to the Firebase console that you've
successfully installed Firebase.

Configuring for iOS

For iOS, you need a paid apple developer account. Then, follow the steps outlined in the iOS setup guide.

You can find more information on push notifications configuration here.

Configuring BANKTEXT

Go to Administration. Then click Push.


Set the Enable Gateway to False, and plug the information from Apple and Google.
Restart the server.

Now you should be able to send a text message. Ensure you have logged in to the server once and then
closed the app. You should see a test notification after you press the send button.
Here are some important points to consider when configuring mobile push notifications
If you don't want notifications, you can disable the gateway and not provide keys.
You cannot compile your applications and use the BANKTEXT push gateway.
For iOS, you need to convert both the .cer and .p12 files into .pem files.
Once everything is configured on the admin settings, the server must be restarted.

FAQ

I am getting, "Server notifications are misconfigured!"

If you are getting this message and are using our push gateway, please make sure:

Your server version is greater or equal to 0.74.3.


Your server is registered. (you can check this by going to
http://yourserver/admin/cloud )
Secured Push Notification

If you are using the Enterprise edition, the Secured Push Notification sends the ID of the message rather
than the entire message through a push gateway (Apple or Google). Once the ID reaches the user’s device,
the message is retrieved from BANKTEXT server and the notification is created.

This process works for both situations if the user uses BANKTEXT’s push gateway or his own.

Privacy
You can enable and configure push notifications for workspace members using mobile devices.

Show Channel/Group/Username in Notification

The default is TRUE. Disabling this setting prevents the Channel, Group, Discussion, and Username from
being sent to the push notification gateway.

Show Message in Notification

The default is TRUE. Disabling this setting prevents the message content from being sent to the push
notification gateway.

If the above privacy settings are disabled, the user receives a push notification without contextual
information, as no such contextual information is sent to the push notification gateway in the first place.
Then, the user can access the contextual information by opening the BANKTEXT application. It is helpful in
compliance-sensitive requirements like HIPAA to prevent sensitive information from being disclosed via
push notification.

Fetch full message content from the server on the receipt

If this setting is enabled, the notification payload sent through the Apple Push Notification service or
Firebase Cloud Messaging service contains no message content. Instead, it has only the message ID,
which the mobile app uses to fetch the message content from the BANKTEXT server to display the
notification. A generic push notification message is shown if something happens and the app cannot reach
the server in time. When the setting is disabled, the message content is sent via push notification payload so
the mobile app can immediately display the notification.

To update privacy for push notifications,


Go to Administration > Workspace > Settings > Push

Go to Privacy and update your settings.


Click Save Changes.
Push Notifications User Guide

To enable push notifications,

Always confirm that your mobile device settings allow the BANKTEXT app to show notifications.

Click your avatar from the sidebar to access the user panel.
Select My Account.
Click Preferences, then select Notifications.
Select the type of messages you want to Send Push Notifications For.
Click Save Changes.

Learn about Idle Time Limit and enable Auto-away from User Presence.
Omnichannel Agent's Guides
Guide to be followed by omnichannel agents to assist customers.

As an Omnichannel agent, you can log in to your workspace using your username or email, and password.
You can handle omnichannel or Livechat conversations.

To be an Omnichannel agent, you must have the Omnichannel Agent role. Contact your
administrator if you need the role.

As an omnichannel agent, your home screen has Omnichannel navigation tab that has features for:

Opening Omnichannel Queue

Setting Omnichannel Agent's Availability


Opening up Omnichannel Contact Center

Omnichannel Agent Availability


To make yourself available to take up conversations:

Click icon to set your status to Available


Click to set your status to Unavailable.
Omnichannel Conversation
Learn how to handle omnichannel conversations.

When you log in to your workspace as an agent and set your status to Available, to handle new
conversations:

Any new Conversation initiated to the department you belong to appears under Chats in Progress
Click on a conversation to reply to omnichannel contact.

Omnichannel Conversation Quick Actions


In an Omnichannel conversation, quick actions can be performed from the top of the chat screen. They are
shown as icons on the top right.

Moving back to the Queue


If an omnichannel conversation needs to be handled by another agent within your department,

Click to

Click Move to the queue.

The conversation starts to appear in the Queued Chats for other agents to see.

Forwarding a conversation
To forward a conversation:

Click on the icon.


Enter the department or the Agent to whom the conversation should be forwarded.
Leave a comment if necessary and click Forward.
A notification appears briefly at the top to indicate if the operation succeeded or failed.

Conversation transcript
Following an Omnichannel conversation, forwarding the transcript to the contact you were serving as an
agent may be necessary.

To send the transcript via email,


Click icon
Click Send via email
Enter their Email
Enter the Subject
Hit Request.

To export the transcript as PDF,

Click icon to close the conversation first


Enter comments if any

Update Tags for this conversation


Select Export chat transcript as PDF
You receive a new direct message from Rocket.Cat with the conversation attached in PDF form.

Exporting as PDF becomes available only after you Close the omnichannel conversation. It is not
possible to export an incomplete conversation.

To export the transcript of a previously closed conversation,

Click icon
Click Export as PDF
The transcript appears within the conversation as a message from Rocket.Cat.

You need Request PDF Transcript permission assigned to your role. To assign permission,
navigate to the home screen Kebab menu > Workspace > Permissions, assign Request PDF
Transcript to your role, or contact your workspace administrator.

To enable Export Conversation Transcript automatically for every chat,

Click your avatar and select My account.

Navigate to Omnichannel and enable the transcript option you want to automate.
Export chat transcript as PDF: Always export the transcript as PDF at the end of conversations.
Send chat transcript via email: Always send the transcript to contacts at the end of the
conversations.
Click Save Changes.

Place conversation On-Hold


During supporting conversation as an agent, you can find yourself in a situation where Omnichannel
contacts terminate the conversation abruptly. Still, the conversation will persist in your queue until it is
Closed. This can potentially impact your service capacity as you may be unable to engage in new
conversations due to the maximum number of simultaneous conversations allowed per agent. To address
this concern, you can pause the conversation temporarily by using the Place Chat On-Hold feature.

To place a conversation on hold,

Click

Click Place Chat On-Hold

If the Omnichannel contact engages again, the routing algorithm will try to find you first to assign this
conversation. If you are busy serving other conversations at maximum capacity, the conversation will be
assigned to the next available agent.

You can also click the conversation in the queue anytime and click Resume to engage with the same
contact again.

You can manually place the conversation on hold only when you send the last message to the
contact.

Closing a conversation
To end a conversation:

Click icon.
Enter comments if any
Update Tags for this conversation
Select Export chat transcript as PDF in case you need it exported.
Select Send chat transcript via email if you want it sent to the guest's email.
Click Confirm, and the conversation disappears from the Chats in Progress queue.
The PDF conversation transcript is sent to you as a direct message if you request that the chat be
exported.

Calling
Communication with omnichannel contacts on BANKTEXT can also be done using audio/video calls. Your
workspace must have at least one call app installed to make these calls.

To enable BANKTEXT video call feature, please get in touch with your administrator or follow the
instructions.
To make a call,

Click icon from quick actions on the right side

Click Join Call button in the conversation.

Enter your name in the new browser window and hit Join meeting

Room information

Click the icon from quick actions on the right side to reveal the details of your current
conversation.

The details revealed include the date and time, average response time, queue time, the contact name,
and your username.
Click Edit to add some further information. E.g., the topic discussed or priority
Hit Save.

Canned Responses

Canned responses allow you to call pre-saved message snippets with shortcuts (preceded with ! ) to
communicate a quick note to your omnichannel contact in omnichannel as well as regular conversations
inside your BANKTEXT's workspace.

To send a canned response,

Start your message with ! and a shortcut, or you can select the canned response from the drop-down
list that will appear above your text field
You can also use the same canned responses when talking to your peers outside Omnichannel

To access all available canned responses for your department or all public canned responses on your
workspace,

Click icon.

Hover your cursor over the canned response you want to use in your current conversation
Hit Use.

Creation of canned response from a room

You can create a canned response during an omnichannel conversation if you have appropriate
permissions.

Check Canned Responses or contact your workspace administrator.


To create a canned response in a conversation,

Click icon

Scroll down and click Create

Enter Shortcut. E.g., !welcome

Enter Message. E.g., Welcome to BANKTEXT LiveChat support! How can I help
you?
Update Tags if required
Hit Save. Your new canned response is saved and ready to be used.

Contact information
To get the contact details of the currently selected omnichannel conversation's contact,

Click icon

While viewing contact information, click Edit to edit the contact details or click Chat History to see the chat
history.

Searching chats
To search for messages in a conversation,

1. Click icon
2. Enter your search query.
3. The search result is displayed as you type. You can also use Regular Expressions. For example, to
search for the word error followed by any three digits, use error\d{3} .

Searching for file attachments


To search for files that have been attached to the conversation,

Click icon.
All files that have been attached are displayed.
Enter the search query.
Optionally, choose the file type you are interested in. By default, all the file types are displayed.

Viewing contact chat history


To get the chat history of the contact:
Click icon.
The contact is displayed alongside the last closing message which you sent.

Below the contact details, click the icon, and the messages in the history are displayed.
Enter a search query in the search box. The results are displayed as you type.
Omnichannel Queue

When you log in to your workspace as an agent and set your status to Available, to handle new
conversations, icon appears on your screen.

As an administrator or omnichannel manager,

Click the to see all the current Omnichannel chats in the queue.

As soon as you close them, they will disappear from the queue.

Sorting this data can be done by:

Served By: Which Agent is serving the conversation


Status: Status of the Agents to filter by

Department: The department to show Queued conversations in

As an agent,

Click the to see all the conversations you are currently serving appear
Omnichannel Contact Center

The Omnichannel Contact Center is a directory of contacts, chats, and calls.

To access the Contact Center, click the icon on the Omnichannel navigation tab, and a screen
displaying all the records is seen.

As an omnichannel agent, you can view contacts, chats, and calls you have served.
As an omnichannel manager, you can view contacts, chats, and calls served by your
department.
As a workspace administrator, you can view contacts, chats, and calls served on your entire
workspace.

Contacts
Under the Contacts tab, you can see all the contacts you have been serving as an Omnichannel agent.

Search omnichannel contact

Omnichannel contacts are searched by username, name, email, or phone. To search for a contact:

Click the Contacts tab if you are on a different tab.


Enter your search query in the Search box.
Click on the contact of interest, and the details are revealed on a panel on the right.

Searching can also be done using custom field values. This is only possible if the Searchable option of the
field is enabled when creating the contact.

View/edit omnichannel contact information

To view or edit a contact:

Click the contact.

The details of the contact are revealed on a panel on the right.


Click Edit to start editing.
Update the fields you are interested in.
Click Save to save the contact details or click Cancel otherwise.

Create a new omnichannel contact

To create a new contact:


Click the Contacts tab.
Click New Contact.
Enter the new contact's name, email, phone, and email.
Hit Save.

As a BANKTEXT enterprise user; you can assign an Omnichannel contact to a particular


manager.

Chats
All the conversations appear under the Chats tab.

No open chat appears in the Contact Center. A chat appears in the Contact Center as soon as
it is closed because Contact Center only deals with archived conversations.

Search to open your desired conversation details


Click Edit to edit the conversation details

Click on top right on Room Information panel to view the full conversation

You can perform all the quick actions applicable to the Closed state of the conversation.

Calls
You can see all the calls under the Calls tab.

Search omnichannel call

To search omnichannel calls:

Click the Calls tab.


Enter the search query in the Search box. Search is done based on name or phone number.

Click on a call row to see the details. The details of the call are revealed on the right, such as the
duration, the wrap-up notes, and the last time you had a call with the contact.
Omnichannel Contact Manager Assignment

This feature lets you assign an omnichannel contact to a dedicated Omnichannel agent. If this contact
initiates a conversation and the dedicated agent is available, the chat is routed directly to them. Otherwise, it
will be routed to any other agent based on the routing algorithm selected.

To enable this feature, you need to enable Assign new conversations to the contact manager
by changing the setting under Administration -> Workspace -> Settings -> Omnichannel ->
Routing or contact your workspace administrator.

You can set a contact manager for a contact using the contact center while creating or editing a contact.

Click the icon on the Omnichannel navigation tab


Click New contact
Enter Contact Manager

Hit Save.

Using API Endpoint

You can set a contact manager for a visitor/contact using

Register Omnichannel Contact


BANKTEXT Developer
Email Inboxes
Learn to use email inboxes feature as an omnichannel agent

In your BANKTEXT workspace, you can receive emails from contacts on an email address configured as an
email inbox.

To use this feature, your workspace administrator must enable Omnichannel and assign agents
and managers. Kindly contact your administrator to set up email inboxes on your workspace.

Once an email inbox is set up successfully, any new email received is shown in your BANKTEXT
workspace. You can view and reply to these emails from your workspace. When you reply, it appears like
any other email in your contact’s inbox.

When you log in to your workspace as an agent and set your status to Available, to handle new
conversations:

Any new email initiated to the department you belong to appears under Chats in Progress

Click on an email to reply to the omnichannel contact.

Reply Email Inbox Messages

As soon as your contact sends an email, it will appear under Chats in Progress.
Click the chat to open it. Click Reply via Email, type your message, and click Send. Your contact
receives the reply in their email.

If you type without clicking Reply via Email, your contact will NOT receive your reply at all.

Invite an Agent to an Email Inbox


Suppose you need help with a particular email, you can invite your fellow agent to that channel using
/invite @username .
Once an agent is invited to an email inbox, they have access to all the previous conversations that have
taken place there. You can also have internal conversations with your fellow agent on the same channel.

Reply to Email Inbox with an Attachment


To reply to an email with an attachment,

Click Reply via Email, then upload and send the file.
Click Send via Email as attachment.
Extend BANKTEXT Capabilities
BANKTEXT Marketplace
You can view the available and installed BANKTEXT Apps and manage them.

BANKTEXT apps are extensions that users can add to their workspaces to customize and enhance their
functionality. Apps can be integrated with third-party services.

The BANKTEXT Marketplace provides a repository of apps users can browse, install and manage directly
from within their workspace. You can also develop your own apps using the BANKTEXT Apps engine.

These Apps can do the following :

Display interactive and dynamic content on their own surface - like a modal or the room’s contextual bar.
Create buttons in the UI for users to interact with native content.
Create slash commands for users to trigger more generic interactions.
Register endpoints to receive data from other applications and services.
Work on both desktop and mobile clients.
Send messages to users; create and manage public channels, groups, discussions, and threads.

You must register your workspace (even if it is a Community Edition) on BANKTEXT Cloud
before you can install apps from BANKTEXT marketplace.

You can browse BANKTEXT apps from the marketplace or access them directly from Administration >
Apps > Marketplace.

On the Explore tab of the Apps screen,

You can see all the apps available on BANKTEXT and search for the one you need.
You can also filter based on Categories, Status, and Price. Choose between multiple categories within
the filter to help you find the best app for your workspace users.

tag next to an app on the marketplace means you need to upgrade your workspace
to a higher version to use the app.

On the Installed tab of the Apps screen,

You can find the apps you have installed on your workspace
Enable/Disable/Uninstall any of your installed apps.
View App details.
View logs of the app.
Provide additional user settings and configuration for the app. (All BANKTEXT Apps might not require
any setup configuration or user settings.)

Types of Apps

Public Apps

Public Apps are all the apps available on the BANKTEXT marketplace. If you are a third-party
publisher/developer, you can also submit an app to the marketplace.

To submit an app to the marketplace, the publisher must have a BANKTEXT Cloud Account and register
their publisher account. You can find more about it in the developer documentation.

You can learn how to install and enable each of them in the App Guide.

Private Apps

You can develop private apps for your workspace or publish the app to the Marketplace for others to install
and use on their own workspaces.

Private apps only work for the workspaces it has been manually installed on. Follow this guide on how to
develop BANKTEXT apps.

Installing a Private App

To install a Private app, get your app packaged and ready-to-use app in a .zip format, follow these
instructions to install it on your workspace:

For BANKTEXT workspace versions less than 6.0, Go to Administration > Settings > General >
Apps and Enable development mode, then proceed to Administration > Apps to Upload
App.

Navigate to Administration > Marketplace > Private apps >


Click Upload Private App.
Choose the installation method ( URL or a compiled .zip) and Install.

Agree to the permissions needed to complete the installation.

The app is installed on the workspace and ready to use.


App Limitation

Community Edition

Community Edition (CE), workspaces can install numerous Public apps (apps from the marketplace) but
enable only five. And they can allow three Private apps. Once it reaches the limit, you can upgrade to the
Enterprise Edition (EE) for access to enable all apps in the workspace. Refer to the table below for a better
understanding.

Community Edition 6.0 Public apps Private apps

Install Unlimited Unlimited

Enable/Use 5 3

For workspace version 5.4 or lower, you can use all the enabled public and private apps you
already have. However, you can not purchase or enable more apps once the limit is reached.

Enterprise Edition

Enterprise Edition (EE), workspaces can install all Public and Private apps. But, if the workspace license
expires and the workspace has exceeded the limit, the marketplace disables all downloaded apps, and the
app count returns to zero.

Enterprise Edition App Offerings


Some apps are part of the Enterprise Edition offerings. You don't have to purchase them if you are
subscribed to the Enterprise Edition of BANKTEXT. They include the following:

Jira Server Jira Cloud Confluence Server Confluence Cloud

Bitbucket Server Bitbucket Cloud Bamboo Zoom

Data Loss Prevention


Facebook Trello Instagram Direct
(DLP)

Telegram Twitter Pexip Google Meet

If you are subscribed to BANKTEXT's Enterprise Edition, you can install and enable any
number of paid and free apps available in the marketplace on your workspace.

If you are looking for the manual/user guide of a particular app, check
BANKTEXT Public Apps Guides or search for it within the documentation.
BANKTEXT Public Apps Guides

Public Apps include all the apps listed on the marketplace. They also include tools that contribute to a
seamles experience on your workspace. You can find them from the document navigation in the sidebar.
Omnichannel Apps

Omnichannel apps give consumers a choice to engage with you on their favorite channels like:

SMS

Email
Voice
WhatsApp
Telegram
Facebook Messenger

You must have the Omnichannel feature enabled and have agents and managers assigned
to receive and send Omnichannel messages.

SMS

Telegram App

Rasa App

Salesforce CRM Integration

Dialogflow App

Twitter App

Facebook App
WhatsApp

Instagram Direct
SMS

External users can communicate with your BANKTEXT workspace through SMS. This integration extends
BANKTEXT's Omnichannel capabilities. This is helpful for customers to contact your support team via SMS.

It offers the ability to configure SMS integration with several providers. However, this guide is focused on
Twilio using Twilio Programmable Messaging API.

You are required to have your workspace available on a public URL.

Twilio Programmable Messaging Configuration


To relay SMS, you need to get a Twilio number and create a messaging service.

Sign up or log in to your Twilio account.


From your Twilio console, navigate to Messaging > Try it out > Get Set Up.
Click Start setup, and follow the prompts to configure a Twilio messaging service.
Fill in the service name and hit Create Messaging Service.
Twilio will automatically provision a number for you, so click Provision and add this number.

With the configuration complete, you can send an SMS to ensure the number works.

Twilio SMS and BANKTEXT Webhook


After configuring your Twilio number for messaging, the next step is to link it to BANKTEXT through an
Omnichannel webhook endpoint.

From your Twilio console, navigate to Phone Numbers > Manage > Active numbers. You will see
your Twilio provisioned number and the messaging service it is linked to
Click on the number to open its configuration page.
Navigate to Messaging Configuration. Update the Webhook URL value for "A message comes in"
with the URL of your publicly available BANKTEXT workspace in this format
https://<SERVER_URL>/api/v1/livechat/sms-incoming/twilio . Then, click Save.

Ensure the action type selected above is Webhook and the method is HTTP POST.

BANKTEXT Twilio SMS Setting


To connect your Twilio Programmable Messaging number to your BANKTEXT workspace,

Navigate to Administration > Workspace > Settings > SMS on your workspace.
Enable it and select Twilio as the service.
Update the Account SID and Account Token from the T Twilio console in the Twilio tab. Click Save
Changes.

Test BANKTEXT SMS Messaging


We have configured a Twilio Programmable Messaging number and linked it with BANKTEXT through a
webhook.

To test the two-way communication between BANKTEXT and SMS,

Open any SMS messaging app on your phone and send a message to your Twilio active number.

The message is received on your BANKTEXT workspace and available for any Omnichannel Agent to
continue the conversation.
Similarly, when a reply is sent from BANKTEXT, the sender receives it via SMS.

The green message icon on the side identifies external SMS messages sent to an Omnichannel
department.
Telegram App
Omnichannel Integration between BANKTEXT and Telegram.

With the Telegram app on BANKTEXT, your customers can send and receive Omnichannel messages from
your workspace through a Telegram bot.

To use your Telegram bot in a room, see Simple Telegram Bot .

Install Telegram App


To install the Telegram App,

Go to Administration > Apps > Marketplace.

Search for the Telegram app.


Click Install and accept the needed permissions.

You must enable the Omnichannel feature with agents and managers assigned to receive
and send Omnichannel messages.

Generate your Telegram Bot Token


To generate a Telegram bot token,

Launch your Telegram app. Open a new chat, search and select "BotFather".

Click Start. Type “/newbot” in the chat and Send.


Select a name and username for your bot.
Once the username is accepted, a congratulatory message displays all the bot's details, including the
API token.
Copy the bot API token.

Configure the Telegram App


To configure the Telegram App,
On the Telegram App Info screen, navigate to Settings.
Update the required fields:
Bot Token: The bot token you copied when generating the telegram bot.

Default Department. Only the agents of this department can serve Telegram conversations.
Service Unavailable Message: The message sent to your customer when no agents are available
online.
Welcome Message: The message sent to customers when they send their first message.
Conversation Finished Message: The message sent to your customer when an agent closes the
conversation.
Agents Display Name: You can display the agent's name or username.
File Upload Enabled: You can enable/disable file sharing.

Accepted Media Types: Select the type of files that can be shared between the Agents and your
Twitter Contacts.
Click Save Changes.

You will only receive messages if you have a department set up. Only the agents of that particular
department can receive the chats.

Uninstall Telegram App


To delete the Telegram app from your workspace,

Go to Administration > Apps > Installed.


Click the kebab menu against the Telegram app.
Select Uninstall.
Click Yes to confirm the uninstallation.

To learn more about Telegram bots, see the official Telegram Bots Guide.
Telegram Agent's Guide

If you set up Telegram app integration and a user sends you a message on the connected Telegram bot,

It appears in your BANKTEXT workspace, just like any other Omnichannel conversation available for an
agent to take it.
You can respond to the customer from your workspace, who receives the response on Telegram.
You can also send and receive files during the conversation.

Quick Replies
You can also use quick reply buttons to send or receive quick replies on telegram. This is useful and
required for companies with a chatbot user serving Omnichannel conversations. You need to have a bot
(Dialogflow/RASA) configured before implementing bot quick replies.

Navigate to Administration > Workspace > Settings > Omnichannel > Routing.
Enable Assign new conversations to bot agent. The routing system attempts to find a bot agent, if
any exists, before addressing new conversations to a human agent.
Istart 13:30 ..//

Hello, 13:31 ..//

Are you a BANKTEXT client? : ,


13 3

Q Message

Yes, I'm a c ient. •

No, I'm not a c ient. ,e;,

I'm on a Saas trial.

Actually, I wanted to alk about other things. 1

111 0 <
Quick repiles
Rasa App

Rasa is a framework for developing AI-powered, industrial-grade chatbots. It is an open-source alternative to


the Dialogflow app. With the Rasa Chatbot app, you can set up and train your chatbot to respond to any
query it's been trained for and configure it to act as an Omnichannel agent.

You must have the Omnichannel feature enabled and have agents and managers assigned
to receive and send Omnichannel messages.

Install Rasa App


To install the Rasa App,

Go to Administration > Apps > Marketplace.


Search for the Rasa app.
Click Install and accept the needed permissions.

To set up your Rasa server, visit the Rasa installation guide.

Configure Rasa App


To configure the Rasa app,

On the Rasa App Info screen, navigate to Settings.


Update the required fields:

Bot Username: Set the name of the bot you have already configured. This is the user who will
assist with the conversations through Rasa integration.
Rasa Server URL: The server available in your Rasa instance.
Service Unavailable Message: A message sent to your customer if service is unavailable.

Close Chat Message: A message sent to your customer when a conversation is closed.
Handover Message: A message sent to a customer upon handover.

Default Handover Department Name: The target department name where you want to transfer the
customer upon handover.
Enable Callbacks: Enable callbacks to allow the app to use only callback messages. It is useful
when you are using reminder messages in your RASA bot.
Hide Quick Replies: If enabled, all quick replies will hide when customers click on any of them.
Click Save Changes.
Uninstall Rasa App
To delete the Rasa app from your workspace,

Go to Administration > Apps > Installed.


Click the kebab menu against the Rasa app.
Select Uninstall.
Click Yes to confirm the uninstallation.
Salesforce CRM Integration
Integration between BANKTEXT and Salesforce CRM platform.

Install Salesforce CRM Integration App


To install the Salesforce CRM Integration App,

Go to Administration > Apps > Marketplace.


Search for the Salesforce CRM Integration app.
Click Install and accept the needed permissions.

You must have the Omnichannel feature enabled and have agents and managers assigned
to receive and send Omnichannel messages.

Configure Salesforce CRM Integration App


To configure the Salesforce CRM Integration App,

On the Salesforce CRM Integration App Info screen, navigate to Settings.


Update the required fields:
Consumer Key: The consumer key from your Salesforce instance.
Private Key: The private key from your Salesforce instance.
Salesforce Username: The salesforce username, it's useful for identification.

Display Contact information when assigning the agent to the chat: If enabled, Salesforce
contact information will be displayed to agents when assigned to chats.
Auto-Save/Update Contacts when a Chat Ends: If enabled, the app will auto-save/update the
customers' info on Salesforce once an agent closes the chat.

Metadata Refresh Interval(in Minutes): The duration within which the app will automatically
refresh its cache. For a better user experience, the app will cache some meta-data information from
Salesforce.
Salesforce Session Timeout(in Minutes): It should be the same as the Session Timeout setting
on your Salesforce Setting ( Setup > Session Settings > Session Timeout > Timeout Value ).
Click Save Changes.

Salesforce CRM Integration App Shortcuts


The Salesforce CRM Integration lists shortcuts to ease usage during Omnichannel conversations.
/salesforce contact : View Contact information.

/salesforce create-contact : Create a new contact.

/salesforce cases : View All Contact cases.

/salesforce create-case : Create a new case.

/salesforce case 123 : View information about a specific Case using the Case Number.

/salesforce help : Shows help message.

Uninstall Salesforce CRM Integration App


To delete the Salesforce CRM Integration app from your workspace,

Go to Administration > Apps > Installed.

Click the kebab menu against the Salesforce CRM Integration app.
Select Uninstall.
Click Yes to confirm the uninstallation.
Salesforce CRM Agent's Guide

If you have Salesforce CRM integration in place and a user sends you a message, it appears in your
BANKTEXT workspace just like any other Omnichannel conversation.

When you start serving the conversation as an agent, the Salesforce CRM Integration takes effect and
displays options for various tasks in the chat.

Create Contact
If it is a new customer, you can create their contact inside your Salesforce CRM from within BANKTEXT.

To create a contact,

Click the Create Contact button in the chat.


Fill in the required contact details.
Click Confirm. The customer is now a Salesforce contact.

Contact Info
If it is an existing contact, you can view their contact info by clicking the Contact Info button in the chat.

View Cases
You can view their cases by clicking the View Cases button in the chat if it is an existing contact.

Create Cases
You can also create a new case for a customer from your BANKTEXT workspace.

Click on the Create Case button in the chat.


Fill in the required information.
Click Confirm. A new Salesforce case is created for the customer.

You can also view the customers' Tasks, Events, and Calls.
HubSpot CRM
Integration between BANKTEXT and HubSpot CRM

You can add HubSpot CRM to your BANKTEXT account to manage the contacts and receive HubSpot
ticket notifications in BANKTEXT. Once BANKTEXT integrated into HubSpot, the HubSpot bot is added as
a user to your workspace.

You must have the Omnichannel feature enabled and have agents and managers assigned
to receive and send Omnichannel messages.

Install HubSpot CRM App


To install the HubSpot CRM App,

Go to Administration > Apps > Marketplace.


Search for the HubSpot CRM app.
Click Install and accept the needed permissions.

Migrate an API key integration to a private app: If you've built a BANKTEXT and HubSpot
CRM integration that uses a HubSpot API key, you need to complete the migration to your private
app, remove all references to the HubSpot API key from your code, and follow the next steps to
use your private app's access token.

Create a new private app


This secure method allows you to use HubSpot's APIs to access specific data from your account. You can
authorize what each private app can request or change in your account, generating an access token unique
to your app.

In your HubSpot account, navigate to Settings > Account Setup > Integrations > Private Apps.
Click Create private app.
On the Basic Info tab, update the name, upload icon, and description of your app.
Click the Scopes tab. Search and select the Read or Write checkbox for each scope you want your
private app to access. The image below highlights the scopes you should add:
Scopes

After configuring your app, click Create app.


Review the information about your app's access token in the dialog box, then click Continue creating.
Once you have created your app, copy the access token. You can start making API calls using the app's
access token.

Configure HubSpot CRM App


Migrated an API Key integration to a Private app: Private apps enable you a powerful, secure way to
make API calls to your HubSpot account.
To configure the HubSpot CRM App,

On the HubSpot CRM App Info screen, navigate to Settings.


Update the required fields:

API key: Enter the API key or private app's access token to allow access to your HubSpot account
information.
Enable the option to display contact information when assigning the agent to the chat.
Enable/disable the option to ignore archived objects.
Click Save Changes.

Uninstall HubSpot CRM Integration App


To delete the HubSpot CRM Integration app from your workspace,

Go to Administration > Apps > Installed.

Click the kebab menu against the HubSpot CRM Integration app.
Select Uninstall.
Click Yes to confirm the uninstallation.
HubSpot CRM Agent's Guide

If you have HubSpot CRM integration in place and a user sends you a message, it appears in your
BANKTEXT workspace just like any other Omnichannel conversation.

When you start serving the conversation as an agent, the Hubspot CRM Integration takes effect and displays
options for various tasks in the chat.

View Existing HubSpot Contact


If it is an existing contact, you can view their contact info by clicking the Contact Info button in the chat.

View Deals
You can see all HubSpot deals associated with contacts, companies, engagements, line items, tickets, and
custom objects by clicking View Deals.

Create Ticket
You can create a ticket and assign appropriate owners and stages to your tickets by clicking on Create
Ticket.

View All Tickets


You can view and manage all HubSpot tickets by clicking View All Tickets.
Dialogflow App
Integration between BANKTEXT and Dialogflow .

Dialogflow lets you easily add like-life conversational AI to your websites, applications, messaging
platforms, and contact center with intuitive, advanced virtual agents.

Using BANKTEXT and the Dialogflow Chatbot platform integration, you can set up and train your chatbot to
respond to any query it's been trained for and configure it to act as an Omnichannel agent.

You must have the Omnichannel feature enabled and have agents and managers assigned
to receive and send Omnichannel messages.

Install Dialogflow App


To install the Dialogflow App,

Go to Administration > Apps > Marketplace.


Search for the Dialogflow app.
Click Install and accept the needed permissions.

See the official Dialogflow guide to learn how to set up Dialogflow.

Bot User Configuration


To configure a bot user,

Navigate to Administration > Workspace > Users.


Search and select your bot agent named Rocket Agent.
Click Edit.
Ensure the Bot and Live Chat Agent role is assigned to this user.

If you don't find this bot user in your workspace, you can create it and assign the roles.
Configure the app to assign a livechat-visitor to this bot automatically. Navigate to Administration >
Workspace >Settings > Omnichannel > Routing. Enable Assign new conversations to bot agent.

Configure Dialogflow App


On the Dialogflow App Info screen, navigate to Settings.
Update the required fields:
Bot Username: Set the name of the bot you have already configured. This is the user who will
assist with the conversations through Dialogflow integration.
Project Id: The project Id where the bot is set up.
Environment: The environment where the bot is set up.
Client Email: The client email in your dialog flow instance.
Private Key: The private key in your dialog flow instance.

Language: Select the language you'd be interacting with the Bot.


Fallback Responses Limit: If the Omnichannel end-user asks something that the bot is not trained
to answer and fails. Fallback Responses Limit defines how many failures of the conversation
should be forwarded to a human agent.
Target Department for Handover: Select the department to transfer customers when there is a bot-
to-live agent handover.
Handover Message: A message sent to the customer upon handover.
Service Unavailable Message: A message sent by the bot to the customer if service is unavailable.

Close Chat Message: A message sent automatically to the customer when a chat is closed.
Hide Quick Replies: If enabled, all quick replies will hide when customers click on any of them.
Click Save Changes.

Uninstall Dialogflow App


To delete the app from your workspace,

Go to Administration > Apps > Installed.

Click the kebab menu against the Dialogflow app.


Select Uninstall.
Click Yes to confirm the uninstallation.
Upload File To Ongoing Dialogflow Chats

You may have a use case where you want to upload a file to the ongoing Bot conversation, like a product
handbook or purchase invoice.

Pre-requisites

Have a Dialogflow intent with Fulfillment webhook enabled


A bot user with a Live Chat agent role.

To upload a file to an ongoing Bot conversation,

Get the Dialogflow session-id of the ongoing bot conversation where you want to upload this file.
You can get it from the fulfillment webhook request, which Dialogflow will send upon detecting your
target intent.

See a sample webhook request for a detailed example. The session-id is in the session
property.

Use the Upload File to a Room endpoint with the session id as the Room Id on BANKTEXT.
The endpoint requires authentication, so you can use the Login endpoint to get authentication tokens for
the bot user.
Twitter App
Omnichannel Integration between BANKTEXT and Twitter.

You must have the Omnichannel feature enabled and have agents and managers assigned
to receive and send Omnichannel messages.

The Twitter app can be used on a subscription basis.

Twitter App Installation

Twitter App Configuration

Twitter App Authentication

Twitter App Agent's Guide


Twitter App Installation

To install Twitter App:

Go to Administration > Workspace > Apps.

as shown below:

Search Twitter under the Marketplace tab in Apps menu on your BANKTEXT administration panel and
install it.

You are notified about all the permissions the app would access. Click Agree.

The app is installed successfully.


Twitter App Configuration

Go to Administration > Workspace > Apps. Go to the Installed tab and search Twitter.

Click open your Twitter app to see the settings available to you as an administrator:

Following are the settings available:


1. You can set a Default Department. Only the agents of this department are able to serve Twitter
conversations

2. You can set the Service Unavailable Message that will be sent to your visitor when no agents are
available online.
3. You can set the Welcome Message that will be sent to visitors when they send their first message
4. The Conversation Finished Message will be sent to visitors when the conversation is closed
5. Agents Display Name: You can choose to display the agent's name or username.
6. File Upload Enabled: You can enable/disable file sharing and also set a limit for maximum upload
size.
7. And you can select the type of files you wish the Agents and your Twitter Contacts can share under
Accepted Media Types.

8. Hit Save Changes to save your settings

Your Twitter app is successfully configured and you can see the new Twitter channel upon closing the
administration panel, as shown below:
Twitter App Authentication
Authorize Omni-Gateway to send and receive Twitter messages on behalf your
account.

The first step after the configuration is authentication with Twitter.

1. Please click on the button shown below to start the authentication process with Twitter.

2. As soon as you click Start Authentication the authentication process is started. Please authorize
BANKTEXT's Twitter app to complete this process.

3. You will be redirected to the following page where you can use your business email to authorize Twitter.
4. Confirm email.
6. Authorize.
You receive a success message with credentials, as shown below:
Slash Commands

Here are the shortcuts you can use in Twitter Bot:


1. /twitter authorize Starts the Twitter authorization process
2. /twitter unauthorize Revoke twitter authorization
3. /twitter support Show support info
4. /twitter help Shows help message
Delete Twitter App

To delete the Twitter app from your workspace:

Goto Administration > Workspace > Apps > Installed > Twitter

Hit Uninstall
Twitter App Agent's Guide

If you have Twitter app integration in place and a user sends you a message on your Twitter business page
using their Twitter account, as shown below:
it appears in your BANKTEXT workspace just like any other Omnichannel conversation.

Click Take It! to serve this conversation. You can also send to and receive files from your Twitter end-user,
as shown below:
Facebook App
Omnichannel Integration between BANKTEXT and Facebook.

Omnichannel Integration between BANKTEXT and Facebook Messenger. The Facebook Messenger app
lets you handle messages from your Facebook contacts directly in BANKTEXT. Your customers contact you
via Messenger, and you answer chats from your BANKTEXT workspace. Some key features of this
integration include sending messages with quick reply buttons, welcome messages(starting/closing chat),
file sharing, and the correlation between your Facebook pages and your BANKTEXT departments.

You must have the Omnichannel feature enabled and have agents and managers assigned
to receive and send Omnichannel messages.

Install Facebook App


To install the Facebook App,

Go to Administration > Apps > Marketplace.


Search for the Facebook App.

Click Install and accept the needed permissions. You receive a message from facebook.bot in the
#omnichannel-facebook-setup channel with setup instructions.

Configure Facebook App


To configure the GitHub App,

On the GitHub App Info screen, navigate to Settings.


Update the Settings:
Agents Display Name: You can display the agent's name or username.
File Upload Enabled: You can enable/disable file sharing and set a limit for maximum upload size.

Accepted Media Type: Select the type of files that can be shared between the Agents and your
Twitter Contacts.
Click Save changes.

Facebook App Authentication


Before sending any messages, you must authorize Omni-Gateway to send and receive Facebook messages
on behalf of your account.

Ensure that each of the following requirements is met before starting the authentication process:
A Facebook Account.
A Facebook page. This is the page from where your customers can message you.
Make sure your BANKTEXT instance is on a public Address and is accessible by anyone on the
internet. Go to Admin > General > Site Url to confirm this.
Lastly, ensure your BANKTEXT instance is connected to BANKTEXT Cloud. Go to Admin >
Connectivity Services to connect to Cloud.

Subscribe/Unsubscribe

You are automatically subscribed to the Facebook page after successful authentication. However, you can
choose to unsubscribe.

From the list of connected Facebook Accounts, click the UNSUBSCRIBE button against the account
you want to unsubscribe.

Edit Page Configurations

To update the page configurations,

Click the Edit Page Config button under the account and update the following settings:
Department: You can route all the conversations from this page to a specific department. Only the
agents of this department can serve conversations coming from this page.
Welcome Message: First message your customer will receive when they message you.
Conversation Finished Message: A message sent to your customer when a conversation is
closed.

Default message for offline service: Message sent to your visitor when no agents are available
online.

Only the agents of this particular department can see and take the chats.

Facebook App Shortcuts


The Facebook app has a list of shortcuts to ease usage.

/facebook authorize :: Starts the Facebook authorization.

/facebook unauthorize : Revoke facebook authorization.

/facebook edit pageId : Edit Page configuration for the given pageId.

/facebook help : Shows help message.


When a Facebook user sends a message, and no agent is available on the server to chat, the
conversation won't be created. This means that when agents return to work, they will not know
someone was reaching out. Therefore, please ensure you always have at least one agent online.

Uninstall Facebook App


To delete the Facebook app from your workspace,

Go to Administration > Apps > Installed.


Click the kebab menu against the Facebook app.
Select Uninstall.
Click Yes to confirm the uninstallation.
Facebook App Agent's Guide

If you set up Facebook app integration and a user sends you a message on your Facebook business page,
it appears in your BANKTEXT workspace, just like any other Omnichannel conversation available for an
agent to take it. You can respond to the customer from your workspace, and they receive the response on
Facebook. You can also send and receive files during the conversation.

You must be an agent before you can receive omnichannel messages from Facebook.
WhatsApp
Omnichannel Integration between BANKTEXT and WhatsApp Business.

It is a paid subscription and costs you $39 per month. Alternatively, you can use the
WhatsApp Cloud App , which connects BANKTEXT directly to WhatsApp without any third-party
service.

You must have the Omnichannel feature enabled and have agents and managers assigned
to receive and send Omnichannel messages.

Install WhatsApp App


To install the Whatsapp App,

Go to Administration > Apps > Marketplace.


Search for the WhatsApp app.

Click Install and accept the needed permissions. You receive a message from whatsapp.bot in the
#omnichannel-whatsapp-setup channel with setup instructions.

Configure WhatsApp App


To configure the WhatsApp App,
On the WhatsApp App Info screen, navigate to Settings.
Update the required fields:

Notification of undeliverable message: Notification to alert the agent that a message was not
delivered to the WhatsApp platform.
Agents Display Info: You can display the agent's name or username.
File Uploads Enabled: Enable/disable file sharing and set a limit for Maximum File Upload Size
(in bytes).
Accepted Media Types: Provide a list of accepted media types comma-separated. To accept all
media types, leave this blank.
Allow Quote Messages: Agents will see the quoted message reference on BANKTEXT, when the
Contact quotes/replies to a message on WhatsApp.

For workspaces below version 4.2.0, ensure you have the following index on the
"rocketchat_apps_persistence" collection in DB: appId_1_associations_1 before activating
Allow Quote Messages feature.

Template Message Metadata Refresh Interval(in Minutes): For a better user experience, the app
must cache some Template Messages meta-data information. You can define the duration (in
minutes) within which the app will automatically refresh its cache. To learn more about template
messages, see WhatsApp Omnichannel Integration API.
Message Status Endpoint URL: The URL to receive the status of each message exchanged.

Filter Message Status: Filter the statuses you wish to receive at the endpoint ("Message Status
Endpoint URL") based on Message Type.
Allow List options for Quick Replies: If enabled, messages with more than three quick reply
options would be rendered as List options. Max limit for list options is 10.
Custom label for all List Option buttons: Define a custom label message you want to display on
all Quick reply options sent as List Message.
Click Save Changes.

Create 360Dialog Account

If you have a 360dialog account, click Yes and proceed to connect your WhatsApp number.

From the whatsapp.bot message,

If you don't have a 360dialog account, click No.


Click on the Create 360 Dialog Account button.
After creating your account, copy the API key and complete the bot instructions.

Connect WhatsApp Number to your Workspace


After copying your newly generated API key on 360Dialog,

Return to your BANKTEXT workspace and click Connect WhatsApp Number.


Fill in the required details:
API Key: The API key of your WhatsApp number.
Department: The department that will handle WhatsApp conversations from this number.
Welcome Message: A message sent to customers when they send their first message.
Conversation Finished Message. A message sent to your customer when an agent closes the
conversation,
Default message for offline service: A message sent to your customer when no agents are
available online,
Click Connect.

You can set up as many WhatsApp numbers as you want.

Uninstall WhatsApp App


To delete the WhatsApp app from your workspace,

Go to Administration > Apps > Installed.


Click the kebab menu against the Whatsapp app.
Select Uninstall.

Click Yes to confirm the uninstallation.

Whatsapp Business App FAQs


WhatsApp Agent's Guide

If you set up WhatsApp app integration and a user sends you a message on the WhatsApp connected
number,

It appears in your BANKTEXT workspace, just like any other Omnichannel conversation available for an
agent to take it.
You can respond to the customer from your workspace, who receives the response on WhatsApp.
You can also send and receive files during the conversation.
The integration also supports sharing of Location and Contacts.

Send Template messages via slash command


To configure and send template messages via slash command and UI, see WhatsApp Omnichannel
Integration API.

WhatsApp App Shortcuts


The WhatsApp app has a list of shortcuts to ease usage. Run the slash command /whatsapp help to
see the list of shortcuts and their functions:

/whatsapp connect : Connect a new WhatsApp number.

/whatsapp numbers : To view and edit all connected WhatsApp number.

/whatsapp view-templates : To see all Template messages.

/whatsapp send-template : To send a Template message

/whatsapp support : Get support information

/whatsapp help : To see this shortcut again


WhatsApp Sandbox
An extension for the existing production-ready WhatsApp App.

The WhatsApp Sandbox app allows you to test BANKTEXT integration with WhatsApp in a sandbox
environment. You can send messages and templates in this test environment and receive a webhook.

This app is not intended for production use. It is only for testing purposes. For production use,
please use the official WhatsApp integration.

You must have the Omnichannel feature enabled and have agents and managers assigned
to receive and send Omnichannel messages.

Install Whatsapp Sandbox Integration App


To install the Whatsapp Sandbox App,

Go to Administration > Apps > Marketplace.


Search for the Whatsapp Sandbox app.
Click Install and accept the needed permissions. You receive a message from whatsapp-
sandbox.bot with setup instructions.

To get support, please run the /whatsapp-sandbox support command.

Get the Test API key from 360 Dialog


You need a test API-KEY from 360 Dialog to use WhatsApp Sandbox App.

To get the API-KEY,

Send a WhatsApp message to the phone number 4930609859535 with the content START. You can
use this link: https://wa.me/4930609859535?text=START
Alternatively, you can use this QR Code: https://docs.360dialog.com/whatsapp-api/whatsapp-
api/sandbox#1.-get-a-test-api-key.
As a response, you will receive your Test API-KEY. This API-KEY is associated with the WhatsApp
number you sent the message with. Now, you can use 360dialog WhatsApp.
See the official documentation to learn more about 360dialog Sandbox and its limitations.

Configure Whatsapp Sandbox App


To configure the Whatsapp Sandbox App,

On the Whatsapp Sandbox App Info screen, navigate to Settings.


Update the required fields:

WhatsApp Sandbox API KEY: The API KEY provided by 360Dialog for the Sandbox environment.
Default department: (Optional) Thedepartment that will handle WhatsApp conversations.

Welcome Message: (Optional) The message sent to customers when they send their first message.

Conversation Finished Message: (Optional) The message sent to your customer when an agent
closes the conversation.

Service Unavailable Message: The message sent to your customer when no agents are available
online.
Notification of undeliverable message: (Optional) Set this option to alert the agent that the
message wasn't delivered to the WhatsApp platform.
Agents Display Info: The agent information that would be appended before every message an
agent sends to a customer.
Allow Quote Messages: If enabled, agents can see the quoted message reference on BANKTEXT
when the Contact quotes/replies to a message on WhatsApp.
Message Status Endpoint URL: The endpoint URL where you want to receive the status of each
message exchanged.
Filter Message Status: Filter the statuses (All, Regular Messages, or Template Messages ) you
wish to receive at the endpoint ("Message Status Endpoint URL") based on Message Type.
Allow List options for Quick Replies: If enabled, messages with more than three quick reply
options would be rendered as List options. Max limit for list options is 10.
Custom label for all List Option button: Define a customized label message you want to display
on all Quick reply options sent as List Message.
Click Save Changes.

You can now start sending messages from WhatsApp Sandbox to BANKTEXT.

Uninstall Whatsapp Sandbox App


To delete the Whatsapp Sandbox app from your workspace,
Go to Administration > Apps > Installed.

Click the kebab menu against the Whatsapp Sandbox app.


Select Uninstall.
Click Yes to confirm the uninstallation.
WhatsApp Sandbox Agent's Guide

You cannot share media files within the Sandbox environment.

Send Messages
If you have set up your WhatsApp Sandbox integration and a user sends you a message using the
360dialog Sandbox account,

It appears in your BANKTEXT workspace, just like any other Omnichannel conversation available for an
agent to take it.
You can respond to the customer from your workspace, and they receive the response on Whatsapp.

To configure and send template messages via slash command and UI, see the WhatsApp
Omnichannel Integration API.
Instagram Direct
Omnichannel Integration between BANKTEXT and Instagram Messenger API.

With Instagram Direct, you can directly handle messages from your Instagram Business Inbox in
BANKTEXT. Instagram users contact you via Instagram Direct messages, and you answer chats from your
BANKTEXT workspace. Some key features of this integration include sending messages with quick reply
buttons, welcome messages(starting/closing chat), file sharing, and the correlation between your Instagram
Direct pages and your BANKTEXT departments.

The Instagram Direct integration is available to the following Instagram Direct Professional Accounts:

All Business accounts


Creator accounts via a phased roll-out, beginning with accounts with less than 500k followers

For more official info, see Instagram Messaging with the Messenger Platform.

Install Instagram Direct App


To install the Instagram Direct App,

Go to Administration > Apps > Marketplace.


Search for the Instagram Direct app.
Click Install and accept the needed permissions. You receive a message frominstagram.bot in
the #omnichannel-instagram-setup channel with setup instructions.

You must have the Omnichannel feature enabled and have agents and managers assigned
to receive and send Omnichannel messages.

Configure Instagram Direct App


Handover protocol

If you have multiple Facebook apps connected to a single Facebook account, then Facebook allows those
apps to participate in a conversation by passing control of the conversation between them. This feature is
known as the Handover protocol. If you use the Handover protocol on your account, this Instagram app
allows you to perform some handover operations.

To learn more, see the official documentation for Handover Protocol.

To configure the Instagram Direct App,

On the Instagram Direct App Info screen, navigate to Settings.


Update the required fields:
Agents Display Name: Choose to display the agent's name or username.
File Upload Enabled: Enable/disable file sharing and set a limit for maximum upload size.
Accepted Media Types: Select the type of files that can be exchanged during a conversation.

Delete messages once it has been "Unsend" from Instagram: Select what to do with Unsent
messages.
Instagram Handover Protocol Action: It defines the action which should be performed while
sending an agent's message to a thread to get access to the thread.

Take Thread Control action will only work if you've configured BANKTEXT Omni-gateway
app as a Primary Receiver from Facebook Apps page settings.

Instagram Handover Protocol Metadata: It defines the metadata to be passed along with thread
control action requests. You can use this to pass some custom payload to other apps.
Click Save Changes.

Instagram Direct Authentication


Before sending any messages, you must authorize the Omni-Gateway to send and receive Instagram Direct
messages on behalf of your account.

Ensure that each of the following requirements is met before starting the authentication process:

An Instagram Business Account.


A Facebook Account.
A Facebook Page connected to your Instagram account.
See the Meta guide on connecting your Facebook Page to your Instagram account.

Enable Message Control Connected Tools Settings from your Instagram account on mobile.

Make sure your BANKTEXT instance is on a public Address and is accessible by anyone on the
internet. Go to Admin > General > Site Url to confirm this.
Lastly, ensure your BANKTEXT instance is connected to BANKTEXT Cloud. Go to Admin >
Connectivity Services to connect to Cloud.

Authentication

To start the authentication with Instagram Direct,

From the instagram.bot message , click on the Start Authentication button.


You are redirected to a page to log in and authorize Instagram Direct.

Select the Instagram business account you want to use with BANKTEXT Omni Gateway.

If you have multiple pages associated with your Instagram account, it will prompt you to choose the
preferred page to connect.
Determine what BANKTEXT Omni Gateway can do with the pages you have selected.

After selecting your page, you will receive a success message with credentials for your Instagram
Business Account that has been authenticated that subscribed.

Subscribe/Unsubscribe

You are automatically subscribed to the Instagram page following successful authentication. However, you
can choose to unsubscribe.

From the list of connected Instagram Business Accounts, click the UNSUBSCRIBE button against the
account you want to unsubscribe.

Edit Page Configurations

To update the page configurations,

Click the Edit Page Config button under the account and update the following settings:
Department: You can route all the conversations from this page to a specific department. Only the
agents of this department can serve conversations coming from this page.
Welcome Message: First message your customer will receive when they message you.

Conversation Finished Message: A message sent to your customer when a conversation is


closed.

Default message for offline service: Message sent to your visitor when no agents are available
online.

When an Instagram user sends a message, and no agent is available on the server to chat, the
conversation won't be created. This means that when agents return to work, they will not know
someone was reaching out. Therefore, please ensure you always have at least one agent online.

Instagram Direct App Shortcuts


The Instagram Direct app has a list of shortcuts to ease usage.

/instagram authorize :: Starts the Instagram authorization process to connect your Instagram
accounts.

/instagram unauthorize : Revoke Instagram authorization to remove all connected Instagram


accounts.

/instagram edit pageId : Edit Page configuration for the given pageId.

/instagram edit username : Edit PageInstagram configuration for the given Instagram
username.

/instagram help : Shows help message.

Uninstall Instagram Direct App


To delete the Instagram Direct app from your workspace,

Go to Administration > Apps > Installed.


Click the kebab menu against the Instagram Direct app.
Select Uninstall.

Click Yes to confirm the uninstallation.

You cannot receive messages on BANKTEXT if you have a country restriction set on Instagram.
Instagram Direct Agent's Guide

If you set up Instagram Direct app integration and a user sends you a message on your Instagram business
page,

It appears in your BANKTEXT workspace, just like any other Omnichannel conversation available for an
agent to take it.

You can respond to the customer from your workspace, and they receive the response on Instagram.
You can also send and receive files during the conversation.
The integration also supports context from Instagram stories and posts within the incoming messages.

You must be an agent before you can receive omnichannel messages from Instagram.
WhatsApp Cloud App

The BANKTEXT WhatsApp Cloud App provides direct communication between BANKTEXT and
WhatsApp using the WhatsApp Cloud API without needing third-party services like 360Dialog. Your
BANKTEXT workspace is linked through a Facebook Developer app with the WhatsApp setup.

Install Whatsapp Cloud App

Prerequisites

It is required to have your workspace on a secured, publicly available domain.


You need a Meta developer's account to get the WhatsApp API credentials.
Make available a Facebook Business account to link with.
Your workspace must be registered on BANKTEXT Cloud.

To install the WhatsApp Cloud BANKTEXT App,

Go to Administration > Apps > Marketplace.


Search for the WhatsApp Cloud app.
Click Install and accept the needed permissions. You receive a message from whatsapp-
cloud.bot in the #omnichannel-whatsapp-cloud-setup channel with setup instructions.

Set up Facebook Developer Account with Whatsapp


Meta provides developer tools through their Facebook Developer's portal to easily build around the Meta
ecosystem.

Login to your Facebook Developer account and navigate to My Apps

You must verify your account before proceeding if it is your first time accessing Facebook for
developers.
Click on Create App to create a new app
Select Business as the App type and fill in the details
App name: The name you want to call your app.

Contact address: Your email to use when contacting you.


Business Account: Select a business account if you have one. A new account can be created
automatically if none is selected.

Click on Setup against WhatsApp in the list of products to add displayed. A WhatsApp section is added
to the left panel of your Facebook Developer dashboard.

Navigate to WhatsApp > Getting Started; you will see a set of credentials to be used later to set up the
WhatsApp Cloud App in BANKTEXT
Verify any existing WhatsApp number to receive messages while in Test Mode.

The access token provided is temporary; see this guide on how to create a permanent token.

Adding WhatsApp Business phone number to the Facebook app

It is optional to link your original WhatsApp Business number to the App.

Navigate to WhatsApp > Getting Started and click on Add phone number.

Follow the guides below to learn more about how to add a WhatsApp production number here:

Add a Phone Number - WhatsApp Business Platform Cloud API - Documentation - Meta for D…
Meta for Developers
Create a Permanent Whatsapp Cloud API Token

Facebook uniquely provides the WhatsApp Cloud API token, Phone Number ID, and WhatsApp Business
Account ID. These credentials are needed by every business when using WhatsApp Cloud services.

The token provided by Facebook initially is temporal. Optionally, you can get a permanent WhatsApp Cloud
API token.

Open the app panel on your Facebook Developers portal.


Click to open the business page linked to the app.
From the Facebook business setting page, navigate to System user.

A list of existing users on that app is seen, if any. Click Add to add a user, then Accept the terms and
conditions.
Fill in the System username, then set the System User Role to Admin. Click Create System User.
Click on Add Assets across the newly created user to add assets to use.
A modal opens up, navigate to Apps, select the app, and enable Manage App. Then Save changes.

The asset gets added to the system user. Click Done.


Click on Generate New Token against the user to generate a new access token.
Select the App from the dropdown and check the whatsapp_business_messaging and
whatsapp_business_management permissions. Then, click Generate Token.
The permanent token is generated and presented to you. Copy this token and use it in your integrations.

Uninstall Whatsapp App


To delete the Whatsapp app from your workspace,
Go to Administration > Apps > Installed.
Click the kebab menu against the Whatsapp app.
Select Uninstall.

Click Yes to confirm the uninstallation.

WhatsApp Cloud API FAQs


Configure Whatsapp Cloud App

With the WhatsApp Cloud App installed on your public BANKTEXT workspace and the Facebook
Developer App Created for WhatsApp, you can now connect, edit and disconnect Whatsapp numbers.

WhatsApp Cloud App Shortcuts


The WhatsApp Cloud app has a list of shortcuts to ease usage. Run the slash command /whatsapp
help to see the list of shortcuts and their functions:

/whatsapp connect: Connect a new WhatsApp number


/whatsapp numbers: View and edit all connected WhatsApp number
/whatsapp support: Get support information
/whatsapp help: See the help menu

Connect WhatsApp Number

There is no limit to the number of WhatsApp numbers that can be linked to a Facebook app.

Click on Connect WhatsApp Number from the first message sent by thewhatsapp-cloud.bot or
run the slash command /whatsapp connect

Fill in the details of the new Whatsapp Number:


PhoneNo Id: The WhatsApp phone number ID you want to connect.
WhatsApp Business Id: The WhatsApp Business Account ID of the WhatsApp number to connect.
Access Token: The App's access token. It can be either temporary or permanent.

Facebook App Secret: The Facebook App's secrete. This secret is used to verify if the messages
are sent from authorized WhatsApp servers.
Welcome Message: First message your customer will receive upon messaging you.

Conversation Finished Message: The message sent to your customer when an agent closes the
conversation.
Default message for offline service: Message sent to your customer when no agents are available
online.

Setup Facebook App webhook URL

After saving, you receive a message to configure the callback URL in your app.
This is a one-time process.

Go to the App created on your Facebook Developer Console.

Navigate to WhatsApp > Configuration and paste the callback URL and Verify Token provided by
BANKTEXT. Click Verify and save.
From the configuration screen, click on Manage across the Webhook field.
Subscribe to messages (v14.0 or higher). Now, click Done.

After subscribing to the messages, the BANKTEXT WhatsApp Cloud app is ready to use.

Edit WhatsApp Cloud Number


To edit an already set WhatsApp number,

Run the slash command /whatsapp numbers

A list of connected numbers is displayed. Click on Edit across the number you wish to edit.
Make the necessary changes and Update.

Disconnect WhatsApp Number


To disconnect a WhatsApp number,

Run the slash command /whatsapp numbers

A list of connected numbers is displayed. Click on Disconnect across the number you wish to
disconnect
Confirm the prompt to Disconnect.
You get a message notifying you about the disconnection
Using WhatsApp Cloud App

After configuring the Whatsapp App through webhook, you can test the two-way communication between
BANKTEXT and WhatsApp.

You must enable the Omnichannel feature with agents and managers assigned to receive and
send Omnichannel messages.

Launch the WhatsApp app on your phone while logged in with a verified phone number to receive
messages from your app.
Send a message to the test number provided or your WhatsApp business number (if you added any).
The message is seen in your BANKTEXT server, available for any Omnichannel Agent to Take the
conversation.
You can respond to the customer from your workspace, and they receive the response on Whatsapp.
Atlassian Apps

Atlassian apps allow you to sync your BANKTEXT workspace with various Atlassian products.

Jira Server 2.0: Learn to install and configure Jira Server integration with BANKTEXT.

Bamboo Integration: Set up Bamboo integration with BANKTEXT.

BitBucket Server: Understand how to configure the Bitbucket Server app.

Confluence Server: Configure the Atlassian Confluence Server Integration.

Jira Server: Install and configure Jira Server integration with BANKTEXT.
Jira Server v2.0
How to install and configure your Jira Server integration with BANKTEXT

This app can also work in a fully air-gapped environment. If you are an Enterprise customer
running an air-gapped workspace, follow the Air-gapped App Installation guide and then
follow the configuration instructions below.

Features
This app lets you connect your channels or private groups to different projects from different Jira Servers.

The following notifications are supported:

Project created
Project deleted
Issue created
Issue transitioned
Issue updated

Installation

Migrating from version 1.x: Please note that this is a major version update, which means it
includes breaking changes. You will need to configure your connections again after the update.

You can install our Jira Server Integration BANKTEXT App from your BANKTEXT Administration area.

Go to Administration > Workspace > Marketplace


Search for the Jira Server Integration and click on the item
Click on the Install button
Click on Activate

Now that you have the app installed in your server, it is time to configure the integration with your Jira
instance.

Configuration
Go to any channel or private group and execute the slashcommand /jira-server . You will be prompted
with the Room Preferences dialog_:_
Room Preferences dialog

Here you can connect your channel or private group to different Jira Servers. The server list is currently
empty as this is a fresh install, so let's connect to a new Jira Server

Connecting to Jira Servers

To add a new Jira Server connection from the Room Preferences dialog, click on the "Connect to another
Jira Server" button. You will be prompted with a form to fill in the details for the connection:
New Jira Server form

Note: We advise against using your own Jira user in the installation process. That is because the
BANKTEXT App has to persist the credentials to be able to search for projects and issues later on. We
recommend creating a new user with administrative privileges. After the installation process, you can
revoke those privileges from the user.

After successfully connecting to the server (the app will let you know if anything goes wrong), just select the
new server from the list to integrate it with your channel/private group.
Select the new server to integrate with it

Hit "Save" and you're good to go!

Now we have to subscribe your channel to specific projects, so it starts receiving notifications from Jira.

Subscribing to Jira Projects

Go to the channel/private group that you want to receive notifications on and run the Jira slash command
/jira-server . You will be prompted with the Room Integration dialog:
Room Integration dialog

You can click the "Subscribe" button to subscribe to any project you wish.

Managing your Integration

If you want to manage your channel/private group integration, you can use the menu in the Room Integration
dialog to do so:
Room Integration dialog menu

Manage Connections - Takes you to the Room Preferences dialog above. From there you can manage
to which servers your channel/private group is connected, add new servers, etc.

Reset Connections - Will reset all connected servers and projects from this room. Use this if you no
longer want to receive notifications on your channel/private group.
Bamboo Integration
Atlassian Bamboo Integration

This app can also work in a fully air-gapped environment. Follow the
Air-gapped App Installation guide and continue with the configuration instructions below.

Install Bamboo Integration App


To install the Bamboo Integration App,

Navigate to Administration > Apps > Marketplace.

Search for the Bamboo Integration app.


Click Install.
Agree to the permissions to confirm the installation.

Configure Bamboo Integration App

Confirm that you have the BANKTEXT Notifications for Bamboo add-on installed on your
Bamboo server.

To configure the Bamboo Integration app,

Navigate to a channel or private room and run the slash command /bamboo install .

You will receive an ephemeral message with instructions on how to configure your Bamboo, as follows:
On your Bamboo, install the BANKTEXT Notifications for Bamboo add-on.
Add notification on a Build Plan or Deployment Environment.
Select the "BANKTEXT" recipient type.
On the "BANKTEXT URL" field, insert the URL given in the ephemeral message (e.g.,
https://example.com:3000/api/apps/private/6a7b5a37-b9bb-4d49-ae38-
c6ebcb3fe479/ejDjQ9Kyh2wBgrSwt/webhook )

On the "BANKTEXT channel" field, type the name of the channel or private room you want to be
notified of the events.

Now, your BANKTEXT workspace starts receiving the configured notifications.

The Bamboo Integration doesn't support every Build/Deployment event. BANKTEXT won't send any
notifications in response to unsupported events. The supported events include the following:
Plans:
All Builds Completed
Failed Builds and First Successful
Jobs:
All Jobs Completed

Failed Jobs and First Successful


Job Error
Deployments:
Deployment Started and Finished
Deployment Failed
Bitbucket Server
Atlassian Bitbucket Server Integration

This app can also work in a fully air-gapped environment. Follow the
Air-gapped App Installation guide and continue with the configuration instructions below.

Install Bitbucket Server App


To install the Bitbucket Server App,

Navigate to Administration > Apps > Marketplace.

Search for the Bitbucket Server Integration app.


Click Install.
Agree to the permissions to confirm the installation.

Configure Bitbucket Server App


Connect a channel or private room to one or more Bitbucket repositories to enable notifications.

To configure the Bitbucket Server App,

Run the slash command /bitbucket-server connect REPO_URL , where:

REPO_URL: The URL of the repository you want to connect to, e.g.,
http://example.com:7990/bitbucket/projects/PROJECT_1/repos/repo1/brow
se .
You'll receive an ephemeral message with further instructions on how to add a Webhook to your
Bitbucket repository.
Navigate to your Bitbucket repository and create a new Webhook. In the URL field, paste the URL that
was generated for you in the ephemeral message, e.g.,
https://example.com:3000/api/apps/private/d98e7da9-2398-4bd1-a596-
d5cac28468bd/zC5r4DxBQSTHfrhLg/webhook?
repoId=aHR0cDovL2xcY2FsaG9zdDo30TkwL2Jpd6J1Y2t1dHxQUk9KRUNUXzF8cmVwzE=

Then, Bitbucket sends notifications on some events to the connected channel or private room.

Only some of the available events are interpreted by the BANKTEXT App. They include
Repository Push, Pull Request Opened, Approved, Merged, and Declined. Any webhook
sent to BANKTEXT from other events will not result in any notification being sent.
Example of chosen events

To connect the same repository to another channel or private group, repeat the process on them
using the same repository URL.
Confluence Server
Atlassian Confluence Server Integration

This app can also work in a fully air-gapped environment. Follow the
Air-gapped App Installation guide and continue with the configuration instructions below.

Install Confluence Server App


To install the Confluence Server App,

Navigate to Administration > Apps > Marketplace.


Search for the Confluence Server Integration app.
Click Install.
Agree to the permissions to confirm the installation.

Configure Confluence Server App

Confirm that you have the BANKTEXT for Confluence add-on installed on your Confluence
server.

To configure the Confluence Server App,

Navigate to any room and run the slash command /confluence-server install
CONFLUENCE_BASE_URL USER PASSWORD , where:

CONFLUENCE_BASE_URL: The base URL of your Confluence server. Navigate to Confluence


administration > General Configuration.
USER: The username of a user with administrative privileges in your Confluence server.
PASSWORD: The password of the user mentioned above.
Now your BANKTEXT workspace is connected to the Confluence server instance.
Add the @rocket.cat user to the room and assign permission to write messages.

We strongly advise against using your Confluence user account during installation. Create a
fresh user with administrative privileges. After installation, you can revoke those privileges from
the user.

Using Confluence App


After configuring the Confluence App, connect your Confluence Space to a room and receive notification
messages when a page is created or updated in the Space.

To connect your Confluence Space to a room,

Run the slash command /confluence-server connect . A list of available Spaces you can
connect to is displayed.

Choose one or more spaces and click Connect.

You can connect many Spaces to a room and a Space to multiple rooms.
Jira Server
Install and use the Jira Server in BANKTEXT.

This app can also work in a fully air-gapped environment. Follow the
Air-gapped App Installation guide and continue with the configuration instructions below.

Install Jira App


To install the Jira App,

Navigate to Administration > Apps > Marketplace.

Search for the Jira Server Integration app.


Click Install
Agree to the permissions to confirm the installation.

Configure Jira App


To configure the Jira App,

Navigate to any room and run the slash command /jira-server install JIRA_URL USER
PASSWORD where :
JIRA_URL: The base URL of your Jira server, e.g., https://jira.example.com or
https://example.com/jira
USER: The username of a user in your Jira server with administrative rights.
PASSWORD: The password of the user mentioned above.
Now your BANKTEXT workspace is connected to your Jira server instance.

We strongly advise against using your Jira user account during installation. Create a fresh user
with administrative privileges. After installation, you can revoke those privileges from the user.

Use Jira App


After configuring the Jira App, connect your Jira projects to a room and receive notification messages for
every activity carried out in that project.

To connect your Jira project to a room,


Run the slash command /jira-server connect . A list of projects in your Jira server that you can
connect to is displayed.

To connect any project, run the slash command /jira-server connect PROJECT_KEY .

You can connect many Jira projects to a room and a Jira project to multiple rooms.
Trello

Trello App allows you to receive notifications about your Trello activities, including creating cards and
comments, completing checklist items and uploading attachments, etc.

Install the Trello App

Prerequisites

A publicly accessible BANKTEXT server


A Trello account with active boards.

To install the Trello BANKTEXT App,

Go to Administration > Apps > Marketplace.

Search for the Trello app.


Click Install and accept the needed permissions. A direct message is then received from the
trello.bot to assist you with setting up the app.

Configure Trello App


To configure the Trello App,

Go to the trello.bot chat. Run the slash command /trello setup in the chatbox. It displays a
set of instructions to follow for setting up Trello.
Log in to your Trello account. Go to Power-Up Admin Portal.
Create a new or select an existing Power-Up. Then, navigate to API key.
Copy the server's URL displayed by the trello.bot and add it to the Allowed Origins field of your
API key.
Now, copy the API Key and OAuth Secret from the Trello page. You need it to configure Trello in
BANKTEXT.
On the Trello App Info screen, navigate to Settings.
Paste the Trello API key and Trello API secret from the Trello App.
Next, you authorize your Trello account to connect and interact with the app.

To authorize your Trello account,

Go to the trello.bot chat. Run the slash command /trello authorize . Click the
Authenticate button.
All users must authorize their Trello account before using Trello in the workspace.

Click Allow in the prompt to grant all the permissions needed to run the Trello App integration smoothly.
If authentication is successful, you get a confirmation message from the trello.bot . Now, your
Trello app is ready to use.
Using the Trello App

To get help with Trello in your workspace,

Run the slash command /trello help

Linking Trello Board to BANKTEXT Channel


After configuring the Trello App, link your Trello boards for monitoring in any BANKTEXT channel of your
choice.

You can only link Trello boards to channels. Other rooms are not supported.

To link your Trello board to a channel,

Navigate to the channel where you want to receive your Trello board notifications.
Run the slash command /trello link to link a Trello board. A list of Trello boards linked to your
account is displayed. Select a board and click Link to connect that board to the channel**.**
After linking, you receive notifications in the channel for any activity on that Trello board.
To view the card on your Trello board, click the Go to card button on the notification message.
Zoom
Install and use the Zoom App.

The Zoom app allows you to generate zoom meeting links from your BANKTEXT workspace.

Install Zoom App

Prerequisite

A Zoom Pro account for other users to create Zoom links.

These users are added to your Zoom account, and their emails must be the same on BANKTEXT and
Zoom.

To install the Zoom App,

Navigate to Administration > Apps > Marketplace.


Search for the Zoom app.
Click Install

Create JWT App at Zoom Marketplace


To create a new JWT app,

Sign in to Zoom Marketplace.


Navigate to Develop > Build App.
Select JWT and click Create.
Enter a name for the app and click Create.

Enter your app's Company Name and Developer Contact Information. Click Continue.
Copy the app's API Key and API Secret from the App Credentials tab.

Configure the Zoom App


To configure the Zoom App,

On the Zoom App Info screen, navigate to Settings.


Paste the API Key and API Secret from the JWT App on the marketplace.

Using the Zoom App


To use the zoom app in a room,
Run the slash command /zoom start to generate a new Zoom meeting link. It generates a Zoom
meeting link, and anyone in that room can click the link to join the meeting.
You can also run /zoom start <topic> to add a title to the meeting. For example, /zoom start
< Designers Daily Standup> .
Data Loss Prevention (DLP) App

Data loss prevention (DLP) is a security mechanism that helps prevent sensitive data from being unduly
shared, misused, lost, or accessed by unauthorized users. The Data Loss Prevention App is free for
Enterprise workspaces and works best with the most recent version of BANKTEXT.

This app can also work in a fully air-gapped environment. Follow the
Air-gapped App Installation guide and continue with the configuration instructions below.

Installing the Data Loss Prevention App


To install the Data Loss Prevention App,

Navigate to Administration > Workspace > Apps > Marketplace.


Search for the Data Loss Protection app.
Click Install.

Configuring the Data Loss Prevention App


After installing the app, you need to configure the rule set for its functionality.

To configure DLP,
On the DLP App Info screen, navigate to Settings.

Configure the following settings as needed:


Rules for Blacklisting message: Takes in an array of regular expressions defining the rules. Add
each Regular Expression on a new line.

Moderator Channel: Specify the channel to which all blacklisted messages will be forwarded. From
there, the Channel Moderators can either Approve or Reject the message. e.g. general

Content control type: Choose to ignore channels or select targeted channels to monitor.
Channels: List channels separated by commas to apply the Channel Filter rule.
Censor only Sensitive Information: If enabled, only the sensitive information is replaced by
multiple hashtags (######)
Custom Blacklisted Message title: Set the title of a temporal message that replaces the blacklisted
message pending when it gets approved by the moderator.
Custom Pending approval message: Set the temporal message that replaces the blacklisted
message pending when it gets approved by the moderator. Click More info button under the
blacklisted message in the room to see it.

Custom Rejected Message: This message is displayed in place of the blacklisted message when
a moderator rejects a blacklisted message.
Click Save Changes. The Data Loss Prevention App is ready and functional on your workspace.

Read the Data Loss Prevention User Guide to know more about using the DLP App.

Through DLP features, admins can create a list of regular expressions to be monitored in BANKTEXT, and
you can apply it to any conversation. Once a regular expression is detected, it appears blurred in the room
where it was originally written. The original message is forwarded to a predefined channel for auditing flow,
where a moderator can approve or reject its content. Rooms can have more than one moderator. It’s also
possible to select the rooms to apply the DLP app. If you have channels on your workspace where sensitive
information is frequently shared or data leak is more likely to happen, e.g., the finance team channel, you
can restrict this channel.
Poll

Polls are a great way to drive engagement from your team members and receive quick feedback. The Poll
app allows you to create polls inside a room.

To install the Poll App,

Go to Administration > Apps > Marketplace.


Search for the Poll app and click on it.
Click on the Install button.

How to use the Poll App


To create a Poll,

Run the slash command /poll in the room you want to create the poll.

Then, click Enter to execute. A pop-up form is triggered for you to create the poll. The form details
include the following:
Insert your question: The poll question.
Insert your options: The reply options for the poll.
Add a choice: Add more reply options for the poll.

Choice type: Select if the poll will be multiple choice or single choice.
Vote visibility: Select if the poll will have "open vote" or "confidential vote."
Always Show Vote: Select when to show poll results.
After creating the poll, it is available in the room for the users to vote.

To finish the poll,

Select the Kebab menu top of the poll.


Then, click Finish poll.
Poll Plus

The Poll Plus app allows you to create advanced Polls in BANKTEXT.

To install the Poll Plus App,

Go to Administration > Apps > Marketplace.

Search for the Poll Plus app and click on it.


Click on the Install button.

Quickstart
To create a Poll with Poll Plus,

Run the slash command /poll in the room you want to create the poll.

Then, click Enter to execute. A pop-up form is triggered for you to create the poll. The form details
include the following:
Insert your question: The poll question.
Insert your options: The reply options for the poll.
Add a choice: Add more reply options for the poll.
Choice type: Select if the poll will be multiple choice ,single choice, or template based.
Vote visibility: Select if the poll will have Open Vote, Conidential Vote or Mixed Visibility Vote.
User-defined options: Allow/disallow the user from adding their options to the poll.
Word Cloud: Enable/disable the wordcloud feature on poll finish.
After creating the poll, it is available in the room for the users to vote.

To finish the poll,

Select the Kebab menu at the top of the poll.


Then, click Finish poll.

Configuration Settings
The Poll Plus App offers some customization settings on the App settings screen.

Go to Administration > Apps > Poll Plus.


Select the Settings tab.
Update the settings. Then click Save Changes.
Use Name Attribute

The Poll Plus App allows you to display the voter's identity as either the voter's full name or username.

Timezone

Since BANKTEXT is used globally; everyone may not be comfortable with Coordinated Universal Time
(UTC). The Poll Plus App allows you to choose which timezone to display the poll finish time. The default
value for this setting is the UTC timezone.

Word Cloud API

The word cloud feature uses an API link to fetch word clouds. The free version of Quickchart word cloud API
can be used for small servers. Moreover, it is also the default value for this setting. Quickchart comes with
the following restrictions:

Requires Internet access.


Enforces rate-limiting of 60 requests per minute per IP.

In this case, you are hosting your BANKTEXT on-premise or need more customization than Quickchart,
we've open-sourced an internally developed word cloud API. It comes with the following features:

No Internet access is required.


No rate-limiting.
It is free.

If the Wordcloud API endpoint is blank and Word Cloud is enabled on the poll, the poll
summary is displayed when the poll is finished.

Template Based Poll


The Poll Plus App provides some pre-filled template polls. These are some of the most commonly used
polls, and pre-filling them saves you from manually typing all the options.

Overrated/Underrated Poll

This poll provides options including Overrated/Underrated, Appropriately Rated, Never Tried, and
Underrated. For example, you can use it to get feedback about the publicity of a particular feature in your
company.

1-to-5 Poll

This poll allows users to rate a subject between 1-5.


1-to-10 Poll

This poll allows users to rate a subject between 1-10.


Poll Plus Features

Template Based Poll


The Poll Plus App provides some pre-filled template polls. These are some of the most commonly used
polls, and pre-filling them saves you from manually typing all the options.

Overrated/Underrated Poll

This poll provides options including Overrated/Underrated, Approprately Rated, Never Tried , Underrated.
For example, you can use it to get feedback about the publicity of a particular feature in your company.

1- to-5 Poll

This poll allows users to rate a particular subject between the numbers 1-5.

1- to-10 Poll

This poll allows users to rate a particular subject between the numbers 1-10.

User Defined Options


The Poll Plus App provides the option to allow or disallow users from adding options to an already created
poll. When creating a poll, select the option to allow or disallow users from adding options to the poll.

If you allow users to add choices, an Add Choice button is displayed below during the poll.
To add a new choice,

Click the Add Choice button. A modal form is displayed.


Enter the new option and click Add. The new option is now added to the poll.

Word Cloud
In addition to the generated bar graph, the Poll Plus App provides users with the option to summarize the
poll results in a word cloud. The word cloud feature uses a word cloud API for fetching these.

Learn more about setting up a word cloud API from the configuration settings guide.

Mixed Visibility Polls


The Poll Plus App allows one to set some reply options as confidential while others are open. This means
that the users that select the anonymous option will have thier identities hidden.

To enable Mixed Visibility,

Set the visibility to "Mixed Visibility Vote" when creating the poll.

On clicking Create, the Mixed Visibility modal pops open. Select the options you would like to be
"Anonymous".

Once the poll is created, options that were selected to be "Anonymous" will conceal the voter identities
with the "Anonymous" label .

Votes casted on the options marked as "Anonymous" would still be counted within the total
votes.

Live Poll
Live Polls are an array of regular polls. A Live Poll is a multi-question, timed poll.

Live Polls can be triggered with the /poll live <number of polls> command. Here <number
of polls> denotes the number of polls you want to be included within the Live Poll.

Each poll within a Live Poll has a time limit to vote upon after which the current Poll ends and the next one is
posted. Poll creators can also click on the “Next Poll” button to trigger a pre-scheduled finish of the current
Poll.

The "Time limit to vote" each poll is set as the number of seconds you want that poll to be active.

Some excellent use-cases for the Live Poll are stand-up and retro meetings. An additional use case is by
teachers wanting to conduct timed quizzes on BANKTEXT.
Here is how the Live Poll looks in action. The time at which the Poll will end is shown in the below figure.

If you're outside of the UTC timezone, you can configure the Poll Plus App to use your timezone. Refer the
configuration doc for more information.

Late Retrieval

Live Polls include an additional feature called Late Retrieval. This allows Live Polls to be posted at a later
time in the future.

To use the Late Retrieval feature make use of the save subcommand in the format: /poll live save
<number of polls> where <number of polls> denote the number of polls you want to be
included within the Live Poll.

Post-creation of the Live Poll, a message along with the poll id to retrieve it will be visible only to the poll
creator.

Make use of the /poll live load <id> command to "play" the Live Poll. Here <id> is the poll id
that was visible to the poll creator.

In case the user enters a wrong or non-existent Live Poll ID a notification message, only visible to the user,
is sent within the room.

Speaking of teachers using BANKTEXT for exams, the Live Poll Late Retrieval features proves an excellent
tool for teachers to create quizzes even weeks before and then schedule the quiz on D-day with ease. All
this while having control over the time limit to answer each question.
Microsoft Teams Bridge

Microsoft Teams Bridge is an app that connects collaborators across BANKTEXT and Microsoft Teams. It
acts as a bridge between Teams and BANKTEXT to enable cross-platform messaging among users in an
organization. This way, users can send and receive messages from their workspace or Teams account.

It supports other message formats, such as emojis, files, and links. Furthermore, operations like
editing or deleting a message are also supported.

Setup Microsoft Teams Bridge

The Microsoft Teams Bridge app is only available for workspaces on version 6.1 and above.

As an administrator, ensure you have access to the BANKTEXT admin account and Teams admin account
for your organization before installing.

To install Microsoft Teams Bridge,

Go to Administration > Apps > Marketplace.


Search for the Microsoft Teams Bridge app.
Click Install. Confirm that the app is enabled.
On the Microsoft Teams Bridge App Info screen, navigate to Details > API and copy the GET auth
endpoint URL .

If it's a localhost URL, exposing the localhost port to the internet requires a tunnel service like
Ngrok.

Set up an Azure Active Directory App

To set up an Azure Active Directory App for your organization,


Login to Microsoft Azure Portal with your organization's Teams admin account.
Find and click Azure Active Directory.
Click Add. Then, select App registration.

Give the app a name. Select Accounts in this organizational directory only as the Supported
account type.
Select Web as the Redirect URI platform. Paste the GET auth endpoint URL you copied from
the Microsoft Teams Bridge App Info as the value.
Click Register. Copy the Application (client) ID and Directory (tenant) ID shown on the overview
page.

Click Add a certificate or secret > New Client Secret. Fill in the description and expiration timeline.
Then, click Add.
After the client secret is created, copy the Client Secret Value.
Navigate to API permissions. Select Add a permission, add the set of required permissions, and click
Grant admin consent for org. The table below outlines the required permissions you'll need to set.
Requires Admin
Name Type Description
Consent

ChannelMessage.Rea Read all channel


Application Yes
d.All messages

ChannelMessage.Sen Send channel


Delegated No
d messages

Flag channel
ChannelMessage.Upd
Application messages for violating Yes
atePolicyViolation.All
policy

Chat.Create Delegated Create chats No

Chat.Create Application Create chats Yes

Read all chat


Chat.Read.All Application Yes
messages

Read names and


Chat.ReadBasic Delegated members of user chat No
threads

Read names and


Chat.ReadBasic.All Application members of all chat Yes
threads

Read and write user


Chat.ReadWrite Delegated No
chat messages

Read and write all chat


Chat.ReadWrite.All Application Yes
messages

Read the members of


ChatMember.Read Delegated Yes
chats

Read the members of


ChatMember.Read.All Application Yes
all chats

Read the members of


ChatMember.Read.Wh all chats where the
Application Yes
ereInstalled associated Teams
application is installed.

ChatMember.ReadWrit Add and remove


Delegated Yes
e members from chats

ChatMember.ReadWrit Add and remove


Application Yes
e.All members from all chats

Add and remove


ChatMember.ReadWrit members from all chats
Application where the associated Yes
e.WhereInstalled
Teams application is
installed.

Read user chat


ChatMessage.Read Delegated No
messages

Read all chat


ChatMessage.Read.All Application Yes
messages

Send user chat


ChatMessage.Send Delegated No
messages

View users' email


email Delegated No
address

Have full access to


Files.ReadWrite Delegated No
user files

Read and write all


Group.ReadWrite.All Delegated Yes
groups

Maintain access to
offline_access Delegated data you have given it No
access to

openid Delegated Sign users in No

View users' basic


profile Delegated No
profile

ServiceMessage.Read. Read service


Application Yes
All messages

Sign in and read user


User.Read Delegated No
profile

Read all users' full


User.Read.All Delegated Yes
profiles

Read all users' full


User.Read.All Application Yes
profiles

Read and write all


User.ReadWrite.All Application Yes
users' full profiles

Configure Microsoft Teams Bridge


Navigate to Microsoft Teams Bridge App Info > Settings.

Update the Directory (tenant) ID, Application (client) ID, and Client Secret with the values you copied
earlier. Then, click Save Changes.

Ensure you use the correct credentials and set the appropriate API permissions on the Azure
Active Directory.

API Limitation
With the Microsoft Teams Bridge, you can exchange up to 500 messages per month across BANKTEXT and
MS Teams at no additional cost. If you surpass this limit, you can no longer exchange messages between
BANKTEXT and Teams.

If you intend to exchange more than 500 messages, here are some important details to note:

Check if the API is metered. Microsoft Teams has free and metered APIs that are billed based on usage.
Know the metering unit to estimate API costs. There's a limit of 500 messages per month. Exceeding
this limit means Teams messages won't show in BANKTEXT, but it can still be sent.

Read the documentation to learn more about the pricing models and licensing requirements.

To monitor message count, set up an Azure budget to track messages against the threshold. Configure
alerts to ensure you stay within the 500 messages monthly spending limit. For example, your
organizational spending limit is 500 messages per month; email notifications are sent if the budget
threshold is exceeded.

See the official guide to understand how to create and manage Azure budgets.

This app was developed in partnership with Yuqing Bian during Google Summer of Code 2022.
Using Microsoft Teams Bridge

Before using Microsoft Teams Bridge, you must have your organization's Teams account or Guest Account.
Without your authorization, no one can access your Teams data or send/receive messages for you.

Log in to your Microsoft Teams account to allow Microsoft Teams Bridge to synchronize your messages.

To use Microsoft Teams Bridge in a channel or DM,

Using the slash command, type /teamsbridge-login-teams to log in to your Teams account and
Send.

Click the Login Teams button from the message returned. It redirects you to log in to your Teams
account. You can also log out by typing /teamsbridge-logout-teams .

A bot is created for all team users in the workspace. Communication with users in Microsoft
Teams Bridge is via bots.

After a successful login, type /teamsbridge-provision-teams-bot-user and click Send to


create a bot user in the workspace for all users in your Teams organization.

Add users to a room using Microsoft Teams Bridge


To add a user from your Teams organization to a room on your workspace,

Adding a Teams Bot user is only supported for private channels, private teams, and private
discussions.

Using the slash command, type /teamsbridge-add-user and Send.

An Add Teams users screen is shown. Select all the users in your Teams organization you want to add
to the room.
Click Add users.

Send a Direct Message (DM) using Microsoft Teams Bridge


Since communication on BANKTEXT with Microsoft Teams Bridge uses bots; click the user's bot from the
room, and send a message. They will receive the messages in their Teams account as direct messages.

To create a direct message from the menu bar,


Click the Create New icon in the BANKTEXT menu bar, then select Direct Message.
Select the bot of the user you want to start a DM with. Then, click Create and send a message.
GitHub App

The BANKTEXT GitHub App enhances the collaboration between developers by seamlessly integrating
GitHub and BANKTEXT. This app enables users to perform various tasks, such as searching and sharing
Issues and Pull **** Requests, subscribing to Repository events, creating new Issues, reviewing and
merging Pull Requests, and more, directly from the BANKTEXT workspace.

Install Github App


To install the GitHub App,

Navigate to Administration > Apps > Marketplace.

Search for the GitHub app.


Click Install
Agree to the permissions to confirm the installation.
On the GitHub App Info screen, navigate to Details > API and copy the GET github-app-
callback URL.

Create the GitHub OAuth App


GitHub OAuth Apps allow users of the BANKTEXT GitHub app to easily authenticate with their GitHub
accounts. The OAuth app provides access to GitHub data, such as user profiles and repository information,
and helps integrate GitHub functionalities.

To create a GitHub OAuth app,


Log in to your GitHub account.
Click your avatar from the menu bar.
Select Settings and navigate to Developer settings > OAuth Apps.

Click New OAuth App to create a new app.


Fill in the required information.
Application name: Set the application name.
Homepage URL: Fill in the URL of your workspace.
Application description: Add a description of the app.
Authorization callback URL: Paste the GET github-app-callback URL you copied from the
GitHub App.
Click Register Application.

After registering the app, click Generate a new client secret to create a new client secret for the app.
Copy the Client ID and the newly created Client secret. You'll need them to configure the BANKTEXT

GitHub app.

Configure GitHub App


To configure the GitHub App,

On the GitHub App Info screen, navigate to Settings.


Fill in the github-app-oauth-client-id and github-app-oauth-client-secret with
values, you copied from the GitHub OAuth app.
Click Save changes.
Using GitHub App

After installing the GitHub app, users in your workspace can start using it. Interaction with the GitHub app is
achieved using slash commands.

The /github slash command is used to initiate actions with the GitHub app. To run any Github
command, a user is required to authenticate first, using /github login .

/github : Shows the GitHub App help

/github login : Log in to the GitHub app using GitHub OAuth

/github logout: Logs a user out


/github me : Shows the user's GitHub profile and issues

/github search : Searches for an issue and a pull request

/github issue: Adds a new issue to a GitHub repository


/github issues : Assign and share issues

/github subscribe : View/Add/Delete/Update repository subscriptions

/github <username>/<repository name> : Shows an interactive interface to fetch repository


data

/github <username>/<repository name> repo : Get the details of a repository

/github <username>/<repository name> issues : List out the issues in a repository

/github <username>/<repository name> contributors : Get a list of contributors a


repository has

/github <username>/<repository name> pulls : Get Recent Pull Requests of a Repository

/github <username>/<repository name> pulls <pull number> : Review a pull request

/github <username>/<repository name> subscribe : Subscribe to all events of a


repository

/github <username>/<repository name> unsubscribe : Unsubscribe from all events of a


repository

GitHub App Authentication

Login

When the slash command /github login is sent,


You receive a message from the github.bot with a GitHub login button

Click the button to authenticate with your GitHub account.


A message is received on successful authentication

Logout

To log out,

Type the slash command /github logout

This removes the current unauthenticated user.

GitHub App Functions

/github me

It returns your profile details with issues assigned to you.

Click Issues to see a list of issues assigned to you.

Click on Share Profile to select and share your profile details within a chat.

/github search

It lets you search for issues or pull requests in a specified repository.

Specify the search parameters and Search.

/github issue

Create a new issue in a GitHub repository.

Enter the Full Repository Name you wish to create the issue in, and click Next
Fill in the issue details and Create Issue.

The issue gets created, and a link to it is provided.

/github issues

This lets you manage the issues on a GitHub repository.


Enter the Full Repository Name you wish to see the issue in, and click Next

A list of issues on the repository is seen. From here you can


View the issue directly on GitHub
Assign to issue to someone
Add the issue

/github subscribe

It allows you to manage subscriptions on repositories. When you subscribe to a repository event, you
receive a message within the BANKTEXT room from which each event gets triggered.

Click Add Subscriptions to add a new subscription


Specify the repository, the events to subscribe to, and Subscribe.
You get a message confirming the subscription.
Click Delete Subscriptions to delete existing subscriptions.
Select the subscription and Unsubscribe.
You receive a message about the unsubscription.

Click Refresh to refresh the list of subscriptions.

/github <username>/<repository name>

To retrieve information about a repository,

Click Overview to see the repository overview.


Click Issues to get all the repository issues.
Click Contributors to get a list of all the top contributors.

Click Pull Requests to see the open pull requests.

GitHub App Repository Actions

/github <username>/<repository name> repo

Returns a detailed overview of a repository.

/github <username>/<repository name> issues

To return a list of issues open on a current repository.

Click on any to open the issue in a new tab.


/github <username>/<repository name> contributors

To return a list of contributors under a repository.

Click on a user to open their GitHub profile on a new tab.

/github <username>/<repository name> pulls

To return a list of open pull requests on a repository.

Click on a PR to open it in a new tab.

/github <username>/<repository name> pulls <pull number>

To review a specific pull request using its PR number,

Click View Changes to see the changes made by that pull request
View File lets you see the file(s) that have been affected by the pull request.

Click on Comments to view the comments under the PR where you Add Comment.
Click on Merge to specify the merge request detail and Merge the PR.

/github <username>/<repository name> subscribe

Subscribe to all the events of a repository and receive messages in that channel when the event gets
triggered.

/github <username>/<repository name> unsubscribe

Unsubscribe from all events of a repository.


Google Drive

The Google Drive app is currently in Beta, and some features may not function as
expected.

The BANKTEXT Google Drive App brings a seamless Google Drive experience into your BANKTEXT
workspace. It gives users the ability to:

Open and view your Google Drive files and their details.
Share files and manage sharing permissions.
Create new files directly from BANKTEXT.

Setup the Google Drive App

Prerequisites

Before setting up the Google Drive App, here are some essential things to note.

Your workspace must be on a publicly available domain.


A Google Cloud project is required to obtain the Oauth2 credentials.

Installing Google Drive App

To install the Google Drive BANKTEXT App,

Go to Administration > Apps > Marketplace.

Search for the Google Drive app and select it.


Click Install and Agree to accept the required permissions.
On the Google Drive App Info screen, navigate to Details > APIs and copy the GET google-
drive-app-callback URL.

After installing, you receive a direct message from the google-drive.bot with instructions on how
to get started. Click Setup to view the instructions.

You can find the callback URL for your workspace from the instructions.

Getting Google Cloud Client Credentials


Go to the Google Cloud console and create a new project or select an existing one.
From the sidebar, Navigate to API & Services > OAuth consent screen and fill in the required fields to
Create a consent screen.
Navigate to Credentials, Click New Credentials, then select OAuth client ID.

Select Web application as the application type, then fill in the required details. Add the
redirect_uri given by the google-drive.bot . Click Create.
Copy the client secret and client id . You need them to configure the app.

To enable Google DriveAPI on your project,

From the sidebar, Navigate to Library.


Search for Google Drive API, select and Enable it.

Configure BANKTEXT Google Drive App

On the Google Drive App Info screen, navigate to Settings.


Paste the client secret and client id from the Google Cloud console. Click Save changes.

Go to a room on your workspace, and type the slash command /google-drive help to return a list
of commands you can use with the Google Drive app.
/google-drive help: shows the help list.

/google-drive connect: starts the process to link your Google Account.


/google-drive disconnect: remove your linked Google Account.
/google-drive create: creates a new Google File and saves it on your Google Drive.
/google-drive files: opens the contextual bar with your Google Drive files list.
After installation, users can access the Google Drive app using the slash command. They can click the
Kebab menu in the room header and select Google Drive.

Your BANKTEXT workspace must be running from at least version 5.1.0 for users to access
the Google Drive app from the room header. For workspaces below this version, only admins
have access.

Authorize and Connect with Google Drive App


After the workspace administrator has installed and configured the Google Drive App, users can connect
their Google accounts and access the files in their Drive. Users can request for the Google Drive app at
Administration > Apps > Marketplace.

To see if the Google Drive App is installed on your workspace, type the slash command /google-drive
and watch out for any related information.

To connect your Google account,


Type the slash command /google-drive connect.

You receive a message from the google-drive.bot .Click Authorize to authorize your account.
Select the Google account you want to authorize, and click Allow for all the account permissions.

After a successful connection, the google-drive.bot message notifies you of a completed


authentication.

With your account linked, you can now view, create and share files directly from BANKTEXT.

You may be required to re-authenticate periodically whenever the authentication token expires.
Using the Google Drive App

When the Google Drive App is installed, you can perform various actions, including creating files, sharing
files, editing file permissions, etc.

List Google Drive Files


To see a list of files on your connected Google Drive account, open Google Drive from the room kebab
menu or use the slash command /google-drive files .

A list of all the files in your Drive is displayed, including those you created and shared with you. These
files are listed with their respective file name , file type, Last modified date and
Owner.
You can search for a specific file using the search bar.
You can filter the type of files displayed by selecting the file type.
The list of files can be sorted in ascending or descending manner.

Create a New Google Drive File


To create a new file on your connected Google Drive account, open Google Drive from the room kebab
menu and click +New or use the slash command /google-drive create .

Fill in the File name, select the File type, and click Create.
The google-drive.bot sends you a message with a link to the new file you just created

Open Google Drive Files


Before sharing a file, you can open it to view and verify its content.

To open a file in the browser,

From the list of files, click the Kebab menu across the file, and select Open in browser. It opens the file
on your browser's tab.

Share Google Drive File


You can share files in your Google Drive within any room in your workspace.

To share a file,

From the list of files, click the Kebab menu across the file, and Share in room. This shares a link to the
file in that room.
Clicking on Details and sharing opens up a modal to edit the sharing permissions of the file.

View File Information


To view file details,

From the list of files, click the Kebab menu across the file, and select File Information. This shares a
link to the file in that room.
It returns the following details of the file:
File name: The name of the file
Manage Access: Where to set the file-sharing permissions.

Type: The file type.


Size: The size occupied by the file in Google Drive.

Location: The location of the file in Drive.


Owner(s): List of people owning the file.
Modified: The last modified date of the file.
Created: When the file was created.

File Permissions

Managing file permissions allows you to restrict the action anyone can perform on a file. A file's permission
can be set when sharing the file or viewing the File information.
The various permissions you can set to a file include the following:

Share to room members and allow them to view: Restricts viewing of the file only by the
member(s) of the room.
Share to room members and allow them to comment: All room members can view and comment
on the file.
Share to room members and allow them to edit: Gives edit access to the member(s) of the room.
Share to anyone at Organization and allow them to view: Allows anyone in your organization to
view the file.
Share to anyone at Organization and allow them to comment: Allows anyone in your
organization to view and comment on the file.

Share to anyone at Organization and allow them to edit: Allows anyone in the organization to
edit the file.
Share to anyone with the link and allow them to view: Allows anyone having the link to view the
file.
Share to anyone with the link and allow them to comment: Allows anyone having the link to
comment on the file.
Share to anyone with the link and allow them to edit: Allows anyone having the link to edit the
file.

Delete Google Drive File

You can only delete files you created.

To delete a file,

From the list of files, click the Kebab menu across the file you want to delete.
Select Delete file, then click Delete forever.
Google Calendar

The Google Calendar app is currently in Beta and some features may not function as
expected.

The BANKTEXT Google Calendar App connects your Google Calendar with BANKTEXT to stay organized
and get a daily rundown of your events. It gives users the ability to do the following :

Manage meeting invites.

See a list of events you have scheduled for the day.


Receive daily reminders on the events of the day.

Setup Google Calendar App

Prerequisites

Before setting up the Google Calendar App, here are some essential things to note.

Your workspace must be on a publicly available domain.


A Google Cloud project is required to obtain the Oauth2 credentials.

Installing Google Calendar App

To install the Google Calendar BANKTEXT App,

Go to Administration > Apps > Marketplace.

Search for the Google Calendar app and select it.


Click Install and Agree to accept the required permissions.
On the Google Calendar App Info screen, navigate to Details > APIs and copy the GET google-
calendar-app-callback URL. You need it to create the OAuth Client Id.

After installing, you receive a direct message from the google-calendar .bot with instructions
on how to configure the app.
Run the slash command /google-calendar setup in the message box to view setup instructions.

You can find the callback URL for your workspace from the instructions.

Getting Google Cloud Client Credentials


Go to the Google Cloud console and create a new project or select an existing one.

From the sidebar, Navigate to API & Services > OAuth consent screen and fill in the required fields to
Create a consent screen.
Navigate to Credentials, Click New Credentials, then select OAuth client ID.
Select Web application as the application type, then fill in the required details. Add the
redirect_uri given by the google-calendar.bot . Click Create.
Copy the client secret and client id . You need them to configure the app.

To enable Google Calendar API on your project,

From the sidebar, Navigate to Library.


Search for Google Calendar API, select and Enable it.

Configure the Google Calendar App

On the Google Calendar App Info screen, navigate to Settings.

Paste the client secret and client id from the Google Cloud console. Click Save changes.

Type the slash command /google-calendar help to give you a list of commands you can use
with the google calendar app.
/google-calendar help: Shows the list of slash commands.
/google-calendar setup: Shows the steps to set up.
/google-calendar connect: Starts the process to link your Google Account.

/google-calendar disconnect: Removes your linked Google Account.


/google-calendar settings: Opens a contextual bar to manage your Google Calendar settings.
/google-calendar events: Returns all events in the calendar for today.

Authorize and Connect with Google Calendar App


After the workspace administrator has installed and configured the Google Calendar App, users can connect
their Google accounts and access the Google Calendar app features. Users can request for the Google
Calendar app at Administration > Apps > Marketplace.

To see if the Google Calendar App is installed on your workspace, type the slash command /google-
calendar and watch out for any related information.

To connect your Google account:


Type the slash command /google-calendar auth.

You receive a message from the google-calendar.bot . Click Authorize to authorize your
account.

Select the Google account you want to authorize, and click Allow for all the account permission.

After a successful connection, the google-calendar.bot message notifies you of a completed


authentication.

With your account linked, you can now change the settings, list your events, and get notifications on meeting
hours.

You may be required to re-authenticate periodically whenever the authentication token expires.
Using the Google Calendar App

When the Google Calendar App is installed, you can perform various actions, including changing your app
settings, listing your events, and receiving notifications on meeting hours.

Google Calendar App Settings


To change the functionality of the Google Calendar app for your account,

Type in the slash command /google-calendar settings . It opens up the Google Calendar
Settings bar.

Now you can perform any of the following actions:

Notifications: Activate or Remove the ability to receive meeting notifications. If you activate
notifications, you receive an event message reminder 10 minutes before the event's scheduled time.
Daily summary: This lets you set when to get a daily event overview. You receive a message
summarizing all your events for the day.
OAuth Authentication: Authorize or Revoke your connected Google account.

Google Calendar App List Events


To see the list of events on your calendar for the day,

Run the slash command /google-calendar events. A list of all the events scheduled for the day
is displayed.

An event has details, including the title, date, and time. Clicking on an event title takes you to the
Google Calendar page showing its details.

You can see the status of your availability for meetings you are invited to.

Use these quick action buttons to respond to meeting invites: Accept , Decline , and Maybe .
Click on Join to join an event you got invited to.
Zapier App

The BANKTEXT Zapier App provides integration between BANKTEXT and Zapier, a popular automation
tool that allows users to automate tasks and workflows by creating triggers and actions.

The Zapier app makes it possible for BANKTEXT and many other external services and tools to be
connected thus providing several benefits:

Automation of Tasks: The app allows users to automate tasks and workflows by creating triggers and
actions, reducing the need for manual intervention and increasing efficiency.

Integration with Other Applications: Integrates with other applications and services, such as project
management tools, social media platforms, email services, etc.
Streamlining Workflows: The app streamlines workflows by providing a simple and intuitive interface
for creating triggers and actions, making it easy to customize the app to meet specific needs and
requirements.
Improved Productivity and Real-Time Communication: Reduces the time and effort required to
perform routine tasks and provides notifications and alerts when specific events occur. allowing teams to
respond quickly to changing circumstances.

See the guide below on installing the Zapier app on your workspace as an Administrator.

Install Zapier App

BANKTEXT Zapier Actions and Triggers


BANKTEXT Zapier Actions and Triggers are events that are triggered from and within BANKTEXT when an
action occurs.
Below is a list of available Triggers and Actions.

BANKTEXT Zapier Triggers


Trigger Description

New channel Triggers when a new Channel is created.

New message posted


Triggers when a new message is posted to any public Channel.
anywhere

New message posted on


Triggers when a message is posted to a specific public Channel.
public channel

New message posted on


Triggers when a message is posted to a specific private Channel
private channel

Message pinned anywhere Triggers when a message is pinned in any public room.

New private channel Triggers when a new private Channel is created.

Starred message anywhere Triggers when a message is starred in any public room.

New user Triggers when a new user is created.

Mentioned on public
Triggers when a user is mentioned on a public channel.
channel

BANKTEXT Zapier Actions


Action Description

Create channel Creates a new Channel.

Invites an existing user to an existing public channel. You


Invite user to channel
must be a member of the channel in order to invite someon

Create private channel Creates a new private channel.

Send channel message Post a new message in a channel.

Send direct message Sends a direct message to a user.

Send private channel message Sends a message to a specific private channel.

Add reminder Adds a new reminder.

Set status Sets user status.

Searches for a channel. It creates a new channel if none is


Find channel
found.

Searches the workspace for a private channel. Creates a


Find private channel
private channel if none is found.

Find user by username Finds a user by their username.

See how to use the Zapier app and some common examples below.

Using Zapier App


Install Zapier App

You are required to have your workspace on a secured publicly available domain.

To install the Zapier BANKTEXT App,

Go to Administration > Marketplace


Search for the Zapier app and click on the item
Click Install and accept the needed permissions to install

After installing, you receive a message from zapier.bot on instructions to continue.


Using Zapier App

With the Zapier app installed on your workspace by the workspace administrator, you can start using the
integration by simply going to the Zapier platform and creating Zaps with theBANKTEXT app.

To verify the installation of the app, navigate to Administrator > Apps > Installed

The BANKTEXT app on the Zapier platform can function both as a trigger and an action in
creating your Zap. For a comprehensive list of available actions and triggers, refer to this list
BANKTEXT Zapier Actions and Triggers

To illustrate the integration's functionality, we have provided some example Zaps:

Using BANKTEXT Trigger to BANKTEXT Action

BANKTEXT Trigger to External Action


External Trigger to BANKTEXT Action

Zapier BANKTEXT Trigger to BANKTEXT Action


This example makes use of the BANKTEXT New channel trigger and the Send direct message
action.

This sends a Direct Message to a user when a new Channel is created.


Zapier Send a Direct Message when a new Channel is created

Follow these steps to create the zap.

Log in to your Zapier dashboard


Click on +Create Zap to begin creating a new Zap
Search and select the BANKTEXT app as Trigger In

the event field, select the New channel event

In the Account settings, click Sign in to your BANKTEXT workspace. A window pops up
requesting your workspace URL
Fill in your workspace BaseURL then click Yes, continue
Authorize with the BANKTEXT OAuth to link the currently logged-in user

Click Continue after a successful connection then Test Trigger

After Configuring the Zapier Trigger, the next step is configuring the Action.

Search and select the BANKTEXT app as the Action app

In the event field, select the Send direct message event and Continue

Select the BANKTEXT workspace linked above or connect another BANKTEXT workspace to
use
Configure the desired field in the action section to format the message structure using the
example data available
Message: The message text to send.
User: Select the user to be DMed.
Alias: The user to send the message as.
Click Continue then Test action. You receive a test message formatted as configured.
Publish and Turn On the Zap

After creating the Zap, you can test its functionalities by Creating a new Channel and confirm you
received a message from the zapier.bot with the Alias you configured with information about
a newly created channel.

Zapier BANKTEXT Trigger to External Action


This example makes use of the BANKTEXT New message posted on public channel trigger
and the Google Sheets Create Spreadsheet Row in Google Sheets action.

This creates a Google Sheet row to an existing sheet when a message is posted in any public BANKTEXT
Channel.
Zapier Create Google Sheet row when a message is posted in a public Channel

Follow these steps to create the zap.

Log in to your Zapier dashboard


Click on +Create Zap to begin creating a new Zap
Search and select the BANKTEXT app as Trigger

In the event field, select the New message posted on public channel event
In the Account settings, click Sign in to your BANKTEXT workspace. A window pops up
requesting your workspace URL
Fill in your workspace BaseURL then click Yes, continue
Authorize with the BANKTEXT OAuth to link the currently logged-in user

Click Continue and choose the public Channel to listen in on your workspace then Test
Trigger

After Configuring the Zapier Trigger, the next step is configuring the Action.

Search and select the Google Sheets app as the Action app

In the event field, select the Create Spreadsheet Row event and Continue

In the Account settings, click Sign in to authenticate and connect your Google account
Select the desired Drive, Spreadsheet, and Worksheet to write to
Set the data to be inputted under the respective Sheet column

Click Continue then Test action. You see the sheet filled with some example data
Publish and Turn On the Zap

After creating the Zap, whenever a message is posted in the specified channel, a Google Sheet
row gets created

Zapier External Trigger to BANKTEXT Action


This example makes use of the New Message Posted to Channel in Slack trigger and the Send
private channel message BANKTEXT action.

This forwards any message sent in a Slack channel to a private channel in BANKTEXT.
Zapier forward Slack Messages to BANKTEXT Channel

Follow these steps to create the zap.

Log in to your Zapier dashboard


Click on +Create Zap to begin creating a new Zap
Search and select the Slack app as Trigger

In the event field, select the New Message Posted to Channel event and Continue

In the Account settings, click Sign in to authenticate and connect your Slack account
Select the Slack Channel to listen to and Continue

After Configuring the Zapier Trigger, the next step is configuring the Action.

Search and select the BANKTEXT app as the Action app

In the event field, select the Send private channel message event and Continue

Select a linked BANKTEXT workspace Sign in to a BANKTEXT workspace to use

Configure the desired field in the action section to format the message structure using the
example data available
Message: The message text to send.
Group: The private BANKTEXT group to post the message in.
Alias: The user to send the message as.

Click Continue then Test action. You receive a test message in then private group formatted
as configured
Publish and Turn On the Zap

After creating the Zap, whenever a message is posted in the specified Slack Channel, it gets
forwarded to a BANKTEXT private Channel.
App Storage Location

BANKTEXT's version 4 introduced npm packages as dependencies of apps. Since npm dependencies
could account for a hefty portion of an app package's final size, we have a more flexible storage solution for
your apps' packages.

To access the configuration, navigate to Administration > Workspace > Settings> Apps

Currently, we have two storage methods:

GridFS at MongoDB (the default option)


Filesystem at the host's box

GridFS
When using GridFS (default), your app package is stored in the database as a file, and you don't have to
manage configuration to make it work.

Filesystem
When setting the storage to the filesystem, you have full control of the package's storage location and
access control. There are a few requirements to make it work:

You have to provide the absolute path of the directory that will be used to store the packages in the
configuration,

The BANKTEXT server has to have read and write permissions to the path so it can manage the
packages

Changing configuration when there are apps installed


It is not recommended to change storage configuration when there are apps installed. Currently, there is no
migration mechanism to move packages between different storage methods. Doing so will result in apps not
working properly.
Resources
Frequently Asked Questions
Apps FAQs

What should I do to extend my workspace’s functionality? Submit a pull request, Use


integrations, or Build a BANKTEXT App?

Each of those options has its strengths and weaknesses.

Changing the source code is the most powerful way of extending BANKTEXT, but not the
simplest - you need to learn the code base, understand the code pattern and rules, submit a PR,
and follow up on any changes requested to get it merged.

However, Integrations allow you to write simple scripts that will be executed when a message is
sent or received in a channel. They’re quick to learn and write, but their scope is limited.

Apps are the middle ground. They are much more powerful than integrations, allowing you to
interact with the UI and execute custom routines on several triggers. They're more complex than
learning the code base and can be distributed to our community via the Marketplace.

Do I need to host my app somewhere to make it available to BANKTEXT?

Not at all! BANKTEXT Apps are packaged and deployed to a workspace, and the system will take
care of hooking the App up. Apps can be installed manually or via the Marketplace.

Can I build and use an app even if it’s not published in the Marketplace?

Absolutely! It’s recommended you use our Apps Engine CLI tool to develop your apps, making it
super easy to deploy your apps to your own BANKTEXT workspace.

Does BANKTEXT have a plugin framework?

We don't have a plugin framework.

What language should I use to write Apps?

BANKTEXT uses typescript only.


Update FAQs

Desktop App

Why can't I update my desktop app to version 2.17.0 or above?

In some cases, for version 2.17.0 and above, you may need help with updating your app. If you
click on the Install Update button and nothing happens for one minute, then you need to follow the
steps below:

Go to https://BANKTEXT/install/?gclid=undefined;
Download the matching edition to your OS.
Install the app.
WhatsApp Cloud API FAQs

WhatsApp Cloud API Pricing

Using the WhatsApp Cloud API, pricing can be estimated using Conversation-Based Pricing
provided by Meta.

BANKTEXT does not charge for WhatsApp conversations with the WhatsApp Cloud App.

Number of total messages per second

The Cloud API can send and receive text and media messages at a combined rate of up to 80
messages per second (MPS) by default and up to 500 MPS upon request. To learn more, see the
Meta helpdesk.

What media types are supported by WhatsApp Cloud API?

See a list of supported media types in the Meta guide.

How can I make the WhatsApp Cloud API token permanent?

To generate a permanent Access Token, visit


Create a Permanent Whatsapp Cloud API Token .

To learn more about Whatsapp Cloud API, see Cloud API FAQs.
Cloud FAQs

Trials

How long do trials last?

Currently, trials last 30 days.

How can I convert from a trial to a paid plan?

Our trials are fully featured. So if you enter your card information in the billing section of the Cloud
Console your trial will automatically convert to a paid plan at the end of the trial period.

How do I cancel my trial?

You can cancel your BANKTEXT workplace directly within the Cloud Console.

Data Export

How can I get a data export?

Send an email to support@BANKTEXT with the address of your workspace. Note: The request
will take some time to fulfill.

Cloud Accounts
How do I view the push usage for my workspace?

To view the push usage for your workspace,

Log in to your BANKTEXT Cloud account.

Navigate to Workspace and click the workspace you want to see usage for.

I already canceled my workspace, but it is still in the “Cancelling” status and is


accessible. Why?

If you cancel your workspace in the middle of the billing period, it will be accessible and in the
“Cancelling” status till the end of your billing period.

For example, suppose you are charged on the 5th of every month and decide to cancel the
subscription on the 20th of December or later. In that case, your workspace will be operational till
the 5th of January (this way, we want to allow customers to use what they paid for). After this, it will
stop running and switch to “Cancelled.”
How do I cancel my cloud subscription?

Only the workspace administrator in your Cloud Console can cancel your subscription.

Navigate to Workspaces.

Click on the kebab menu against the workspace and select Cancel.

It will stop your subscription and hibernate your server (your server will still exist if you want to
return to BANKTEXT later).

If you need a database dump or want to permanently delete your workspace and all the associated
data, submit a ticket on our Helpdesk or email support@BANKTEXT with the respective request.

How can I create one more workspace with the same Cloud account?

Please, note that only our Cloud engineers can do this. If you want to create an additional
workspace, submit a ticket on our Helpdesk or email support@BANKTEXT, including the
workspace address you want and the plan.

Additional workspaces are billed based on their usage. So if you have five users on one
workspace and ten on the other, you will get billed for them separately.

How can I change the ownership of the workspace?

If you need to grant the ownership of your workspace to another person or to change the primary
email of your workspace, submit a ticket on our Helpdesk or email support@BANKTEXT

Submit the ticket from the admin email address (the email address the workspace is registered
under). The ticket should contain the email address where the ownership should be granted.
I already canceled my subscription but was charged again. Why?

We charge our customers afterward, not in advance. It means you are charged for the previous
month of use on a particular day of each month.

Suppose you started your trial on December 1st, it expired on December 15th, and your
subscription was automatically continued (you added the payment method before the trial expired)
- on January 15th, you will receive an invoice for the previous month (December 15th - January
15th).

How can I reactivate my workspace after the trial has expired?

If your trial has expired, and you didn’t add your payment method to continue your subscription,

Navigate to Payments on your Cloud Console.


Click Add payment method to add your card (credit/debit card is the only payment method
we currently accept).

How to change workspace region?

The region is defined upon creation. Customers can not migrate their instances between regions
independently. It requires manual work required by BANKTEXT Cloud team. If you need to switch
regions, submit a ticket on our Helpdesk or email support@BANKTEXT

How can I change or remove my credit card data?

You can not delete the card that is the only one (default one) linked to your workspace as well as
you can not delete the card that was charged last. For the above caes. you will see the error
message “Can't delete last payment option.”

If you need to change the card - add it as a new payment method and make it the default one (after
that, you can delete all other cards).

If you want to remove the card information before canceling your subscription, please note that
your payment data and all the other data associated with your workspace can only be deleted.

To request that, submit a ticket on our Helpdesk or email support@BANKTEXT


Can I use another payment method rather than a credit/debit card?

A credit/debit card is the only payment method we accept at the moment.

For companies paying up-front for a specific period, we provide invoices to pay by wire transfer.

How to change your Cloud account email?

Cloud account email can be changed at cloud.BANKTEXT on the Profile page. If you have
difficulties changing the email of the account owner, contact us at support@BANKTEXT. The
request must be sent from the original account owner's email.

How to request a custom domain?

To request a custom domain,

Set up a CNAME DNS record for the domain name you want to have pointing to
"cdns.use1.cloud.BANKTEXT" (for US region) and to "cdns.euc1.cloud.BANKTEXT" (for
EU region).
Then, send us an email to support@BANKTEXT so we can make respective changes to your
workspace.

Setting a custom domain is available only in the Enterprise Edition offering.


Support FAQs

Slow connections. iOS connection error


95% or more of these are due to improperly configured reverse proxies where the WebSocket is not working
properly. If a WebSocket cannot be correctly established, the client will try and fall back to an XHR
connection. It is extremely slow and flaky. The iOS app will not connect at all without a WebSocket.

Always use Chrome and dev tools to check for the presence of a WebSocket.

WebSockets

Right Click, Inspect


Network, F5 to refresh
Look for the WS filter
Should see WebSocket( wss://open.BANKTEXT/sockjs/123/pbiz45rm/websocket)
Click it and look on the right for 'Headers'
Has this got a green light?

Status Code: 101 Switching Protocols

What do the headers say?

Response headers
Connection: Upgrade
Sec-WebSocket-Accept: nXd/PfaHuA1Kx/ggJWAAy+96Ee4=
Upgrade: websocket

Upgrading BANKTEXT
You can upgrade your BANKTEXT version and also your mongo version. Snaps should auto-update, so this
is aimed at those who use other methods.

Backup: Lots of them and lots of ways, and practice restores.


Use virtual machines for testing: They are so cheap.

Upgrading Mongo
There are leaps between 2.x and 3.x

Then there are more leaps as you proceed through 3.x and then again to 4.x.

Backup is essential. Confirm the supported MongoDB version for the BANKTEXT release you
want to upgrade to and follow the official MongoDB documentation to upgrade it.

Upgrading BANKTEXT

Most Roket.Chat updates also update the database schema - the core layout. Now, theoretically, apart from
adding oplogs to Mongo for Rocket 1.x +, you should be able to merrily jump from version 0.62 through
to 2.1.x .

If you hit a problem asides from schema changes, it will be one of those.

The devs test changes from one version to another and maybe even over a few versions. But not every
single version is up to the latest or, say 0.74.3 -> 1.3.2. That's where it may go wrong.

So a recommended path is something like this:

-> 0.73.x -> 1.0.x -> 1.32 -> 2.0.x -> 2.1.x

Or possibly even more cautious:

-> 073.x - 1.0.x -> 1.1.x -> 1.2.x -> 1.3.x -> 2.0.x -> 2.1.x

'x' means the last patched version e.g. 1.3.2 Check tags or releases

We have seen people make some big jumps. And some disasters too. If in doubt, take your time and do well
to back up!
Whatsapp Business App FAQs

New customers

Can customers try WhatsApp free of charge? Is there any kind of free trial?

Not at the moment. We have provided a Whatsapp Sandbox App to help you test Whatsapp
integration.

Is there a difference between Community Edition (CE) and Enterprise Edition (EE)?

No, there is no differentiation on WhatsApp for CE x EE. All charges incurred for CE will be
applied the same way (App fee, number fee, and variable costs). CE users will only be able to do
so through our self-service method.\

Can customers who have CE open tickets about WhatsApp?

Community workspaces that purchase the app will have access to support for all matters related to
WhatsApp. The process should be done normally by opening up a ticket at Zoho desk.

What happens to actual customers using the old version of the App?

We have a few customers using the old versions. The payment of $59 will be the same for these
customers until the end of the contract. After that, the current policy applies, and for 1 number the
new price will be $78. This price already includes taxes.

What does a customer who has an old version of WhatsApp need to do to get the new
one?

Existing customers should uninstall the existing Whatsapp app and install the updated one. Before
that, please copy the API KEY and paste it onto the app after installing it.
What is the oldest version of BANKTEXT that supports Whatsapp?

3.14.0

What do we do with air-gapped customers?

We won’t be able to serve air-gapped customers because the necessity to connect with the
360Dialog proxy is needed to have access to the WhatsApp Business API.

Pricing Details
What costs will the customer have?

There will be three types of costs.

App fee ($39/mo)


360dialog's monthly fee ($39/mobile number/mo) + Facebook costs per template message
used (variable depending on volume). BANKTEXT does not charge any markup on variable
costs. This price already includes taxes.

Understanding 360dialog's fixed monthly fee

Our pricing is based on the monthly license fee per hosted number. Incoming & outgoing
WhatsApp Session Messages are always free and unlimited - we never charge extra costs per
session message. The license fee can vary according to the available bandwidth since we have
higher tier options for customers that exchange more than ten messages per second and to partner
deal size. Please contact our support team if your account needs to process more than ten
messages per second. We never charge extra costs per Outgoing Template Message, the
WhatsApp fees are only passed through.

Facebook Current Pricing (until January 31st, 2022) and New Facebook Pricing (starting
February 1st, 2022): Conversation-based Pricing can be found here.

Facebook Current Pricing (until January 31st, 2022)

Template messages (business-initiated) sent through your WhatsApp Business Account are
charged according to a tiered pricing model. If your customer initiates messaging with you,
WhatsApp will not charge you for any messages (including Templated Messages) that you send to
that customer for up to 24 hours following the last message that that customer sends to you
("Customer Care Window"). Any additional message you send that customer beyond the
Customer Care Window must be a Templated Message.

Facebook Pricing

The prices listed below are effective until February 1, 2022. After that, conversation-based pricing
rates apply.

Pricing Rules

“Message template” has the meaning detailed in our Documentation. “Templated message”
means a message sent using a message template in compliance with Facebook’s terms and
policies.
All prices are outlined in the List Price Schedule below and will apply to Templated Messages
sent on or after the effective date indicated in the List Price Schedule.
Facebook will determine the price of each delivered Templated Message based on the country
code of the message recipient and the volume of Templated Messages delivered in a calendar
month to a given country or region. Templated Message volume will not be aggregated across
countries or regions or different Whatsapp Business API’s.
The price charged for each delivered Templated Message will be the price effective at the time
you send the Templated Message.
Charges are applicable for each Templated Message delivered within 30 days of being sent.
Charges will not be applicable for Templated Messages that were delivered more than 30 days
after it was sent. We determine that a message has been delivered when WhatsApp servers
process a delivery receipt for the sent message.
If your customer initiates messaging with you, we will not charge you for any messages
(including Templated Messages) that you send to that customer for up to 24 hours following the
last message that that customer sends to you ("Customer Care Window"). Any additional
message you send to that customer beyond the Customer Care Window must be a Templated
Message, for which we will charge you as outlined in our rate card.
Facebook will have the right to update this rate card every month, and changes will take effect
the first day of the calendar month following such changes.
The WhatsApp Business Solution may not be used to send messages to or from the following
countries and regions: Crimea, Cuba, Iran, North Korea, and Syria.

Cost per Message in USD

New Facebook Pricing (starting February 1st, 2022): Conversation-based Pricing The main
change going into effect on February 1st is that now instead of only paying for used template
messages. Facebook will start charging for every conversation. Also, you can send as many
messages as you want in a 24-hour session, even if the customer doesn't respond.

How It Works

In conversation-based Pricing, WhatsApp Business API conversations fall into two categories that
are priced differently:

User-initiated, like customer care and general support inquiries


Business-initiated, like post-purchase notifications

All conversations are measured in 24-hour increments, or "sessions," that start whenever a
business delivers the first message. The first message can be initiated by the business (business-
initiated) or a business reply within 24 hours of a user message (user-initiated). A user is defined
as the person or entity with whom the business is messaging.

Charges for conversations are based on the user’s phone number. Rates for business-initiated
conversations and user-initiated conversations vary by market (country or region).

Free Tier Conversations


The first 1,000 conversations each month will be free, so your business can build experiences
your customers will love before paying. Each WABA gets 1,000 free tier conversations. Free-tier
conversations can be business-initiated or user-initiated.

Free Entry Points Conversations

Conversations will not be charged when users message businesses using call-to-action buttons
on Ads that click to WhatsApp or a Facebook Page CTA. Free entry-point conversations can only
be user-initiated. Only the first conversation that starts from the entry point is free of charge.
Subsequent conversations with the user are charged.

Standard pricing will apply for Ads that Click on WhatsApp. The conversation that initiates from the
ad is free, but not the ad itself.

See the Meta guide for Conversation-Based Pricing for more details on pricing.

Is there any price differentiation for the government?

Government Agencies must get approval from Facebook before creating any WhatsApp Business
accounts. This process can take up to 60 days and will generate extra costs. To start the
Government WABA Application process, please send the information requested in this form.
Then, a team member will contact you with the next steps. Anybody involved (partner, business, or
government agency) can complete the form. If needed, extra information will be requested by the
team member responsible for the process.

Can I have more than one number registered? Is there a price difference?

Yes, you can have more than one number but there isn’t a difference based on the number of
numbers bought.

Which taxes are applied on Whatsapp in Brazil?

The 78$ price already includes taxes.

Billing Model

How are charges made?

Trying to provide a better experience to our customers, BANKTEXT will be responsible for
sending a single invoice with any other charges due BANKTEXT.
App installation

What to register first? 360 Dialog / Facebook?

The process starts at BANKTEXT, after installing the App, the user is guided through all the steps.
The 360D account is created, the phone number is sent, and the number will be set up and ready
for production in less than 10 minutes. It is also essential for the customer to have a Facebook
Business Manager account in the company's name. Check the signup documentation for details
on this link.

What are the minimum requirements to be able to register?

A Facebook Business Manager account and a valid phone number can receive calls or SMS.

Messaging with Whatsapp

How does Whatsapp Template Messaging work?

Template messages must be submitted to Facebook for review before they are available for use. It
is Facebook that reviews each template and checks that each message complies with their
WhatsApp API guidelines
When to use templates for WhatsApp messaging?

If a customer initiates messaging with you, Facebook will not charge you for any WhatsApp
messages (including Templated Messages) that you send to that customer for up to 24 hours
following the last message that the customer sends to you ("Customer Care Window"). Any
message you send your customers beyond the Customer Care Window must be a Template
Message. WhatsApp does not charge for incoming messages from the customer side or outgoing
messages from the company side as long as they are sent within the 24-hour time window. To use
a message template, WhatsApp wants to approve each message template to avoid spam. Once
WhatsApp has approved your template, you can use the message template to send notifications.
Templates use placeholder values that can be replaced with dynamic content inside double curly
braces when the message is sent. Think of template messages as a conversation starter in a two-
way conversation.

Cost of WhatsApp Template Messages

Template messages are subject to a WhatsApp country-specific price list and will be charged 1:1
to the customer without surcharge.

Visit the WhatsApp Template Messaging guide for more examples and approval tips.

Can I send active messages to the customer?

Yes, but be aware of the details. If a customer initiates messaging with you, Facebook will not
charge you for any WhatsApp messages (including Templated Messages) that you send to that
customer for up to 24 hours following the last message that the customer sends to you ("Customer
Care Window"). Any message you send your customers beyond the Customer Care Window must
be a Template Message. WhatsApp does not charge for incoming messages from the customer
side or outgoing messages from the company side as long as they are sent within the 24-hour time
window. Visit the WhatsApp Template Messaging guide for more information

How do I send active messages to the customer?

You should do that through template messages.

How do my agents send active messages to the customer?

You should do that through template messages.


After the client replies to an active message, does he go to the agent who sent it?

It depends on your current Omnichannel setup, as it can be redirected to a specific department or if


it's public. The message will go to the agent who sent it as long as the agent is active. If not, it will
be redirected to an active agent. See Whatsapp Endpoints for more information.

Technical Questions

How to register a number?

To register a new number,

Copy your newly generated API key on 360Dialog.


On your BANKTEXT workspace, click Connect WhatsApp Number in the omnichannel-
whatsapp-setup channel.
Paste your API key in API Key,

Associate this WhatsApp number with a specific Department.


Set a Welcome Message.
Set a Conversation Finished Message. It is a message sent to your customer when an agent
closes the conversation.
Set a Default message for offline service. It is a message sent to your customer when no agents
are available online.
Click Connect,

Your WhatsApp number is now connected to BANKTEXT.

To learn more, see Broken link .

Could it be a number that has already been used by an Individual? And a Corporation?

Yes, but the number submitted must be a new number that was never used as an API. If the
customer wants to port their number from another broker, 360D provides this service, but it only
works through the standard submission form available via the setup channel. It is important to
remember that once a number is used as an API, it cannot be used again.
Can it be VOIP / 0800 / Landline?

Yes, all of them. You can choose whether to receive the code by call or SMS. So, in the case of a
landline, you can choose the call. In general, those 0800 lines have an audible response unit
(ARU) to distribute the service to the best sector. We also suggest disabling it when you receive
the call or configuring it so that the call reaches a functional line.

After using this phone, can I change the number?

You can't exactly change the number. You can register a new number and then delete the old one.

After using this phone, can I use it again?

A number can only be registered once in the API. If you need, you can migrate to another vendor.
But if the number is excluded, it becomes infeasible.

Is there a chatbot for WhatsApp?

One of Rocket. Chat's strength is its integration flexibility capabilities. It means a variety of chatbot
solutions can now be natively integrated into Rocket. Chat's Omnichannel and offer automated
service on the WhatsApp for Business channel. Bring the power of chatbot automation to
BANKTEXT and provide personalized customer experiences in the world's most popular instant
messaging app.

Support

How to receive support for WhatsApp?

All issues regarding WhatsApp should be dealt with directly with BANKTEXT. Our support team
will be responsible for any contact with 360Dialog or Facebook if needed.

360 Dialog and Facebook: Who supports it and how?

The customer will have an account with 360dialog, but BANKTEXT provides the service and
billing, so the first point of contact should always be us, following the guidelines mentioned above.
Identity Management EE FAQ

What exactly will be implemented on Enterprise Edition (EE) only? When will this be
effective?

BANKTEXT launched a re-factored set of advanced LDAP features on September 28, 2021. The
ability to connect to your LDAP server to sync user names and unique identifiers will remain in the
Community Edition with existing social login features.

Selected advanced LDAP features, including extended user attribute sync, group/team
management, background sync, and SAML integration, will be implemented only in the Enterprise
edition. This change will enable BANKTEXT to support ongoing improvements to our suite of
identity management solutions while continuing to make our primary LDAP directory
synchronization codebase available for use and extension by the BANKTEXT community.

To learn more, visit Identity Management (EE vs CE) .


What LDAP, Active Directory, OAuth, and SAML mean, and how do these things work
together?

Directory service
Directory service is a shared information infrastructure for locating, managing, administering,
and organizing everyday items and network resources, including volumes, folders, files,
printers, users, groups, devices, telephone numbers, and other objects.
E.g., Microsoft AD, NetIQ eDirectory, and Apache Directory.

LDAP
Lightweight Directory Access Protocol is an open, vendor-neutral, industry-standard
application protocol for accessing and maintaining distributed directory information services
that allow sharing of information about users, systems, networks, services, and applications.
SAML
Security Assertion Markup Language is an open standard for exchanging authentication and
authorization data between parties, particularly between an identity provider and a service
provider.
OAuth
Open Authorization is an open standard for access delegation, commonly used for Internet
users to grant websites or applications access to their information on other websites without
giving them the passwords.
E.g. Google, Facebook, LinkedIn, and Twitter.

SSO
Single sign-on is an authentication scheme allowing users to log in with a single ID and

password to any related yet independent software systems.

Why is Identity Management (and authentication/authorization services) important?

Integrating with your organization’s user directory service is essential for always keeping your
users’ access up to date. For example, when someone joins your organization, their Rocket user
can be created automatically, and when they leave, their user can be promptly deactivated. The
bigger the user count, the more significant it gets.
What will community users not be able to do anymore? Examples.

Community users can connect an LDAP service used by their organization to and sync user email,
name, and username; use the fallback option and encrypted settings. Basic SAML sync options
and Oauth for all providers (Apple, Dolphin, Drupal, Facebook, GitHub, GitHub, Enterprise, GitLab,
Google, Linkedin, Meteor, Nextcloud, Tokenpass, Twitter, and WordPress) will continue available
in Community Edition.

View full functionalities

Will the new implementation affect Single Sign-On capabilities? Please explain single
sign-on.

Single Sign-On (SSO) is an authentication scheme allowing users to log in with a single ID and
password to any related yet independent software systems. True single sign-on enables users to
log in once and access services without re-entering authentication factors. This change will not
impact workspaces that use social login capabilities (users sign on via Google, Linked In, etc.).

I've contributed to building LDAP/SAML/Custom Oauth and now I can't use my code.
What should I do?

We are rewriting the LDAP feature to TypeScript and making improvements on top of it. Naturally,
over time parts of the code will be changed. We recognize all portions of our platform had
contributions from our community. For those who contributed to LDAP/SAML/Custom Oauth, we
will ensure it will not negatively impact their operation.

How will this affect my air-gapped (no internet connection) environment? Can’t we just
pull from our intranet easily anyway?

If the BANKTEXT server is air-gapped but integrated with an internal LDAP server, so you must
apply for an enterprise edition license to access the complete suite of advanced
LDAP/SAML/Oauth features when you upgrade.
The reason a division of our team/company uses RC is for security, and/or it is air-
gapped. This LDAP change doesn’t seem to affect us for our purposes – but will this
have some sort of unanticipated effect on our security processes/ability to maintain data
privacy? If so, please explain so we can consider it further.

No there will not be ancillary effects.

What's the "Bind successful but user was not found via search" error?

This error means the login attempt was successful, but a subsequent search for the user on the
LDAP Server yielded no results. To disable this search, turn off the "Find user after login" setting.

How do I stop disabled LDAP users from logging in on BANKTEXT?

Use the "Sync User Active State" setting under Advanced Sync, but it is not yet compatible with
all LDAP Servers.

I cannot log in even though everything looks good

If you cannot log in without getting any error messages (the last thing in the log you see is Attempt
to bind ), make sure the username of your LDAP account does not match any username of a local
account. For example, if you created a local user with the username joe, then enable LDAP and try
to log in with a username joe (who exists on your LDAP server), it will silently fail without any error
message in your log simply saying username or password does not match. You can no longer log
in by joe, your LDAP password, or your local password.

No users are created even if everything looks good

Every BANKTEXT user has to have an email. So either the LDAP users need to have an email or
you have to set a default domain using the setting "default domain".

References

MS LDAP Info
Omnichannel FAQs

How can I set the email field on Live Chat widget optional?

To make the email field on Live Chat widget registration page optional,

Navigate to Omnichannel > Livechat appearance > Registration Form and disable the
Show email field

Then go to Omnichannel > Custom Field and create an email field with the required button
disabled.
Brand and Visual Guidelines
A brief intro to our Brand Guidelines

What are Brand Guidelines?


Our brand guidelines are a collection of information, assets, and general advice to help you by providing
guidance on what our brand consists of, feels like, and looks like.

These guidelines will touch on the following topics:

Logo
Typography
Colors
Patterns
Iconography
Photos
Brand usage examples
Media kit

Ensure to use this guide anytime you feel unsure of which visual path to take when producing content
regarding BANKTEXT.
Logo
Here you will find Guidelines about BANKTEXT's Logo

The logo is one of the primary resources to identify BANKTEXT. So, using it consistently and coherently is
fundamental to strengthening the brand image.

Our vertical variant should only be used when the full logo won't fit, but our brand name must still be
displayed.
Protection area
The proximity to other elements can reduce the visual impact of the logo. When applying any of the versions,
an area of non-interference around the logo must be protected, equivalent to at least three balls from our
symbol.

Position in icons
Whenever placing the BANKTEXT symbol in circular or square formats, use the circle in the center of our
symbol as a reference for centering.
Protection Area
Typography
Here you will find Guidelines about BANKTEXT's Typography

The BANKTEXT typeface family brings flexibility and recognition. Its primary function is to have a fluid
performance in the digital medium. Its unique design also helps to highlight aspects such as modernity,
technology, and simplicity.

Type Scale

We follow a 6px baseline grid for achieving a vertical rhythm on all block-level elements in the app.
Heading XXL
Heading XL
Heading L
Heading M

Heading S

Heading XS

Subtitle L

Subtitle Two

body M

body S

Body XS

CAPTION
Colors
Here you will find Guidelines about BANKTEXT's Color

Our color palette is varied and offers many accent colors to use when producing content for our brand. A
white or light-colored background is favored, with small splashes of color in the form of type accentuation,
images, or small elements that display our brand tones.

A dark background can also be used, but the white type and accenting elements are best for contrast.

Primary

Red is a primary color along with blue, and both should be prioritized in their usage above secondary and
supporting colors. Red is the color of our logo and plays a significant role in our branding. Blue was also
adopted as a primary color for its positive connotations in the tech space. These colors should only be used
on white or corresponding light backgrounds (see supporting colors section). Transparency on these colors
may be altered if used on elements but not on backgrounds and typography. The typography that sits atop
these colors should be white.

Their respective color codes are:

Red: #F5455C

Blue: #1D74F5

Secondary

The following first two colors serve as taste breakers from the usual red and blue and can be used in
iconography, illustrations, typography, and other assets to bring variety to our visual identity. These can also
be used to highlight certain keywords in a title or subtitle but shouldn’t be used as the background color. Our
black and white shades also bring versatility to our brand image, offering more possibilities for typographical
styling and backgrounds.
Their respective color codes are:

Dark Purple: #9F22C7

Light Purple: #CA71E7

Light Green: #2DEDA5

Dark Green: #148660

White: #F7F8FA

Black: #2F343D

Supporting Colors

These lighter shades of our brand colors serve as options for backgrounds, iconography, and other elements
such as images and illustrations. These lighter shades of our brand colors serve as options for backgrounds,
iconography, and other elements such as images and illustrations.

Their respective color codes are:

Red for backgrounds: #FEECEF

Blue for backgrounds: #E8F1FE

Purple for backgrounds: #F5E9F9

Green for backgrounds: #EAFCF6


Highlight Shades

These gradients are a gradient version of the supporting colors and should only be used as the fill for the
highlighting shape, as exemplified on our homepage, behind the second sentence in the subtitle.

Their respective color codes are:

Light red highlight: #FEECEF to #FFFFFF

Light blue highlight: #E8F1FE to #FFFFFF

Light purple highlight: #F5E9F9 to #FFFFFF

Light green highlight: #EAFCF6 to #FFFFFF


Patterns
Here you will find the Guidelines about BANKTEXT's Patterns

Our brand doesn’t rely on repeatable patterns, leaning more on illustrations that reflect our product’s
capabilities and our brand values or are otherwise relevant to complement a certain topic.

Below, you’ll find some versatile examples that can be used to add a bit of our branding to any content you
produce.

See the complete collection of BANKTEXT branded images on our shared google drive folder or
Figma file.

TITLE LAST MODIFIED

Cloud-1.png 3/28/22

Cloud.png 3/28/22

colleagues v1.png 3/28/22

europe.png 3/28/22

Frame 01.png 3/28/22

Frame 02.png 3/28/22

Frame 03.png 3/28/22

Frame 04.png 3/28/22

Pattern Examples
.. ,, ,
I ' , ,.,_ \. ,
•••·II'••

• •••
.',''•:,•:,:,:,',:,,,,,,:,' ,,.
·•·• I_a I
'
._
.. . . ..
..
'
., , ,, , ,,, , ,,
,.•,,
f

• •• •.••.
t

..
• '. ,
I

••• •
t •' .

••••••
•••• ', ', .
-- - -- ... .. .. - ... ...
,,, , -- -- .....
.... ....
,, ....
;
'
,; '
'
,, '
I
,
I
I
I
I
I

'
I
I

'
' \
\
\
\

'' ,
' '' ,,
,,
'
;
.... ,,
.... .... ,
,
... - - - - - - -- -- --
..... .....
Iconography
Here you will find Guidelines about BANKTEXT's Iconography

Our iconography follows the same design principles as the rest of our brand. Utilizing our brand colors as
the focal point, using transparency for a lighter look, simple and clean lines along with to-the-point and easy-
to-understand representations.

Find some examples of our icons on the complete collection of BANKTEXT branded icons.

TITLE LAST MODIFIED

apps 2.png 10/22/21

arrow-circle-up 1.png 10/22/21

bell 1.png 10/22/21

book-medical 2.png 10/22/21

book-open 2.png 10/22/21

book-reader 1.png 10/22/21

bug 1.png 10/22/21

building 1.png 10/22/21

Icon Examples
■■
■+

••
••
Photos
Here you will find Guidelines about BANKTEXT's Photos

Our brand makes use of illustrations in lieu of photography. Although images of people should be included
in these illustrations for both realism and relatability, the focal point should be the product and not the
photography, hence the shift in focus favoring illustration.

We increasingly want to appropriate a unique, contemporary language that conveys our value proposition in
the stories that we are telling. So, we have some guidelines to inspire the way the BANKTEXT style must
be.

Treatment

Our photos are high-temperature and saturated, resulting in a simple, proprietary effect.

Image Bank

First, when choosing a bank image photo, it is necessary to understand the content and context it will bring
to your art. Then you will do the right search and filter for the best image. The more specific your search term
is, the easier it will be to find the right image.
Brand Usage Examples

Examples

Below are some examples of how to use the new BANKTEXT brand from online applications to offline. Be
sure to maintain consistency in applying all elements of the brand.

Brand in use
Live Session

BANKTEXT and D
Nextcloud integration
Your Open Source Digital
Collaboration Hub
April 21st
Save your seat
5:00pm CEST I 11:00am EST

ihhlii·il
Your customers *
\
Mary Smith -

Mary Smith 3:01 PM


@ 0 [

are on Twitter.
• Hello! What is the status of the approval of my loan?

.f rJ.·

Are you?
Agent Mar 3:02 PM
Hi Miss Smith! Could you please send me your bank card numt

'.
1 Mary Smith 3:04 PM

H
Agent Marc 5564 6780 3370 5025
,i·'Ji Onlir,e
i'IARVSmIB

Talk to customer and website [, ·


tJ)ii,
Agent Marc J:06 PM
Thank you! Your loan should be approved by the end of the we
( Mary Smith 3:01 PM

visitors in one place, regardless of Hello!Whatisthestatusof


theapprovalofmyloan?
: Mary Smith 3:10 PM
• Greatthankvou!

how they connect with you. Agent Marc 3:02PM

<tJ'. Hi Miss Smith! Could you Q Yourrnessage...


please send me your bank
card number?

Get started - it's free

+
BANKTEXT
I I I
D BANKTEXT Product Solutions Community Customers Pricing Partners Talk to sales Get started - 1t s free EN V

- Talk to customers

Close the gap between


you and your customers
..
o Mary Smith I!

·-
M ar,sm;,h 3:01PM

M • 1-l•lo!V.'hati>th•st•tu,otlh•approvalotmyloan?

0 AgeotMarc 3:02P
)i, HiMissSmithlCocldyoupl@as•"""'d""''fOU"b•nkcardnum ('

MarySmith 3:04P\1
Talk to visitors and customers in one place, regardless of how they connect with

you.

Ehiiiiiiii If
Agent More 3:G6PM

Thankyoo!Yoorloooshooldbeapprove<Jbyt .e"'1doftheweel<
Get started - it's free ,J, Scroll down

Q Yourmcssage

D BANKTEXT Product Solutions Community Customers Pricing Partners Talk to sales Get started - 1t s free EN V

Enterprise-grade
communications platform for
security-centric organizations
Advanced security, compliance, support, scale and user authentication capabilities to enable your

'"''*
enterprise to safely communicate across teams, with other organizations and customers.

Scroll down
D BANKTEXT Product Solutions Community Customers Pricing Partners Talk to sales Get started - it's free EN V

/ // /,
ata privacy • ii' product-releases

MarkCollins g;QgAM
Hi!@allcould youpleasetakealookatt -
@ 0 0 (9 %,,;

1n every
ProductreleaseSeptember2021

"2 • 2

conversation
.\. Daniel Smith g:Qg AM

Onit!

- 01 0Yesterdayat70:41PM
AmberGarzia g:QgAM

I 1h
ink we need more coo

. ° : :!
0

; d '
°'• Jira 9:10AM
Real-time conversations with
BANKTEXT does yo u rc o e a g u e s, her corn .
everything o th e r pllla t fo r m s do pa nies or customers.
, except exposing your data.
o.
M Yourme,,;,,;ie

Get started - it's free -J., Scroll down


0 ._ @ii
Media Kit
Here you will find Guidelines about BANKTEXT's Modular Compositions

Our MediaKit contains essential resources for producing content regarding BANKTEXT. Complete with our
logo, official fonts, and some supplementary resources to help fine-tune the overall aesthetic of whatever is
produced.

MediaKit_BANKTEXT.7z 2MB
Binary
Development Docs

BANKTEXT Developer documentation has been moved to http://developer.BANKTEXT/


Get Support

If you are using a BANKTEXT's Enterprise Edition deployment, then you can contact the BANKTEXT's
Support Team with your questions.

Enterprise Support

If you are using our Community Edition deployment, you can always rely on our community developers or
our documentation.

Community Resources

Further Information:

Legacy Support
Enterprise Support
Requirements for official support from the BANKTEXT team

Supported Environment
In order to obtain official support from our team, we have a minimum set of requirements. These
requirements are necessary for us to access the essential system information, provide an SLA, answer
questions, or provide a solution for the problem.

Only installations matching these minimum requirements can be covered by our SLAs and our paid Support
Policy. Some requirements may vary depending on the installation size as described in the following
sections.

We require the installation to run the Docker image provided by the BANKTEXT team, this makes it possible
to isolate external factors. It ensures that the support request refers to our application and not to the following
factors.

1. Problems during the compilation process


2. Problems during the installation process
3. Missing or outdated dependencies
4. Installation of non-official versions

This ensures we can provide quick fixes and a more efficient way to reproduce problems leading to the most
efficient support flow possible.

Docker Containers

BANKTEXT versions
BANKTEXT provides support for, at least, 3 months for each release. BANKTEXT provides support for 6
months to the latest releases of each major version, e.g. 1.3 is the latest release of major version 1.x before
major version 2.0. BANKTEXT may provide a longer period of support depending on the necessity, check
the table below to verify the final support date of each release version.

By support, we mean that BANKTEXT will provide only security fixes and answer support tickets related to
configuration and usage for the below-mentioned versions. Bugs not related to security issues will be fixed
only in new versions.

In case of security-relevant bugs, we might decide to backport patches to older releases on a


case-by-case basis. Please understand though, that those will be rare exceptions. If you want to
play it safe, upgrade to the latest stable.
Released
BANKTEXT Release Latest Version End of L
At

6.1 6.1.4 Apr 2023 Jul 20

6.0 6.0.5 Apr 2023 Jul 20

5.4 (LTS) 5.4.8 Apr 2023 Jul 20

5.3 5.3.5 Nov 2022 Feb 20

5.2 5.2.1 Oct 2022 Jan 20

5.1 5.1.4 Sep 2022 Dec 20

5.0 5.0.7 July 2022 Oct 20

4.8 (LTS) 4.8.1 May 2022 Nov 20

4.7 4.7.4 Apr 2022 July 20

4.6 4.6.3 Mar 2022 Jun 20

4.5 4.5.6 Feb 2022 May 20

4.4 4.4.5 Jan 2022 Apr 20

4.3 4.3.3 Dec 2021 Mar 20

4.2 4.2.4 Nov 2021 Mar 20

4.1 4.1.4 Oct 2021 Jan 20

4.0 4.0.6 Sep 2021 Dec 20

3.18 (LTS) 3.18.7 Aug 2021 Mar 20

3.17 3.17.3 Jul 2021 Oct 20

3.16 3.16.5 Jun 2021 Sep 20

3.15 3.15.4 May 2021 Aug 20

3.14 3.14.6 Apr 2021 Jul 20

3.13 3.13.5 Mar 2021 Jun 20

3.12 3.12.7 Feb 2021 May 20

3.11 3.11.5 Jan 2021 May 20

3.10 3.10.7 Dec 2020 Mar 20

3.9 3.9.7 Nov 2020 Feb 20


3.8 3.8.9 Oct 2020 Jan 20
3.7 3.7.4 Sep 2020 Dec 20

3.6 3.6.3 Aug 2020 Nov 20

3.5 3.5.4 Jul 2020 Oct 20

3.4 3.4.3 Jun 2020 Sep 20

3.3 3.3.3 May 2020 Aug 20

3.2 3.2.2 Apr 2020 Jul 20

3.1 3.1.3 Mar 2020 Jun 20

3.0 3.0.13 Jan 2020 Apr 20

2.4 (LTS) 2.4.14 Dec 2019 Jun 20

2.3 2.3.3 Nov 2019 Feb 20

2.2 2.2.1 Oct 2019 Jan 20

2.1 2.1.3 Sep 2019 Dec 20

2.0 2.0.1 Aug 2019 Nov 20

1.3 (LTS) 1.3.5 Jul 2019 Jan 20

1.2 1.2.4 Jun 2019 Sep 20

1.1 1.1.5 May 2019 Aug 20

1.0 1.0.5 Apr 2019 Jul 20

Always update to the latest stable version before reporting any bugs or before ask for help from
the community.

LTS means Long Time Support and it's used to identify the last minor version before a major
version, e.g. 2.4 is the last minor before 3.x. A new major version means that the version
introduced a breaking change and requires attention on the upgrade, so we maintain the support
of the previous version for a longer time in order to give you more time to plan and test the
upgrade.

BANKTEXT Cloud
BANKTEXT manages upgrades and provides support to BANKTEXT Cloud users regardless of the release
version. If a BANKTEXT Cloud user with an outdated server version sends in a support request, his server
might be upgraded to the latest stable version without acknowledgment to ensure the best performance.

BANKTEXT Services

BANKTEXT Services include services such as our push gateway, the marketplace, and other services
managed by BANKTEXT.

October 1st our services will no longer continue to guarantee support for BANKTEXT 0.x. After this date,
you may receive errors or warnings about incompatibility.

3 months after a new major release, e.g. 2.x, the last major release, e.g. 1.x, will have the Services support
deprecated and you may receive warnings about the deprecation. 5 months after the deprecation the
support will be removed and you may receive errors and warnings about incompatibility.

Cloud Service Support

BANKTEXT Release Deprecation Date End of Life D

0.x Aug 2019 Jan 20

1.x Nov 2019 Apr 20

2.x May 2020 Oct 20

3.x Jan 2022 Jun 20

4.x TBD TB

5.x TBD TB

6.x TBD TB

MongoDB versions
Each BANKTEXT release supports different versions of MongoDB, the table below presents the support of
MongoDB versions for each major BANKTEXT release in addition to the deprecated version that will be
removed on the next or subsequent versions.

BANKTEXT only adds or removes support of MongoDB versions on major releases so the minor
versions are ommited on table below.

MongoDB Support
BANKTEXT Release Supported Versions Deprecated Versi

1.x 3.2, 3.4, 3.6, 4.0

2.x 3.4, 3.6, 4.0

3.x 3.4, 3.6, 4.0

4.x 3.6, 4.0, 4.2, 4.4, 5.0 3.6,

5.x 4.2, 4.4, 5.0

6.x 4.4, 5.0, 6.0

The upgrade guides available from the official MongoDB documentation are listed below. Bear in mind that
it's not possible to skip a version when upgrading, e.g. to upgrade from 3.2 to 3.6 it's necessary to upgrade
from 3.2 to 3.4 first and then to 3.6.

Upgrade Replicat Set to 3.4


Upgrade Replicat Set to 3.6
Upgrade Replicat Set to 4.0
Upgrade Replicat Set to 4.2
Upgrade Replicat Set to 4.4
Upgrade Replicat Set to 5.0
Upgrade Replicat Set to 6.0

It's possible to bypass the MongoDB version check by using the environment variable
BYPASS_MONGO_VALIDATION=true . Bare in mind that this work around should be used only when
extrictly necessary and may prevent some functionalities to work properly or even prevent the server to
start.

Browser versions
The ecosystem of browsers has been and still is, an ever-evolving field of change. Since the rate of change
is tremendous, we also have to limit the support to recent browsers. We're usually quite good with that but
some older browsers just don't support some features that we build upon. That is why we limit or support for
browsers in the following way:

We support the following desktop browsers and versions:


Browser Supported Versions

Google Chrome Latest 3 versions

Mozilla Firefox Latest 3 versions

Apple Safari Latest 2 versions

Microsoft Edge Latest 2 versions

Microsoft Internet Explorer Latest version only

There may be small exceptions in rare cases.

That being said, here's how you can find out if your browser version is still supported (all lists include an
indication of a specific browser version is still supported or not):

Version history of Mozilla Firefox


Version history of Google Chrome
Version history of Apple Safari
Version history of Microsoft Edge
Version history of Microsoft Internet Explorer

Hardware
The support is limited to installations matching the requirements described in the Minimum Hardware
Requirements page.

Monitoring
We require monitoring for all supported installations. All installations must continually collect Metrics
regarding the installation's instances and database. BANKTEXT supports the industry-standard
Prometheus + Grafana monitoring stack. Grafana dashboards required for support are available in the
Metrics repository.

Explanations about each metric/graph which help reading and interpreting the data can be found in this
dedicated document here.

Data access
We do not require access to the servers, instances, or databases to provide support, but we may require
access to the logs if we consider them necessary to identify the problem.

Types of logs we may require:


1. Server logs

2. Web browser logs

3. Mobile logs
Enterprise Support Plans
BANKTEXT Enterprise Support Services

BANKTEXT offers a variety of support packages for all customers:

Support Plans

In addition to the various support resources, BANKTEXT offers its customers three different types of support
for our products that are tailored to meet the needs of our diversified customer profiles:

Support Standard: Free for BANKTEXT customers and Trial users


Support Plus: Only available to customers who have contracted this type of support through our sales
channel. Not available in a self-service contract.
Mission Critical: Only available to customers who have contracted this type of support through our
sales channel. Not available in a self-service contract.

Applied for the products: Self-Managed Enterprise, Self-Managed Omnichannel, Self-Managed Chat
Engine, Cloud Enterprise, Cloud Enterprise Omnichannel, and Cloud Enterprise Chat Engine.

What's Included

All support plans offer SLA time frames for first-time response and also include an Account Manager that will
be responsible for ensuring paying customers are successful and get the most out of our product and remain
happy.

Mission Critical plan also offers a dedicated Customer Success Manager (CSM) that will be responsible for
a detailed onboarding process, strategy roadmap design focused on product adoption in line with desired
business outcomes. The dedicated CSM role also includes being a trusted technical advisor and an internal
customer advocate.

Support Channels

There are three ways to contact BANKTEXT for assistance:

1. BANKTEXT Desk Portal (all plans, including trial users)


https://desk.BANKTEXT

Only customer-assigned points of contact can open a support ticket at the Desk Portal.

2. Email (check supported plans)

support@BANKTEXT

The email verification is done through the domain, i.e. email addresses that have the same domain as the
company's domain will be redirected to the customer queue. If the domain is different, or a free domain, for
example, they will not be identified as clients attached to that account.

3. Hotline: (check supported plans)

+1 (833) 479-0110

For emergency cases only (High Severity), customers may contact BANKTEXT through our landline.

Ticket Severity

High Severity

(e.g., system down, main functions affected, a large number of users unable to access, severe performance
problems)

Critical Business Impact: A critical issue occurring in BANKTEXT Services that prevent business operations
from occurring or a large number of users are prevented from working with no procedural workaround.

Example: Data loss or corruption; system crashes; critical functionality is not available; many users cannot
work.

Medium Severity

(e.g., essential functions affected, significant impact on system usage, inconsistent performance)

Normal Business Impact: An issue causing a partial or non-critical loss of functionality on a production
system. A small number of users are affected.

Example: Some systems functions are not available; not many users are impacted; minor performance
problems.

Low Severity

(e.g., small impact to functions, low number of users affected, minor bugs, simple questions)

Minimal Business Impact: Issue occurring on non-production system or question, comment, feature request,
documentation issue, or other non-impacting issues.

Example: Product questions


Tickets created by email are automatically assigned as "Medium" priority and will have the associated
SLA’s according to the account information. Customers entitled to paid support are recommended to raise
tickets on the Support Portal.

Service Level Agreement (SLA)

The SLAs are defined by taking into account the priority, the paid plan/product, and the customer account
status.

The SLA times listed are the time frames in which customers can expect to receive the first response and
are not to be considered as an expected time-to-resolution. BANKTEXT Support team will make its best
effort to address your case as quickly as possible.

Weekday and Weekend Coverage

12x5 - Support Specialists are actively responding to tickets MON-FRI, 8 AM BRT to 8 PM BRT.

24x7 - Support Specialist on-call 24 hours a day, 7 days a week.


Community Resources

We have a great community that likes to give back.

Some great places to ask your questions:

BANKTEXT forums
Stack Overflow BANKTEXT Tag
Server Fault

Our community also often hangs out on our community server.

Some of the channels to get help:

#support channel for help with general BANKTEXT


#ubuntu-snap channel for help with snap installs
#desktop channel for help with the desktop client
#bots channel for help with chatbot scripting

#dev channel for developers needing help developing new features

While the de facto language amongst the BANKTEXT community is English it may be easier for some to
discuss their issues in their native language. Have a look at the following channels to see whether there is a
user group for your language:

#ug_german German BANKTEXT User Group

Remember to have a little patience. Support is provided by other members of the community like you in their
free time.

Reporting Bugs
If you think you have found a bug. Please see Reporting Issues

If you are facing any issue with BANKTEXT, please ensure you follow the following steps before asking for
support. It will save you a lot of time and hassle.

First, you must ALWAYS test on the latest version of BANKTEXT - you can also try https://open.BANKTEXT,
which always runs development versions. A large number of issues are fixed with an update.

You will need some basic information to resolve your issue.

If you haven't got this information at hand, please get it first.

At a minimum, you will need this:


Server Setup Information:

Server hardware: VPS/hypervisor/bare metal


Version of BANKTEXT Server:
Operating System: Ubuntu/Redhat etc
Deployment Method: snap/docker/tar/etc
Number of Running Instances:
DB Replicaset Oplog:

NodeJS Version:
MongoDB Version:
Client information:
Client type: Electron app/React-Native app/Browser and version
A list of the steps requires to replicate the issue.
If we can't replicate it we can't debug it.

(i) Server Setup Information

Server hardware: VPS/hypervisor/bare metal


Version of BANKTEXT Server: 4.6.4
Operating System: Ubuntu/Redhat etc
Deployment Method: snap/docker/tar/etc
Number of Running Instances:

DB Replicaset Oplog:
NodeJS Version: 14.18.3
MongoDB Version: 3.6, 4.0, 4.2, 4.4, 5.0

(ii) Client Information

Client type: Electron app/React-Native app/Browser and version

Search Bug Reports

Have you looked through the bug reports? At least 2 different searches? Opened AND Closed bugs?

A lot of answers can be found there. Please do check the various repos - BANKTEXT itself, the mobile
apps, electron etc.

BANKTEXT server

BANKTEXT server feature requests


React Native Mobile Client

Electron desktop application

BANKTEXT documentation

When searching change the filter box to both open and closed issues like this:

is:issue is open

to

is:issue my search word

e.g.

is: issue theme

Try some variations - you won't hit the sweet spot the first time usually. The more often you do this the better
you will get at learning what to search for and how.

Ask on the Forums

Still stuck?

Please don't open an Issue yet.

The next step is to ask your well-documented question in the forums or BANKTEXT

How to report a bug

It is impossible to diagnose something when you just say 'it's broken'. The helpers are not mind readers.
They cannot see your screen or your set-up. They have not watched you set this up, and the mistakes you
made along the way. They are effectively blind. So you have got to describe things clearly and concisely.

Your problem may appear complex but it is often the basics that catch you out. It is extremely common for
people to miss steps in their setup. It is hard to tell at first if a problem is simple or complex so please be
patient if you get asked 'the stupid questions'. We are just trying to get a baseline and making sure you have
done the basics and trying to understand how you got to this position. Remember, if you phoned the garage
about your car and said 'it runs funny sometimes' what would they ask you? Make, model, age... etc.

This is no different.

Don't hide things away because you are embarrassed. They are most likely going to find out, so you might
as well be honest. We have ALL made mistakes.

Tell us about the problem you were originally trying to solve, not the problem that you are experiencing right
now. Frequently the one you are experiencing now is the result of not understanding or being able to fix the
original issue.

How to Report Bugs Effectively is a great read on the subject.


Bug template

Use this as a template to ask your question. Get all the right information. It will help if you then have to
submit a real Issue.

Complete a bug template

Server Set-up Information:

Version of BANKTEXT Server:


Operating System:
Deployment Method:
Number of Running Instances:
DB Replicaset Oplog:

NodeJS Version:
MongoDB Version:

Some background will help, and will avoid XY issues. Is it a fresh install? Is it an upgraded install? Has it
always been broken? When it did the issue start? Did you make any changes that could have caused it?

Make sure you post some BRIEF log snippets or use https://pastebin.com/

Don't block up the channel with ridiculously long messages.

If your problem relates to a connection to say a database, or LDAP, that might be on another server then
check the logs for those as well.

Here is a great example of a good bug report:

Good bug reporting example

Last, be patient. Answer the questions you are asked. They may appear odd, but they are probably for a
good reason. Debugging is a logical process and you need to help establish the facts first.

Remember, you are the one with the problem. They can just go back to work or their wife and kids and
ignore you.

How to Ask for Help


If you think your issue is urgent, then you have two choices:

Enterprise Edition

Switch to BANKTEXT's Enterprise Edition - https://BANKTEXT/enterprise

Seek free help

Patiently wait for a volunteer to consider helping you.


If you opt for community's help instead of paid support, please notice that:

Most people in the chat are volunteers who will try and help for free
Volunteers do this in their spare time and are not getting paid for this. Please respect them.
Just because it is urgent for you does mean that it is urgent for them
Please answer their questions patiently and help them try and understand your problem
Being rude to them will not help you at all
Please note that posting the same question in several channels will not help you
Please do not DM anyone unless you know them, or they DM you first
Please do not randomly use @ people or @all hoping to get attention
Abuse of these things will not get any help but can get you muted, blocked, or banned.
Don't open a bug yet. When you ask in the channels or forums then devs or other community helpers will
tell you if you really need to open an issue. Frequently if there really is a problem you won't be the first
one to experience it, so always check github carefully for duplicates. Use lots of different search terms
and make sure you check closed Issues as well (see below).
Do not ask the same question in multiple channels. Use the channel (from mentioned) that you think is
most relevant to your issues. Support, React-Native, Ubuntu Snap,Raspberry Pi, Omnichannel,
Desktop, Federation

Is it a feature request?
If BANKTEXT works but doesn't do something the way you want it to then this is a feature request NOT a
bug. You can open a request in Feature Requests.

Go through the documentation

Please go through the relevant documentation at least twice. A lot of the answers can be found there. It is
easy to miss the obvious because you think you know the answer rather than reading to actually
understand.

Open an Issue

Got this far with no solution? If you haven't already been told to do so then open an Issue with all the right
information in the right repo.

Please use the templates provided. Add all the relevant information. And please stick to facts, not opinions,
assumptions, or guesses.
Legacy Support
Support services applied for legacy products

Legacy Support Plans

No longer offered for new purchases since 1st July 2022.

Silver
Bronze
Gold
Pro
Enterprise

Legacy Support Plans are applied for the legacy products: Silver, Bronze, Gold, Pro, and Enterprise.

Support Channels

There are three ways to contact BANKTEXT for assistance:

1. BANKTEXT Desk Portal (all plans, including trial users)

https://desk.BANKTEXT

Only customer-assigned points of contact can open a support ticket at the Desk Portal.

2. Email (check supported plans)

support@BANKTEXT

The email verification is done through the domain, i.e. email addresses that have the same domain as the
company's domain will be redirected to the customer queue. If the domain is different, or a free domain, for
example, they will not be identified as clients attached to that account.

3. Hotline: (check supported plans)

+1 (833) 479-0110

For emergency cases only (High Severity), customers may contact BANKTEXT through our landline.

Ticket Severity

High Severity

(e.g., system down, main functions affected, a large number of users unable to access, severe performance
problems)
Critical Business Impact: A critical issue occurring in BANKTEXT Services that prevent business operations
from occurring or a large number of users are prevented from working with no procedural workaround.

Example: Data loss or corruption; system crashes; critical functionality is not available; many users cannot
work.

Medium Severity

(e.g., essential functions affected, significant impact on system usage, inconsistent performance)

Normal Business Impact: An issue causing a partial or non-critical loss of functionality on a production
system. A small number of users are affected.

Example: Some systems functions are not available; not many users are impacted; minor performance
problems.

Low Severity

(e.g., small impact to functions, low number of users affected, minor bugs, simple questions)

Minimal Business Impact: Issue occurring on non-production system or question, comment, feature request,
documentation issue, or other non-impacting issues.

Example: Product questions

Tickets created by email are automatically assigned as "Medium" priority and will have the associated
SLA’s according to the account information. Customers entitled to paid support are recommended to raise
tickets on the Support Portal.

Service Level Agreement (SLA)

The SLAs are defined by taking into account the priority, the paid plan/product, and the customer account
status.

The SLA times listed are the time frames in which customers can expect to receive the first response and
are not to be considered as an expected time-to-resolution. BANKTEXT Support team will make its best
effort to address your case as quickly as possible.

Weekday and Weekend Coverage

12x5 - Support Specialists are actively responding to tickets MON-FRI, 8 AM BRT to 8 PM BRT.

24x7 - Support Specialist on-call 24 hours a day, 7 days a week.


On Call Coverage and First Response SLA

Low Severity SLA High Severity SLA

Bronze Desk Portal


Email 24x7 4 Business Days 24h 2h
Pro
Hotline
Cl)
Silver Desk Portal
C :
ro Email 24x7 2 business Days 12h 1h
0:: Hotline
>,
Gold Desk Portal
gi Enterprise Email 24x7 1 Business Day 6h 30min
...J Hotline
Contribute to BANKTEXT
Github Sponsorship

You don’t have to be a developer to contribute to BANKTEXT. You don’t even have to be technical. Many of
our community contributors support the BANKTEXT open source projects directly through Github
Sponsorships.

The following should answer the questions you may have regarding sponsorship.

How do I become a BANKTEXT sponsor?

1. Go to https://github.com/sponsors/RocketChat.
2. Select the sponsorship tier you want.
3. Add a payment method.
4. Click on Sponsor BANKTEXT.

Notice that plans $5 a month and above include a mobile push notification increase benefit. To apply to your
workspace, click https://sponsorship.BANKTEXT and select the workspace you would like.
Annual Contribution Programs

Welcome to BANKTEXT contribution programs!

Whether you're a developer, designer, writer, or just someone passionate about open source, BANKTEXT
participates in annual contribution programs, and we welcome your contributions to our project.

BANKTEXT is an open-source team chat and collaboration platform that has grown rapidly in popularity.
Thanks to our community of contributors who have helped us develop new features, fix bugs, and improve
the user experience.

The annual contribution programs provide an opportunity to get involved with the BANKTEXT ecosystem
and BANKTEXT projects. These programs include:

Google Summer of Code (GSoC): An annual program that allows university students to work on open-
source projects over the summer.
Google Season of Docs (GSoD): An annual program that allows technical writers to work on open-
source projects and improve their documentation and gain experience.

Each program has unique requirements and benefits, but all offer a chance to learn new skills, work with
experienced mentors, and make a meaningful contribution to the open-source world.

Open source is about collaboration and community; we're excited to have you join us.
Google Summer of Code

Welcome to BANKTEXT and thank you for your interest in contributing through the Google Summer of Code
(GSoC) program. We're excited to have you join our community of contributors.

BANKTEXT is built on modern technologies like Node.js, MongoDB, and React and is designed to be
customizable, scalable, and integrable with other solutions. We're proud to have a growing community of
users and contributors helping us improve the product and create new features.

As a GSoC contributor to BANKTEXT, you'll have the opportunity to work on a specified project or feature
with guidance and support from mentor(s). You'll also collaborate with other developers and contributors and
learn new skills and technologies.
Google Summer of Code 2023

How to apply
Application for Google Summer of Code 2023 is now closed. Please see official Google Summer of Code
site and the official 2023 timeline. Accepted contributor projects will be announced on the official site on
May 4th.

BANKTEXT is proud to be a participating mentoring open source organization for Google Summer of Code
2023. This marks the exciting 7th year of participation in this 18 years-old program to usher in a new
generation of open source contributors and enthusiasts.

Almost anyone in the world over 18 years of age who loves coding and wants to explore the incredible world
of open source can join us as a GSoC 2023 contributor.

For details and rules of Google Summer of Code 2023, please see the GSoC 2023 Official Website. For
timeline, see Official Google Summer of Code 2023 Timeline for more details.

Contacting BANKTEXT

For general information, please visit our 24 x 7 community channel for Google Summer of Code 2023 :
https://open.BANKTEXT/channel/gsoc2023

Join our Google Summer of Code 2023 Team today and interact with over 800 like-minded
contributors/mentors and meet the team in the 20 team channels.

If you have ideas and proposals that are not on our idea list, or if a mentor is not available, you can also
email to:

gsoc+2023@BANKTEXT

Interested contributors are also encouraged to interact directly with our team and community on the team
channels:

https://open.BANKTEXT/channel/gsoc2023/team-channels

As well as on GitHub:

https://github.com/RocketChat/BANKTEXT

Those who prefers forums can post messages on our GSoC forum channel (although as the leading open
source team chat project we prefer you use BANKTEXT channels above to reach us instantly).
Latest update

Update April 10th, 2023 Holiday weekend Code Walkthrough.


While mentors continued to review the proposals we have received, we held a code walkthrough (How to
add a REST API endpoint in BANKTEXT server) session to help our community contributors over the
Easter holiday weekend. Thanks goes to the 19 attendees of this live Saturday afternoon (night) session.

Update April 5th, 2023 Record-breaking 197 proposals received from our community !

Thank you (to the 811-members-strong BANKTEXT GSoC 2023 community) for the unprecedented support
for open source and for the BANKTEXT organization in particular ! We have received a total 197
proposals this year - far exceeding the total of 83 proposals from 2022.

Mentors will be busy reviewing the proposals over the next weeks. We will continue to engage and interact
with the community and sub-communities (around the different projects) with fun and learning events this
month. Stay tuned.

Update April 3rd, 2023 Amazing 800-strong BANKTEXT GSoC 2023 community !

Community growth momentum continued with us reaching 800 global members this week. Thank you
everyone for your kind support for open source and BANKTEXT !

This week we held our annual BANKTEXT Google Summer of Code Alumni Summit 2023 In this event,
we invited GSoC alumni from our past six years to come back and share their open source impacted life
experiences and also some GSoC tips with this year's contributors. We had great response - 7 alumni held
sessions throughout the day and 110 attended the live sessions. The event is recorded and is now
avaialble for all.

As submission deadline approaches, we now have 33 mentored project ideas with 30 mentors and 8 of
our mentors this year are GSoC alumni from prior years!

With a whole day before submission closes, we have already received 103 proposals - far exceeding prior
year's final count.

As of this week, we have 330 code contributors on our contributors leaderboard. Responsible for 69
Merged PRs, 80 Open PRs, and 187 Issues!

Update March 28th, 2023 Thanks to our SEVEN HUNDRED and FIFTY strong community!
Momentum of community growth continued throughout the week. **** Now, the BANKTEXT GSoC 2023
community stands at an unprecedented 750+ globally diverse members collaborating 24 x 7 at our GSoC
2023 Team Channels.

Almost everyone is fully engaged with their mentors in discussion of the THIRTY MENTORED PROJECT
IDEAS this week. Mentors are busy helping contributors and reviewing early drafts of proposals. Some
contributors have already submitted proposal through their GSoC portal - as of this week we have received
30 early proposal submissions.

A large group of mentors assembled to run a Proposal Workshop over the weekend to help contributors in
writing their proposals and to show them how mentors typically select the winning proposal. The event was
extremely well received with over 47 attendees. Many of them shared their work-in-progress proposals for
in-session live review. Thanks go to all the contributors for supporting this event and to the tireless mentors
showing up Sunday early morning to help our keen contributors.

As of this week, we have 314 code contributors on our contributors leaderboard. Responsible for 68
Merged PRs, 70 Open PRs, and raising 173 Issues!

Update March 21st, 2023 Shout out to our 2023 community of SIX HUNDRED !

Proposal submission is now open! We are extremely grateful for the enthusiastic participation and support of
our contributors. The learning curve for BANKTEXT's huge production code base is known to be extremely
steep and many of them are getting a head-start even before the announcement of the GSoC 2023 program.
Joining us as early as January this year!

Currently, the BANKTEXT GSoC 2023 community stands at an unprecedented 670 globally diverse
members collaborating 24 x 7 at our GSoC 2023 Team Channels.

To accommodate this huge community of interested new contributors we have an unprecedented 43 new
innovative project ideas for them to choose from. The list of ideas is consolidated down to 25 active ideas
on March 21st based on contributors' interest and mentors' availability. We currently have 27 mentors
working with the new contributors, 6 of our mentors are actually prior year BANKTEXT GSoC alumni !
We are extremely proud of our mentors community this year.

We have conducted multiple live Ask Me Anything (resolving general GSoC logistic questions) sessions as
well as Code Walkthrough sessions for back-end, front-end, apps (and much more). Sessions were all well
received with 10 to 25 new contributor attendees each.

Check out our GSoC 2023 Contributors Leaderboard, to see their amazing contributions: 55 Merged PRs,
44 Open PRs, and 141 Issues as of March 21st, 2022.\

Project Ideas
This current project ideas list is below, with full mentor assignments. Due to the large number of mentors,
ideas and contributors this list may still be subjected to minor changes.
Whiteboard Integration

Mentor(s): Shiqi Mei, Douglas Gubert

Description:

White boards and visual drawing/concepts sharing has become a stable of team collaboration. BANKTEXT
currently does not offer any whiteboarding feature. Markboard is an open source incumbent whiteboard
created upon the same technology stack as BANKTEXT and built by a team led by a BANKTEXT GSoC
alumni. This project will create a BANKTEXT App that integrates Markboard into BANKTEXT and extends
its team collaboration features through BANKTEXT.

Desired Skills: Advanced Typescript. MeteorJS. BANKTEXT Apps development.

Goals/Deliverables: BANKTEXT App integrating Markboard into BANKTEXT. The App should extend
team collaboration capabilities of Markboard in conjunction with our Team Channels feature.

Project Duration: 350 hours. (Large)

Difficulty: Advanced

Guided RC Code Walkthrough and Tutorial

Mentor(s): Kevin Aleman

Description:
Most BANKTEXT developers uses VSCode when studying our massive production code base, and when
writing new code. VSCode is the best environment for conducting interactive tutorial and code
walkthroughs. The CodeTour extension available in VSCode can be used to create such walkthrough and
tutorials. This project involves the development of a set of guided tutorials using CodeTour that will help new
developers to understand how to perform multiple actions. Paths to be documented will go from this areas:

How a message is sent


How to create an endpoint
How to add a new service
How to create a DB model
How to use DB models
How services interact between them
How to build a lib
How to navigate monorepo (where is everything, how's imported, etc)

We welcome any additional ideas you may have.

Desired Skills: NodeJS, MongoDB

Goals/Deliverables: A set of guided tours from the topics described above

Project Duration: 175 hours. (Medium)


Difficulty: Easy/Medium

Flutter SDK for BANKTEXT

Mentors: Sing Li, Debdut Chakraborty

Description:
In recent years, Flutter has became the de-facto standard for high performance open source multi-platforms
apps development. Thanks to its huge global developers community and the ever-growing ecosystem of
open source flutter components.

This project aims to create an easy to integrate flutter component to embed BANKTEXT into any existing
and new flutter applications (similar to our existing EmbeddedChat project). In addition, a layer of Dart
friendly API/stub needs to be created for application that needs in-depth modification of chat behavior or
needing to use the chat engine as a messaging fabric.

We invite and welcome original proposals at varying level.

Desired Skills:

Flutter, Flutter components construction, Dart, JavaScript. A thorough understanding of how BANKTEXT
core works. Knowledge of Flutter multi-platform development (Android, iOS, Linux, Windows and MacOS).

Goals/Deliverables:
An SDK that enable easy embedding of RC instances into any flutter app plus Dart APIs to access RC
collaboration engine internals.

Project Duration: 350 hours (Large)

Difficulty: Advanced

Mobile App Share Extension Update

Mentors: Daniel Silva

Description:
Rewrite our current mobile apps share extension in Swift for iOS and Kotlin for Android, making sure that it
supports the latest ReactNative Fabric architecture.

Desirable Skill: Advanced ReactNative. Good knowledge of native iOS and Android development. Passion
for creating great mobile experiences.

Project Duration: 175 hours (Medium)

Difficulty: Advanced

Scaled botpress Connector

Mentors: Duda Nogueira, Yash Rajpal


Description:
botpress is a highly popular open-source chatbot construction kit and one of the pioneers in that field.
BANKTEXT has long worked with botpress with a variety of connectors, including one currently in our
Marketplace.
However, these connectors are relatively simple and applicable to very basic in-channel interactions -
typically servicing a few users or channels only.
This project aims to create a new botpress connector app that will work and scale with new microservices
architecture to deliver:

multiple (hundreds) of bots running concurrently and user-friendly way of managing them
support for every aspect of omnichannel operation
improved rendering of messages

introduce new APIs that can fascilitate chatbot operation


be the de-facto full-featured example on how to interface BANKTEXT to a Chatbot platform

Desired Skills: Typescript, BANKTEXT Apps, botpress internals, BANKTEXT Apps.

Goal/Deliverable: A working botpress connector suitable for deployment of production Chatbots at scale.

Project Duration: 350 hours. (Large)

Difficulty: Medium

Improved BANKTEXT Translations (i18n)

Mentors: Douglas Fabris, Duda Nogueira

Description: BANKTEXT is widely used all over the world in multiple languages. Having a welcoming and
vibrant community of translators and reviewers is essential to make sure we can deliver the best localization
possible.

This project aims to both convert today's i18n to work with community friendly open source translation
platform such as weblate and kick-off a translation community.

Desired Skills: Advanced Typescript. Familiarity with i18n platform and technologies, weblate preferred.

Goal/Deliverable:

BANKTEXT's i18n working with weblate hosting our community of translators.


Documentation on how to contribute with BANKTEXT with translations

Project Duration: 175 hours. (Medium)

Difficulty: Medium

Miro App

Mentors: Mustafa Hasan Khan, Rafael Tapia


Description:

integrate Miro features into BANKTEXT for daily use by team collaboration users. It should include as a
minimum for collaboration teams to:

* use PlantUML to create boards


* assign boards to channels and team channels
* create sticky notes and pin to channel
* receive notifications directly if someone is mentioned on Miro
* other innovative features of your choice

Desirable Skills: JavaScript/TypeScript, ReactJS, MIro APIs

Goal/Deliverable: Working Miro BANKTEXT App supporting team collaboration users.

Project Duration: 175 (Medium)

Difficulty: Easy/Medium

Moderation Console Mute User Action and Emoji Votes

Mentors: Devanshu Sharma

Description:
Moderation console for BANKTEXT enables moderators to examine reported messages and then take
action against the individuals who post them. A simple set of action is already included. In this project you
will add the action to allow muting of the user for a specific duration.

Currently, the only way to submit messages for moderator's review is to report the message. This project will
add a mini-reputation system, through voting with special emojis, to assist the moderator in deciding what to
do with the reported user. A count of special emojis against a message can be used to determine the
number of users that find a particular message offensive.

Desired Skills:
ReactJS, TypeScript, MeteorJS. A thorough understanding of Moderation Console operations. Knowledge
of how to expose additional core features to Apps.

Goals/Deliverables:
Mini-reputation system enabling users to mark messages using special emojis. Additional action for
moderation console allowing user to be muted by moderator for some durations (5min, 1 hour, or any custom
minutes)

Project Duration: 175 hours (Medium)

Difficulty: Easy/Medium

Embedded Chat 2023


Mentors: Sidharth Mohanty

Description:
A BANKTEXT channel can be embedded into some existing web application via the Embedded Chat
component. Currently, the available integration surface and features of Embedded Chat is rather limited.
This project aims to significantly expand the applicability of Embedded Chat for a wider range of web
applications - including the most popular frameworks such as Vue, Angular, Svelte, React Native; and
hosting platforms such as WordPress and Ghost; web application developed in Java, PHP and Python.
Embeddability via HTML . Customizability needs to be improved with theme kit, as well as a way to enable
users to supply custom CSS. Features we still need includes the support of all authentication methods that
the hosting server has activated, file/media attachments, sending audio messages, autocomplete mention
search, and in-chat RC-App slash-command access. Realtime messages transport needs to be improved to
avoid 429. Last but not least, we need to greatly improve the first-time developer experience by supplying
better server startup, testing, and e2e testing devops and via gitpod-ization.

Desired Skills: React and NextJS. Absolute in-depth knowledge of Embedded Chat project. Thorough
understand of modern web application development platform and technologies.

Goal/Deliverable: Embedded Chat working with most current web application building technologies, and
updated with missing essential features. Ideally also improved realtime transport as well as first-time
developer experience.

Project Duration: 350 hours. (Large)

Difficulty: Medium

Mobile Media Carousel Component

Mentors: Diego Mello

Description:
Implement a new mobile media carousel component that can:

open any media (image, video, audio, doc, etc)


swipe horizontally to navigate to previous/next
support async delayed video playback semantics

Desirable Skills: Advanced Typescript, advanced React Native.

Goal/Deliverable: A media carousel component for our mobile apps.

Project Duration: 175 hours. (Medium)

Difficulty: Medium/Advanced

GitHub Pull request reminders app


Mentors: Murtaza Patrawala, Samad Khan

Description:
Have you ever faced challenges keeping track of your pull request reviews as a student? This is a common
problem faced by many development teams. That's why we propose developing a pull request reminder app
for BANKTEXT as a part of the Google Summer of Code program. For now, we’re isolating the scope of this
project to GitHub.

The app's goal will be to provide regular reminders and updates to keep the review process moving and
help ensure that pull requests are being reviewed and discussed in a timely manner. This project will be
built on top of this existing GitHub App which already has a bunch of boilerplate code to deal with
authentications and GitHub APIs.

One approach to solving the issue of pending pull requests is to create a separate BANKTEXT channels for
each pull request (This is a proven strategy organizations already use on Slack. Check here for more info).
This way, all relevant stakeholders can be added to the channel, including the author of the pull request, the
reviewers, and any other team members who need to be informed about the status of the review.

The BANKTEXT channels can serve as a dedicated space for discussion and collaboration around each
pull request. Users can receive notifications about updates to the pull request, such as new comments or
changes to the code. This helps keep everyone informed and ensures the review process stays on track.

Example text message for BANKTEXT channel:

" Attention reviewers! This pull request has been pending for [number] days now. Let's make sure to
give it the attention it deserves and keep the review process moving forward "

In addition, the users can also opt-in to receive a direct message from the bot at the start of their workday,
with a comprehensive list of all the reviews that need his/her attention.

Example DM text messages:

1. " Time to give those pull requests some love! You've got [number] pending review(s) waiting for you.
Don't keep your fellow developers waiting "
2. " Don't let those pull requests get forgotten! You've got [number] waiting for your review. Let's get to
work "

3. " It's time to move those pull requests forward! You've got [number] waiting for your review. Give them
the green light "

By using BANKTEXT channels to manage the review process, teams can improve the visibility of their pull
requests and ensure that they are being reviewed and discussed in a timely manner.

PS: For more inspiration on how to solve this issue, please refer to some of these solutions on other
platforms.

Pull Remind
Axolo
Desirable Skills: Advanced Typescript; Knowledge about Github API's; BANKTEXT app-engine
Framework; Familiarity with existing Github App

Goal/Deliverable: A working BANKTEXT app which sends pulls request reminders to BANKTEXT users.

Project Duration: 175 hours. (Medium)

Difficulty: Easy/Medium\

Enhanced media handling for mobile message composer

Mentors: Daniel Silva

Description:

This project consists of two major tasks:

Copy any media from other platform apps to the message composer (on mobile)
Add option to copy media to platform clipboard (on mobile)

The implementation should operate across all the mobile platforms that BANKTEXT support. Including
iOS and Android, form factors from phone to tablet.

Desired Skills: Advanced Typescript, advanced React, advanced React Native.

Goal/Deliverable: Composer ability to accept copy/paste media from other platform apps and the option to
copy media to clipboard.

Project Duration: 175 hours (Medium)

Difficulty: Medium/Advanced\

Introduce Captcha to Livechat Widget

Mentors: Murtaza Patrawala, Kevin Aleman

Description:
RocketChat is a popular open-source communication platform, but it is not uncommon for spammers to take
advantage of its live chat widget to send unwanted messages. To mitigate this issue, a CAPTCHA solution
should be implemented in the live chat widget. This project aims to integrate a CAPTCHA mechanism in
RocketChat's live chat widget to prevent spam messages from being sent.

The solution should allow users to prove that they are human by completing a simple CAPTCHA task before
sending a message. This will help to reduce the number of spam messages and improve the overall user
experience.

Key Deliverables:
Integration of a CAPTCHA solution in RocketChat's live chat widget
A comprehensive testing suite to ensure that the CAPTCHA is working as expected

A user guide to help users understand how to use the new CAPTCHA feature in the live chat widget

Note: The CAPTCHA solution should be accessible to all users, including those with disabilities, and
should not negatively impact the user experience.

Desirable Skills: React (Mid-level); Familiar with BANKTEXT Livechat

Goal/Deliverable: Captcha integrated within Livechat widget

Project Duration: 175 hours. (Medium)

Difficulty: Easy/Medium

Live Preview Message Composer

Mentors: Hugo Costa, Martin Schoeler

Description:
Make the message composer live preview feature instead of just adding markdown tokens that styles/parse
the message in the Message List.

E.g: If the user press Bold button in the message composer actions that has the message "Test Message" or
wrap the message in asterisk nowadays it shows:

Current output: *Test Message*

Desired output: Test Message

Desirable Skills: Typescript (mid) and React (mid)

Goal/Deliverable: Live preview in message composer

Project Duration: 175 hours (Medium)

Difficulty: Easy/Medium
Agile BOT

Mentors: Gabriel Casals & Tiago Evangelista

Description:
Agile adoption is increasing year to year on the different industries. There is an opportunity to add agile
package bots to help squad with reminders, links and facilitate attendance to meeting based on simple
calendar inputs and emoji reactions. Candidate will be working with Agile experts and Engineers to build
some solutions for this space and help improve team/squads productivity. Successful contributor will
propose and implement a Chatbot that solves a problem in agile. Candidate have a free choice of
technology to implement the chatbot - RASA, Botpress, Dialogflow, and so on.

Desirable Skills: Familiarity with TypeScript development. Demonstrated interest and/or passion in Agile
and squad productivity tools.

Goal/Deliverable: A working chatbot that can improve agile team productivity

Project Duration: 175 hours. (Medium)

Difficulty: Easy/Medium

Token Economy for Team Channels

Mentors: José Paulo

Description:
BANKTEXT has Team Channels to handle sub-communities wanting autonomous control over their
membership within a scaled server (possibly servicing tens of thousands of users).

This project aims to provide such sub-communities / teams with a mean to:

mint their own erc-20 token, unique to the team


distribute the tokens to the members of the team
enable tokens to be securely exchanged between members within the team channels

The implementation can also work optionally with blockchains and tokens from other providers - but this is
not mandatory. Integration with a wallet is implied but novel alternative solution will also be accepted. It can
be implemented as a BANKTEXT App or extension to core, or both.

Desirable Skills: Thorough understanding of BANKTEXT core. Working experience with modern Web3 /
blockchain technologies. BANKTEXT App development experience. Advanced Typescript

Goal/Deliverable: Ability to mint, distribute, and exchange unique erc-20 tokend within a "team".

Project Duration: 350 hours. (Large)

Difficulty: Medium/Advanced
Off the Record Messaging for Mobile (OTR)

Mentors: Reinaldo Neto, Daniel Silva, Diego Mello

Description:
Off the Record Messaging is a very popular and well loved feature of BANKTEXT desktop and web client. It
enable two parties to securely exchange encrypted message while both side are online, and not have the
encrypted conversation be persisted in the chat history. However our mobile app currently does not support
this. This project will add OTR support to our mobile apps.

Desired Skills: Advanced ReactNative. Knowledge of native Android and iOS app development.

Goals/Deliverable:
OTR working on both iOS and Android apps.

Project Duration: 175 hours (Medium)


Difficulty: Medium\

AI Moderation APP

Mentors: Rafael Tapia

Description:

Offensive/sensitive content detection by AI. Ideally both images/text will be processed. Proposals that
extend the existing work on the AI Moderation project, as well as brand new approaches will be welcomed.
Proposal should also address scaling and cost of the solution.

Desirable Skills: TypeScript(mid), TensorFlow(mid)

Goal/Deliverable: An app that uses TensorFlow AI to verify images/texts and flag them when has harmful,
toxic, or offensive content and block.

Project Duration: 175 hours (Medium)

Difficulty: Medium/Advanced

UiKit Playground 2.0

Mentors: Guilherme Gazzo, Tasso Evangelista Pinto, Diego Sampaio

Description:
BANKTEXT UiKit is the protocol/tool that allows BANKTEXT apps to add new (both web and mobile)
elements to the current UI.

People often do not imagine what is possible to do with the protocol. That's why the playground idea.

Nowadays we already have a version of the playground, so it is already possible to visualize the main
functionalities, but it is still not the full experience desired.
Desirable Skills: TypeScript, React

Goal/Deliverable: The objective is to add other functionalities that improve and encourage the development
of apps. Features such as templates, workflows simulation, connecting to a workspace and also
sending/sharing the prototypes through BANKTEXT are the main goals of the project

Project Duration: 350 hours (Large)

Difficulty: Medium/Advanced

Integrate Notion via RC App

Mentors: Bárbara Zanella, Samad Khan

Description: Create pages and receive notifications inside BANKTEXT

Desirable Skills: JavaScript/TypeScript, ReactJS

Goal/Deliverable: Work as if you were creating documents in notion without leaving BANKTEXT

Project Duration: 175 hours (Medium)

Difficulty: Easy/Medium

Summarizing Live Chat Conversations using OpenAI's ChatGPT

Mentors: Lester Coyoy, Murtaza Patrawala

Description:
The goal of this project is to develop a solution that utilizes OpenAI's ChatGPT to generate a concise
summary of live chat conversations within BANKTEXT. This will provide managers with a quick and
efficient way to stay up-to-date with live chat conversations, allowing them to make informed decisions
without having to spend time reading through lengthy conversations.

Desirable Skill : Strong programming skills in Typescript. Familiarity with natural language processing and
machine learning. Familiarity with BANKTEXT and its Apps-engine. Knowledge about OpenAI's ChatGPT
API is a must.

Goal/Deliverable: A BANKTEXT app that retrieves live chat conversations from the BANKTEXT apps-
engine. Use of the OpenAI ChatGPT API to generate a summary of the conversation. Storing the generated
summaries in a database for later retrieval and analysis.

Project Duration: 175 hours. (Medium)

Difficulty: Easy/Medium

Next Generation Desktop Apps on Tauri

Mentors: Jean Brito, David Alen


Description:
Today our Desktop app is done in ElectronJS. Tauri is a new framework that is catching eyes for desktop
apps development. The idea is to create a new Desktop app using Tauri to test it viability and capabilities.
You will be creating a desktop app for one platform with all the main features like notifications, tray icon,
downloads and settings panel. With this app we can see what Tauri can do for us and maybe one day
become our main desktop app framwork.

Desirable Skills: Desktop applications development, Javascript/Typescript and a little of Rust experience is
a plus.

Goals/Deliverable: A desktop application for BANKTEXT using Tauri framework.

Project Duration: 350 hours (Large)

Difficulty: Advanced

Improving Mobile Apps UX

Mentors: Reinaldo Neto

Description:
Improving the user experience on our current mobile apps with:

improved video UX (thumbnails, full screen etc)


Set background color (instead of rn-root-view) - ref
Migrate store reveiw - ref
Migrate screen orientation - ref
Migrate navigation color bar - ref
Migrate document picker - ref

Desirable Skills: Advanced Typescript. Advanced ReactNative.

Goal/Deliverable: Improved BANKTEXT Ux impacting millions of users.

Project Duration: 175 hours. (Medium)

Difficulty: Medium

Jitsi Meet x BANKTEXT


Mentors: Sidharth Mohanty, Sing Li

Description:
Jitsi meet has become one of the most popular and frequently used open source video conference platform
in the world. The chat that is included as part of the Jitsi system is rudimentary and chat history is lost as
soon as the conference is over. This project leverages our existing EmbeddedChat project to integrate an
embedded version of BANKTEXT into Jitsi Meet - giving it a rich messaging experience with full history after
conference.

Ideally we would like an integration at the Jitsi Meet React SDK level. Perhaps extending the
<JitsiMeeting/> tag with a useRCForChat attribute. The integration should maintain prosody as the single
source of truth for channel membership. A variety of server authentication scenarios must be catered for
(including SSO and Oauth).

Desired Skills: React Native, in-depth knowledge of EmbeddedChat project, familiarity with Jitsi Meet,
understanding of prodigy.

Goal/Deliverable: Jitsi Meet with BANKTEXT embedded in place of existing chat.

Project Duration: 350 hours. (Large)

Difficulty: Medium/Advanced\

QuickAnswer Bot

Mentors: Debdut Chakraborty

Description:
The goal is to develop a bot that can help reduce repetitive questions asked in BANKTEXT channels by
providing relevant answers from its knowledge base (Similar to this Slack app)

Features:

1. Knowledge base: The bot will have a knowledge base of all previously answered questions and their
answers.
2. Real-time scanning: The bot will scan the BANKTEXT channels in real-time for new questions and
check if it has a relevant answer in its knowledge base.
3. Private response: If the bot finds a relevant answer, it will send the answer privately to the person who
asked the question, without interrupting the public conversation.
4. Analytics (optional): The bot will keep track of the number of repetitive questions answered and provide
analytics to the administrator.

Technologies to be used:
BANKTEXT apps-engine
Natural Language Processing (NLP)
Elasticsearch (a suggestion, but I’m open to any other good alternatives)

With Elasticsearch integrated into the tech stack, the bot can leverage the powerful search and analysis
capabilities of Elasticsearch to efficiently search through the knowledge base and provide accurate answers
to the user's questions. Here’s a good blog to get started.

Desirable Skills: Advanced knowledge of Natural Language Processing (NLP); BANKTEXT apps-engine;
Experience using chosen indexing framework like ElasticSearch

Goal/Deliverable: A BANKTEXT app that suggests relevant answers to new messages in a channel, based
on past messages. Plus an additional service is used for indexing messages.

Project Duration: 350 hours. (Large)

Difficulty: Medium/Advanced

Open source Metaverse integration (mozilla hubs / third room)

Mentors: Hugo Costa, Sing Li

Description:
One very popular interpretation of the "Metaverse" is group interactions within a real-time rendered 3D
Virtual Reality world. Mozilla Hubs has been the leading open source project in this space for the last
decade. Due to the limitation (and cost) of today's technology, however, hub has always had limited
scalability. Rooms can contain 20 to 30 attendees. Another similar technology proof of concept has emerged
recently in Third Room. While BANKTEXT as a collaboration platform has re-architectured to handle
millions of users - and through federation, the world; we have also implemented Team Channels to deal with
very large communities wanting autonomous control over their membership. This project is to create a
rational integration between Mozilla Hubs (and/or Third Room) and BANKTEXT team channel - enabling a
pragmatic version of "the metaverse" to be built organically.

We welcome original proposals at different levels of integration. It can be a direct extension of core, an
external bridge, a link preview-extension, or even a BANKTEXT App.\

Desired Skills:

ReactJS, TypeScript, MeteorJS. A thorough understanding of how BANKTEXT core works. Knowledge of
BANKTEXT Apps development. Passion for improving human communications and collaboration.

Goals/Deliverables:
Working integration of Mozilla Hubs rooms within BANKTEXT Team Channels in a rational and usable
context.

Project Duration: 350 hours (Large)

Difficulty: Advanced
Integrate Asana via RC App

Mentors: Dhruv Jain

Description: Create and assign tasks without leaving BANKTEXT

Desirable Skills: JavaScript/TypeScript, ReactJS

Goal/Deliverable: The objective of this project is to be able to manage tasks without having to enter the
Asana UI

Project Duration: 175 (Medium)

Difficulty: Easy/Medium

Toggl App

Mentors: Mustafa Hasan Khan, , Bárbara Zanella

Description:
Integrate the essential features of Toggl for team collaborating with BANKTEXT. The app should include as
a minimum the ability to:

* create time entries with one single slash command


* create projects and get approval from superiors to start work on it
* managers or admins should be able to track time worked by team and/or project
* other innovative features of your choice

Desirable Skills: JavaScript/TypeScript, ReactJS

Goal/Deliverable: BANKTEXT App integrating Toggl for teams and team member collaboration.

Project Duration: 175 (Medium)

Difficulty: Easy/Medium\

Android Auto

Mentors: Diego Mello, Daniel Silva

Description:
Create a sensible implementation of BANKTEXT for Android Auto.

Desirable Skills: Advanced Typescript. Android and Android Auto development experience.

Goal/Deliverable: BANKTEXT for Android Auto

Project Duration: 175 hours (Medium)

Difficulty: Advanced\
Penetration Tests and Potential Vulnerabilities Fixes

Mentor(s): Igor Rincon

Description:
Security is critical to any open source project that works with user data over the web, and BANKTEXT
recognizes the importance of safeguarding confidential information. Web application security and
penetration testing involve identifying potential vulnerabilities, evaluating risks, conducting tests, and
implementing countermeasures to prevent unauthorized access.

The focus of the project is going to be conducting security research on the BANKTEXT open-source project
and identifying and repairing specific security vulnerabilities that will be found.

For this project, the automated and manual security tests, including static analysis, penetration testing, and
vulnerability scanning will be maintained in the BANKTEXT open source pentest repository.

In addition, the proposal should include some continuous integration tools to prevent the introduction of new
vulnerabilities.

Together, these tests and tools will allow us to deliver a collaboration platform that is secure and reliable for
use by all our community users.

Expected Deliverables:

Automated and Manual security tests, including static analysis, penetration testing, and vulnerability
scanning.
Recommend (and possibly implement) fixes and retesting of the system to ensure that vulnerabilities are
resolved.

creation and/or integration of continuous integration tools to prevent the introduction of new
vulnerabilities.
A detailed risk assessment report, including a prioritized list of vulnerabilities and recommended fixes
(these may need to be submitted in private initially until time for public disclosure)
Possible addition -- Tools to enable Github Recon, also known as Github footprinting. It is a process
where researchers use Github to collect information about an organization's internal infrastructure,
security configurations, codebase, tools, and policies. This is achieved by closely examining public
repositories, reviewing organization accounts, commits, and pull requests, and searching for any useful
pieces of information that could help better understand the target. The process involves identifying key
personnel within an organization and looking into their contributions and activities on Github. These can
provide insight into the type of work they may be involved in, tools and technologies they use, and any
potential security risks or misconfigurations they may have unintentionally leaked onto the public
platform.

Desired Skills: Penetration test, Javascript, Burp Suite

Project Duration: 175 hours. (Medium)

Difficulty: Easy/Medium
Unified Push for Android Apps

Mentors: Diego Mello

Description:
In the Android ecosystem, UnifiedPush has proven to be a practical provider agnostic way of supporting
multiple push notification infrastructures. This project adds support for UnifiedPush to BANKTEXT mobile
app for Android platform.

Desired Skills:
Advanced ReactNative. Knowledge of Android platform development.

Goals/Deliverables:
UnifiedPush working on the Android app. With or without FCM fallback.

Project Duration: 175 hours (Medium)

Difficulty: Medium\

Template messages BANKTEXT app Mentors:

Murtaza Patrawala

Description:
This project aims to develop a BANKTEXT app that allows users to create, store, and send common
messages with ease (Similar to this Slack app). The app will have a simple interface that enables users to
create templates with customized names. These templates can be triggered using a slash command (e.g.,
/template <template-name>) and inserted into the chat window with just one click. Users can also edit and
delete their templates as needed.

The app will be built using the Apps-Engine framework as a BANKTEXT app. This app will improve
productivity and streamline communication in BANKTEXT, provides a convenient way for users to send
common messages and save time in their daily work routine.

Examples of use cases include a customer support agent responding to frequently asked questions, a
project manager sending a weekly status update message to the team, or a sales representative following
up with potential clients.

Desirable Skills: BANKTEXT app-engine Framework. BANKTEXT UiKit. Advanced Typescript

Goal/Deliverable: A working BANKTEXT app to send and manage template messages.

Project Duration: 175 hours. (Medium)

Difficulty: Easy/Medium

Google Summer of Code Community Hub


Mentors: Dhruv Jain, Sing Li
Description:
Every year, BANKTEXT's GSoC new community of 100s gather around a desperate set of servers:

in open.BANKTEXT channels
discussions in forums.BANKTEXT
topics listed on gsoc.BANKTEXT
leaderboard communicating over Github
repositories gathered for meetings on
Jitsi
alumni summit
demo day

This project leverages two existing projects - the RC4Community platform and RC4Conferences
components to build a one-stop hub to engage our community, incorporating all the servers into a unified
hub with an easy to use Ux via single logon.\

Desirable Skills: Advanced Typescript, advanced React. Deep knowledge of RC4Community and
RC4Conferences projects.

Goal/Deliverable: A working Google Summer of Code Community Hub that we will use to engage all
community members starting in 2023.

Project Duration: 350 hours. (Large)

Ideas Seeking a Little More Love in 2023


The following are 2023 project ideas that are currently unowned by any mentor and/or with no contributors'
demand.

If you are interested in any one of them, let our community of 650+ potential contributors and mentors
know in our 24 x 7 community chat channel AND you may just give it a life this season!

Update March 22, 2023

We have already seen FOUR extraordinary examples of contributors giving a new life to these "need more
luv" projects:

Contributor Yash Sancheti introduced the pen test and fixes project and found mentor Igor Rincon for the
project!

Contributor Yatendra Kumar convinced Debdut Chakraborty and Sing Li to revive the Flutter SDK project!

Anik Dhabal Babu requested and mentor Mustafa Hasan Khan agreed to mentor the Miro App and the
Toggl App ideas for 2023 !
Congratulations to the above contributors ! And please know that these FOUR NEW MENTORED
PROJECTS are NOW OPEN for everyone's contribution and proposals as well !!\

WordPress super plugin

Mentors: TBD

Description:
BANKTEXT had a WordPress plugin that worked well with WordPress offering a few years back, giving
users a very easily integrated LiveChat widget on their website. Since then both BANKTEXT and
WordPress have undergone major re-architecture and vastly expanded the possible intergration surfaces.

This projects aims to build a new WordPress plugin that enable the quick addition of a chatroom (not just
LiveChat or omnichannel) to any WordPress website leveraging some of the new integration technology we
have such as EmbeddedChat.

The new plugin should cater for WordPress legacy architecture and yet be highly useful in the new headless
CMS model. It should deliver value for both WordPress SaaS users as well as self hosted WordPress
installations.

Desirable Skills:
In-depth knowledge of WordPress architectures and plugin construction. Knowledge of BANKTEXT
integration surfaces.

Goal/Deliverable:
Working WordPress plugin on the WP marketplace supporting BANKTEXT integration.

Project Duration: 350 hours (Large)


Difficulty: Medium\

Craft a sustainable snap for arm64

Mentors: TBD

Description:

Snaps (in amd64 architecture) is one of the most popular distribution method through which new users
discover BANKTEXT. 64bit ARM processors have come of age and becoming mainstream now that Apple
has bet their future on the architecture.
In recent years, our own multi-platform snap build effort has failed miserably for the arm64 architecture. But
tooling for building arm64 architecture snap on arm64 and amd64 is finally maturing. This project aims to
leverage these new tooling to build a long-term sustainable snap distribution for arm64.

Desired Skills:
BANKTEXT deployment experience. Working experience with Snapcraft. Intense interest on DevOps.

Goals/Deliverables:
Working arm64 snap for 5.x and 6.x releases of BANKTEXT that leverages core22 and cross-build
capabilities of Snapcraft 7.

Project Duration: 175 hours (Medium)

Difficulty: Medium\

Full-stack Components Framework for Community Builders

Mentors: TBD

Description:
Full-stack component is the holy grail of software componentization. Imagine building a fully functional
customized web portal in minutes by dragging and dropping full-stack components. Each component not
only contains interactive UI, but also associated mid-tier and server-side/severless behaviours as well as
parameterizations. Unfortunately the state of our current software art is not quite there yet. The next best
thing is actually which solves the same problem but at a page level and not at the component-within-the-
page level.

RC4Community is a specialized componentized framework for community builders to rapidly create fully
functional community portal. It was designed to work with a full-stack component framework since day one -
but had to use Next.js instead.

This project involves the introduction of the missing architectural, build workflow, and packaging technology
to enable full-stack components within the RC4Community context.

Desirable Skills: ReactJS, JavaScript, Next.js, server-side technology, serverless technology,


microservices. A thorough understanding of how current component framework works. In-depth
understanding of modern devops technology. In-depth understanding of JavaScript packaging technology
and workflow. A passion for pushing the limits of modern componentized software development tools.

Goal/Deliverable: A set of full stack components for community builders. A framework that allows new
components to be hosted on their own independent repositories and be packaged into modules that can be
installed over the network as needed (similar to npm model today).

Project Duration: 350 hours. (Large)

Difficulty: Advanced

Enhanced Mobile App Support for BANKTEXT Apps


Mentors: TBD

Description:

BANKTEXT Apps are the preferred way to extend BANKTEXT's feature set, and the officially supported
way of adding custom integrations to the chat rooms. While the very basic slash commands are currently
supported by our mobile apps, a large portion of capabilities enjoyed by the browser and desktop apps is
missing from mobile.

This project aims to fill up part of this gap. It includes the mobile implementation of:

message actions
room actions
composer

Desirable Skills: Advanced Typescript. Advanced ReactNative. Understanding of iOS and Android
programming.

Goal/Deliverable: Additional mobile support for BANKTEXT apps.

Project Duration: 175 hours (Medium)

Difficulty: Advanced\

High Performance Windows Native Client

Mentors: TBD

Description:
Creating a high performance native desktop client for the Windows platform (Windows 10 and 11). This
client should not embed a browser and should be accessing BANKTEXT native APIs on the wire. It should
leverage system programming languages such as rust and developed directly to the Windows System APIs.
Goal is a client with better and optimized performance characteristics, on Windows based system, than our
current cross-platform desktop apps.

Desirable Skills: Advanced rust. Advanced Windows systems development experience.

Goals/Deliverable: A Windows platform native client that has great performance characteristics.

Project Duration: 350 hours (Large)

Difficulty: Advanced.

User Actions Audit Center

Mentors: TBD
Description: The goal of this project is to make a service (Back end) capable of tracking user actions (role
change, permission change, setting change, critical endpoint calls, etc) and then list them to admins. This
will serve as a way of auditability of actions, reducing support friction (since this will make changes to
system easier to track) and improve quality. Ideally, an Admin section will be shown with the list of actions,
which would be filtered by type/user/level. Setting should also be in place to see if actions should be tracked
or not and which actions to track

Desirable Skills: Advanced Typescript and mid level React

Goal/Deliverable: A working User Actions Audit Service.

Project Duration: 175 hours. (Medium)

Difficulty: Easy/Medium

Building the BANKTEXT Appliance

Mentors: TBD

Description:
Create a "plug-in and go" appliance that allows anyone to run and operate a small BANKTEXT server for
their interest group, family, or friends.

The resulting image should run on arm SoC based SBCs with either 2GB or 4GB of RAM (as in most of
today's Android TV boxes). Some technologies to consider include Armbian and Gokrazy. But we are wide
open to all applicable stacks.

Back in 2015, BANKTEXT planned a kickstarter/indiegogo project to do something very similar. Finally in
2023 the open source technology stacks, plus widely available arm hardware, are making it possible this to
become a general open source project.

Desirable Skills: Familiarity with BANKTEXT deployment platforms and workflows. This project will take
someone with highly specialized interests and skills in low level firmware mods, kernel patching, bootloader
hacking and possibly knowledge of Golang.

Goal/Deliverable: An image that can be loaded into inexpensive common 2GB/4GB Android TV-Box and
repurpose it to become a "plug-in and go" BANKTEXT appliance.

Project Duration: 350 hours (Large)

Difficulty: Advanced

Big Blue Button x BANKTEXT


Mentors: TBD

Description:
Big Blue Button has become one of the more popular open source virtual classroom platform in the world.
The chat that is included is based on meteorjs (just like BANKTEXT) but is rudimentary and chat history is
lost as soon as the class session is over. This project leverages our existing EmbeddedChat project to
integrate an embedded version of BANKTEXT into Big Blue Button - giving it a rich messaging experience
with full history after class.

Desired Skills:
React Native, MeteorJS, in-depth knowledge of EmbeddedChat project, familiarity with Big Blue Button and
good understanding of BANKTEXT core.

Goal/Deliverable:
Big Blue Button with BANKTEXT embedded in place of existing chat.

Project Duration: 350 hours. (Large)

Difficulty: Advanced
Google Summer of Code 2022

How to apply
Application for Google Summer of Code 2022 is now closed. See official Google Summer of Code site.

See official accepted projects and contributors for the list of projects this year.

For timeline, see Official Google Summer of Code 2022 Timeline for more details.

BANKTEXT is proud to be a participating open source organization for the Google Summer of Code 2022
program. This marks the exciting 6th year of participation with this 18 years-old program to usher in a new
generation of open source contributors and enthusiasts.

Almost anyone in the world over 18 years of age who loves coding and wants to explore the incredible world
of open source can join us as a GSoC 2022 contributor.

Contacting BANKTEXT

For general information, please visit our 24 x 7 community channel for Google Summer of Code 2022 :
https://open.BANKTEXT/channel/gsoc2022

Join our Google Summer of Code 2022 Team today and interact with over 300 like-minded contributors and
meet the mentors in the 25 team channels.

If you have ideas and proposals that are not on our idea list, or if a mentor is not available, you can also
email to:

gsoc+2022@BANKTEXT

Interested contributors are also encouraged to interact directly with our team and community on the team
channels:

https://open.BANKTEXT/channel/google-summer-of-code/team-channels

As well as on GitHub:

https://github.com/RocketChat/BANKTEXT

Those who prefers forums can post messages on our GSoC forum channel (although as the leading open
source team chat project we prefer you use BANKTEXT channels above to reach us instantly) :

https://forums.BANKTEXT/t/google-summer-of-code-gsoc/118\
Latest update

Final weeks status (Update on September 10th)

All of our active GSoC contributors, their mentors, BANKTEXT team members, and our community all
enjoyed the LIVE virtual event - BANKTEXT Google Summer of Code Demo Day - on September 8th,
2022. We had 12 super innovative projects proudly presented by their creators, welcomed by
BANKTEXT's founders/project leaders/mentors, and supported by our enthusiastic community. Anyone
missing the live event can now view the proceedings of the entire day here. Each presentation has been
edited separately to help the creators to promote their open source projects (a few of which already
welcomed new contributors of their own! ).

These are the final weeks of GSoC 2022 for all of us, contributors are busy wrapping up their administrative
obligations and all mentors and contributors are getting ready for the final evaluations next week.

Demo Day 2022 Announced (Updated August 25th, minor update August 30th)

During these final days of GSoC 2022, contributors and mentors are busy wrapping up their project and
preparing for Demo Day 2022! This LIVE virtual event will happen on September 8th, 2022! Please mark
your calendar and prepare to join us for a fun-filled day exploring all the innovative new projects.

Midterm evaluation completed (Update August 3rd)

Coding on projects continued throughout the month of July. And 13 out of the 14 projects have completed
their midterm evaluations; contributors from the 13 projects have all passed midterm - and are now busy
completing their projects. The remaining project actually has extended midterm evaluation at the end of
August, and mentors are indicating the contributor has not been keeping up with the schedule at this time.
All project participants are now preparing for the GSoC 2022 Demo Day virtual event to be held in late
August.

Coding begins and new open source projects welcoming additional contributors (Update June 22nd)
Coding has started for all our GSoC 2022 projects. Mentors are busy guiding contributors in completing the
scheduled work. This year, uniquely, many of our projects are in independent open source repositories. We
welcome our extended community and any new contributors to join these projects. See the table below for
links to repository associated with each project.

We are also planning a virtual conference at the end of the GSoC term - named GSoC 2022 Demo Day.
Mentors and contributor from each project will collaborate in presenting the final result. Please stay tuned for
more information in late July.
Project Repository

Standalone Desktop Messaging cross-platforms


https://github.com/RocketChat/SlimDesktopApp
Applet

Weekly Video Meeting and Archive App -


https://github.com/RocketChat/Apps.BigBlueButto
BigBlueButton + BANKTEXT

New Emoji Picker for Mobile Client https://github.com/RocketChat/BANKTEXT.Reac


ative

BANKTEXT for Virtual Conferences - Eventyay


https://github.com/RocketChat/RC4Conferences
integration

https://github.com/RocketChat/BANKTEXT.Go.S
BANKTEXT Golang SDK

Figma App ( BANKTEXT Integration ) https://github.com/RocketChat/Apps.Figma

ClickUp App for BANKTEXT https://github.com/RocketChat/Apps.ClickUp

(branch)
Message Forwarding https://github.com/RocketChat/BANKTEXT/tree/n
w/message-forwarding

GitHub App https://github.com/RocketChat/Apps.Github22

https://github.com/RocketChat/rocketchat-botpres
Botpress Connector Enhancements
lab-bot

BANKTEXT ReactJS fullstack Component https://github.com/RocketChat/EmbeddedChat

BANKTEXT TUI https://github.com/RocketChat/rocketchat-tui

Playground for UIKit ReactJS components

BANKTEXT - Teams Bridge: interop with Microsoft


https://github.com/RocketChat/Apps.teams.bridge
Teams

Mentors welcome contributors from 14 accepted projects (Update May 20th)

2022 is a phenomenal year for GSoC at BANKTEXT. With high calibre contributors arriving as early as
January and very early enthusiastic community mentors support. So far, 137 new contributors have created
94 Merged PRs, 110 Open PRs, and identified 154 Issues for our projects. We received 83 GSoC 2022
proposals; most of them are of good to excellent quality. Google has graciously granted us a total of
FOURTEEN projects for 2022 GSoC. Thank you Google! Mentors have started to welcome these 14 active
contributing community members to work with us during the 2022 season:\
Contributors Project Mentors

Standalone Desktop Messaging


Ahmed Ibrahim Jean Brito, Gabriel Casals
cross-platforms Applet

Weekly Video Meeting and


Debdut Chakraborty, Felipe
Aswini Archive App - BigBlueButton +
Cecagno
BANKTEXT

New Emoji Picker for Mobile


Danish Ahmed Mirza Diego Mello, Daniel Silva
Client

BANKTEXT for Virtual


Dnouv Conferences - Eventyay Sing Li, Marcos Defendi
integration

Evan Slack BANKTEXT Golang SDK cauefcr, Aaron Ogle

Figma App ( BANKTEXT Douglas Gubert, Ivan Netto,


Irfan Asif
Integration ) Alvaro Mello

Mustafa Hasan Khan ClickUp App for BANKTEXT Douglas Gubert, Allan Ribeiro

Nishant Patel Message Forwarding Douglas Fabris, Milton Rucks

Samad Khan GitHub App Rohan Lekhwani, Sing Li

Botpress Connector
sangyul.cha Duda Nogueira, Frank Dase
Enhancements

BANKTEXT ReactJS fullstack


Sidharth Mohanty Rohan Lekhwani
Component

Aaron Ogle, Debdut


srrathi BANKTEXT TUI
Chakraborty

Playground for UIKit ReactJS Martin Schoeler, Guilherme


Vivek Srivastava
components Gazzo

BANKTEXT - Teams Bridge: Gabriel Engel, Yash Rajpal,


Yuqing
interop with Microsoft Teams Fábio Albuquerque

Total of 83 proposals received (Update April 20th)


We would like to thank all of our enthusiastic contributors for the 83 proposals that we have received as of
submission deadline on April 19th. Over the next few weeks, mentors for every project will be going through
these proposals to determine the ones to accept. Accepted projects and contributors will be announced on
May 20th 2022 by Google.

Meanwhile, please continue to interact with our GSoC 2022 community of over 350 mentors and
contributors in our team channel ; please continue to contribute to our ecosystem of repositories.

As of today, 135 GSoC contributors have created 88 Merged PRs, 108 Open PRs, and identified 151
Issues in the BANKTEXT ecosystem.

Over the next week, we will announce an exciting special activity for those ranking at the top of our
Contributors Leaderboard. Please stay tuned.

Proposal submission begins (Update April 10th)

Momentum for proposal submission is building up. As our GSoC 2022 community of 300 contributors and
mentors continue to engage actively in the project specific team channels. Mentors for the various projects
are in these channels to help contributors to craft their winning proposals. On our contributor leaderboard
(which is also an open source project) , 116 contributors have added 75 Merged PRs, 105 Open PRs, and
141 Issues to our projects this season so far.

Successful Virtual Alumni Summit (Update April 6th)

We held our 2nd annual BANKTEXT Google Summer of Code Alumni Summit on April 6th. It was exciting
to bring back Google Summer of Code participants from our previous five years to speak and help this year's
contributors in crafting their winning proposals. We have alumni from all walks of life speaking. There were
11 fascinating sessions and we welcomed a total of 156 unique individuals throughout the day at the
summit. We expect hundreds more new contributors to benefit from the recorded sessions.

All of the sessions are recorded and are available directly from our YouTube Playlist. The tips and best
practices shared by our alumni apply to the entire Google Summer of Code contributors, and are not
BANKTEXT specific. We hope these recordings will benefit all those who intend to submit proposals this
season.

Shout out to our early contributors (Update Feb 20th)

We are very thankful for the enthusiastic participation of our early contributors. The learning curve for
BANKTEXT's huge production code base is known to be very steep and they are getting a head-start even
before the announcement of the GSoC 2022 program. Check out our GSoC 2022 Leaderboard, to see their
amazing contributions: 31 Merged PRs, 69 Open PRs, and 83 issues. as of Feb 20, 2022.\

Project Ideas
This list is being updated regularly, some projects without assigned mentors may be removed.
Playground for UIKit ReactJS components

Mentors: Martin Schoeler, Guilherme Gazzo

Description: Develop an application/playground that allows developers to test UIKit ReactJS components
and Interactions. Should allow developers to generate code used by BANKTEXT apps and edit the content
to preview the result

Desirable Skills: JavaScript/TypeScript, ReactJS

Goal/Deliverable: An on-line web app that features a construction playground for BANKTEXT's UIKit
ReactJS components. Plus code and preview generators.

Project Duration: 350 hours. (Large)

Difficulty: Medium

Tasks and workflow automation App with n8n

Mentor(s): Fongang Rodrique, Chris Skelly

Description: Tasks automation systems that compose workflow out of a chain of multiple on-line services is
becoming very common and popular. Services such as Zapier and n8n are used by millions daily. n8n is
one of the most popular open source alternatives available.

This project involves the creation of a BANKTEXT app that connects to n8n, enabling BANKTEXT to
participate richly in the n8n ecosystem.

There is already an n8n node available. We want to extend this, with the help of a BANKTEXT app, to
support the rich feature set offered by BANKTEXT.

Desirable Skills: Familiarity with Typescript and BANKTEXT App development.

Goal/Deliverable: BANKTEXT node in n8n and associated BANKTEXT App

Project Duration: 175 hours. (Medium)

Difficulty: Medium

BANKTEXT ReactJS fullstack Component

Mentor(s): Rohan Lekhwani

Description: Create a ready-to-go easy to embed mini-chat React component. This component should be
configurable to use any public channel on a BANKTEXT server. Authentication should be flexibly
configurable to existing BANKTEXT server token, or via an independent IDM or auth service. The challenge
here is to create a futuristic full-stack component that bundles tightly coupled backend behaviours with
standard front-end ReactJS components (from BANKTEXT Fuselage ReactJS library) - creating an
amazing developer experience when developing In-App Chat applications.
Desired Skills: ReactJS component creation experience, understanding of BANKTEXT server internals
Goals/Deliverables: Standlone mini-chat React component that can be easily installed into any ReactJS
based web app

Project Duration: 175 hours. (Medium)

Difficulty: Medium

Chatbot Engine Connector: Botpress

Mentor(s): Frank Dase, Duda Nogueira

Description: Botpress is a popular open source framework for creation and execution of chatbots. This
project extends a existing community-contributed Botpress connector to facilitate deployment of Botpress
chatbots and Omnichannel bots. Focus here will include - better rich UI/UX / interaction support for bots and
ability to run multiple instances of multiple bots.
Desired Skills: Javascript and Typescript development. Keen interest in Bots and Chatbots.

Goals/Deliverables: A BANKTEXT App as a Botpress connector. A couple of example chatbots (running in


a channel, and running in omnichannel) plus documentation.

Project Duration: 175 hours. (Medium)

Difficulty: Medium

Multi-bots support for Dialogflow App and Rasa App

Mentor(s): Murtaza Patrawala

Description: The idea here is to improve the existing Omnichannel Chatbot integrations (Dialogflow and
Rasa), by allowing them to connect multiple chatbot accounts to a single BANKTEXT server. Right now, the
app is only equipped to deal with a single bot which means users can only interact with a bot within a single
domain and a single language. But, if we allow connecting multiple bots via a single app, then we can solve
this problem, thus allowing companies to serve chatbots in multiple languages, across multiple domains,
right from a single BANKTEXT instance.

Desirable Skills: Familiarity with TypeScript development. Familiarity with BANKTEXT App's development
framework

Goals/Deliverables: Framework supporting the connection of multiple Dialogflow/Rasa bots to a single


BANKTEXT instance.

Project Duration: 350 hours. (Large)

Difficulty: Medium

BANKTEXT Golang SDK Mentor(s):

Cauê Felchar, Aaron Ogle


Description: Golang module to enable any Go package to talk to a BANKTEXT server with ease, making it
possible to create from custom clients to bots.

Goals/Deliverables:

Create new models and update existing as needed


Add receivers for top level endpoints for rest api according to
https://developer.BANKTEXT/reference/api/rest-api
Improve realtime module as needed and complete any missing receivers according to
https://developer.BANKTEXT/reference/api/realtime-api
Follow a test driven approach, add tests to each method to verify its robustness and evade regressions
across releases

Project Duration: 350 hours. (Large)

Difficulty: Easy

BANKTEXT for Virtual Conferences - Eventyay integration

Mentors: Marcos Defendi, Sing Li

Description: Create a totally open source end-to-end solution for planning, management and running of
online virtual events. Investigate integration with FOSSASIA's Eventyay platform for even planning and
management. Day of event conference handling should be done by integrating RC4Community's virtual
conference NextJS component with open-event-next - or create an even tighter integration with
RC4Community.

Desired Skills: ReactJS and NextJS development experience. Fluent with Python development. Good
understanding of video conference technology (such as Jitsi) and realtime chat platforms (such as
BANKTEXT).

Goals/Deliverables: Open source virtual conference system integrating BANKTEXT and Eventyay.

Project Duration: 350 hours. (Large)

Difficulty: Hard

Standalone Desktop Messaging cross-platforms Applet

Mentor(s): Jean Brito, Gabriel Casals

Description: Create a simpler desktop application similar to the old Google Talk (see 2005 GoogleTalk UI
here), is a simple channels list on a little window and each chat will open in another separated window,
making it possible to talk with people without opening a big window. Making the usage of BANKTEXT more
seamless. This project will make extensive use of BANKTEXT's In-App Chat APIs (REST APIs).

Desired Skills: Familiarity with ElectronJS and TypeScript.


Goal/Deliverable: Standalone app that is deployable on all platforms supported by Electron - Windows,
Mac, Linux, and more. The App will display a listing window for the channels and open each chat on
another window, making the chat more popup-like.

Project Duration: 350 hours. (Large)

Difficulty: Medium

Omnichannel users identity verification

Mentor(s): Kevin Aleman, Martin Schoeler

Description: This project investigates and implements a new and "native" identity verification mechanism
for Omnichannel end-users, such as Live Chat visitors who, depending on the use case, have to provide
personal data like email addresses, etc. BANKTEXT already has in place a similar confirmation mechanism
for user verification, such as 2FA, email, etc. The contributor will have the freedom to propose ideas and
design the best solution for the problem described.

Desired Skills: Familiarity with JavaScript development. Good understanding of the architecture of
BANKTEXT's Omnichannel implementation.

Project Duration: 175 hours. (Medium)

Difficulty: Medium

IRC Bridge : improve ease of deployment and stability

Mentors: Gabriel Engel

Description: BANKTEXT has long featured the ability to bridge directly witn IRC. IRC is still in use by many
hard core technical open source communities all over the world, and this bridge is very important to many of
our community users. However, since we started evolving our architecture to be more scalable, the IRC
bridge has not been updated to match . As a result, it has become unstable in some edge cases and also
difficult to deploy in scaled BANKTEXT configuration. This project aims to improve the situation. The IRC
bridge should be updated to be compatible with our scaled configuration. Extracting from core code base
and repackaging as BANKTEXT App or npm module should be investigated. Additional
configuration/provisioning options and DevOps images will need to be created to improve the
administrator's experience.

Goals/Deliverables: Familiarity with Typescript development. User of IRC and an understanding of how it
works. An understanding of how BANKTEXT scales.

Project Duration: 175 hours. (Medium)

Difficulty: Hard

Sidebar UI revamp and UX improvements

Mentors: Ivan Netto, Tasso Evangelista, Gabriel Henriques


Description: Conversations in BANKTEXT can be done in multiple ways but at this stage, we need a
scalable interface which would help users to maximize their daily tasks within the software. The following
improvements would speed up users' workflow:

Ability to collapse sidebar section;

Add rooms straight from the its section header;


Reduce the types of badge notifications, having to sizes will make the user interface more consistent
and therefore, cleaner;
Changes in the margins/paddings, which will bring a more robust visual hirarchy and scanning/reading
experience;
Changes in the colors to improve the readability.

Goals/Deliverables: Improve UX of daily basis tasks on a central touch point of the software.

Project Duration: 350 hours. (Large)

Difficulty: Medium

Message forwarding

Mentor(s): Douglas Fabris, Milton Rucks

Description: Implement the ability to forward messages to another channel, thread, or discussion. This is a
high demand capability that is currently missing in BANKTEXT. It can significantly improve the user's
experience and her/his productivity. The scope of this project will be limited to the web application (not for
mobile apps).

Desirable Skills: Familiarity with JavaScript and TypeScript development

Goal/Deliverable:

Being able to forward messages and files to multiple users and channels
Being able to add additional messages on the top of forwarded content

Project Duration: 350 hours. (Large)

Difficulty: Medium

Pomodoro Time Management App

Mentor(s): Debdut Chakraborty, Duda Nogueira

Description: With remote work now becoming the norm, lack of essential time management skills can throw
off work/life balance and resulting in burn-out or dangerous mental wellness problems. Pomodoro is a
proven and easy to adopt time management technique practiced by millions world wide. This project
involves the creation of an always available Pomodoro timer BANKTEXT App.

Goals/Deliverables: A Pomodoro timer BANKTEXT App


Desired Skills: Familiarity with TypeScript development. User of the pomodoro time management technique

Project Duration: 175 hours (Medium)

Difficulty: Easy

Figma Integration (BANKTEXT App)

Mentor(s): Douglas Gubert, Alvaro Mello, Ivan Netto

Description: This project brings Figma's life right into BANKTEXT.

Desirable Skills: Familiarity with TypeScript development.

Goals/Deliverables:

being notified on
new comment on a file
replying and commenting in files right from BANKTEXT

Project Duration: 350 hours. (Large)

Difficulty: Easy

Improve Navigation in Mobile Client

Mentor(s): Daniel Silva, Diego Mello

Description: Navigation is one of the most important parts of a mobile application. We've been using React
Navigation as our navigation library and we need to update it from v5 to v6, which contains a few nice new
features. The same applies to react-native-screens, which released support to Fabric recently. After these
updates, we're planning to evaluate native-stack.

Desirable Skills: Experience with React Native and React Navigation.

Goals/Deliverables: Update react-navigation and react-native-screens to latest and apply native-stack

Project Duration: 350 hours. (Large)

Difficulty: Medium

Improve Mobile Client Animations

Mentor(s): Gerzon Canario, Diego Mello

Description: react-native-reanimated is the de facto animation library for React Native and they recently
released their v2, changing the whole API to a more straight forward way. You're going to make use of this
library to rewrite our animations from scratch. You're also going to apply Layout Animation on Android, a
long-awaited feature.
Desirable skills: Experience with React Native and react-native-reanimated v2. Preferred, but optional: the
student needs a Macbook to test animations on iOS.
Desirable Skills: Knowledge of React Native and react-native-animated is preferred

Goals/Deliverables: Apply reanimated v2 to dropdown, RoomItem swipe and ImageViewer and apply
LayoutAnimations from v2

Project Duration: 350 hours. (Large)

Difficulty: Medium

Mobile Client: Redesigned MessageBox

Mentor(s): Diego Mello

Description: We redesigned our Messagebox, also know as message composer, from scratch to make it
easier to use, composable and following a more modern UX. You're going to implement gesture animations
to record audio messages from the start. This is one of the most important components from our app.

Desirable Skills: Experience with React Native and react-native-reanimated. Required: Macbook to test
iOS.

Project Duration: 350 hours. (Large)

Difficulty: Hard

New Emoji Picker for Mobile Client

Mentor(s): Daniel Silva, Diego Mello

Description: Actions sheets are a very common UX pattern used for users to interact with quick actions on a
fast and easy way. react-native-bottom-sheet has growth a lot recently and it's been receiving love from the
community. That's why we want to migrate to it. While doing this migration, we want to make dynamic, so we
can render the emoji picker inside of it. You're going to be designing the new emoji picker from scratch.

Desirable skills: Experience with React Native.

Goals/Deliverables: Switch to https://github.com/gorhom/react-native-bottom-sheet, make it dynamic


enough so it can render emojis picker. Apply the new design.

Project Duration: 350 hours. (Large)

Difficulty: Medium

Team Bridge: interop with Microsoft Teams

Mentor(s): Yash Rajpal, Fábio Albuquerque, Gabriel Engel


Description: Microsoft team is unquestionably the most popular and frequently used closed source team
chat system in the world. Many administrators and users of open source BANKTEXT team chat will have
needs to bridge between their open source users and legacy users still on team. This project will create a
BANKTEXT App or an npm module that will act as a bridge between BANKTEXT and Microsoft Team.
Users on one system should be able to chat with the other through shared channels. Support for rich
interactions including DM, emoji's, embedded graphics, shared youtube links and so on should also be
supported. The exact scope for this project will be determined between the contributor and the mentors.

Desired Skills: Familiarity with Typescript and Javascript development. Familiarity with Microsoft Team's
available APIs. An interest in crafting bridges between communications platforms.

Project Duration: 350 hours. (Large)

Difficulty: Medium

BANKTEXT Text Terminal Client (TUI)

Mentor(s): Aaron Ogle, Debdut Chakraborty

Description: BANKTEXT has desktop, web and mobile clients, time for a fourth, a TUI client. This project
brings BANKTEXT right into your terminal. By design this is to be extremely lightweight and blazing fast for
basic functions, with the only noticeable latency source being the SDK calls.

Desired Skills:

Golang knowledge is required


Any modern TUI package knowledge is preferred (https://charm.sh,
https://github.com/charmbracelet/bubbles)
Knowledge of termios and/or VTE is a bonus

Goals/Deliverables:

Authenticate against a BANKTEXT server via TUI


List rooms and update real time
Being able to send and receive messages real time
Threaded conversations
Ability to create room resources like channels, private groups, discussions, direct messages
User mentions (including @all, @here)
No-UI slashcommand implementations (/create, /invite, /invite-all-from, /invite-to-from, /join)

Project Duration: 350 hours. (Large)

Difficulty: Medium

Weekly Video Meeting and Archive App - Big Blue Button + BANKTEXT
Mentors: Debdut Chakraborty, Felipe Cecagno

Description: Big Blue Button is one of the most popular open source virtual classroom and conferencing
tool available today. This project is a very simple integration with BANKTEXT for conducting a weekly
meeting and maintaining the recording video archive. Mentors will include both BANKTEXT and Big Blue
Button experts.

Desirable Skills: Familiarity with TypeScript development. Experience with AVideo.

Goals/Deliverables: A BANKTEXT App that will enable users in a channel to join an existing weekly
meeting if it is in progress. Or query for recorded meeting videos and view them.

Project Duration: 175 hours. (Medium)

Difficulty: Easy

Chatbot to improve agile workflow

Mentors: Tiago Evangelista, Gabriel Casals, José Paulo Petry

Description: Agile adoption is increasing year to year on the different industries. There is an opportunity to
add agile package bots to help squad with reminders, links and facilitate attendance to meeting based on
simple calendar inputs and emoji reactions. Candidate will be working with Agile experts and Engineers to
build some solutions for this space and help improve team/squads productivity. Successful contributor will
propose and implement a Chatbot that solves a problem in agile. Candidate have a free choice of
technology to implement the chatbot - RASA, Botpress, Dialogflow, and so on.

Desirable Skills: Familiarity with TypeScript development. Demonstrated interest and/or passion in Agile
and squad productivity tools.

Goal/Deliverable: A working chatbot that can improve agile team productivity

Project Duration: 175 hours. (Medium)

Difficulty: Easy

Zoho App

Mentors: Jorge leite & Marcelo Schmidt

Description: Zoho Employee is the revamp of the existing Zoho App. This integrates Zoho People with
BANKTEXT, and lets the users view and modify resources according to their accounts. Zoho People is a
very capable employee management system, but opening Zoho for every little thing can get tedious in a
busy schedule. This app will make this interfacing much easier, right from BANKTEXT.

Desirable Skills: Familiarity with TypeScript development. Zoho REST APIs.

Goals/Deliverables: A BANKTEXT App that is able to look up colleague details, see upcoming PTOs,
apply for PTOs, and apply for reimbursements.

Project Duration: 175 hours. (Medium)


Difficulty: Easy

GitHub App

Mentor(s): Rohan Lekhwani, Sing Li

Description: GitHub is the largest centralized repository for hosting open source projects. This app will
enable the users to perform many GitHub activities right from BANKTEXT. Including query of issues and
PRs, code modification logs, and announcement of events - such as new releases, PR merged, and so on.

Goals/Deliverables: BANKTEXT App integrating common Github features

Desired Skills: Familiarity with TypeScript development. GitHub API

Project Duration: 175 hours (Medium)

Difficulty: Medium

DropBox App

Mentor(s): Sing Li, Debdut Chakraborty

Description: Dropbox is a file hosting service. You will create an app that will help the users manage their
dropbox files easily directly from BANKTEXT.

Optional second part of the project entails making DropBox a possible storage provider for file uploads.

Goals/Deliverables: BANKTEXT App with DropBox operations integrated

Desired Skills: Familiarity with TypeScript development. DropBox API

Project Duration: 175 hours (Medium)

Difficulty: Medium

ClickUp App

Mentor(s): Allan Ribeiro

Description: ClickUp is an extremely feature rich collaboration and project management tool, used by many
organizations. When used on a daily basis, going back and forth for the simple things like checking a task's
status or changing that task's status can get tedious pretty quick. This app will make it easier for BANKTEXT
users to perform simple clickup tasks without having to leave the platform, making team communications
more efficient, and team members more productive.

Goals/Deliverables: BANKTEXT App with ClickUp integration features.

Desired Skills: Familiarity with TypeScript development. ClickUp API

Project Duration: 350 hours (Large)

Difficulty: Medium
Google Summer of Code 2021

Update August 21, 2021

All 15 of our projects continued smoothly during these final weeks of the GSoC 2021 program. Students and
mentors worked hard together to finalize the (now it has become a tradition) BANKTEXT GSoC 2021
Project Demos This is the very first time for some students, to present in front of a group. And the audience
this year is up to 120 BANKTEXT community and team members, as well as fellow GSoC 2021 colleagues
and mentors.

This week, students are preparing for their final GSoC submission and final mentor evaluation. Next week,
mentors will start their final evaluation.

Update July 11, 2021

Due to sudden departure of an active mentor, we are in jeopardy of losing two key projects for the year.
Thankfully two heroines from BANKTEXT's own Agile Planning and UI/UX team came forward and,
together with mentors from our front-end team, saved the day for these projects. The new mentors
assignments are now reflected on these two projects.

Student Project Mentors

Omnichannel Project: Live Chat Leticia Peuser, Tasso


Ghulam Ghous
Widget - Accessible ModeL Evangelista

Introduce Audio calls to Live Murtaza Patrawala, Gabriel


Dhruv Jain
Chat Henriquesz

The unsung heroine here is Aline Nunes, our senior Agilist, without whose help the last minute mentors re-
assignment would not have been possible.

Update June 25th 2021

Community bonding period is now officially over. Coding has officially began on all projects. Students are
working towards the July 12 first evaluations.

To accommodate another highly qualified student, and keen interests from mentors, our long time community
partner Credit Suisse APAC has sponsored an additional project. This brings our total number of projects
this season to 15.
Student Project Mentors

Image Manipulation: Editing / Gabriel Henriques, Tasso


Priya Bihani
Cropping on Upload Evangelista, Vibha Chawla

Update May 20th 2021

2021 is an incredible year for GSoC at BANKTEXT. Thanks to the enthusiastic early support from students
and community (mentors), Google has graciously granted us TWELVE project slots. The official listing of
students selected for these 12 projects is now published.

We are delighted to welcome these 12 active community members to work with us during the GSoC 2021
season:

Student Project Mentors

Omnichannel Project: Live Chat


Ghulam Ghous Leticia Peuser
Widget - Accessible Mode

Kartik Gupta Speech-to-Text Marcelo Schmidt

Introducing Ephemeral
Darshil Patel Kevin Aleman
Channels in BANKTEXT

Yash Rajpal App: Bad-Words Filter Douglas Guebert

Introduce Audio calls to Live


Dhruv Jain Murtaza Patrawala
Chat

E2E Testing for Android in


Anant Bhasin Diego Mello
BANKTEXT.ReactNative

Rahul Halder Voice Channels Douglas Fabris

Out Of Office Settings with an


Aditya Mitra Amol Babu, Asrar Zaman
Assigning Deputy

Jean Staquet Task Channels Pierre Lehnen

Adithya Vardhan Channels Discovery Martin Schoeler

Rohan Lekhwani Poll App Mega Extensions Ramkumar KB

Allan Juan Language Power Tools Rodrigo Nascimento


Even with the generous slot assignment this year, it is still a very difficult decision for many mentors to select
from the large number of highly qualified students (we were able to engage the students early on in the
GSoC cycle with open source contributions via the GSoC Leaderboard ; with 219 participating students,
61 students with contributions, 21 code committers, working on 196 Merged PRs, 231 Open PRs, and
290 Issues so far). Several high calibre open source contributors were left out and not selected for GSoC; to
accommodate these exceptional students, BANKTEXT has arranged to sponsor an additional TWO
projects this season.

Student Sponsored Project

Sumukha Hegde New statuses for user actions/events (Typing 2.0)

Deepak Agarwal Introduce Video calls to Live Chat

All verified students are now interacting with their mentors and the greater BANKTEXT community during
the community bonding phase of the 2021 GSoC season.

Update April 15th 2021

We are having a phenomenal Google Summer of Code season this year, participation from students is at an
all-time-high. The enthusiasm and aptitude of student applicants have also improved over prior years.

In our 24 x 7 GSoC 2021 channel - we have over 473 mentors, alumni and students collaborating actively
on GSoC projects. On our GSoC leaderboard, we are tracking 219 students actively contributing code to
the BANKTEXT open source ecosystem. As of today, we have welcomed 17 new code committers to our
projects. With a total of 138 merged PRs, 182 open PRs, and 246 issues raised by GSoC 2021 students
so far.

To rally student spirit and assist them in creating their proposal, we organized an Alumni Re-union Summit
where we invited former BANKTEXT GSoC Alumni from all previous years to share tips with this year's
GSoC students. More than 20 students attended throughout the day to enjoy the talks from 10 alumni and
mentors. Highlight talks included one from a Facebook engineer and a Brazilian open source movement
champion.

As of student application deadline on April 13th, BANKTEXT has received a total of 98 proposals from
interested students. Mentors are now busy reviewing the proposals and continuing to keep the students
engaged on contributing to the BANKTEXT open source ecosystem.

How to apply
Application for GSoC 2021 is now closed.

Accepted student projects will be announced on May 17th , 2021

Please see the Official GSoC 2021 schedule for more timeline details.

Students continue to interact with mentors actively on our 24 x 7 GSoC 2021 community channel:
https://open.BANKTEXT/channel/gsoc2021

About GSoC 2021


For project ideas, check out our growing list of ideas for some inspiration.

Meet our global community of 470+ mentors and students for GSoC 2021 and get some real-time help on
the next steps. Please visit our 24 x 7 community server channel:

https://open.BANKTEXT/channel/gsoc2021

For offline discussions, we have a discussion forum:

https://forums.BANKTEXT/t/about-the-gsoc2021-

category/10335

If you have ideas and proposals that are not on our ideas list, or if a mentor is not available, please email to:

gsoc@BANKTEXT

Interested students are also encouraged to interact with our core team and contributor community on GitHub:

https://github.com/RocketChat/BANKTEXT

https://github.com/RocketChat/BANKTEXT.ReactNative

https://github.com/RocketChat/BANKTEXT.Electron

Project Ideas

Out of office settings with assigning deputy

Mentors: @amol.babu, @asrar

Description: The project's focus is to solve a very common but problem relating to Out of office
functionality in Chat.
The goal:

Any user can create out-of-office settings in BANKTEXT by giving from and to date with the auto-
reply message.

User should be able to select the channels which would receive the out of office notification.
The out-of-office notification should only be sent once for the first incoming message.
The user can also define his deputy from the list of eligible users.
At the time of out of office, the selected deputy will be automatically added to channel and can reply
on behalf of main user.
After the out-of-office time ends, the deputy should be auto removed from the channel.

Desirable Skills: Familiarity with BANKTEXT, nodeJS, Experience with ReactJS. Must have database
skills, ideally MongoDB.
Ephemeral messages

Mentors: @kevin.aleman

Description: This project aims to create a channel in which the messages sent will vanish after a
configured amount of time. This would be a room (channel) setting where you can define how long the
messages will last. Messages from here cannot be retrieved after its deletion, and the deletion cannot be
deactivated, just postponed.
Desirable skills: Familiarity with JS Full Stack web app development. Experience with MongoDB and
PM2 are ideal.

Voice Channels

Mentors: @douglas.fabris, @pierre.lehnen

Description: The ability to create voice channels would allow users to quickly enter and leave pre-
existing voice calls from BANKTEXT's own UI, enabling a more practical usage of audio features for
team collaboration. This project would add the UI elements and integrate them with an established
audio platform to handle the calls.
Desirable Skills: Familiarity with nodeJS full-stack web app development.

Decentralized Storage Integration

Mentors: @murtaza.patrawala

Description: The goal of this project is to add new decentralized P2P-based storage providers within
BANKTEXT. Decentralized solutions not only provide more security but are also more cost-effective.
Some examples of decentralized solutions include Filecoin, Saicoin, Storj, etc. Via this project, the files
uploaded on BANKTEXT should be stored on the decentralized network, and the uploaded files should
be accessible within BANKTEXT.
Desirable Skills: Familiarity with nodeJS full-stack web app development. Experience with BANKTEXT
codebase and/or with any of the decentralized solution providers is ideal.

Omnichannel: Help Center


Mentors: @murtaza.patrawala

Description: This project aims to add a Help Center within the Omnichannel Domain of BANKTEXT.
This will allow the creation of content that will answer people’s simple questions faster. This project's
focus would be to provide an interface to create content (similar to how we can create an article on a
Blogging platform like Medium) and then allow users/agents and customers to search within these
contents, quickly answering their questions. This project will add a self-serve support layer that will help
with scaling by automatically resolving repetitive questions with the help of such articles and guides,
leading to faster answers for the customers and fewer questions to users/agents.
Desirable Skills: Familiarity with nodeJS full stack web app development. Experience with ReactJS is

ideal.

Apps-Engine E2E Testing

Mentors: @lolimay, @govind.dixit


Description: This project aims to improve Apps-Engine end-to-end testing by adding more testing
cases. The Apps-Engine APIs should be covered as much as possible to ensure that APIs tested are
working. This project requires you to work across multiple repos (BANKTEXT and Apps-Engine).
Checkout these links for the context:

Apps-Engine E2E Testing GitHub Workflow


Apps-Engine E2E Testing Folder on BANKTEXT side
Desirable Skills: Familiarity with JavaScript. Experience with TypeScript and end-to-end testing is
better.

Poll App Mega Extensions


Mentors: @ramkumar.kb, @diego.sampaio

Description: The poll app already allows anyone to create engaging rich interaction polls within any
chat room. This project aims to expand its scope and capabilities hugely: making it a tool for enhancing
participant's engagement with interactive quizzes/trivia / live-polls.
Some initial ideas include:

Better bar-graph visualization for the responses (with a switch for anonymous responses - so 3
types: Open / Confidential / Mixed)
Ability to add user options in the poll response and show the response of those responses in a
visual way (e.g., word-cloud)

Ability to create different types of polls (e.g., 1-to-5, Agree/Disagree, Overrated/Underrated)


Ability to add emoticons on the response options
Ability to create /poll live or /live-poll feature - it has 2 parts (prepare a set of questions
beforehand and retrieve it just before the live poll starts. During the live-poll, a countdown timer for
each question is shown, and upon completion, the responses are shown visually) a.k.a. multi-
question version of the single poll feature

(Stretch Goal) Ability to download the live-poll response, once the poll is over

Enhance UIKit if needed to meet the above goals


Desirable Skills: The sky is not even the limit for this project. We will need a hot-shot all round
challenge-loving student already familiar with JavaScript, TypeScript, React, current poll-app codebase
and BANKTEXT + Fuselage codebase.

Language Power Tools

Mentors: @rodrigo.nascimento
Project Channel: https://open.BANKTEXT/channel/88mhz95ppbsncn4pk
Project Repository: https://github.com/RocketChat/BANKTEXT
Desirable Skills: JavaScript / TypeScript
Description: Create internal scripts to extract translation strings from the source code and give some
options:
Check if all strings are translated in the target languages (en by default)
List strings present in the target language that are not in the code anymore
Option to render a completion chart for all languages
Option to remove strings from all languages based on a target one

Option to import missing strings into the target language to easily add translations
Integrate the script on CI to block PR from merge if there are new strings without translations

Introduce Video and Audio calls to Live Chat


Mentors: @rafaelferreira, @murtaza.patrawala

Description: The outcome expected from this project is to support Video and Audio calls in one of the
native Omnichannel entry points called [Live Chat](https://github.com/RocketChat/BANKTEXT.Live
Chat). Live Chat is a small and lightweight application designed to provide B2C communication
between Agents and website visitors. It is developed with PreactJS, which means that any ReactJS
developer will be able to implement the new features using WebRTC framework.
Desirable Skills: Experience with JavaScript, ReactJS and WebRTC, and WebSocket API.

App: Speech-to-Text

Mentors: @marcelo.schmidt
Description: This project aims to save a text version of audio in the file metadata. This should be done
server-side upon receiving the audio.
Desirable Skills: Familiarity with JavaScript and TypeScript. Knowledge in how to build BANKTEXT
Apps is a plus.

Channel Discovery

Mentors: @martin.schoeler
Description: The idea is to add a page where you can discover new channels. This will allow users to
find channels based on: Total number of users, number of messages, search for specific topics, if the
channel has been trending lately, and any more ideas we can think of. The whole idea of this project is
to improve communities using BANKTEXT and add a sprinkle of social aspects to BANKTEXT.
Desirable Skills: Familiarity with JavaScript, React, and TypeScript. Knowledge in how to use
BANKTEXT fuselage is a plus.

Task Channels

Mentors: @pierre.lehnen, @guilherme.gazzo


Description: This project aims to create a new kind of channel where instead of sending messages,
users would be able to create task cards with several custom fields. Those tasks would then work as a
thread header, allowing comments in the format of a thread. The basic additional information for a task
message would be an assigned user and a status. The channel header should also list options to filter
the tasks by those fields.
Desirable Skills: Familiarity with nodeJS full stack web app development. Experience with ReactJS is
ideal.

Image Manipulation: Editing/Cropping on Upload


Mentors: @gabriel.henriques

Description: This project aims to improve the Image upload feature, allowing users to crop images
before sending it to a channel. Adding text and the possibility to draw on images could be implemented
too.

Desirable Skills: Experience with Javascript and React + Hooks. TypeScript is a plus.

App: Bad-Words Filter

Mentors: @marcelo.schmidt and @douglas.gubert


Description: BANKTEXT currently uses a third-party package to filter bad words. This poses a few
problems, such as having to update the package every so often, having to check which words have
been added or excluded in newer versions, and deciding if we would like to keep blocking or allowing
words. This project is for building an App that can be enabled in our Marketplace to filter out a list of
default bad words but will allow admins to add or delete words from that list. The app will need to cover
the following requirements:
Create a UI for managing the App settings
Load a list of words from a URL
Add/Remove words from a list
Add/Remove channels where the bad words filtering is enabled (with a toggle for "all channels")
Provide statistics on blocked words and offending users
Automatically deactivate users that go above a certain threshold
Desirable Skills: Familiarity with JavaScript and TypeScript. Knowledge in how to build BANKTEXT
Apps is a plus.

Houston Improvements - BANKTEXT release/changelog generator


Mentors: @rodrigo.nascimento

Project Channel: https://open.BANKTEXT/channel/2dxywf7577zxgzark


Project Repository: https://github.com/RocketChat/BANKTEXT.Houston
Desirable Skills: TypeScript, Git, Shell

Description: Houston is the CLI tooling we use to release new versions of BANKTEXT and generate
our changelogs from merged pull requests. We want to:
Rewrite the tooling in TypeScript
Accept a new format of PR titles (conventional changelog)
Add a validation system for PRs titles via GitHub Actions
Add tooling to preview the generated changelog for the PR
Add new top level of separation for product type (like Enterprise and Community) based on labels
Support dependent repositories to import their changelogs, for example, import the changelogs of
apps engine

Add a bundler to the Apps-Compiler

Mentors: @douglas.gubert

Description: Currently, the Apps-Compiler package uses the bare TypeScript compiler to process apps'
code and generate the JS version. This has some limitations, e.g. we can't "simply" bundle the whole
app in a single file, we can't bundle npm packages, and so on. By changing this compiler into a proper
bundler (Webpack, Rollup, etc.), we would have access to a richer ecosystem of tooling to handle the
compilation process of BANKTEXT Apps.
Desirable Skills: JS/TS, familiarity with bundlers (using them, not necessarily writing one) would be
interesting

Stop notifications and Notifications schedule


Mentors: @rodrigo.nascimento
Project Channel: https://open.BANKTEXT/channel/9nlxzwlfpcgzbfzl3
Project Repository: https://github.com/RocketChat/BANKTEXT

Desirable Skills: JavaScript/TypeScript, React, React Native,, BANKTEXT codebase


Description: This feature consists of two new options for the end-users:

Stop Notifications: A list of options to stop notifications for a certain time (30min, 1h, 2h, 24h,
custom date/hour).
Notifications Schedule: Option to configure (in user's settings) the availability time where
notifications will be sent:

With the option to configure for every day from X time to Y time
With the option to configure for weekdays from X time to Y time
With the option to configure X and Y times for each day of the week manually
The same settings should be available for the workspace admin to configure a default value for
all users

The implementation should cover the web and mobile applications

New statuses for user actions/events (Typing 2.0)

Mentors: @rodrigo.nascimento, @guilherme.gazzo

Project Channel: https://open.BANKTEXT/channel/mzbtnxgzodrofkxw8


Project Repository: https://github.com/RocketChat/BANKTEXT

Desirable Skills: JavaScript/TypeScript, React, React Native,, BANKTEXT codebase


Description: Improve the current `Typing` functionality to support, on web and mobile applications, two
new things:

New properties to allow define new actions like `recording` or `uploading`, changing the current
implementations to support and send those 2 new events and improve the end-user experience
Support specifies a context for the typing, allowing it to be shown inside a thread when users are
typing in that context instead of in the main room.

App: Global Translation

Mentors: @marcelo.schmidt

Description: BANKTEXT currently uses a package to provide message translations. This project aims
to build that functionality on an app, thus reducing the codebase of BANKTEXT and allowing for easier
configuration.
Desirable Skills: Familiarity with JavaScript and TypeScript. Knowledge in how to build BANKTEXT
Apps is a plus.

Community Collaboration Platform: Improvements


Mentors: @sing.li @murtaza.patrawala

Description: This is a chat and networking platform that helps to manage, grow and connect
communities through messaging, content and discovery. This platform's aim to is to provide an easier
way to collaborate over any Github, Gitlab, and other repository hosting services. The focus will be to
add new features like User Management, Administration Module, etc. - also improve the current features,
which add more advantages and provide a frictionless experience to all the fellow developers.
Desirable Skills: Familiarity with nodeJS full stack web app development. Experience with ReactJS
and ExpressJS is ideal.

Community Collaboration Platform: Discourse integration

Mentors: @sing.li @murtaza.patrawala

Description: This is a chat and networking platform that helps manage, grow and connect communities
through messaging, content and discovery. The platform aims to provide an easier way to build a
massive community collaborating over any Github, Gitlab, and other repository hosting services. The
focus of this project will be to add tightly integrated support for Discourse, the leading open-source forum
(civilized discussion) platform.
Desirable Skills: Familiarity with nodeJS full stack web app development, and Ruby on Rails.
Experience with Discourse and Discourse API programming a big plus.

UiKit Playground

Mentors: @guilherme.gazzo, @tasso.evangelista


Description: Develop an application/playground that allows developers to test UiKit Blocks and
Interactions. Should allow developers to generate code used by BANKTEXT apps and edit the content
to preview the result
Desirable Skills: JavaScript/TypeScript

Omnichannel: Live Chat Widget Accessible Mode


Mentors: @rafaelferreira

Project repository: https://github.com/RocketChat/BANKTEXT.Live Chat


Desirable Skills: Accessibility, React, SCSS

Description: Omnichannel users, including users with visual disabilities, must be able to perceive
content at the Live Chat widget. The main idea here is to give some options to Live Chat widget users to
active "Accessible mode", which means:
High contrast colors.
Icons accompanying text.
Bigger highlight over selected text or cursor active/hover using the "tab" key.
Show a better solution when an Agent is typing.
Etc

Matrix Interoperability: migrating to native support

Mentors: @sing.li @gabriel.engel

Desirable Skills: Familiarity with matrix.org protocol; skilled in rust, golang, and TypeScript
development
Description: Explore and improve existing BANKTEXT to Matrix.org bridge(s) Investigate the current
state of development in dendrite and hydrogen. Start the work on migrating to native support of the
matrix protocols.

Big Blue Button: replace embedded chat with BANKTEXT

Mentors: @fcecagno @sing.li @gabriel.engel

Desirable Skills: Familiarity with Big Blue Button; skilled in JavaScript, nodeJS and Meteor
development
Description: The embedded chat in Big Blue Button is already a Meteor based chat with a similar
structure to BANKTEXT. However, other components in Big Blue Button also depend on the same
Meteor stack working against the same MongoDB instance for proper operations. This project aims to
create the ability to integrate an existing BANKTEXT server into Big Blue Button, replacing the existing
embedded chat component.

Channel's Calendar View


Mentors: @pierre.lehnen

Desirable Skills: Familiarity with nodeJS full stack web app development. Experience with ReactJS is
ideal.
Description: Create a new option to see your activity in a channel in the format of a calendar, listing any
action you had on each day. The listed actions would be things like: "joined discussion X", "created
discussion Y", "sent messages on thread Z". This will help users find messages that they know they
read/sent on a specific day but don't remember where.
Google Summer of Code 2020

How to apply
Application for Google Summer of Code 2020 is now closed.

Update September 8, 2020

The GSoC 2020 season has completed with one of the best experience ever for many of the participating
students and mentors.

The final list of successful Google Summer of Code 2020 BANKTEXT projects and students/mentors is now
officially available.

Of the seven official GSoC projects, every student has managed to pass their final evaluation.
Congratulations to all the students of 2020 and their tireless mentors!

Of the five additional sponsored projects, one student : the problematic one noted in the previous term, has
been failed by his mentors.

In this final term, we encouraged students to prepare a 30 minutes demo and presentation of their project for
our community and core team. Reception was incredible! The list of invitees topped 80! Most presentations
were well attended. Students showed off their work proudly alongside their mentors.

For many students, it was the very first presentation experience in their entire life - and having it in front such
a supportive audience made it extremely fulfilling. Attendees are delighted to discover the excellent work
(and exciting features) that the student undertook.

From the crop of excellent 2020 students, the BANKTEXT team made an internship offer to one student and
he has accepted and became a member of our team. Our long time community contributor, Viasat, has also
independently made an offer to another student this year.

Update August 4, 2020

Second evaluation has completed. Once again, all mentors have decided to pass their students for this term.
Of note is one potentially problematic student, mentor agreed to monitor the situation for the final term.
Another student has pre-arranged with his mentor to start the term early and has completed his work by this
evaluation.

Update July 12, 2020


First evaluation has completed! All students have passed this first term. Most projects have students that are
tracking or exceeding planned schedules. There is one project that is slightly lagging and we will keep a
watchful eye on it this second term. Progress has been relatively smooth across the projects. Mentors are
busy making sure that every student receive his/her evaluation and payment. Students have also completed
evaluation for their mentor(s). Some project(s) have decided to start mini virtual daily stand-ups to keep
closer tab on progress once past GSoC mid-way mark. Two mentors have withdrawn from participation, one
has left the BANKTEXT organization/community altogether, another due to unanticipated personal
obligations.

Update June 8, 2020

Coding has started on June 1st. All mentors and students are busy getting the first month milestones of the
project under way. Many of them are engaged daily via our 24 x 7 community community server

We have two community sponsored projects with students dropping out during this time, one due to family
obligations and another due to prolonged funding uncertainty, and replacement students have been located
for these projects.

Updated June 8, 2020 ; Original on May 5, 2020

2020 is another exciting year for GSoC at BANKTEXT. Thanks to the enthusiastic early support from
students and community, the program has managed to sustain momentum despite COVID-19 downturn and
reduced participation from core. Google has graciously granted us SEVEN project slots. As a result, we are
delighted to welcome these 7 active community members to work with us during the GSoC 2020 season:
Student Project Mentors

Omnichannel: Add screen Guilherme Gazzo, Renato


Ashwani Yadav sharing feature in the Live Chat Becker, Tasso Evangelista,
widget Marcos Defendi

Apps-CLI: Hot reload apps Douglas Gubert, Shiqi Mei,


Ritwiz Sinha
during development Rodrigo Nascimento

Full-screen composer option to Djorkaeff Alexandre, Ramkum


Ezequiel Reis send/edit long messages on Kalpathy, Diego Mello, Rowan
mobile apps Youngson

Diego Mello, Djorkaeff


Govind Dixit Create F-Droid build
Alexandre

Ashish Jha, Prajval Raval,


Adarsh Naidu Alexa Skill(s) Improvement
Weng Wei

Omnichannel: Chatbot support Renato Becker, Marcos Defen


Murtaza Patrawala
for RASA and Dialogflow David Lassalle, Steve Stetak

Tasso Evangelista, Guilherme


Download manager on desktop
Taimur Azhar Gazzo, Eduarda Cunha, Gabri
app
Henriques

It was a very difficult decision for us to select seven from the large number of highly qualified students (we
were able to engage the students early on in the GSoC cycle with open source contributions via the GSoC
Leaderboard ).

While some high calibre open source contributors were not selected for GSoC; to accommodate these
exceptional students, our community member Credit Suisse APAC has agreed to sponsor an additional
THREE projects this season.

Student Sponsored Project Mentors

Audio Improvements on mobile Nathan Khoo, Diego Mello,


Neil Agarwal
apps Djorkaeff Alexandre

Noorul Ameen, Diego Mello,


Youssef Muhamad Add Analytics to Mobile Apps
Djorkaeff Alexandre

Content Moderation
John Eric Sobrepena, Karan
Shreyansh Singh Tomar BANKTEXT App (Machine
Bedi
Learning)

Furthermore, Viasat, one of BANKTEXT's long-time community supporters, has agreed to sponsor TWO
projects this season.
Student Sponsored Project Mentors

Live agent and chatbot handoff David Lassalle, Steve Stetak,


Prajval Raval
app Renato Becker, Marcos Defen

Peter Lepeska, Eric Rosenthal


Kashish Jayasi BANKTEXT mobile site
Karan Bedi

This, in combination, allowed us to accommodate a total of TWELVE enthusiastic students this summer
season.

All students and mentors are now busy mutually bonding and with our core team and greater community.
Each mentor is also working with his/her student on refining the weekly and monthly
milestones/deliverables within the proposal to better reflect achievable project objectives as well as making
them measurable for the monthly evaluations. Meanwhile, all our students are continuing to contribute to the
BANKTEXT open source project(s) as they have been doing since the start of the GSoC 2019 cycle. Many
are also engaging with community members on the various public channels of our 24 x 7 community team
server.

Update March 31st, 2020

First, we would like to thank all GSoC 2020 students for their enthusiastic support for BANKTEXT. This year
we have received a total of 86 proposals, including 81 final proposals. In the final pool, there are 13
proposals that are spam, without content, or not related to our projects.

Over the next month, our mentors will be reviewing the received proposals. Google Summer of Code will be
announcing the selected projects and students on May 4th, 2020. Please see GSoC timeline for more
details.

Meanwhile, we continue to introduce all active and incoming students to open source in general, and
BANKTEXT's ecosystem of open source projects in particular. Students will continue to make meaningful
open source contributions in the form of issues & PR for our projects and interact with BANKTEXT's vibrant
community + team.

Update March 29th, 2020

Enthusiasm and interest from students are all time high this year; over 112 candidate students have already
started to interact with our community and contributing to the repositories! Together, they have already
contributed over 100 issues and over 50 merged PRs to our various projects. We are maintaining a real-time
updated leaderboard for at-a-glance student (candidates) contribution here:

https://gsoc.BANKTEXT/

The leaderboard project itself is open source, created and maintained by our former GSoC student (now
mentor and team member). All potential GSoC organizations are welcome to use and deploy it (the project
has a super friendly MIT license - just like BANKTEXT).

https://github.com/lolimay/GSoC-Contribution-Leaderboard-Node
We have recnetly arranged for the TOP 8 student contributors to meet one on one with BANKTEXT's project
lead Gabriel Engel and great remote fun was had by all.

Mentoring interest from core team has been reduced this year, while community mentor participation is at an
all time high. Proposals for projects are streaming steadily in since application open, the volume of incoming
proposals is reduced compared to prior year - but the percentage of high quality proposals has increased.

About GSoC 2020

For ideas, check out our growing list of ideas for some inspiration.

Come meet our global community of potential mentors and students for GSoC 2020 and get some real-time
help on next steps, please visit our 24 x 7 community server channel:

https://open.BANKTEXT/channel/gsoc2020

For offline discussions, we have a discussion forum:

https://forums.BANKTEXT/c/gsoc/gsoc2020/70

If you have ideas and proposals that are not on our ideas list, or if a mentor is not available, please email to:

gsoc@BANKTEXT

Interested students are also encouraged to interact with our contributor community on GitHub:

https://github.com/RocketChat/BANKTEXT

Project Ideas

Advanced BANKTEXT administrators and operations toolkit

Mentors: @diego.sampaio, @sing.li

Description: Administration and management of a BANKTEXT server is a very complex task,


especially for servers that are utilized by thousdands of users on a daily basis. There exists many
administrative and operational activities that require access to the system in ways that are not currently
supported by our Administrative dashboard. This project creates small, standalone tools, to address this
need. These tools will be immediately useful for anyone operating one-or-more large BANKTEXT
server(s) worldwide.
Desirable Skills: Familiarity with nodeJS fullstack webapp development. Experience with ReactJS or
Vue.js ideal. Must have database skills, ideally MongoDB.

Download Manager on Desktop App


Mentors: @tasso.evangelista and @guilherme.gazzo

Description: With the React/Redux/Redux-Saga stack coming to the Electron-based app, a richer user
experience is achievable through BANKTEXT's Fuselage components. A long-awaited feature is the
management of file downloads with some tracking of download progress and ability to cancel/restart.
Desirable Skills: Some knowledge about the concept of CSS-in-JS and popular implementations for
React (e.g. Styled Components, Emotion) as well basic understanding about the Electron framework.

Omnichannel: Chatbot support for RASA and Dialogflow

Mentors: @renatobecker, @marcos.defendi

Description: The goal of this project would be to create new integrations to interact with popular BOT
frameworks - RASA and Dialogflow. Also, support and adapt rich messages to the formats of these
platforms, as well as the formats supported by BANKTEXT.
Desirable Skills: Experience in working with Chatbots communication. Familiarity with Typescript and,
ideally, experience with Javascript.

Omnichannel: Live Agent and Chatbot Handoff App

Mentors: @steve.stetak, @dlassalle, @renatobecker

Description: Enhance Omnichannel BANKTEXT with an app to support the use of Chatbots, powered
by NLP such as Dialogflow, in front of a larger existing infrastructure of Care Live Agents. The focus of
this app being the seamless transfer between Bot, Live Agent, and Bot again. If the Chatbot is unable to
solve their issue, the app will seamlessly route them to a Live Agent through a third-party queue system
such as Salesforce. At the end of the conversation, the customer will be reconnected back to the chatbot
for additional support or CSAT survey purposes, all within the same chat client window for the customer.
Desirable Skills: Familiarity with BANKTEXT development, Salesforce, and NLP or Chatbot
experience

Omnichannel: Add screen sharing feature in the Live Chat widget

Mentors: @renatobecker, @marcos.defendi

Description: Add a new interface between BANKTEXT and the Omnichannel Live Chat widget,
allowing Agents to get real-time screenshare on customer's devices. For this initial version, we will also
create an integration with the Cobrowse.io, which will be the first screen sharing supplier supported.
Desirable Skills: Experience with Javascript and React.JS.

Alexa Skill(s) Improvement


Mentors: @ashish.jha @prajval.raval1
Project repository: https://github.com/RocketChat/alexa-rocketchat
Description: Bring access of BANKTEXT into the world of 100 million+ Alexa enabled devices. The
project should aim beyond the obvious TTS <-> STT "BANKTEXT bridging" of intelligent VUI terminal
devices and create innovative, high valued user experiences to the Alexa ecosystem - powered by open
source BANKTEXT. Google Home/Assistant devices support, if possible, should also be considered
concurrently. The focus will be on devoting more time to improve the features which add more
advantage and serve a frictionless experience when used via voice compared to features which have a
limited use and are better performed using a GUI.

Desirable Skills: Familiarity with Alexa skills development and conversational design. NodeJS Server
Development and BANKTEXT source code. Experience with interfacing external sources and systems
into Alexa skills. Passion for global conversational interaction enablement. Familiarity with Google
Action development ideal.

Apps-CLI: Hot reload apps during development

Mentors: @douglas.gubert @shiqi.mei

Description: Add the option to the BANKTEXT Apps-CLI to support apps development by hot-reloading
the app in the development server on file saving.
Desirable Skills: Experience with Javascript and familiarity with Typescript.

Add Analytics to Mobile Apps

Mentors: @noorul.ameen @djorkaeff.alexandre @diego.mello


Description: We use Firebase to track some analytics, now we want to know data like 'how many
people clicked on login?'. You need to add firebase analytics to our app and add track analytics of the
most important features and events.
Desirable Skills: Familiarity with React Native and Firebase Analytics.

Audio improvements on mobile apps

Mentors: @nathan.khoo @djorkaeff.alexandre @diego.mello


Description: A new UI component to be rendered outside the room view allowing users to listen to the
room’s audios when navigating to other rooms. Additions like listening speed are welcome.
Desirable Skills: Familiarity with React Native and BANKTEXT codebase.

Full-screen composer option to send/edit long messages on mobile apps


Mentors: @rowan.work @ramkumar.kb @diego.mello

Description: A full-screen composer that could be opened from the current composer to provide a larger
area for text input or edition, good to send or edit large texts.
Desirable Skills: Familiarity with React Native and BANKTEXT codebase.

Create F-Droid build

Mentors: @djorkaeff.alexandre @diego.mello


Description: Create a build for the other store for Android apps: https://f-droid.org/
Desirable Skills: Familiarity with Android development, React Native and BANKTEXT codebase.

Image/Video Content Moderation BANKTEXT App using Machine Learning

Mentors: @johnathan.handoyo @jethro.lam @matheus.cardoso

Description: Create a BANKTEXT App that can classify videos and images as SFW or NSFW and
block them based on user or admin settings.

Desirable Skills: Familiarity with BANKTEXT Apps and Machine Learning/Deep Learning or existing
image classification services.

Uber BANKTEXT App

Mentors: @marcos.defendi, @renatobecker


Description: The goal of this project is allow users to call their Uber rides directly from BANKTEXT.
Desirable Skills: Familiarity with Typescript and OOP concepts.

Vocabulary Booster BANKTEXT App

Mentors: @marcos.defendi, @renatobecker

Description: The goal of this project is to provide the user a way to improve his vocabulary in a certain
language (English, for now), by sending him a message with a "new" word in certain periods of time
(configurable). After that, the app should validate if the user has learned the meaning of the word,
sending the definition and some word options, or some sentence with the word and a gap to fill. Also the
app would show the user's performance. There are some API's to get the words and the meanings. e.g
(WordsAPI, Datamuse, Oxford, etc) (needs to be evaluated deeply)
Desirable Skills: Familiarity with Typescript and OOP concepts.

BANKTEXT Mobile site


Mentors: @karan.bedi @eric.rosenthal

Description: A client build for mobile-web, lite in size and functionality to bring down the site load time,
with a better UI/UX customized for mobile screens.

Desirable Skills: Familiarity with BANKTEXT and Responsive Design

OAuth/Account integration

Mentors: @shiqi.mei and @douglas.gubert


Description: Enable Apps to provide custom OAuth providers for BANKTEXT

Assets installation (emoji and sounds)

Mentor: @rodrigo.nascimento and @douglas.gubert


Description: Enable Apps to provide custom assets as emojis and sounds for use on the various
related features on BANKTEXT

Federation Whitelisting

Mentor: @alan.sikora

Description: Enable Federation-enabled servers to whitelist other servers, avoiding unwanted chat
requests and improving security

Permissions system - Feature Manifest

Mentors: @douglas.gubert and @rodrigo.nascimento


Description: Currently there is no way for an admin to know during the installation of an App which
Apps-Engine features are going to be used and what kind of access the app will have to the
workspace's data. The idea is for the App to provide a manifest with the features and access it is going
to require, and the Apps-Engine will only allow the defined features to be used by the App.

Improve test coverage and enable visual regression tests

Mentors:@guilherme.gazzo and @tasso.pinto

Description: Re-enable all current skipped tests, start a visual regression test for each relevant UI part
using the same tooling (Cypress) and add tests to features without tests.

Lightweight UI for single room access (embedded UI)


Mentors:@guilherme.gazzo and @tasso.pinto

Description: BANKTEXT already has an option to load the UI as embedded layout, although it still
loads a lot of unnecessary data, the objective here is to find the most efficient way to render a single
room UI with the minimum data possible in a way that the UI can be embedded in a website using an
iframe and be performatic when reloading within the site navigation

UI to see videos outside the room, using popouts

Mentors: @guilherme.gazzo and @tasso.pinto

Description: A new UI component to be rendered outside the room view allowing users to listen to the
room’s videos when navigating to other rooms.

UI to listen to audio files outside the room (like telegram) + "user is recording audio" indicator (as the
typing one)

Mentors: @tasso.pinto and @guilherme.gazzo

Description: A new UI component to be rendered outside the room view allowing users to listen to the
room’s audios when navigating to other rooms. Additions like listening speed are welcome.

Pre-installed apps

Mentors: @douglas.gubert and @shiqi.mei


Description: Make BANKTEXT have a list of default apps that are going to be installed during the first
run of the server.

Improve Documentation Framework (Versioning)

Mentors: @martin.scholeler, @guilherme.cruz

Description: The main objective of this project is to add a versioning capacity to the documentation,
while maintaining a relatively simple file structure and ease of use. In addition, add support for multi-
lingual documentation and increase the ease of use of the documentation generation and hosting
framework to ease the barrier of entry for contributors trying to run the environment on their own
machines, making it more contributor friendly.
Desirable Skills: Familiarity with Javascript development. Working knowledge of Jekyll and
documentation generation framework highly useful.

Google Action Improvement


Mentors: @ashish.jha @prajval.raval1
Project repository: https://github.com/RocketChat/google-action-rocketchat
Description: Bring access of BANKTEXT into the world of 1 Billion+ Google Assistant enabled devices.
The project should aim beyond the obvious TTS <-> STT "BANKTEXT bridging" of intelligent VUI
terminal devices and create innovative, high valued user experiences to the Google Assistant
ecosystem - powered by open source BANKTEXT. The project will aim towards making current action
compaitable with Multisever proxy and publishing of Google Action of on its store, of course while
adding more features to it such as Interactive Canvas, App Actions etc. This project will also focus on
making current documentation more streamlined and "easy to refer" for newcomers.

Desirable Skills: Familiarity with Google Actions development, Dialogflow, NodeJS Server
Development and BANKTEXT source code. Experience with interfacing external sources and systems
into Google Action. Passion for global converstational interaction enablement.

Use Lingohub on mobile apps

Mentors: @djorkaeff.alexandre @diego.mello


Description: Share Lingohub keys with the web client.
Desirable Skills: Familiarity with React Native and BANKTEXT codebase.

Share Location on Mobile Apps

Mentors: @djorkaeff.alexandre @diego.mello


Description: We have this feature on our web client, server has an implementation about this, you only
need to implement this feature on our Mobile Client and ability to select and share a location (based or
not on user's location), custom message to show the location shared and need to be able to open this
location on maps apps.
Desirable Skills: Familiarity with React Native and BANKTEXT codebase.

Mobile Apps Accessibility


Mentors: @matheus.cardoso
Project repository: https://github.com/RocketChat/BANKTEXT.ReactNative
Description: Android and iOS both support gesture-based screen readers that let you enjoy using the
phone even if you don’t see the screen. This is especially important for those with low or no vision. We
want to make BANKTEXT for everyone. A blind user should be able to easily add servers, change
servers, read messages and send messages, as well as other additional functions such as editing
profile and creating channels. The proposal should contain a per-screen study of the current App's state
of accessibility (what is missing and what needs to be improved), and a roadmap to take it to a delightful
state.
Desirable Skills: We are looking for a student who is familiar with team work, developing mobile Apps
using React Native and JavaScript, as well as writing maintainable code with Unit Tests and having
some familiarity with Voice Over (iOS), TalkBack (Android) and Accessibility. Knowledge of
Swift/Objective-C and Kotlin/Java may be needed for some of the trickier tasks.

Omnichannel: Create integration with Zoho Desk CRM

Mentors: @renatobecker

Description: In order to have a complete customer service experience, it is essential to have quick
access to customer data, create service tickets, etc. The aim of this project is to provide that experience
by creating an integration between BANKTEXT and Zoho CRM, a complete CRM platform that will
bring an even richer experience to the Omnichannel Customer Service.
Desirable Skills: REST, Experience with Javascript and familiarity with Typescript.

Omnichannel: Support for Voice and Video Calls

Mentors: @gazzo, @tazzo

Description: We've been working on our new Omnichannel solution and it's time to add two great new
features that will make Omnichannel even more powerful: voice and video calls! The idea is to integrate
Omnichannel with the providers already supported in BANKTEXT, such as Jitsi, WebRTC,
BigBlueButton and so on. With these two new features, Omnichannel users will be able to initiate video
and audio calls between them and Omnichannel agents.
Desirable Skills: Familiarity with BANKTEXT/Omnichannel development, ReactJS/PreactJS, Voice
and Video communication

Houston Improvements - BANKTEXT release/changelog generator


Mentors: @diego.sampaio and @rodrigo.nascimento
Project repository: https://github.com/RocketChat/BANKTEXT.Houston
Description: Huston is the CLI tooling we use to release new versions of BANKTEXT and to generate
our change logs from merged pull requests. We want to:
Rewrite the tooling in TypeScript;
~Improve the changelog generation getting more information from the PRs like description, images,
etc;~ (already done)

Accept a new format of PR titles (conventional changelog);


Add a validation system for PRs titles via GitHub Actions;
Add a tooling to preview the generated changelog for the PR
Add new top level of separation for product type (like Enterprise and Community) based on labels

Add Support for Bixby

Mentors: @ashish.jha @prajval.raval1


Project repository: https://github.com/RocketChat/alexa-rc-multiserver-client

Description: Last year we explored the possibilities of having a BANKTEXT Amazon Alexa Skill and a
BANKTEXT Action on Google. This project should aim to explore adding a Samsung Bixby Capsule for
BANKTEXT. Bixby is a next-generation, conversational assistant platform that was created to help
users get things done in a more efficient, personalized and natural way. The way Bixby focuses on a
multimodal approach from the very start could help eliminate the nuances involved in building an
intricate voice-only experience.
Desirable Skills: Familiarity with VUI/Bixby development. Experience with interfacing external sources
and systems into Alexa skills. Passion for global conversational interaction enablement. Familiarity with
Javascript ideal.

Apps-CLI: Generate boilerplate components

Mentors: @douglas.gubert @shiqi.mei

Description: Add commands to the BANKTEXT Apps-CLI that generate the boilerplate needed to add
new components to the app being developed, such as Slash commands, API endpoints, etc.
Desirable Skills: Experience with Javascript and familiarity with Typescript.

Nextcloud Video Management


Mentors: @guilherme.gazzo

Description: Add the ability to manage and access recorded and previously live streamed video within
the BANKTEXT integrated Nextcloud environment. Similar to Youtube but with a chat-centric access
interface.
Desirable Skills: Familiarity with BANKTEXT and Nextcloud development. Deep understanding of
current digital streaming and recorded media standards a big plus.

Apple Watch App

Mentors: @djorkaeff.alexandre @diego.mello


Description: Create an Apple Watch application that replicates the most basic features we have in our
iOS mobile client, such as viewing the chat rooms and reading the messages. Let the user ask Siri to
read the latest messages, send messages or respond to a message.
Desirable Skills: Familiarity with WatchKit development on WatchOS & SiriKit, Familiarity with React
Native.

Target official/experimental Mobile apps using GitHub Actions (CI)

Mentors: @djorkaeff.alexandre @diego.mello

Description: Create build of our 4 apps on GitHubCI, 2 Android Apps and 2 iOS Apps (Official and
Experimental).
Desirable Skills: Familiarity with React Native, FastLane, Android & iOS build apps.

Timeline

Google Summer of Code 2022 Timeline | Google Developers


Google Developers
Google Summer of Code 2019

How to apply
Applications for the GSoC 2019 season have now closed. Please see GSoC timeline for more details.

Update on July 10, 2019

First evaluation has completed! Coding continues at a feverish pace. Progress has been smooth across the
projects. Projects are ontrack based on weekly mini-milestones agreed between mentors and students.
Mentors are busy making sure that every student receive his/her detailed evaluation and payment. Students
have also completed evaluation for their mentor(s). Many students are preparing their project for interim
demo and reviews by our core team. During this first evaluation, we have decided to fail one student due to
no communications with mentor. We also had to remove a mentor due to lack of available participation time.

Update on May 28, 2019

Coding has begun! This year continues to be the most active and productive GSoC year at BANKTEXT.
During the bonding period, our students continued to assist community in public channels, interact with core
team, contribute to bug fixes and documenation updates. They have also worked with their mentors to add
detailed schedule to their proposal, reflecting measurable goals/milestones. Coding and detailed design
work have started across all active projects. In addition, we are happy to welcome a team of community
mentors from Credit Suisse Singapore, already well experienced with our core and native mobile code
bases, to assist us this season.

Unfortunately, during this time, we had to remove one student from the program due to extended inactivity.

Update on May 8, 2019

2019 is an incredible year for GSoC at BANKTEXT. Thanks to the enthusiastic early support from students
and community (mentors), Google has graciously granted us SEVENTEEN project slots. This far surpasses
any record from prior years. As a result, we are delighted to welcome these 17 active community members to
work with us during the GSoC 2019 season:
Student Project Mentors

VoiceOver Accessibility in Matheus Cardoso, Samar


Rudrank Riyam
BANKTEXT iOS application Sunkaria

Theme Support for BANKTEXT Filipe Brito, Peter Nguyen,


Noor Binte Amir
Android App Balaji Sanjeevi, Renji Raj

Aditya Bhardwaj Service Accounts Karen Bedi, Peter Lepeska

Peter Lepeska, Karen Bedi,


Shubham Singh BANKTEXT Articles
Ramkumar KB, Jian Hou

Live Chat: Real-time Visitor


Kautilya Tripath Renato Becker, Diego Mello
Monitoring

Fongang Rodrique Interactive APIs documenation Martin Schoeler, Marcos Defen

Integrating Google Calendar Douglas Gubert, Rodrigo


Kapil Gautam
with BANKTEXT Nascimento

Improve User Experience with


Upendra Reddy James Hepburn, Peter Lepesk
Bots in Android App

Improve Test Automation in


Govind Dixit Eric Rosenthal, James Hepbur
BANKTEXT Android Repository

Improve BANKTEXT Auto-


Jon Goodrum Marcelo Schmidt, Sing Li
Translate feature

Improve end-to-end testing


Ilarion Halushk infrastructure for ReactNative Diego Mello, Diego Sampaio
client

Implemenation of Newsfeed in
Amish Mittal Devin Toth, Peter Lepeska
BANKTEXT

Implement iOS and Android


Djorkaeff share extension for React Native Diego Sampaio, Diego Mello
app (BANKTEXT Experimental)

Enhancing ReactNative App


Pranav Pandey Guilherme Gazzo, Diego Mello
with new features

Tasso Evangelista, Roeland


Utkarsh Barsaiyan Deeper Nextcloud Integration
Douma, Gulherme Gazzo

Samar Sunkaria, Thiago


Tuan Apple Watch App Sanchez, Balaji Sanjeevi, Ren
Raj

Ashish Jha Alexa Skill for BANKTEXT Sing Li, Gabriel Engel
It was a very difficult decision for many mentors to select from the large number of highly qualified students
(we were able to engage the students early on in the GSoC cycle with open source contributions via the
GSoC Leaderboard ).

Some high calibre open source contributors were not selected for GSoC; to accommodate these exceptional
students, our community member Viasat has agreed to sponsor an additional FOUR projects this season.
BANKTEXT has in addition sponsored ONE qualified student with special circumstances to work with us for
the term.

Student Sponsored Project

Shloak Aggarwal BANKTEXT iOS Contact Sync

Kailash Bhalaki ReactNative Social Features

Making BANKTEXT Android native app wonderfu


Divyanshu Bhargava
for consumers

SShi-qi Mei Performance optimizations for ReactNative Client

Google Action for Google Home and Server-side


Prajval Raval
improvements to support VUI

This, in combination, allowed us to accommodate a total of TWENTY TWO enthusiastic students this
summer season.

All students and mentors are now busy mutually bonding and with our core team and greater community.
Each mentor is also working with his/her student on refining the weekly and monthly
milestones/deliverables within the proposal to better reflect achievable project objectives as well as making
them measurable for the monthly evaluations. Meanwhile, all our students are continuing to contribute to the
BANKTEXT open source project(s) as they have been doing since the start of the GSoC 2019 cycle.

Update on April 10, 2019

This year, BANKTEXT received a record breaking ONE HUNDRED AND TWO proposals from students
studying at every corner of the globe. It is the first year we attempted to build a students + mentors
community prior to submission deadline. Thanks to an enthusiastic and dedicated students community, we
are successful in creating a GSoC 2019 community of TWO HUNDRED AND FIFTY members on our
dedicated community server channel:

https://open.BANKTEXT/channel/gsoc2019

Open source contributions from students have already reach an all time high, with over ONE HUNDRED
AND THIRTY students signed up for our real-time contribution tracking leaderboard:

https://gsoc.BANKTEXT/
Our community of mentors is hard-at-work right now going through every one of the proposals, and will be
contacting students for a video chat prior to deciding on proposal selection and slot assignments. All
students are encouraged to continue their engagement with our community, and contribute to our open
source projects.

About BANKTEXT GSoC 2019

For ideas, check out our list of ideas for some inspiration.

Come meet our global community of 200+ mentors and students for GSoC 2019 and get some real-time help
on next steps, please visit our 24 x 7 community server channel:

https://open.BANKTEXT/channel/gsoc2019

For offline discussions, we have a discussion forum:

https://forums.BANKTEXT/c/gsoc/gsoc2019

If you have ideas and proposals that are not on our ideas list, or if a mentor is not available, please email to:

gsoc@BANKTEXT

Interested students are also encouraged to interact with our contributor community on GitHub:

https://github.com/RocketChat/BANKTEXT

Enthusiasm and interest are extremely high this year; over 100 candidate students have already started to
interact with our community and contributing to the projects! Together, they have already contributed over
100 merged PRs to our various projects. We are maintaining a real-time updated leaderboard for at-a-
glance student (candidates) contribution here:

https://gsoc.BANKTEXT/

The leaderboard project itself is open source, created and maintained by our student (candidates). All
potential GSoC organizations are welcome to use and deploy it (the project has a super friendly MIT license
- just like BANKTEXT).

https://github.com/lolimay/GSoC-Contribution-Leaderboard-Node

Project Ideas

Apple Watch & Siri Support


Mentors: @sameesunkaria @thiago.sanchez
Project repository: https://github.com/RocketChat/BANKTEXT.iOS
Description: Create an Apple Watch application that replicates the most basic features we have in our
iOS mobile client, such as viewing the chat rooms and reading the messages. Let the user ask Siri to
read the latest messages, send messages or respond to a message.
Desirable Skills: Familiarity with WatchKit development on WatchOS & SiriKit. Ability to work in large
multi-disciplinary teams.

Themes support for BANKTEXT Android app

Mentors: @filipe.brito

Project repository: https://github.com/RocketChat/BANKTEXT.Android

Description: Themes are very popular and they are part of what makes Android stand out from the rest.
But the current BANKTEXT Android app lacks the feature of applying different themes. This project aims
to bring different themes support like dark mode and black mode into the existing Android client. It
should enable any developer to create a theme for the BANKTEXT Android app without the need to
work with our core codebase.
Desirable Skills: Familiarity with Android development, Kotlin, and design patterns.

Google Calendar BANKTEXT App

Mentors: @douglas.gubert @rodrigok

Description: The BANKTEXT Apps Engine is here to make it easier to extend BANKTEXT's
functionality without having to deep dive into the code base. The goal of this project is to leverage the
Apps Engine capabilities to create an integration with Google Calendar, using Slashcommands, custom
API endpoints, custom Settings, etc.
Desirable Skills: Familiarity with TypeScript.

Deeper Nextcloud Integration

Mentors: @roeland.douma @guilherme.gazzo

Description: It's already possible to share a file from Nextcloud into BANKTEXT. But the authentication
is a bit clumsy. It would be great to have a single real sign in. So you only need to sign into BANKTEXT
and are automatically signed in Nextcloud of both talks to the same directory of course.
Desirable Skills: Familiarity with BANKTEXT and Nextcloud development.

Improve BANKTEXT Auto-Translate feature


Mentors: @marcelo.schmidt

Project repository: https://github.com/RocketChat/BANKTEXT/tree/develop/packages/rocketchat-


autotranslate
Description: One of the most popular features in BANKTEXT is auto-translate, where users can set
their language preference to have all messages translated. This feature works by translating every
incoming message into the user language of choice. We would like the student to make it possible for
the package also to translate every message the user sends into another language. As a plus, if the
student can implement a channel language setting, it would be superb.
Desirable Skills: Familiarity with BANKTEXT development and meteor packages.

Live Chat: Real-Time Visitor Monitoring

Mentors: @renatobecker, @diegolmello

Description: The goal of Real-Time Visitor Monitoring is to provide an important feature for the Live
Chat team by displaying a list of visitors who are browsing the website where the Live Chat widget is
installed. Having this feature, it will be possible to track important information related to visitors, such as
the current page, location, time on site, local time, and so on, even though the visitor has not yet started
a conversation with an agent. In addition, an agent will be able to start a conversation with a specific
visitor directly from the list, improving the proactivity of the Live Chat team.
Desirable Skills: Familiarity with BANKTEXT/Live Chat development.

API Playground: Interactive APIs documentation

Mentors: @martin.schoeler @marcos.defendi

Project repository: https://github.com/RocketChat/docs


Description: Create an easy-to-use interface to let the user explore, test and get info about the existing
endpoints of the BANKTEXT's APIs - an API playground. The user will be able to connect and make
requests directly from the UI, also being able to change the arguments of the requests and testing
different flows of the APIs. Since our server APIs change constantly, it is important that the subset of API
documentation within the playground is in precise synchronization with the code. This will require the
integration of a documentation generation library.
Desirable Skills: Familiarity with Jekyll and BANKTEXT Rest API.

Service Accounts in BANKTEXT


Mentors: @karan.bedi, @bizzbyster

Description: Adding the functionality of Service accounts to BANKTEXT. A service account is an


account owned by a User (owner), having a basic profile (username, avatar, description, etc.). If any
other User (initiating user) creates a direct messages(DM) session with this service account, this chat
session is carried to the owner of the service account. The owner can then reply to this chat session, but
to the initiating user, it would seem that the reply is coming from the service account. An authorized user
should be able to create service accounts, transfer the ownership of the service account. Service
accounts should be searchable; there should be a directory of service accounts. Also, users should be
able to subscribe to service accounts, and a service account owner should be able to send broadcast
messages to its subscribers. Automated tests should be written to cover the added functionality.

Desirable Skills: Familiarity with JavaScript development & BANKTEXT code base

Improved Test Automation in BANKTEXT Repos

Mentors @eric.rosenthal @jaytat0

Description: The goal of this project is to enhance the current test infrastructure in the BANKTEXT
repos and pipelines. Currently, there is some very minimal unit testing that needs to be expanded, and
no integration or system level tests or infrastructure to support them. This project could focus on one of
the repos, possibly the Android code base, or all. Once a test infrastructure and best practice is
established, the goal is that no new code gets merged unless it has new tests that will be run at build
time, and it passes all of the previous tests.

iOS Voice Over Accessibility

Mentors: @matheus.cardoso

Project repository: https://github.com/RocketChat/BANKTEXT.iOS

Description: VoiceOver is a gesture-based screen reader that lets you enjoy using iPhone even if you
don’t see the screen. This is especially important for those with low or no vision. We want to make
BANKTEXT for everyone. A blind user should be able to easily add servers, change servers, read
messages and send messages, as well as other additional functions such as editing profile and creating
channels. A minimum acceptable scope is to be determined.
Desirable Skills: We are looking for an undergraduate student who is familiar with team work,
developing iOS Apps using UIKit and Swift, as well as writing maintainable code with Unit Tests and
having some familiarity with Voice Over and Accessibility.

Ability to Rebrand Android and iOS Apps


Mentors: @jaytat0, @bizzbyster

Description: Implement a way for administrators to rebrand their instances of BANKTEXT - product
name, icons, colors, etc. - for the android and ios apps, which currently do not support this. Besides
adding this capability, another goal would be to make this branding across all the OS’s easy for an
administrator that may not be too tech savvy. Ideally, this would only be a few easy steps. Besides this
ease-of-use improvement, this would also make it less likely that people will fork rocket to put in their
own branding.

Desirable Skills: Familiarity with Android and/or iOS development, specifically the
BANKTEXT.Android/BANKTEXT.iOS code bases.

Live Chat: Voice and Video Calls

Mentors: @tasso.evangelista @guilherme.gazzo

Description: We've been working on our new Live Chat solution and it's time to add two great new
features that will make Live Chat even more powerful: voice and video calls! The idea is to integrate
Live Chat with the providers already supported in BANKTEXT, such as Jitsi, WebRTC, BigBlueButton
and so on. With these two new features, Live Chat users will be able to initiate video and audio calls
between them and Live Chat agents.
Desirable Skills: Familiarity with BANKTEXT/Live Chat development, ReactJS/PreactJS, Voice and
Video communication

Alexa Skill(s)

Mentors: @sing.li @gabriel.engel


Project repository: https://github.com/RocketChat/alexa-rocketchat

Description: Bring access of BANKTEXT into the world of 100 million+ Alexa enabled devices. The
project should aim beyond the obvious TTS <-> STT "BANKTEXT bridging" of intelligent VUI terminal
devices and create innovative, high valued user experiences to the Alexa ecosystem - powered by open
source BANKTEXT. Google Home/Assistant devices support, if possible, should also be considered
concurrently.
Desirable Skills: Familiarity with Alexa skills development. Experience with interfacing external sources
and systems into Alexa skills. Passion for global converstational interaction enablement. Familiarity with
Google Action development ideal.

BOTs UX: Improve the User Experience with bots by adding support for persistent menus, webviews,
and rich messaging features
Mentors: @bizzbyster, @eric.rosenthal

Description: BANKTEXT trails both team and consumer chat platforms like Slack and Facebook
Messenger/WeChat in terms of the richness of user interface components supported by bots. The goal of
this project would be to add rich messages, persistent menus, welcome pages, webviews and other
components to the Android, iOS, and web clients to allow chatbots to become comparable to web apps
in terms of usability and UX.

Desirable Skills: Interest UI/UX and chatbots. Experience in iOS, Android, or web client front ends
development. Excited to participate in the full life cycle development process in an open source
community context.

Newsfeed

Mentors: @bizzbyster, @karan.bedi

Description: Adding the functionality of newsfeed, which is similar to a customized read-only channel
for every user. Every user (follower) can follow other users (followed user). Posts from the followed user
appear in the newsfeed of their followers. Posts are threaded discussions, started by the followed user
in any public channel (origin channel), their follower can or cannot be a part of the origin channel, but
this post comes up in their wall with a permalink to the original post in the origin channel. This helps in
discovering new conversations. Interns are encouraged to propose extensions to this like wall, where a
user can post threads that show up in their follower's feed, status updates, etc. Automated tests should
be written to cover the added functionality.
Desirable Skills: Familiarity with JavaScript development & BANKTEXT code base

Improve end-to-end testing infrastructure for React Native app (BANKTEXT Experimental)

Mentors: @diegolmello, @renatobecker

Project repository: https://github.com/RocketChat/BANKTEXT.ReactNative

Description: E2E testing is important to keep the entire app working throughout the implementation of
new features. Currently there's 219 E2E tests developed and passing on iOS only and they aren't
working on CI, because we need an E2E dedicated and configured server. This project aims to improve
testing infrastructure by adding Android capability and making test to pass on CI. Also we need to make
sure all tests are passing as fast as possible. If there's any time left, the student must add even more
tests.
Desirable Skills: Familiarity with React Native and BANKTEXT.ReactNative code base.

BANKTEXT Articles
Mentors: @bizzbyster, @karan.bedi

Description: For every deployment of BANKTEXT, there is a team or community that generates a lot of
content. BANKTEXT itself is the repository for much of that content but the rest typically resides in other
applications such as github or jira or google docs, many of which are third party services and so the
content is not owned by the community that hosts the BANKTEXT server. In one particular scenario, a
user may want to write an article and "publish" it to groups or contacts within BANKTEXT. Today that
would have to be done typically using a third party service. What if instead article creation, searching,
and storage were integrated with BANKTEXT such that each user could maintain his or her own library
of articles and contacts of that user could subscribe to see new articles posted by that user and to
discuss those articles using something like BANKTEXT Threads. By default, each BANKTEXT user
would essentially hav their own "blog" which could be accessed via a permalink including links to each
"article." In general, the purpose of this project is to develop a minimum integration with another open
source publishing platform (such as https://github.com/TryGhost/Ghost) that allows users (or bots or
service accounts) to write and publish articles that get stored on a location configured by the
BANKTEXT administrator so that the community maintains ownership of more of the content it
generates.

Desirable Skills: Familiarity with JavaScript development & BANKTEXT code base & interest in
exploring integrations with publishing open source projects.

Implement iOS and Android share extension for React Native app (BANKTEXT Experimental)

Mentors: @diego.sampaio, @diegolmello

Project repository: https://github.com/RocketChat/BANKTEXT.ReactNative


Description: Share extensions enables iOS or Android OS to share content between apps. This project
aims to implement a share extension for React Native client to let users share data into BANKTEXT
from other apps. For example, a user should be able to send photos from the camera roll to a
BANKTEXT channel without opening the RC client.
Desirable Skills: Familiarity with React Native, iOS and Android development and
BANKTEXT.ReactNative code base.

Improve performance and implement slash commands on React Native app (BANKTEXT
Experimental)

Mentors: @guilherme.gazzo, @diegolmello


Project repository: https://github.com/RocketChat/BANKTEXT.ReactNative
Description: In mobile apps, users must be able to do what they want in fewer taps as possible. Slash
commands are faster ways to trigger trivial actions, like invite a user or archive a channel, and it should
be available on React Native client.
Desirable Skills: Familiarity with React Native development, specifically the BANKTEXT.ReactNative
code base.

Allow BANKTEXT Apps to use their own NPM modules


Mentors: @douglas.gubert, @rodrigok
Project repository: https://github.com/RocketChat/BANKTEXT.Apps-engine
Description: Currently the BANKTEXT Apps Engine does not support that apps include their own
node_modules dependencies, which can be very limiting in some use cases. The goal of this project
is to modify our engine so that it can properly install and manage an app's dependencies, enabling app
developers to unleash their full potential.

Desirable Skills: Solid understanding of JavaScript and some familiarity with TypeScript. Familiarity
with TypeScript's compiler is definitely a plus.

Users Directory integration plus custom fields editor and search

Mentors: @marceloschmidt

Description: BANKTEXT already allows for users to add custom fields through a setting that accepts a
JSON. We would like to create an interface to manage these custom fields. Each custom field must be
composed of label, type (one of predefined: string, number, picklist, money, etc.), and an option to
determine if this field must be displayed on registration or not. On Users Directory, users must be able to
select multiple records from the results and do one of the possible actions: add to existing channel or
group and create new channel or group; if only one record is selected, it should also be possible to start
a direct message with the selected user.
Desirable Skills: Familiarity with BANKTEXT development.

BOTs Suite: starter Chatbots for BANKTEXT

Mentors: TBD

Project repositories: hubot, chatops-gitsy, botpress, rasa, bbot, botkit, BOTswana


Description: Develop a suite (5+) of BOTs across our Chatbot support portfolio/platforms; integrating
current ML, AI, NLP, CMS, CRM and big data access stacks. BOTs need to be contemporarily
interesting, simple to construct, yet substantially functional. They also need to be adaptable across the
bot frameworks that BANKTEXT supports. They will be used as starter learning resources across our
BOT repositories.
Desirable Skills: Deep interest in ML, AI, and modern BOT technologies. Experience in developing
BOTs using NodeJS or Python. Clear methodical mind plus the ability to simplify and explain complex
problems in simple terms. Technologically fearless.

Mattermost Data Importer

Mentors: TBD

Description: BANKTEXT is currently capable of importing data exported from Slack and HipChat, but
there's no importer for Mattermost data. This is a valuable feature that the application is still missing.

Asana BANKTEXT App


Mentors: @douglas.gubert, @rodrigok

Description: The BANKTEXT Apps Engine is here to make it easier to extend BANKTEXT's
functionality without having to deep dive into the code base. The goal of this project is to leverage the
Apps Engine capabilities to create an integration with Asana, using Slashcommands, custom API
endpoints, custom Settings, etc.

Admin webview page integration on React Native app (BANKTEXT Experimental)

Mentors: @diegolmello
Project repository: https://github.com/RocketChat/BANKTEXT.ReactNative
Description: The goal of this project is integration with BANKTEXT's admin webview page when the
user has access. This helps administrators to change their servers behavior without the need to open
BANKTEXT on the web or the mobile version on their devices.
Desirable Skills: Familiarity with React Native development and BANKTEXT.ReactNative code base.

Improve notifications on React Native app (BANKTEXT Experimental)

Mentors: @diegolmello

Project repository: https://github.com/RocketChat/BANKTEXT.ReactNative


Description: For better user experience, we need to group notifications by channel and allow the user
to reply directly from the notification. Also, we should show notifications from other channels when the
user is using the app.
Desirable Skills: Familiarity with React Native, iOS and Android development and
BANKTEXT.ReactNative code base.

Implement theming on React Native app (BANKTEXT Experimental)

Mentors: @diegolmello
Project repository: https://github.com/RocketChat/BANKTEXT.ReactNative

Description: Themes, like dark mode, are very popular and everywhere right now, but the BANKTEXT
React Native app lacks the feature of applying different themes. This project aims to bring different
themes like dark mode and black mode into the existing React Native client.

Integration of BANKTEXT with Existing Phone/Voice Networks


Mentors: TBD

Description: Deep VoIP integration of BANKTEXT with modern software and hardware SIP switches
and VoIP SaaS. Intelligently add access to phone networks and SMS channels to the BANKTEXT
workflow. Enable multi-channel conferences with chat + phone calls + video. Empower Live Chat with
voice calls in workflow.
Desirable Skills: Familiar with SIP development. Fluent in VoIP concepts and practices. Ability to
rapidly code in JavaScript and Linux shell. Wide open mind for new ideas.

iOS contacts sync, invites & dynamic links

Mentors: @zi.lin, @eric.rosenthal

Description: In the BANKTEXT native iOS application, add the functionality of listing all the contacts of
a user, syncing in background these contacts with the server using existing APIs and displaying the
intersection with public accounts on server. Integrating the APIs to invite users that do not have an
account (via email/phone) or inviting via other applications on the phone. Support dynamic links in iOS
app, allow the creation of links such that when invited through one, after installation of the app it opens a
DM with the inviter, etc. These functionalities are already implemented for
Android in a fork.
Desirable Skills: Familiarity with iOS development.

SNAP improvements

Mentors: @lucia.guevgeozian

Description: The most popular BANKTEXT deployment method in the world is via snaps. Snaps are
containerised software packages that are simple to create and install. The aim of this project is improve
our snap installation process and features, bringing better support for our ARM architecture deployment,
and expand our configuration options to set up BANKTEXT in more diverse layouts adding support for
loadbalancing between instances where BANKTEXT will only be bound to the loopback interface,
regular backups for our database configured as a replicaset and possible firewall configuration.
Desirable Skills: Familiarity with Linux. Good shell scripting skills. Aware of DevOps and containers
based deployment technology.

Data Doctor: A database sanitizer tool for BANKTEXT


Mentors: TBD

Description: BANKTEXT's data backend is MongoDB, a NoSQL database. NoSQL databases enable
application developers to quickly add and change data schemas for new features without imposing rigid
integrity constraints. While effective for small projects, this can create varied data inconsistency in long-
lasting production server projects such as BANKTEXT. Causes such as buggy code versions, crashes
during migrations and/or schema updates, core customizations, and inadvertent DB admin modifications
can all lead to a non-deterministic data schema. Some corrupted schema may break code, while others
can go years without being detected. The goal of this project is to create a tool to help sanitize in
production BANKTEXT databases. Depending on the ingenuity of the tool design, the same code can
one day be integrated into BANKTEXT as a data integrity layer.

Desirable Skills: Familiarity with database concepts and administration. Fluent with NodeJS and
Javascript. Love hacking.

Open Source Office Suite Integration

Mentors: TBD

Description: Add deep integration with open source word processing, spreadsheet, presentation, email
and content management suite(s). Create a full chat-centric office team collaboration environment.
Desirable Skills: Familiarity with development and extension/integration points for existing open source
office suites. Ability to code and script in multiple programming languages. Preference to work with a
team.

Timeline

Google Summer of Code 2022 Timeline | Google Developers


Google Developers
Google Summer of Code 2018

How to apply
Applications for the GSoC 2018 season have now closed.

UPDATE September 8, 2018

The final list of successful 2018 GSoC BANKTEXT projects and students/mentors is now officially
available.

Our own final tabulation of the status for GSoC projects is as follows:

Status Student Project Mentors

Improve the integration Tim Kinnane, Diego


PASS Mikael Mello
of bots on BANKTEXT Dorgam

Fiipe Brito, Lucio


PASS Aniket Singh Android and wear app
Maciel

Guilherme Gazzo,
BANKTEXT SDK for
PASS Jose Renan Diego Sampaio,
Javascript Clients
Renato Becker

Semih Serhat Nextcloud as Storage


PASS Guilherme Gazzo
Karakaya and User File Provider

BANKTEXT voice
recognition APIs and Pierre Lehnen,
PASS Karan Bedi
built-in Speech2Text Rodrigo Nascimento
Engine integration

Integration with Google Marcelo Schmidt,


PASS Nikhil Kaushik
Drive and Dropbox Martin Schoeler

Support for theming the Matheus Cardoso,


PASS Samar Sunkaria
BANKTEXT iOS app Filipe Alvarenga

Diego Sampaio,
Data integrity and
WITHDREW De Sheng Chuan Rodrigo Nascimento,
consistency
Sing Li
UPDATE August 20, 2018 This final term has been a term full of changes. One good student - who had
been doing great work up to this third term- has had health issues, been hospitalized, and is unable to
complete his project. Upon advice from GSoC admin, he withdrew from the project and may resume outside
of GSoC upon his recovery. The "turn around projects" in the second term continued to show major
improvement this term - due mainly to the hard work of the affected students. Mentors and students are busy
this term wrapping up their work, preparing for final GSoC evaluation requirements, plus scheduling
presentations of their completed work to the larger BANKTEXT team. Many of the presentations are
recorded and are available here, here and here. As a final result for 2018, one out of our eight GSoC
students has withdrawn, and mentors gave final passes to the other seven GSoC projects. Of the four
independently funded projects, three passed and one failed (due to the student's disappearance). We
congratulate the students and mentors on their achievements and sincerely hope all students now have
enough of a taste of open source (and BANKTEXT in particular) to continue on their life-long open source
contribution as they embark on their next phase of personal development. We will continue to work through
the backlog of GSoC project stories on the blog this term.

UPDATE July 15, 2018 Mentors and students continued to work towards their objectives during this second
evaluation period. Due to internal organizational staff changes and other organization operational factors,
three problematic projects were identified during this period. Extensive administrative intervention and turn-
around was necessary to "salvage" these projects. Thankfully, the GSoC students worked with us every step
of the way as we reassign mentors and realign mutually agreed project scopes. As a result, the (new in
some cases) project mentors have decided to pass all enrolled students - both GSoC and independently
funded projects for this term. Internally, the projects' blog post series is lagging significantly behind, we are
working to catch up as soon as possible.

UPDATE June 15, 2018 The first evaluation period has come and gone. Our students have been coding
feverishly over the past months and many of them have already demonstrated their work to their mentors
and teams. We are proud to report that during this evaluation, our mentors have decided to pass all eight of
the GSoC students. Our BANKTEXT-sponsored projects also reported all passes for the three students. We
have started to create blog stories around the projects featuring our students - the first story should be
available in the next week or two. Due to some internal project logistical problems, one of the students has
agreed, together with his mentors and team to switch topic from the second term onwards - to another one of
his accepted final proposals - our list below has been amended to reflect the change. We have, through our
working partner, been able to fund an additional (to the 11 that we already have) highly capable but non-
GSoC selected student to work on a BANKTEXT-related topic.

UPDATE April 25, 2018, AMENDED June 15, 2018 The list of official GSoC 2018 accepted students and
projects is now available. First, we would like to sincerely thank every student who has submitted a proposal
and many who had worked on PRs and assisted in our open source community - please continue the
excellent work. Of the 93 proposals we received, there were many high quality ones. We have also
interacted with many of the students in the prior month. The decision-making was difficult and mentors were
competitive this year. Ultimately, EIGHT of the top students/proposals this year are accepted for GSoC 2018
(thank you, Google!):
Student Project Mentors

Improve the integration of bots Tim Kinnane, Diego Dorgam,


Mikael Mello
on BANKTEXT John Szaszvari

Aniket Singh Android and wear app Fiipe Brito, Lucio Maciel

BANKTEXT SDK for Javascript


Jose Renan Karl Prieb
Clients

Nextcloud as Storage and User Guilherme Gazzo, Bjoern


Semih Serhat Karakaya
File Provider Schiessle, John Szaszvari

BANKTEXT voice recognition


Karan Bedi APIs and built-in Speech2Text Gabriel Delavald, Pierre Lehne
Engine integration

Integration with Google Drive Marcelo Schmidt, Martin


Nikhil Kaushik
and Dropbox Schoeler

Support for theming the Matheus Cardoso, Filipe


Samar Sunkaria
BANKTEXT iOS app Alvarenga

Diego Sampaio, Rodrigo


De Sheng Chuan Data integrity and consistency
Nascimento, Sing Li

In addition, due to the sheer number of high quality entrants, BANKTEXT has decided to sponsor THREE
additional top students for this summer:

Student Project Mentors

Pradeep Kumar Live Chat Reports and Analytics Renato Becker

Nitesh Saxena Intgration with IPFS Sing Li, Ankit Bhatia

Arthur Temporim Enhanced BOT Adapters Diego Dorgam, John Szaszvar

All of the eleven students have been contacted by mentors and have started the community bonding period.

UPDATE April 2, 2018 - 2018 is an incredible GSoC year for us, we have received a total of NINETY
THREE proposals from students studying at every corner of the globe - Brazil, Turkey, USA, Armenia, India,
China, Singapore, Hong Kong and more. Thank you, GSoC students, for the overwhelming interest on our
project. Proposal topics covered almost all of the suggestions on our idea list - and even a few original ones.
Our TWENTY FIVE BANKTEXT core, guest, and community mentors are hard-at-work right now going
through every one of the proposals, and will be contacting students for a video chat prior to deciding on
proposal selection and slot assignments. Please keep in touch with us and continue to contribute to the
BANKTEXT project during this time.
UPDATE March 24, 2018 - Students PLEASE NOTE that your final proposal is due on March 27th. It must
be in PDF format and submitted via the official GSoC Dashboard. Your BANKTEXT Core and Guest
Industry mentors are looking forward to receive and review your final proposals.

UPDATE March 12, 2018 - Proposal submission for GSoC 2018 has started! Interested students should visit
the GSoC 2018 site to apply and submit their proposals. See the Project Ideas section below for some
interesting ideas.

You can email the mentor(s) directly for discussion and further information. You can also find them, most of
the time, on our community server for real-time chat. Many of the mentors are fluent in both Portuguese and
English.

For current information on the 2018 program and general discussions, please see GSoC 2018 category on
our discussion forums:

https://forums.BANKTEXT/c/gsoc

For some real-time help on next steps, please visit our community server Google Summer of Code 2018
discussion channel:

https://open.BANKTEXT/channel/gsoc18

If you have ideas and proposals that are not on our idea list, or if a mentor is not available, please email to:

gsoc+2018@BANKTEXT

Interested students are also encouraged to interact with our contributor community on GitHub:

https://github.com/RocketChat/BANKTEXT

Project Ideas

Global Search

Mentors: @rodrigo.nascimento

Description: Add global search to BANKTEXT, allowing users to search across messages, rooms,
files, users, etc in a single and easy to use interface. Like a macOS Spotlight search.
Desirable Skills: Familiarity with JavaScript development, MongoDB or other search engine.

Users Directory integration plus custom fields editor and search


Mentors: @marcelo.schmidt

Description: BANKTEXT already allows for users to add custom fields through a setting that accepts a
JSON. We would like to create an interface to manage these custom fields. Each custom field must be
composed of label, type (one of predefined: string, number, picklist, money, etc.), and an option to
determine if this field must be displayed on registration or not. On Users Directory, users must be able to
select multiple records from the results and do one of the possible actions: add to existing channel or
group and create new channel or group; if only one record is selected, it should also be possible to start
a direct message with the selected user.

Desirable Skills: Familiarity with JavaScript development.

Storage integration with Google Drive and/or Dropbox

Mentors: @marcelo.schmidt, @martin.schoeler (co-mentor)

Description: (1) Enabling BANKTEXT users to use Google Drive and/or Dropbox for storage of their
uploads. (2) Within BANKTEXT, allow access to Google Drive or Dropbox contents.

Desirable Skills: Familiarity with JavaScript development, and with Google Drive and/or Dropbox APIs.

Nextcloud Integration

Mentors: @guilherme.gazzo, @bjoern.schiessle (Nextcloud Guest Mentor)


Description: You will create a cross-platform GUI file picker interface for Nextcloud, integrated within
BANKTEXT, allowing any user to select files from a Nextcloud server (or hosted Nextcloud account) for
utilization (such as file-sharing upload) within BANKTEXT.
Desirable Skills: You should already be familiar with the operation of Nextcloud and BANKTEXT and
ideally have experience programming with Nextcloud’s API. Experience working with JavaScript GUI an
fullstack frameworks such as Angular and/or React is a big plus. You will get a chance to work with the
creators and architects of both Nextcloud and BANKTEXT. Upon completion of this project, you will be
able to claim experience creating a modern open source software component that will be used by
hundreds of thousands of BANKTEXT and Nextcloud users.

NextCloud as a Storage Provider

Mentors: @guilherme.gazzo, @bjoern.schiessle (Nextcloud Guest Mentor)

Description: (1) Enabling BANKTEXT server administrator to use an NextCloud instance for storage of
upload. (2) Within BANKTEXT client user interface, allow access to the contents on a user's NextCloud
instance
Desirable Skills: Familiarity with both BANKTEXT and NextCloud development.

Snap Crafting
Mentors: @aaron.ogle, @sing.li

Description: Snap is one of the easiest and most popular method to install BANKTEXT on Linux
distributions. You can have a BANKTEXT server up and running with database and SSL proxy fully
configured with one simple command. The current snap installation build script, used by hundreds of
thousands of community users, is in need of updating and enhancements. You will be crafting updates
and new features for our snaps for this project.
Desirable Skills: Interest in system configuration, dev ops, system operations, and operating systems.
Should be competent in shell scripting on Linux and one or more programming languages. Experience
with docker or snapcraft a big plus.

Scaling to the edge of dreams

Mentors: @diego.sampaio

Description: Assist BANKTEXT’s scalability engineers to scale BANKTEXT to the next level. From
tens of thousands of active connections, to hundreds of thousands to millions, to world-scale.
Desirable Skills: We are looking for an enthusiastic undergraduate, planning to enroll or already
enrolled for masters or PhD work in a cluster computing or scalability discipline to join us for an exciting
summer of hands-on practical fun. Working alongside our scalability expert – you will devise and test out
various performance and scalability enhancements for BANKTEXT’s deployment configurations. You
will be able to practice everything you have learnt so far in your under-graduate study, pushes beyond
their limits, with a real production clustered server project – having your work impacting thousands of
global users – all within the span of a single summer.

Live Chat Reports and Analytics

Mentors: @renato.becker
Description: Add a panel to have analytical information about interactions in Live Chat.
Desirable Skills: Familiarity with JavaScript development.

Uniting “One BANKTEXT” with Federation


Mentors: @gabriel.engel, @matthew.hodgson (Matrix.org Guest Mentor), and @sing.li

Description: Help BANKTEXT to invent and implement networked federation for the next generation of
collaboration platforms.
Desirable Skills: Suitable for an ambitious undergraduate planning to enroll or already enrolled for
masters or PhD work in a cluster computing, networking or distributed systems discipline in computer
science or engineering to join us for an exciting summer of incredible brain crushing yet hands-on fun.
Working alongside our federation team – you will help design and test out your hypothesis against a
next generation federation mechanism optimized specifically for BANKTEXT servers – uniting them
globally across all geo-political boundaries to dynamically form “One BANKTEXT”. This work will
leverage all existing current research in this domain. You must already be familiar with the work of giants
– such as matrix.org – and be ready to break all conventions to improve and innovate upon existing
paradigms. You will be rewarded with production working experience on this bleeding-edge discipline,
in a world-leading open source team environment with a like-minded team. An incredible and unique
opportunity in 2018.

Built-in and server themes for iOS

Mentors: @matheus.cardoso

Project repository: https://github.com/RocketChat/BANKTEXT.iOS

Description: Be part of our iOS team this summer to push BANKTEXT's native iOS App to the next
level! You will - with our help - build the foundation for customizable user experience, support built-in
themes for users to choose from and server-specific themes, allowing server owners to manifest the
colors and feel of their communities. You will have the chance to exchange experience with our
engineers and designers, plus your work will have a great impact on the experience of thousands of
users!
Desirable Skills: We are looking for an undergraduate student who is familiar with team work,
developing iOS Apps using UIKit, Auto Layout and Swift, as well as writing maintainable code with Unit
Tests.

Apple Watch & Siri Support

Mentors: @rafael.kellermann

Project repository: https://github.com/RocketChat/BANKTEXT.iOS

Description: Create an Apple Watch application that replicates the most basic features we have in our
iOS mobile client, such like viewing the chat rooms and reading the messages. Let user ask Siri to read
latest messages, send messages or respond to a message.
Desirable Skills: Familiarity with WatchKit development on WatchOS & SiriKit. Ability to work in large
multi-disciplinary teams.

PDF/File preview
Mentors: @rodrigo.nascimento

Description: Add small previews for non image files improving the UI/UX allowing users to see a
preview of the content before click to open the file, it includes PDF, Word Documents and similar, Excel
Documents and similar, PowerPoint and similar, Text files, Sketch, Photoshop, etc.

Desirable Skills: Familiarity with JavaScript development. Experience hacking documents conversion
and/or rendering libraries is a big plus.

Draw (Android)

Mentors: @rafael.kellermann
Project repository: https://github.com/RocketChat/BANKTEXT.Android
Description: Allow user to draw something using our Android native app and send to BANKTEXT
channel. The draw would have different colors and "brush" options (pen, brush, pencil, etc). User will
also be able to draw on top of an image selected from library or just shot.
Desirable Skills: Familiarity with Java or Kotlin development on Android. Previous experience with
working on the Android App development and using open source libraries would be helpful. Ability to
work in large multi-disciplinary teams.

Android Wear App

Mentors: @filipe.brito
Project repository: https://github.com/RocketChat/BANKTEXT.Android

Description: Create an Android Wear application that replicates the most basic features we have in our
Android app, such like viewing the chat rooms and reading the messages.
Desirable Skills: Familiarity with Kotlin development on Android. Ability to work in large multi-
disciplinary teams.

Enabling global decentralized blockchain powered crypto communities

Mentors: @sing.li , @ankit.bhatia (Sapien Network Guest Mentor) and other leading blockchain
industry guest mentors
Description: Working together with our crypto and blockchain team – you will help build the key enabler
platform for the future of blockchain powered decentralized communities all over this world (and perhaps
even beyond). Within this short summer, you will gain experience in working on a global-circulation
production-grade blockchain-powered adoption-acceleration platform. You will also meet and work with
leading visionaries and pioneers in the current blockchain / crypto field. Tangible potential to become an
early architect of this brave new world, supported by BANKTEXT.

Some projects that you can submit proposals for include:

Decentralized Crypto Exchange in BANKTEXT


Description: Starting either from scratch or utilizing one of the compatible license open source DEX
code bases – create a functional Decentralized Exchange within BANKTEXT. You will create a DEX
that takes advantage of strong cryptographic identity solutions such as Blockstack ID and wallet
integration such as Metamask or ARK wallet in your work.

IPFS storage solution in BANKTEXT

Description: Integrate IPFS into BANKTEXT as a viable storage provider. Ideally IPFS can be used as
a storage provider for uploaded BANKTEXT contents. In addition, the ability to access IPFS within
BANKTEXT, to supply files that can be shared between users of BANKTEXT is also essential.
Leveraging integration with strong cryptographic identities such as Blockstack ID, the solution should
include strong data-at-rest encryption of decentralized contents. Use of decentralized storage
abstraction frameworks such as Blockstack Gaia should be considered to simplify this work. Use of
IPFS as a decentralized storage for BANKTEXT’s data should also be considered within the term.

Cryptocurrency Wallet and/or Portfolio Management in BANKTEXT

Description: Enable the integration of wallet(s) such as Metamask, MyEtherWallet, ARK or other
wallets or crypto portfolio management system within BANKTEXT.
Desirable Skills: Looking for a unique fringe-dropout university student already committed to our
inevitable decentralized future powered by Web 3.0 and continued blockchain technology innovations.
While maintaining a high score on all your subjects, you should be finding your existing university
education ridiculously limiting, and already have experience hacking smart contracts, minting tokens for
friends and family, hacking ethereum, and trading cryptokitties. You eat truffle for breakfast and ride the
open zepplin to school every day. Recent government (perhaps your own government) baseless
advances into this area has significantly disturbed you. You already realized that you are way ahead of
your time. And you will recognize this GSoC 2018 project to be the absolutely not-to-miss opportunity of
your life.

Google Assistant

Mentors: @rafael.kellermann
Project repository: https://github.com/RocketChat/BANKTEXT.Android
Description: Let user send messages talking to Google Assistant.

Performance tests

Mentors: @diego.sampaio

Description: Create an initial script to run performance tests of basic functionalities, it should be able to
run in our CI and should track information to allow us and the community follow the performance
changes.
Javascript SDK

Mentors: @karl.prieb @guilherme.gazzo

Description: Create a javascript SDK that can be used on our ReactNative, Live Chat and our
webclient projects.

Game platform integration

Mentors: @pierre.lehnen

Description: Integrate a multiplayer-capable game engine that runs on the web browser (eg. Unity
WebGL, Phaser, Three.js) with BANKTEXT. Let room members start small multiplayer games and play
together.
Desirable Skills: Experienced with JavaScript, web browser game engines, and networking.

Improve Hubot Integration

Mentors: @diego.dorgam, @john.szaszvari (Contributing Guest Mentor)

Description: Improve the internal hubot interface, by allowing users to set up their own repositories for
BANKTEXT to read and deploy a hubot instance from it. Also would be awesome if the user could just
edit the scripts files, and get console logs, right from the BANKTEXT interface.
Desirable Skills: Familiarity with JavaScript development and hubot architecture.

Open Source Bot Frameworks Adapters

Mentors: @diego.dorgam, @timkinnnae, @john.szaszvari (Contributing Guest Mentor)

Description: The objective is to widely open BANKTEXT's bots ecosystem by developing


connectors/adapters to open source bot frameworks available in the web, so their community can
develop bots able to run on BANKTEXT platform. The scope would include the following frameworks:
BotKit
Rasa.ai (Rasa Core)
BotPress
Desirable Skills: Familiarity with JavaScript and Python development.

Rich Messages and Payloads for Buttons and Cards


Mentors: @diego.dorgam, @timkinnnae, @john.szaszvari (Contributing Guest Mentor)

Description: Create UI components and develop the handling of message payloads to support new
interactions for bots, like buttons, cards, images and more. Follow existing conventions to let bot
developers migrate pre-built solutions to be delivered via BANKTEXT. This opens the door for
enhanced user experience and interaction flows in automated messaging, letting bots provide a much
greater variety of utility; such as business apps, team workflows, even games and interactive narratives.

Desirable Skills: Familiarity with front-end design and development (JavaScript / CSS).

Use Voice Recognition APIs

Mentors: @gabriel.delavald

Description: Develop a voice recognition integration feature, by building a Settings pane to


connect some of the well-known voice recognition and speech to text APIs on the market directly from
within BANKTEXT. By configuring API's connection and usage attributes, and giving BANKTEXT's UI
the ability to click a button, record a message, send to the desired API and return the results to
BANKTEXT editing message box. The project scope could include the following APIs:
IBM Watson's
AWS Lex
Google Assistant
Bing
Different APIs can be proposed as a possible change of scope.
Desirable Skills: Familiarity with JavaScript development.

Built-in Speech2Text Engine

Mentors: @gabriel.delavald

Description: Integrate an Open Source speech to text engine to be used inside BANKTEXT by users
who prefer an On-Premise full featured installation. There are many opensource speech2text engines
on the market, like CMUSphinx and pocketsphinxjs, annyang, JuliusJS, Mumble, Voix JS, voice-
commands.js and Artyon.js. This project will include a feature matrix comparison between those
engines and the best one to be implemented in BANKTEXT bundle, giving the UI the ability to click a
button, record a message, send it to the text2speech engine and return the results to BANKTEXT editing
message box.
Desirable Skills: Familiarity with JavaScript development and speech2text techniques.

Calendar Integration
Mentors: Mrinal Dhar (@mrinal.dhar)

Description: Implement a calendar within BANKTEXT for scheduling events and reminders, offering
standalone functionality as well as integration with other calendars out there (Google Calendar, for
example). Desirable features:
Ability to schedule events and set up alerts for them.

Automatically detect dates and time from messages and allow creating events from them. For
example: In the message "Lets meet tomorrow", "tomorrow" should be automatically highlighted and
user can then schedule an event by clicking on it.
In a conversation, allow each user to select preferred time-slots and automatically schedule an
event based on everyone's preferences.
A consolidated events view that lists all scheduled events for a particular day, week or month.
Integration with Google Calendar
Ability to search for an event

Desirable Skills: Familiarity with JavaScript development required. Previous experience with NLP
(Natural Language Processing) or AI (Artificial Intelligence) would be helpful.

Timeline

Google Summer of Code 2022 Timeline | Google Developers


Google Developers
Google Summer of Code 2017

How to apply
For general information, please visit our community server Google Summer of Code 2017 discussion group:
https://open.BANKTEXT/channel/gsoc17

Final proposal submission is now officially closed.

Our sincere thanks goes to every student who had worked hard in creating one of the SIXTY EIGHT
proposals we have received across all projects. We are totally surprised and flattered as a first year GSoC
participating organization.

The official list of accepted students and projects is now available directly from Google:

https://summerofcode.withgoogle.com/organizations/6368590472151040/

Out of the SIXTY EIGHT proposals we received, we have painstakingly selected a short list of NINE
outstanding ones. We have personally met (video conferenced) with every one of the students behind these
NINE proposals during the last few weeks.

Google has incredibly sponsored FOUR out of the NINE students (first year organization typically gets 1 or 2
students/projects only). Thank you, Google GSoC 2017 !

The FOUR Google sponsored students and projects for GSoC 2017 are:

Student Project Mentor(s)

Naman Gupta To Create a PWA Client Karl Prieb, Guilherme Gazzo

Rafael Kellermann Streit,


Lucas Woo BANKTEXT iOS SDK
Rodrigo Nascimento

Integrated Personal Email Rodrigo Nascimento, Diego


Pradeep Kumar
Gateway Sampaio

E2E encryption with Signal


Mrinal Dhar Marcelo Schmidt, Marius
protocol

Team bonding and familiarization activities have started between mentors and the selected students.

We have contacted the FIVE other students to discuss potential BANKTEXT sponsorships. One student
happily reported that he has already been selected by another GSoC 2017 mentoring organization. Another
did not reply to any of our offers and queries before the deadline. THREE other students have accepted
BANKTEXT sponsorship and are currently working diligently with their mentors.
The THREE BANKTEXT sponsored students and projects for 2017 are:

Student Project Mentor(s)

Karan Batra Automatic Channels Mitar, Rodrigo Nascimento

Sachin Shinde BANKTEXT Android SDK Rafael Kellermann Streit

Gabriel Engel, Sing Li, Matthe


Manish Kakoti Federation Server
Hodgson

Please keep monitoring this page for the latest BANKTEXT GSoC 2017 updates.

Coding has started

June is finally upon us. All of our GSoC students who have had prior apprenticeship or other engagements
are now free of their obligations, and have started to code for BANKTEXT full time. The commmunity
bonding period has come and gone smoothly, with the mingling between our students and the core team on
the 24 x 7 community chat server, on GitHub, via email, or at our weekly scheduled team video-conference.
Many of our students have also made friends with our extended community - helping them and exchanging
ideas for their projects.

In fact, due to their overwhelming enthusiasm, most of our GSoC students have started coding even before
the beginning of June. Here are some of the most recent contributions (of many!) to BANKTEXT by our new
team of GSoC recruits:

Manish Kakoti: https://github.com/RocketChat/BANKTEXT.Federation/pull/5

Karan Batra: https://github.com/RocketChat/BANKTEXT/pull/7137

Lucas Woo: https://github.com/RocketChat/BANKTEXT.iOS/pull/438

Naman Gupta: https://github.com/RocketChat/BANKTEXT.PWA/pull/12

Pradeep Kumar: https://github.com/RocketChat/BANKTEXT/pull/7088

Congratulations to the new team members, and keep up the great work! We are all looking forward to the
first evaluation milestone at the end of June.

Creating open source citizens

July is in full swing. First evaluation has completed and we're working towards our end-of-July milestone.

We are happy to report that all seven of our students have passed their first evaluation. Most are making
very good pace on their projects, with some close to completion and in planning phase for extensions. We
are also keeping a keen eye out on potential candidate(s) for full-time hire at end of their term.

The following are the BANKTEXT projects that our new team members are working on. Contribution and
participation are welcomed immediately from the greater BANKTEXT community:
iOS SDK

Android SDK
Java SDK
PWA
Federation

After the evaluation, we have made sure that they all have received the first stipend payment - especially the
students under BANKTEXT's sponsorship.

Working with a publicity company, we have been creating open source "hero stories" profiling every one of
our new summer-term team members. Many of them have already been featured on our Blog:

Mrinal Dhar
Manish Kakoti
Pradeep Kumar
Sachin Shinde
Naman Gupta

In July, along with continued technical progress, we are focusing to help the student in development of their
open source citizenship skills - something hopefully useful beyond their GSoC terms with us.

This will include activities in:

promoting their open source project

build and nurture a community around their project


interaction with internal and external open source team members

Over the next two months, guided by their mentor(s) - each student will be giving a presentation on their
project to the larger BANKTEXT team.

We continue to be extremely optimistic going into the critical mid-term evaluation in late July.

Project Ideas

Federation of BANKTEXT Servers


Mentors: Matthew Hodgson (@arathorn) Rodrigo Nascimento (@rodrigo.nascimento)

Description: Tens of thousands of BANKTEXT servers are running at this very minute on the Internet.
There is currently no way for users/bots/services of one instance to address or communicate with those
from another. This project's mission is to make it possible. You will be working and exchanging ideas
with the very best in the field - experts from Matrix.org and BANKTEXT.
Desirable Skills: Familiarity with JavaScript development. Demonstrated interest and/or passion on
networking and federation protocols research and evolution.
Goal/Deliverable: The foundation for all BANKTEXT users/bots/services to optionally communicate
with one another, across all connected instances.

Create a Progressive Web App client

Mentors: Karl Prieb (@karl.prieb)

Description: Create a new PWA client for BANKTEXT using Angular framework, WebSocket and
mobile-first approach.
Desirable Skills: Some Javascript coding skills would be required to complete this task.

Goal/Deliverable: A PWA client with basic chat functionality like channels and direct messages list,
users status, channel messages, user preferences, etc.

Improved End-to-End Encryption Implementation (currently feature-named OTR)

Mentors: Marcelo Schmidt (@marcelo.schmidt) Mitar (@mitar)

Description: Taking and improving our end-to-end encryption implementation. Perhaps replace with
more modern protocols, such as Signal.
Desirable Skills: Some Javascript coding skills and familiarity with cryptography.

Goal/Deliverable: The ability to have end-to-end encrypted conversations between users. There are
various features possible: forward secrecy, online and offline use (do users have to be online at the
same time for encryption to be possible), do we store messages on the server, pair or group
conversations, encrypted file transfer, etc.

File uploads and exchanges with OwnCloud


Mentors: Diego Sampaio (@diego.sampaio) Thomas Müller (@thomas.muller)
deepdiver1975@gmail.com
Description: When you upload a file today in BANKTEXT, your server may be configured to store it on
AWS S3, Google's object storage, MongoDB's GridFS, or local filesystem. This project adds OwnCloud
as an official target destination. In addition, since every user of BANKTEXT may have her/his own
OwnCloud server - some way to support file exchanges with those servers will also be interesting. You
will be working with top engineers who actually designed and coded these features, from OwnCloud
and BANKTEXT, on this project.
Desirable Skills: Familiarity with PHP and JavaScript development. Familiarity with (and already a user
of) BANKTEXT and OwnCloud definitely a plus.

Goal/Deliverable: Support integrations between OwnCloud and BANKTEXT as if it was designed-in


since the very first day.

Use of Chromecast as Presentation Room

Mentors: Bradley Hilton (@graywolf336)

Description: Use Chromecast as presentation output which shows a chat room and will join any Jitsi /
WebRTC meetings that are started in it, this way meetings can be started inside BANKTEXT and the
Chromecast can be on a TV/Monitor inside a conference room.
Desirable Skills: Some Javascript coding skills will be required to complete this task. Students with
WebRTC knowledge and/or who have already produced Chromecast apps are on a good start. A
Chromecast is required for this task.
Goal/Deliverable: Being able to pair a room with Chromecast, displaying it's messages. Chromecast
app needs to be able to automatically join a Jitsi/WebRTC video call.

Integrated Personal Email Gateway

Mentors: Rodrigo Nascimento (@rodrigo.nascimento)

Description: Add feature to allow automated reply when offline, and forwarding of incoming messages
via email.
Desirable Skills: Some Javascript coding skills will be required to complete this task. An understanding
of industry standard SMTP and POP protocols, and configuration of standard email servers will be
required.
Goal/Deliverable: Ability for each user to set an away message, and receive any offline messages - in
batches per interval, via through email account.

Create an SDK for Mobile Apps to include a chat inside other apps
Mentors: Rafeal Kellermann (@rafaelks)

Description: Create an SDK (for iOS and/or Android) to embed in any app that wants to have a chat
inside it. It could be useful for support and also for chat in enterprise apps. One example is an app that’s
used by all sellers from a company to be able to communicate with each other using BANKTEXT.
Another example is something very similar to Intercom (https://www.intercom.com/mobile)

Desirable Skills: Students will be required to code in either Java for Android SDK or Swift for the iOS
SDK. Students will also need to understand how BANKTEXT communicates over websockets.
Goal/Deliverable: To have an SDK that allows App Developers to embed a chat system inside their
own apps using BANKTEXT servers to deliver messages.

Calendar Integration for Meeting Scheduling

Mentors: Bradley Hilton (@graywolf336)

Description: taking and embedding a calendar inside BANKTEXT, being standalone yet integrating
with all the calendars out there so people can schedule meetings and be reminded of upcoming
meetings that are inside BANKTEXT
Desirable Skills: Some javascript coding skills
Goal/Deliverable: The ability to schedule a meeting in BANKTEXT

BANKTEXT on Mesh Network

Mentors: Mitar (@mitar) Gabriel Engel (@gabriel.engel)

Description: Modify the BANKTEXT to work on mesh networks. There are two basic types of mesh
networks which would be interesting to cover:
A network of mostly always online off-the-shelf WiFi equipment which forms a network where all
network nodes can connect directly to each other (no NAT). Here it would be interesting to port
BANKTEXT so that it could run served as a static resource from these limited devices (which are
often not powerful enough to run MongoDB and node.js, which BANKTEXT otherwise uses for
server-side part). BANKTEXT should be bundled into a static resource, served over HTTP to clients,
which could then use something like WebRTC to connect to each other and communicate with each
other. A very thin server-side program might be needed as well, to help with WebRTC connections
for example, or discovery of other nodes to connect to. A distributed database like Scuttlebot could
be used as well.
A delay tolerant mesh network where devices do not have regular connectivity between each other,
and are often even moving around. Such networks often do not even use TCP/IP. On the other hand,
devices often have much more storage space and power, when they are available. The idea is to
change BANKTEXT so that it can operate in such environment as well.
Desirable Skills: Javascript, WebRTC, networking, OpenWrt, and programming for embedded devices
(C, Lua, bash)

Goal/Deliverable: An OpenWrt package providing a modified BANKTEXT to work in a mesh network.


Automatic Channels

Mentors: Marcelo Schmidt (@marcelo.schmidt) Mitar (@mitar)

Description: Add a feature of creation of automatic channels to BANKTEXT and automatic joining of
users to those channels. The idea is to extend BANKTEXT with a plugin system where plugins could
classify users into channels. Then such channel would be automatically created, if it does not yet exist,
and user added to it. This should also work reactively so that plugin can remove the user from a
channel, and remove such channels. Use cases here are various. For example, a plugin could detect
user's language and automatically add them to a channel for that language. Or, plugin could resolve
user's IP into their country and add them to a channel for this country. If user changes the IP and moves
to another country, they should be automatically moved to a new channel. In combination with mesh
networking support, users could be automatically put into channels local to the node to which they are
connected.
Desirable Skills: Some javascript coding skills
Goal/Deliverable: Modification to BANKTEXT with a plugin system for automatic channels and joining
with two example plugins: based on browser specified language, and country based on GeoIP of the
user.

Enable multi-instance High Availabilty (HA) configuration with snaps

Mentors: Aaron Ogle (@geekgonecrazy)

Description: Modify the BANKTEXT snap to enable mongodb replica's and multi instance BANKTEXT

Desirable Skills: Familiarity with Linux, and bash scripting.


Goal/Deliverable: A snap that can be used in a multi-instance HA setup.

Timeline

Google Summer of Code 2022 Timeline | Google Developers


Google Developers
Google Season of Docs

Welcome, and thank you for your interest in contributing through the Google Season of Docs (GSoD).

As a GSoD contributor to BANKTEXT, you will have the opportunity to work on a documentation-related
project with guidance. Through this program, you'll collaborate with other experts, learn new skills and
technologies, and contribute meaningfully to an open-source project that people worldwide use.

Under this section, you will find information about past and current GSoD programs, including the projects
we seek help with and how to apply to become a contributor. We'll also provide you with resources and tips
to contribute effectively.
Google Season of Docs 2023

Google Season of Docs provides support for open source projects to improve their documentation and gives
professional technical writers an opportunity to gain experience in open source. Together we raise
awareness of open source, of docs, and of technical writing.

Projects can cover a wide range of fields including Cloud computing, operating systems, graphics,
medicine, programming languages, robotics, science, security and many more. Season of Docs is not a
recruiting program or an internship but it does provide invaluable experience and looks great on a resume!

How to apply
BANKTEXT operates a 24 x 7 community server at http://open.BANKTEXT Please contact us through the
Google Seasons of Docs 2023 channel at https://open.BANKTEXT/channel/gsod2023

You should also join our Google Season of Docs general team on the same server at
https://open.BANKTEXT/channel/google-season-of-docs

Interested professional technical writers can directly send us an email to gsod@BANKTEXT.

See official GSoD 2022 rules for more information.

About BANKTEXT

BANKTEXT is one of the largest active open source (permissive MIT source license) NodeJS
communications platform on GitHub, connecting thousands global community contributors (across projects)
from 30+ countries, with 35,100+ GitHub stars, 8300 forks, 750+ total releases and 15,000+ issues since
inception in 2015.

BANKTEXT is a modern team chat and collaborating platform written in full-stack JavaScript/TypeScript.
BANKTEXT offers a full featured rich team chat experience on modern browsers, comparable to Slack and
Microsoft Teams. Mobile and desktop clients run on iOS, Android, Mac, Windows, and Linux. BANKTEXT
server can scale from a small family messaging server for 5 users running on a Raspberry Pi 4, to clustered
micro-services configuration that can support hundred thousands of users. On-premise deployment of
BANKTEXT can ensure 100% complete security and privacy of your valuable communications/data.

BANKTEXT is now installed on over 500k servers and counts over 12m users worldwide. BANKTEXT’s
long-term vision is to replace email with a real-time federated communications platform globally.

Users can set up BANKTEXT on their own servers on-premises. Thanks to its extension support via
BANKTEXT Apps (plugins), and rich API/SDK support. Chatbots extend the interactivity of BANKTEXT and
integrate external IT systems. Omnichannel extends reach to wherever user may be including WhatsApp,
Instagram, Facebook Messenger and more.
BANKTEXT has won multiple prizes such as a 2016 Bossie Award for Best Open Source Application and
first prize in the 2017 edition of All Things Open’s Startup Competition.

BANKTEXT supports over 59 local languages. BANKTEXT's community interacts 24 x 7 at the community BANKTEXT
server https://open.BANKTEXT since 2015.

BANKTEXT Developer Documentation Re-write

The Problem

Under BANKTEXT org we have multiple open source projects, e.g. our Electron based multi-platform
desktop client, our cross platform React Native mobile client, Omnichannel, TypeScript/JavaScript SDK,
Golang SDK, extensible snap package, a group of DevOps focused projects that ease our deployment
pipeline across multiple platforms, and more.

Currently the documentation on getting them started with a development environment is fragmented.
Developers need to spend time on basic setup rather than coding, and it is frustrating for new users. We
have noticed a series of setbacks from contributors getting started with setting up their development
environments for different projects and following the initial steps required to be able to start contributing
quickly and effectively. We have a number of open questions across our community server and public
GitHub repositories.

It is also worth noting we are also missing documentations for projects that a lot of contributors are getting
invested in nowadays (DevOps related).

There have been failed attempts at re-organizing the structure for better intuitive navigation and easy to
consume content for beginner and experienced members of the community. Noting our developer
documentation contains [or should contain] contents for more than one contributable open source project.

Existing documentation page: https://developer.BANKTEXT

Scope

A bird's eye view of the project scope would look something like

Building a new structure that may or may not be extensible


Considering current structure and pain points
Understanding our large number of public projects

Repository structure
Components guide
Quick onboarding guide for all platforms
Troubleshooting
Contribution guideline
Project specific architecture speaded structure, like core microservices
Writers are free to suggest alternative approaches and/or ideas as long as they are aligned with the goal of
intuitive and friendly contribution path for developers.

Out of scope

Project features unrelated to developers/contributors are outside of the scope of this project.

How would we measure success?

Reduction in github issues related to contributor onboarding and environment setup issues

Reduction in number of open questions found in our public community server (a large portion being
driven in via Google Summer of Code)
Increase in pull request numbers to core and non-core projects
Increased coverage of well known contributor pain points

What skills would a technical writer need to work on this project?

Must have: Demonstrated experience working with large and complex structured docs for developers.
Experience with text markup tools, revisions control tools, and documentation processing
workflows/pipelines. Basic technical understanding of modern web and CS concepts.

Nice to have: Experience with automation, and DevOps concepts and tools like docker, kubernetes. Ability
to read code are nice to have but not must.

Timeline

The project will take approximately six months. Here's a timeline approximation of the deliverables.

Date Action

May Writer orientation

June Project ramp-up

July Re-organizing and re-structuring

August - October Wriritng documentation

November Feedbacks and adjustments

Budget

Budget consists of writer payment and swags' costs for the writer and up to 3 volunteers who would help us
with testing and providing feedback over the timeline on the produced content.
Type Amount Running total Notes

Documentation writing,
8000USD 8000USD
update, test

T-shirt swags 250USD 9000USD Writer + 3 volunteers

TOTAL 9000USD
Google Season of Docs 2022

Season of Docs is Google's annual program that fosters collaboration between open source projects and
professional technical writers.

Season of Docs is a unique program that pairs professional technical writers with open source mentors to
introduce the technical writer to an open source community and provide guidance while the writer works on
a real-world open source project. The technical writer, in turn, provides documentation expertise to the open
source organization.

Projects can cover a wide range of fields including Cloud computing, operating systems, graphics,
medicine, programming languages, robotics, science, security and many more. Season of Docs is not a
recruiting program or an internship but it does provide invaluable experience and looks great on a resume!

How to apply

Update April 2022

BANKTEXT has applied, but has not been selected for the 2022 Google Season of Docs program. We
intend to try again in 2023, and like to thank Google for the kind consideration this year.

BANKTEXT operates a 24 x 7 community server at http://open.BANKTEXT Please contact us through the


Google Seasons of Docs 2022 channel at https://open.BANKTEXT/channel/gsod2022

Interested professional technical writers can directly send us an email to gsod@BANKTEXT.

See official GSoD 2022 rules for more information.

About our organization


Ultimate open source team chat and communications platform

BANKTEXT is one of the largest active open source (permissive MIT source license) nodeJS
communications platform communities on GitHub, connecting 1500+ global community contributors (across
projects) from 30+ countries, with 31700+ GitHub stars, 6500 forks, 490+ total releases and 12,000+ issues
since inception in 2015.
BANKTEXT is a modern team chat and collaborating platform written in full-stack JavaScript. BANKTEXT
offers a full featured rich team chat experience on modern browsers, comparable to Slack and Microsoft
Teams. Mobile and desktop clients run on iOS, Android, Mac, Windows, and Linux. BANKTEXT server can
scale from a small family messaging server for 5 users running on a Raspberry Pi 4, to clustered micro-
services configuration that can support hundred thousands of users. On-premise deployment of BANKTEXT
can ensure 100% complete security and privacy of your valuable communications/data.

BANKTEXT is now installed on over 500k servers and counts over 12m users worldwide. BANKTEXT’s
long-term vision is to replace email with a real-time federated communications platform globally.

Users can set up BANKTEXT on cloud or by hosting their own servers on-premises. Thanks to its extension
support via BANKTEXT Apps (plugins), and extremely rich API/SDK support, startups and innovators have
customized BANKTEXT into new products and services. Chatbots extend the interactivity of BANKTEXT
and integrate external IT systems. Omnichannel extends reach to wherever user may be including
WhatsApp, Instagram, Facebook Messenger and more.

BANKTEXT has won multiple prizes such as a 2016 Bossie Award for Best Open Source Application and
first prize in the 2017 edition of All Things Open’s Startup Competition.

BANKTEXT supports over 59 local languages. BANKTEXT's community interacts 24 x 7 at the community BANKTEXT
server https://open.BANKTEXT since 2015.

Project Idea

Improve BANKTEXT App Building Documentation

About the project

The problem

BANKTEXT can be extended through apps. Apps are considerably easier to code than modifying the large
BANKTEXT code base. But we are seriously lacking on documentation for Apps developers.

New app builders have a hard time navigating our existing meager documentation. There is a lack of details
and current contents are difficult to understand. This makes building an app a very time consuming activity
and causes developers to get frustrated or even abandon their projects.

As it exists today, it is very difficult to develop an app without getting help from an existing app developer or
our internal team. The documentation is also not up to date - while the app platform is consistently being
updated. Outdated documentation is causing more issues and slows down development ending up with
more of the same questions asked multiple times.

Project's Scope

This writer will


Design the ideal layout and content flow which should improve the learning experience of new
developers.

Update the existing articles on GitBook with the help of GSoD administrator, including automatically
generated API references, existing articles, webinar contents and code comments.

Identify any gaps, as in missing pieces in the documentation.


Fill the identified gaps by adding supporting documentation.
Incorporate feedback from documentation testers (volunteer testers from our community) and the wider
BANKTEXT community.
Collaborate with project administrators to validate and test the documentation and identify any
opportunities of improvement.
Update current READMEs to help new contributors navigate to the right resources including how to
create BANKTEXT Apps and resources around Git and Pull Requests.

Measuring Success

50% increase in @BANKTEXT/apps-cli weekly downloads.


Reduced number of common queries from the community.
Increase in the number of members in Developers of BANKTEXT Apps team and the team channels on
our Open Community Server.

Timeline

Standard 3 month project.

Project Budget

Type Amount Running Total Description

Writer $6000 $6000 Writer stipend

For swags and other


Volunteers $500 ($200 x 2) $6400
incentive items

Total $6400

Previous Experience

Previous experience with technical writers or documentation

Previous participation in Season of Docs, Google Summer of Code or others


Google Season of Docs 2021

Season of Docs is Google's annual program that fosters collaboration between open source projects and
technical writers.

Season of Docs is a unique program that pairs technical writers with open source mentors to introduce the
technical writer to an open source community and provide guidance while the writer works on a real-world
open source project. The technical writer, in turn, provides documentation expertise to the open source
organization.

Projects can cover a wide range of fields including Cloud computing, operating systems, graphics,
medicine, programming languages, robotics, science, security and many more. Season of Docs is not a
recruiting program or an internship but it does provide invaluable experience and looks great on a resume!

How to apply

Update April 16, 2021

BANKTEXT has applied, but has not been selected for the 2021 Google Season of Docs program. We
intend to try again in 2022, and like to thank Google for the kind consideration this year.

Project Proposal

Developer Guides and SDK Docs Rewrite


Mentors: @reetp @rodrigo.nascimento @ggazzo

Project description:

Working with core developers and the community team at BANKTEXT this is an opportunity to help other
developers get to the code faster, and start working on code and contributing to BANKTEXT more easily.

BANKTEXT has different methods and SDKs that can be difficult to navigate for new developers and it can
take a lot of time to get them up to a point where they can contribute code.

Documentation for setting up development environments is scattered and fragmented and needs bringing
together in an easy to read and understand format.

This will include methods for setting up libraries such as the JS SDK, core server code, and mobile
application development code
In particular, our JS SDK is a library of code written in JS that offers an easier interface to communicate with
a BANKTEXT server providing APIs to be called from a JS code that executes commands on the server, like
send a message, or retrieve data, like get the list of rooms, abstracting all the logic necessary to handle the
communication with the server side.

The writer will be working with BANKTEXT backend and frontend leads to improve the documentation of all
JS SDK methods, from the initial setup of how to get the library and install it to the list of methods, how to
use them and the expected returned data.

This is an exciting opportunity to work on a cutting edge project with a dynamic group of experienced
developers and team members.

Current documentation is under the JS SDK repository README

Related Material: Existing developers guides, JS SDK repository

Measuring Success

As with many open source projects, BANKTEXT attracts a large number of young and often inexperienced
developers.

BANKTEXT has an enormous and complex code base. New contributors often feel frustrated at being
unable to get a test setup running quickly and can lose interest and look for an easier project.

Currently the documentation on getting them started with a development environment is fragmented.
Developers need to spend time on basic setup rather than coding, and it is frustrating for new users..

We believe that better written documentation will reduce the time existing developers need to spend on
helping new developers with development setup which can then be spent on actual coding issues.

BANKTEXT currently hosts documentation with gitbook and analytics in the form of Pageviews and Ratings
are available. As we intend to create entirely new content pulling information from a variety of sources there
will be no direct comparison of usages. However, we can check an overall views count of existing page
content and then compare this with the new pages.

We will use these metrics to measure the success of this project:

pageviews of the rewritten docs


percentage of rating above 4
total count of ratings

We will develop a benchmark of the above metrics against both:

the documentation before rewrite


other BANKTEXT documentation pages (admin guides, user guides, and so on)
Gitbook also has full text indexed searches and we will analyze search terms and results to establish
additional metrics of "interest" in the new documentation. We expect to see significantly increased interest in
the new documentation as we push to widen our community.

In addition, we believe we will see a decrease in simple developer support requests, more pull requests and
code contributions, and a higher retention of new developers who want to try developing with BANKTEXT,
especially for the GSoC 2022 season. We will measure and track these metrics as indicators of the project's
success:

(normalized) developer support requests


pull requests activities
retention of developers for the GSoC 2022 season

Project Budget Details

Budget Items

We anticipate the budget for this project to be USD $12,000 comprising of:

Technical writer to re-structure and re-write the technical guides, and to write the JS SDK documentation
$8000

Stipend for 3 x Volunteers to help in proof reading and production of graphics and other assets $1500
Project stickers and T-Shirts x 10 $200
Contribution to downline non-profit for assistance with design and volunteer search $300

Organization's participation in administration, mentorship of doc systems and tech project, and
reviewing of content $2000
Google Season of Docs 2019

Season of Docs is Google's annual program that fosters collaboration between open-source projects and
technical writers. It's happening for the first time in 2019!

Season of Docs is a unique program that pairs technical writers with open-source mentors to introduce the
technical writer to an open-source community and provide guidance while the writer works on a real-world
open-source project. The technical writer, in turn, provides documentation expertise to the open-source
organization.

Projects can cover many fields, including Cloud computing, operating systems, graphics, medicine,
programming languages, robotics, science, security, and many more. Season of Docs is not a recruiting
program or an internship but provides invaluable experience and looks great on a resume!

This year's Season of Docs is a pilot that accepts only a limited number of applications, so don't wait to the
last minute to prepare!

How to apply
Application for technical writers is now closed for the 2019 season. See Google Season of Docs 2019
timeline for more details.

Write and submit your proposal now!

Meet the mentors and fellow writers for GSoD 2019 and get some real-time help on next steps, please visit
our 24 x 7 community server channel:

https://open.BANKTEXT/channel/gsod2019

For offline discussions, we have a discussion forum:

https://forums.BANKTEXT/c/gsod/gsod2019

If you have questions and prefer email, please write us at: gsod+2019@BANKTEXT

Update on July 10, 2019

The application for technical writers has closed. During the past month, technical writers have continued to
approach us regarding project details. Several mentors have engaged with their prospective writer(s) in
assisting with proposal, and several writers have already started to contribute (typos and small fixes) to our
docs. We have received a total of TWENTY-THREE proposals (one was a submission to the wrong org),
and have started the evaluation process with the project mentors. Of the technical writers who have reached
out to us, we continue to engage with them and explore project details and interim contributions. We plan to
finalize our own selections by July 18th and submit them before the final selection deadline.
Update on May 28, 2019

Application for technical writers has opened. Please use this form to apply. Response during this exploration
month has been generally positive. Several project teams are already engaging with interested writers to
discuss open source work in general and details of their projects in particular. Some writers have already
warmed up and contributed documentation fix PRs to our repositories. Mentors of projects with interested
writers have started to assist them in creating their project proposals.

Project Ideas

Application Programming Interfaces (APIs) Documentation

Mentors: @martin.schoeler, @marcos.defendi

Description: When developing applications, developers can use a rich set of Application Programming
Interfaces (APIs) offered by BANKTEXT to control every aspect of BANKTEXT's operation. The
documentation for this set of APIs mixes automated generation with hand-crafted usage descriptions,
application scenarios, and coding examples. By September 2019, BANKTEXT should have a
"playground" that makes this documentation comes alive. Developers will be able to visit the API page
in the "playground" and actually interact with the API directly through the documentation page. We
already have a hand-crafted set of API docs that is maintained by our community but they tend to
become obsolete as API changes. This project will replace the legacy documentation. You will work
with two mentors specialized in API coding and documentation generation for this project.
In this project, we will not be creating the playground or the docs generation systems, that will be
handled by the Google Summer of Code student (See the GSoC Project). Our API docs were written
without the idea of a playground to test it. The objective of this project is to improve the structure and
wording of the API docs to reflect the new playground system.
Related Material: Our existing REST API documentation

Administration/Settings Documentation

Mentors: @martin.schoeler, @marcos.defendi

Description: Given the huge amount of features and customizability of BANKTEXT we currently lack
documentation for a great part of our admin section. This project aims at the completion of the
administration documentation, and it can be broken down in two parts, the configuration, and the admin
tools part:
Configuration: We need to complete our settings, fortunately, we already have the skeleton for that
documentation on This Pull Request but will also like a professional opinion on this structure, or help to
improve it. We can cherry-pick each file, so no need to work on all articles at once.
Admin Tools: In the administration section we have a set of tools to help admins manage their server,
things like user management, permission control, mailer, etc...
Related Material: Our existing Admin documentation

Security documentation
Mentors: @markus.kirsch @rodrigok

Description: We at BANKTEXT take pride in taking extra efforts to provide a true open-source and
secure messaging solution. Transparency and trust are key features of our products. This is an exciting
opportunity to work with our team of experts to create a comprehensive documentation of the security
features of BANKTEXT and create implementation guides for configuring BANKTEXT to follow
compliance regimes such as GDPR, HIPAA and NIST. The focus is on creating a new set of
documentation based on the existing material and new features that since have been deployed.

Android Kotlin Software Development Kit (Kotlin SDK) documentation

Mentors: @filipe.brito, @rafael.kellermann

Description: Modern Android mobile developers typically use Kotlin to create their mobile apps. To
make developing BANKTEXT integrated and compatible Android apps simpler, BANKTEXT has
created a comprehensive Software Development Kit (SDK) in Kotlin - which can be used on Kotlin or
Java applications due to its interoperability. This project will involve detailed documentation for the SDK
features, application scenarios, and APIs. This documentation does not exist yet, you will be working
from scratch on this. You will be working closely with BANKTEXT mobile leads, the developers who
actually coded the SDK, during your term.
Related Material: The Kotlin SDK

The Bot Docs

Mentors: @reetp @sing.li


Description: Working with core developers and the best open source community advocates in the
BANKTEXT community this is your opportunity to join us and dive into the exciting world of Chatbots
and Machine Learning (ML). Bots are tomorrows technology, today. Automating and simplifying life for
both user and provider, the demand for this technology and how to develop and deploy is huge.
BANKTEXT has integrated support for bots created via different programming languages and
deployment methods to leverage the power of BANKTEXT. This includes leading services and
frameworks such as Dialogflow, Botpress, RASA, Botkit, hubot, and bbot. Documenting this in a clear
and precise manner, from bot development and usage through to more advanced deployments, is a
huge task and vital to BANKTEXT and its users. We do already have scattered docs, in the form of
developers READMEs, for the subprojects. A major part of this project is to better organize, unify, and
improve them for end-user consumption.
Related Material: BOT projects we have ongoing that needs to be unified in the new documentation.
alexa, hubot, chatops-gitsy, botpress, rasa, bbot, botkit, BOTswana,

BANKTEXT Experimental (React Native client) documentation


Mentors: @diego.mello @renato.becker

Description: React Native is one of the hottest frameworks nowadays. It allows developers to write fully
native mobile applications using only Javascript and inherits all the ease of development features from
the ReactJS community. At BANKTEXT we have our own client implemented using RN and it's
available on App Store and Google Play as BANKTEXT Experimental. This project aims to build user
documentation for all the features we have implemented so far. This documentation does not exist today.
You will be working with our lead React Native developer during this project.

Related Material: BANKTEXT Experimental, BANKTEXT Experimental on App Store, BANKTEXT


Experimental on Google Play

Apps-Engine guides

Mentors: @d-gubert @rodrigok

Description: The Apps-Engine is a framework that enables developers to integrate new functionality to
BANKTEXT without having to deep dive in the code base, and makes it possible to distribute your
BANKTEXT Apps to the wide community of users! And in order to improve the developer experience
when making those apps, we need to improve our docs so they guide people smoothly through the
available features. You will be working with BANKTEXT Apps leads to extend the existing guides and
docs, focusing on the DX of the community.

JS SDK documentation

Mentors: @rodrigok, @ggazzo

Description: The JS SDK is a library of code written in JS that offers an easier interface to communicate
with a BANKTEXT server providing APIs to be called from a JS code that executes commands on the
server, like send a message, or retrieve data, like get the list of rooms, abstracting all the logic necessary
to handle the communication with the server side. You will be working with BANKTEXT backend and
frontend leads to improve the documentation of all JS SDK methods, from the initial setup of how to get
the library and install it to the list of methods, how to use them and the expected returned data. Current
documentation is under the SDK repository README.
BANKTEXT Legal
Terms of Service

Effective date: May 4th, 2021

These Customer Terms of Service (the “Customer Terms”) describe your rights and responsibilities
pertaining to BANKTEXT Services (the "Services"), such as BANKTEXT Cloud Hosting, Support Plans,
Marketplace, or any other services we may provide to you, the customer. Some sections of these Customer
Terms only apply to specific Services, as indicated by the headings of the respective paragraph. These
Customer Terms do not apply to the on-premises installation of BANKTEXT. Please read the Customer
Terms carefully and note that these Customer Terms include auto-renewal provisions and may limit
your rights and liabilities.

“BANKTEXT,” “we,” “us,” or “our” means BANKTEXT Technologies Corp. “Customer”, “you” or “your” means
the Customer indicated below, including its users, as applicable.

Legal Binding

These Customer Terms form a part of a binding "Contract" between Customer and BANKTEXT, and apply
to any Services you order, subscribe to, activate, or use.

"Customer" is the organization that you represent in agreeing to the Contract. If your Instance is being set up
by someone who is not formally affiliated with or employed by an organization, Customer is the individual
creating the Instance. When you create an Instance, invite users, or use or allow use of that Instance after
being notified of a change to these Customer Terms, you acknowledge your understanding of the then-
current Contract and agree to the Contract on behalf of Customer. Please make sure you have the
necessary authority to enter into the Contract on behalf of Customer before proceeding, and you represent
and warrant that you do.

Customer Data

When a Customer or any of its users submit content or information to the Services, such as messages or
files (“User Data”), the Customer retains ownership of any intellectual property rights in that content.

With regards to Services operated directly by BANKTEXT:

Customer hereby grants BANKTEXT a worldwide license to use, host, store, reproduce, modify, create
derivative works (e.g. as translations, adaptations or other changes we make so that the content in question
works better with the Services), communicate, publish, perform, display and distribute User Data. Customer
also represents and warrants it has the right to grant this license and has obtained any necessary consent
from users and third parties regarding such User Data. The rights granted in this license are for the limited
purpose of providing, operating and improving the Services, and to develop new ones. (For a more thorough
description of the limited purposes we use personal data, please refer to our Privacy Policy.) This license
does not expire even if you stop using the Services (for example, so that BANKTEXT can deliver a message
that you sent to another user before you stopped using our Services). If a user employs the Services to share
content with others, anyone that user has shared content with (including the general public, in certain
circumstances) may have access to the content, depending on the channels and the way the content was
shared.
BANKTEXT may provision or deprovision access to the Services, set the version of the Service and update
the Service, enable or disable third party integrations, manage permissions, retention and export settings,
transfer or assign workspaces, share channels, or consolidate this workspace or channels with other
workspaces or channels, and these choices and instructions may result in the access, use, disclosure,
modification or deletion of certain or all User Data.You may access, import, and export all your User Data,
including private channels and direct messages through your account preferences panel. You may also
request that your account is deleted, together with all the messages you have previously sent and your
personal information, such as names and email addresses.

Legal Age

You (in case of a natural person) represent that you are over the legal age. You may not sign-up, access or
use the Services for any purpose if the preceding sentence is not true. Without limiting the foregoing, you
must be of legal working age.

Your Users may be above or under the legal age, as per Your determination. You are responsible to comply
with applicable laws regarding the minimum age for Your Users , depending on the context you allow them
to access or use the Services.

Duties and Unacceptable Conduct

You agree to abide by the following list of duties and unacceptable conduct for our Services. If we believe a
violation of the policy is deliberate, repeated or presents a credible risk of harm to other users, our
customers, the Services or any third parties, we may suspend or terminate your access.

You must:

comply with all applicable laws and governmental regulations, including, but not limited to, all
intellectual property, data, privacy, and export control laws, and regulations promulgated by any
government agencies;
upload and disseminate only Customer Data to which you own or have all required rights under law and
under contractual and fiduciary relationships (such as proprietary and confidential information learned or
disclosed as part of employment relationships or under nondisclosure agreements) and do so only
consistent with applicable law;
keep passwords and all other login information confidential;
monitor and control all activity conducted through your account in connection with the Services;
use the proper functions that come with your account to interact with your workspace and subscription
(e.g. renewal and cancellation of workspace), or - in emergency case these are not available to you -
you must properly identify yourself to us before we can make these changes for you. We cannot make
these changes just by receiving an email alone.
promptly notify us if you become aware of or reasonably suspect any illegal or unauthorized activity or a
security breach involving your accounts, including any loss, theft, or unauthorized disclosure or use of a
username, password, or account; and

comply in all respects with all applicable terms of the third party applications that you access or
subscribe to in connection with the Services.

You may not:


share, transfer or otherwise provide access to an account designated for you to another person;

use the Services to store or transmit any Customer Data that may infringe upon or misappropriate
someone else's trademark, copyright, or other intellectual property, or that may be tortious or unlawful;
upload to, or transmit from, the Services any data, file, software, or link that contains or redirects to a
virus, Trojan horse, worm, or other harmful component or a technology that unlawfully accesses or
downloads content or information stored within the Services or on the hardware of BANKTEXT or any
third party;
attempt to reverse engineer, decompile, hack, disable, interfere with, modify, or disrupt the features,
functionality, integrity, or performance of the Services (including any mechanism used to restrict or
control the functionality of the Services), any third party use of the Services, or any third party data
contained therein (except to the extent such restrictions are prohibited by applicable law);
attempt to gain unauthorized access to the Services or related systems or networks or to defeat, avoid,
bypass, remove, deactivate, or otherwise circumvent any software protection or monitoring mechanisms
of the Services;
use the Services in any manner that may harm minors or that interacts with or targets people under the
age of thirteen;
impersonate any person or entity, including, but not limited to, an employee of ours, an “Administrator”,
an “Owner”, or any other User, or falsely state or otherwise misrepresent your affiliation with a person,
organization or entity;
use the Services to provide material support or resources (or to conceal or disguise the nature, location,
source, or ownership of material support or resources) to any organization(s) designated by the United
States government as a foreign terrorist organization pursuant to section 219 of the Immigration and
Nationality Act or other laws and regulations concerning national security, defense or terrorism;
access, search, or create accounts for the Services by any means other than our publicly supported
interfaces (for example, "scraping" or creating accounts in bulk);
send unsolicited communications, promotions or advertisements, or spam;
place any advertisements within a BANKTEXT client;
send altered, deceptive or false source-identifying information, including "spoofing" or "phishing";
use contact or other user information obtained from the Services (including email addresses) to contact
Users outside of the Services without their express permission or authority or to create or distribute
mailing lists or other collections of contact or user profile information for Users for use outside of the
Services; or
authorize, permit, enable, induce or encourage any third party to do any of the above.

API Fair Use Many of our services work via API calls managed under a central infrastructure of us. You may
not place excessive API calls or otherwise deliberately try to overburden this API system. We may throttle
your use of the APIs in case we deem it necessary to facilitate an overall acceptable service level across our
infrastructure (e.g. such as in the case of continued, excessive API usage). We may monitor use of the APIs
for compliance with these rules, and we may deny you access to the API or shut down your Integration if you
try to go around or break the policies we set. If your Order Form includes a defined API limit or minimum,
then the Order Form controls.

Supported and running versions


To provide you the Services in a consistent and secure manner, we regularly update our Services and only
support the BANKTEXT versions, that are within their support period as stated in our support policy.
Specifically for our Cloud Hosting, we automatically upgrade BANKTEXT servers to stay within the
supported version range and do not provide versions, that are beyond their End of Life term.

Limitation of Liability

If we believe that there is a violation of the Customer Terms or any of our other policies that can simply be
remedied by removal of certain Customer Data or taking other action, we may directly step in and take what
we determine to be appropriate action (including disabling your account) if we believe there is a credible risk
of harm to us, the Services, Users, or any third parties, including Vendors and Third Party Apps. To the
maximum extent permitted by law, BANKTEXT offers the Services and Products “AS IS” and “AS
AVAILABLE”, and BANKTEXT hereby disclaims all warranties, whether express, implied or statutory,
including but not limited to any implied warranties of title, non-infringement, merchantability or fitness for a
particular purpose. You may have other statutory rights, in which case the duration of any statutory
warranties will be limited to the maximum extent permitted by law. IN NO EVENT WILL WE HAVE ANY
LIABILITY FOR ANY LOST PROFITS OR REVENUES OR FOR ANY INDIRECT, SPECIAL, INCIDENTAL,
CONSEQUENTIAL, COVER OR PUNITIVE DAMAGES HOWEVER CAUSED, WHETHER IN
CONTRACT, TORT OR UNDER ANY OTHER THEORY OF LIABILITY, AND WHETHER OR NOT YOU
HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. OUR MAXIMUM AGGREGATE
LIABILITY FOR ANY BREACH OR IN CONNECTION WITH THIS AGREEMENT OR ANY SERVICE IS
ONE HUNDRED DOLLARS ($100) IN THE AGGREGATE OR THE AMOUNT YOU PAID US DURING
THE PRIOR 12 MONTHS. THE FOREGOING DISCLAIMERS WILL NOT APPLY TO THE EXTENT
PROHIBITED BY APPLICABLE LAW AND DO NOT LIMIT EITHER PARTY’S RIGHT TO SEEK AND
OBTAIN EQUITABLE RELIEF.

Payment; Fees

All fees due to BANKTEXT under these Terms are non-cancellable, and the sums paid are non-refundable
and non-creditable, except as otherwise expressly provided in these Terms.

General Provisions

Email and BANKTEXT Messages

Except as otherwise set forth herein, all notices under the Customer Terms will be by email, although we
may instead choose to provide notice to Customers through the Services (e.g., a bot notification). Notices to
BANKTEXT should be sent to contact@BANKTEXT. A notice will be deemed to have been duly given (a) the
day after it is sent, in the case of a notice sent through email; and (b) the same day, in the case of a notice
sent through the Services.

TERM; TERMINATION.

Term.
When Customer orders, activates, subscribes to, or uses any Services, such Services will be subject to an
initial subscription term or period (the “Initial Subscription Period”) and any renewal terms or periods
applicable thereto (collectively, the “Subscription Period” or “Order Term”); unless expressly provided
otherwise, the Initial Subscription Period is 12 months from the initial order, activation, subscription, or use
date and automatically renews for successive 12 month periods thereafter, unless terminated or not renewed
in accordance with these Customer Terms. If you do not want to renew, you must following our non-
renewal processes and stop using the applicable Services.

These Customer Terms will begin on the Effective Date and will continue thereafter so long as one or more
Subscription Period(s) remain in effect or until terminated by either party as outlined in this Section (the
"Term").

Termination Rights.

a. Renewal. Unless a party gives written notice of non-renewal or termination at least thirty (30) days prior to
the expiration of the relevant Term, this Agreement will automatically renew for a period equal to the
previous Term. Any Fees for a renewed Term are due upon the date of renewal.

b. For Cause. Either party may terminate this Agreement and any Order Forms immediately upon 30 days’
written notice to the other party in the event of any material breach of this Agreement (including without
limitation, any failure to pay any amounts when due hereunder, your failure to comply with restrictions under
this Agreement, including those set out in Section 3) by such party where such material breach is not cured
during such notice period. Either party may also terminate this Agreement and all Order Forms, without
notice, (i) upon the institution by or against the other party of insolvency, receivership or bankruptcy
proceedings (provided such proceedings are not dismissed within one hundred twenty (120) days of such
institution), (ii) upon the other party's making an assignment for the benefit of creditors, or (iii) upon the other
party's dissolution or ceasing to do business without a successor.

c. Vendors and Third Party Apps: Where BANKTEXT relies on Vendors or Third Party Apps (as defined
below) to provide a Service or any function or feature relating to our Services (e.g. Apple for Apple Business
Chat integrations), BANKTEXT reserves the right to change, suspend, limit, or discontinue your use of the
Services, function, or feature at any time (i) if the Vendor revokes the status of BANKTEXT as an
intermediary to provide You such Service, function, or feature; or (ii) at the request of the Vendor, such
requests being at the discretion of the Vendor, without notice or liability.

Effect of Termination or Expiration. Termination or expiration shall not relieve You of the obligation to pay
any fees or other amounts accrued or payable to BANKTEXT including fees for the remainder of the
Subscription Period(s) after an earlier termination. If BANKTEXT terminates for cause, Customer will
immediately pay all amounts due and payable for the remainder of the Subscription Period(s) without
limiting BANKTEXT’s other rights and remedies. Without prejudice to any other rights, upon termination,
You must cease all use of the Services, Software, and Documentation and destroy or return (upon request
by BANKTEXT) all copies of the Services, Software, and Documentation. You further acknowledge and
agree that You will retrieve Your User Data or copies of Your User Data from BANKTEXT within thirty (30)
business days of the termination or expiration of these Customer Terms. Unless in accordance with our
internal policies, contractual, legal, or other obligation, You acknowledge and agree that BANKTEXT has
the right to delete Your User Data, including any and all copies thereof. Your User Data, once deleted, will
not be able to be recovered.

Privacy Policy
Please review our Privacy Policy for more information on how we collect and use data relating to the use
and performance of our products and services.

Modifications

As our business evolves, we may change these Customer Terms. If we make a material change to the
Customer Terms, we will provide you with reasonable notice prior to the change taking effect either by
emailing the email address associated with your account or by messaging you through the Services. You
can review the most current version of the Customer Terms at any time by visiting this page. Any material
revisions to these Customer Terms will become effective on the date set forth in our notice, and all other
changes will become effective on the date we publish the change. If you use the Services after the effective
date of any changes, that use will constitute your acceptance of the revised terms and conditions.

Waiver

No failure or delay by either party in exercising any right under the Customer Terms will constitute a waiver
of that right. No waiver under the Customer Terms will be effective unless made in writing and signed by an
authorized representative of the party being deemed to have granted the waiver.

Severability

The Customer Terms will be enforced to the fullest extent permitted under applicable law. If any provision of
the Customer Terms is held by a court of competent jurisdiction to be contrary to law, the provision will be
modified by the court and interpreted so as best to accomplish the objectives of the original provision to the
fullest extent permitted by law, and the remaining provisions of the Customer Terms will remain in effect.

Assignment

You may not assign any of your rights or delegate your obligations under these Customer Terms, whether by
operation of law or otherwise, without the prior written consent of us (not to be unreasonably withheld). We
may assign these Customer Terms in their entirety (including all terms and conditions incorporated herein by
reference), without your consent, to a corporate affiliate or in connection with a merger, acquisition, corporate
reorganization, or sale of all or substantially all of our assets.

Governing Law; Venue; Waiver of Jury Trial; Fees

Governing Law. Any dispute, controversy, or claim arising out of or in connection with these Terms shall be
sought settled through negotiations in good faith. This Agreement and any disputes arising out of or related
to this Agreement shall be governed by and construed in accordance with applicable law as outlined in
Section, without regard to any conflict of law provisions. The terms of the United Nations Convention on
Contracts for the Sale of Goods do not apply to these Terms. The Uniform Computer Information
Transactions Act (UCITA) will not apply to these Terms regardless of when or where adopted.

Applicable Law. All references to BANKTEXT,’ ‘we,’ or ‘us’ under the Contract, what law will apply in any
dispute or lawsuit arising out of or in connection with the Contract, and which courts have jurisdiction over
any such dispute or lawsuit, depending on where Customer is domiciled.
BANKTEXT Contract
Domicile Governing Law Venue
Entity

United States and Rocketchat Delaware, United Delaware, United


other Countries Technologies Corp. States States

Rocketchat Tecnologia Porto Alegre, Rio


Brazil Brazil
LTDA Grande do Sul

The Agreement, and any disputes arising out of or related hereto will be governed exclusively by the
applicable governing law above. The courts located in the applicable venue above will have exclusive
jurisdiction to adjudicate any dispute arising out of or relating to the Agreement or its formation,
interpretation, or enforcement. Each party hereby consents and submits to the exclusive jurisdiction of such
courts.

Attorneys’ Fees. If any legal action or other proceeding is brought to enforce the provisions of this
Agreement, the prevailing party shall be entitled to recover reasonable attorney fees and other costs
incurred in the action or proceeding, in addition to any other relief to which the prevailing party may be
entitled.

Dispute Resolution. In the event of any controversy or claim arising out of or relating to these Terms, the
parties will consult and negotiate with each other and, recognizing their mutual interests, attempt to reach a
solution satisfactory to both parties. If the parties do not reach a settlement within a period of sixty (60) days,
either party may pursue relief as may be available under these Terms pursuant to Governing Law and
Jurisdiction Sections. All negotiations pursuant to this Section will be confidential and treated as
compromise and settlement negotiations for purposes of all rules and codes of evidence of applicable
legislation and jurisdictions.

Injunctive Relief; Enforcement. Notwithstanding the provisions of Dispute Resolution and Governing Law
Sections, nothing in these Terms will prevent us from seeking injunctive relief with respect to a violation of
intellectual property rights, confidentiality obligations, or enforcement or recognition of any award or order in
any appropriate jurisdiction.

Language. If this Agreement is translated into a language other than English and there are conflicts
between the translations of this Agreement, you agree that the English version of this Agreement shall
prevail and control.

BANKTEXT Marketplace; Specific Provisions BANKTEXT Marketplace is an online marketplace for


plugins, addons and extensions ("Apps") that work with BANKTEXT´s products. The following sections
govern specific provisions regarding the Marketplace in the context of these Customer Terms.

App Listing The listing for each App will identify the provider of the App (“Vendor”), which may be
BANKTEXT or a third party. Apps for which BANKTEXT is the Vendor are "BANKTEXT Apps,” and Apps
for which the Vendor is a third party are “Third Party Apps”.
Orders You can place Orders on the Marketplace. Your Order will identify the Vendor, your authorized scope
of use of the App and license or subscription term, as applicable. For any Third Party App, you agree that
BANKTEXT is the Vendor’s commercial agent and that you are required to make any related payments
directly to BANKTEXT, except where Third Party Apps may be enabled or paid for through a third party
Vendor’s own website and this is indicated in the App listing. Once you complete your Order, BANKTEXT
will provide you with access to the applicable Apps. Apps are provided on a license or subscription basis
and you do not acquire any ownership rights in the Marketplace or the Apps. You may terminate your Order
of an App under these Terms, for no reason or any reason, by providing notice of termination to us no later
than fourteen (14) days after the Order date for such App. In the event you terminate your initial Order, we
will refund you the amount paid under the Order for that App. This termination and refund right applies only
to your initial Order of the App and only if you exercise your termination right within the period specified
above, and does not apply to Additional Services or anything else. The Marketplace may also offer free trial
periods for Apps. After expiration of the trial period, if you do not place an Order for the App, the App will
cease to function and you must cease using and delete your copies of the App.

Usage of Apps Without limiting the disclaimers, restrictions or other provisions in these Terms of Use,
usage of Apps is subject to license or subscription terms, privacy policies and other applicable terms
specified by the Vendor (“Vendor Terms”). Vendor Terms are typically included on the App’s listing page or
presented through the Order process. You may not use an App if you do not agree to the relevant Vendor
Terms.
Third Party Apps are subject to the third party’s Vendor Terms, not BANKTEXT Terms. By ordering,
installing or enabling any Third Party App, you are entering into the Vendor Terms directly with the
applicable third party Vendor. Any support and maintenance of Third Party Apps will be provided by the
applicable Vendor to the extent described in the applicable Vendor Terms.

Access to Data If you place an Order for Apps, you authorize Vendors to access or use certain data in the
applicable BANKTEXT Products. This may include transmitting, transferring, modifying or deleting such
data, or storing such data on Vendor or third party systems. For BANKTEXT Apps, this access and use is
covered by our privacy policy. Any third party Vendor’s use of accessed data (whether data in the
BANKTEXT Products or separately collected from you or your device) is subject to the applicable Vendor
Terms. You are solely responsible for your decision to permit any third party Vendor or Third Party App to
access or use data to which you’ve granted access. It is your responsibility to carefully review the Vendor
Terms, as provided by the applicable third party Vendor.
Notice Regarding Apple as a Third Party Vendor. You agree to be bound by the then-current Apple
Business Register Terms of Use as found on Apple’s website: https://register.apple.com/tou/abr/latest/en if
you order, access, or use the applicable Apple services, functions, or features described therein in
connection with BANKTEXT Services. In addition, you acknowledge that these Terms are between You and
BANKTEXT only, not with Apple Inc. (“Apple”), and Apple is not responsible for the Services or the content
thereof. Apple has no obligation to furnish any maintenance and support services with respect to the
Services we provide you. To the maximum extent permitted by applicable law, Apple has no warranty
obligations with respect to the Services. Apple is not responsible for addressing any claims by You or any
third party relating to the Services or your possession and/or use of the Services, including: (a) product
liability claims; (b) any claim that the Services fail to conform to any applicable legal or regulatory
requirement; or (c) claims arising under consumer protection or similar legislation. Apple is not responsible
for the investigation, defense, settlement and discharge of any third party claim that the Services and/or Your
possession and use of the Services infringe a third party’s intellectual property rights. Apple and Apple’s
subsidiaries are third party beneficiaries of these Terms, and upon Your acceptance of these Terms, Apple
will have the right (and will be deemed to have accepted the right) to enforce these Terms against You as a
third party beneficiary of these Terms. You agree to comply with any applicable third party terms when using
the Services. You hereby represent and warrant that: (i) You are not located in a country that is subject to a
U.S. Government embargo, or that has been designated by the U.S. Government as a “terrorist supporting”
country; and (ii) You are not listed on any U.S. Government list of prohibited or restricted parties. At all times
any personal information collected through use of the Services will be treated in accordance with Apple's
Privacy Policy which can be viewed at: http://www.apple.com/legal/privacy/.

Responsibilities You represent and warrant that you have all necessary authority to enter into and be
legally bound by these Customer Terms, Vendor Terms, to place any Orders and to authorize Vendors to
access and use your data and information.

Marketplace Disclaimers and Liability Third party Vendors are solely responsible for their Apps and any
related content or materials included in their Apps. BANKTEXT has no liability or responsibility whatsoever
for any Third Party Apps, even if BANKTEXT has reviewed, certified, or approved the Third Party App. Any
use of Third Party Apps is at your sole discretion and risk. Vendors are solely responsible for the information
they provide. At any time, BANKTEXT may remove an App from the Marketplace in accordance with
applicable policies, and Vendors may also update, modify or remove their own Apps at any time.
BANKTEXT makes no guarantee that any Apps will work properly with BANKTEXT Products as they
change over time.

Entire Agreement

The Customer Terms, including any terms, subscriptions, or order forms incorporated by reference into the
Customer Terms, constitute the entire agreement between you and us and supersede all prior and
contemporaneous agreements, proposals or representations, written or oral, concerning its subject matter.
To the extent of any conflict or inconsistency between the provisions in these Customer Terms and any
pages referenced in these Customer Terms, the terms of these Customer Terms will first prevail, followed by
the pages referenced in these Customer Terms (e.g., the Privacy Policy).

Contacting BANKTEXT

Please also feel free to contact us if you have any questions about BANKTEXT’s Customer Terms. You may
contact us at contact@BANKTEXT or at our mailing address below:
BANKTEXT Technologies Corp. 251 Little Falls Rd Wilmington, DE, 19808 USA
Master Services Agreement for Self Managed
Workspaces

Master Services Agreement for Self Managed Workspaces


Effective date: February 27th, 2021

BANKTEXT MASTER SERVICES AGREEMENT FOR SELF-MANAGED


DEPLOYMENTS
This Master Services Agreement (the "Agreement"), is entered as of
(the “Effective Date”),
by and between ,
whose address is **\_**\;
an entity (“You,” “Your,” or “Customer”) and BANKTEXT Technologies Corp. (“BANKTEXT”). In this
Agreement, Customer and BANKTEXT may be individually referred to as “party” and collectively referred to
as “*parties\*.”

The Agreement covers the provision of services by BANKTEXT to You for self-managed (otherwise known
as "on-premise") deployment of BANKTEXT and generally comes with an Order Form that specifies
services and product editions for a particular initial term or period (the “Initial Order Term”) and any renewal
terms or periods indicated therein (collectively, the “Order Term”); unless expressly provided otherwise, the
Initial Order Term is 12 months from the effective date of the Order and renewals are for successive 12
months periods. It does explicitly not cover the mere provision of the Community Edition of our product or
any other edition of our product which does not come with a reference to this Agreement.

1. DEFINITIONS.

1.1 Affiliates means an entity controlled by, under common control with, or controlling such party, where
control is denoted by having fifty percent (50%) or more of the voting power (or equivalent) of the applicable
entity. Subject to the terms and conditions of this Agreement, Your Affiliates may use the license granted
hereunder. All references to BANKTEXT shall be deemed to be references to BANKTEXT and its Affiliates.

1.2 Agreement means this Master Services Agreement, and any applicable Order Form attached hereto.

1.3 Devices means (whether physical or virtual) a server, system, workstation, computer, mobile device, or
endpoint upon which or through which the Services are used and/or on which the Software is installed.

1.4 Documentation means the official user documentation prepared and provided by BANKTEXT to You
on the use of the Services or Software (as updated from time to time). For the avoidance of doubt, any online
community site, unofficial documentation, videos, white papers, or related media, or feedback do not
constitute Documentation.

1.5 Order Form means the BANKTEXT ordering document that specifies Your purchase of the Services,
pricing, and other related information. All Order Form(s) will be attached to and made a part of this
Agreement.
1.6 Personal Data means any information that can be used to identify an individual as that term is defined
under applicable law, which may include EU’s "General Data Protection Regulation" (“GDPR”) as and if
applicable.

1.7 Services means the products and Software services, including any support and application
programming interface that accesses functionality, that is provided to the Customer by BANKTEXT.

1.8 Software means the object code version of any software to which Customer is provided access as part
of the Service, including any updates or new versions.

1.9 Support means the standard maintenance or support provided by BANKTEXT or its designated agents
as set forth in this Agreement.

1.10 User means an individual authorized by You to use the Services, Software, and Documentation.

1.11 Your Data or Data means data, files, or information, including data, files, or information that include
Personal Data, accessed, used, communicated, stored, or submitted by You or Your Users related to Your or
Your User’s use of the Services or Software.

2. PROVISION OF SERVICES.

2.1 Services License. Upon payment of fees and subject to continuous compliance with this Agreement,
BANKTEXT hereby grants Customer a limited, non-exclusive, non-transferable license to access, use, and
install (if applicable) the Services, Software, and Documentation during the Term (defined below). You may
provide, make available to, or permit Your Users to use or access the Services, the Software, or
Documentation, in whole or in part. You agree that BANKTEXT may deliver the Services or Software to You
with the assistance of its Affiliates, licensors, and service providers. During the Term (as defined herein),
BANKTEXT may update or modify the Services or Software to reflect changes in, among other things, laws,
regulations, rules, technology, industry practices, patterns of system use, and availability of a third-party
program. BANKTEXT’s updates or modifications to the Services or Software will not materially reduce the
level of performance, functionality, security, or availability of the Services or Software during the Term.

2.2 Customization and Implementation. Subject to the terms and conditions of this Agreement and
applicable Order Form, BANKTEXT will customize the Software for the Customer in accordance with the
functional requirements specification which will be mutually developed during the customization effort.

2.3 Hosting is Not Covered. Our hosted offerings are not covered by this Agreement.

2.4 Support. Subject to the terms and conditions of this Agreement and applicable Order Form, as part of
the Services, BANKTEXT will provide Customer the support and maintenance services as described in the
applicable Order Form during the Term. BANKTEXT will provide the Customer with the Support subject to
payment of the applicable fees as defined in the applicable Order Form. By the open source nature of
BANKTEXT and according to its License found at
https://github.com/RocketChat/BANKTEXT/blob/master/LICENSE, the Customer may make modifications to
the software, but BANKTEXT's support will only cover original code, published by BANKTEXT in its own
repositories.

3. LICENSE RESTRICTIONS; OBLIGATIONS.


3.1 License Restrictions. You may not (i) provide, make available to, or permit individuals other than Your
Users to use or access the Services, the Software, or Documentation, in whole or in part; (ii) use the
Services or Software to store or transmit infringing, libelous, unlawful, or tortious material or to store or
transmit material in violation of third party rights, including privacy rights; (iii) use the Services or Software to
violate any rights of others; (iv) use the Services or Software to store or transmit malicious code, Trojan
horses, malware, spam, viruses, or other destructive technology ("Viruses"); (v) interfere with, impair, or
disrupt the integrity or performance of the Services or any other third party’s use of the Services or (vi) alter,
circumvent, or provide the means to alter or circumvent the Services or Software, including technical
limitations, recurring fees, or usage limits.

3.2 Your Obligations. You acknowledge, agree, and warrant that: (i) You will be responsible for Your and
Your Users’ activity and compliance with this Agreement, and if You become aware of any violation, You will
immediately terminate the offending party’s access to the Services, Software, and Documentation and notify
BANKTEXT; (ii) You and Your Users will comply with all applicable local, state, federal, and international
laws; (iii) You are legally able to process Your Data and are able to legally provide Your Data to BANKTEXT
and its Affiliates, including obtaining appropriate consents or rights for such processing, as outlined further
herein, and have the right to access and use Your infrastructure if requested by You, including any system or
network, to obtain the Services and Software and will be solely responsible for the accuracy, security,
quality, integrity, and legality of the same; and (iv) You will keep your registration information, billing
information, passwords and technical data accurate, complete, secure and current for the Term of this
Agreement.

3.3 Representations and Warranties. Each party represents and warrants that: (i) such party has the full
power and authority to enter into this Agreement; (ii) this Agreement is duly authorized by all necessary
action and has been duly executed and delivered; (iii) such party is in compliance with all applicable
requirements of law, other than where the failure to be in compliance would not have a material adverse
effect upon such party’s execution, delivery or performance of this Agreement or consummation of the
transactions contemplated hereby; and (iv) such party has not entered into any agreement with any other
entity that contains restrictive provisions that may impair its ability to perform its obligations under this
Agreement.

3.4 API Fair Use Many of our services work via API calls managed under a central infrastructure of us. You
may not place excessive API calls or otherwise deliberately try to overburden this API system. We may
throttle your use of the APIs in case we deem it necessary to facilitate an overall acceptable service level
across our infrastructure (e.g. such as in the case of continued, excessive API usage). We may monitor use
of the APIs for compliance with these rules, and we may deny you access to the API or shut down your
Integration if you try to go around or break the policies we set. If your Order Form includes a defined API limit
or minimum, then the Order Form controls.

4. PROPRIETARY RIGHTS.
4.1 Ownership of BANKTEXT Intellectual Property. The Services, Software, and Documentation are
licensed, not sold. Use of the term "purchase" in conjunction with licenses of the Services, Software, and
Documentation shall not imply a transfer of ownership. Except for the limited rights expressly granted by
BANKTEXT to Customer in this Agreement, Customer acknowledges and agrees that all right, title and
interest in and to all copyright, trademark, patent, trade secret, intellectual property (including without
limitation algorithms, business processes, improvements, enhancements, modifications, derivative works,
information collected and analyzed in connection with the Services) and other proprietary rights, arising out
of or relating to the Services, the Software, the provision of the Services or Software, and the
Documentation, belong exclusively to BANKTEXT or its suppliers or licensors. All rights, title, and interest in
and to content, which may be accessed through the Services or the Software, is the property of the
respective owner and may be protected by applicable intellectual property laws and treaties. This
Agreement gives Customer no rights to such content, including the use of the same. BANKTEXT is hereby
granted a royalty-free, fully-paid, worldwide, transferable, sub-licensable, irrevocable and perpetual license
to use or incorporate into its products and services suggestions, enhancement requests, recommendations
or other feedback provided by You or Your Users relating to the Services or Software. To clarify: this
mentioned license does not extend to any data of You or Your users, but is aimed to allow us to incorporate
Your feedback et al. into our products and services. All rights not expressly granted under this Agreement
are reserved by BANKTEXT.

4.2 Ownership of Data. BANKTEXT does not obtain ownership in data that is submitted into our Services
or Software. Unless agreed otherwise between Customer and User, Customer acknowledges and agrees
that when a User submits content or information to the Services, such as messages or files, all such content
and information, is generally owned by the User and that User grants Customer a license to operate the
Services, Software and Support in accordance with the agreement between Customer and User (e.g. a
customer contract).

Customer in turn grants BANKTEXT a sublicense of said license for the purposes of operating the Services,
Software and Support as described in this Agreement, where this sublicense is needed (e.g. to analyze
bugs by being granted access to user data by Customer). Other than as specifically provided in this
Agreement and the BANKTEXT Privacy Policy, BANKTEXT will not release, transmit, or utilize Customer
Data, in particular not store or repurpose it.

5. TERM; TERMINATION.

5.1 Term. This Agreement will begin on the Effective Date and will continue so long as any Order Term
remains in effect or until terminated by either party as outlined in this Section (the "Term").

5.2 Termination Rights.

a. Renewal. Unless a party gives written notice of non-renewal or termination at least thirty (30) days prior to
the expiration of the relevant Term, this Agreement will automatically renew for a period equal to the
previous Term. Any Fees for a renewed Term are due upon the date of renewal.
b. For Cause. Either party may terminate this Agreement and any Order Forms immediately upon 30 days’
written notice to the other party in the event of any material breach of this Agreement (including without
limitation, any failure to pay any amounts when due hereunder, your failure to comply with restrictions under
this Agreement, including those set out in Section 3) by such party where such material breach is not cured
during such notice period. Either party may also terminate this Agreement and all Order Forms, without
notice, (i) upon the institution by or against the other party of insolvency, receivership or bankruptcy
proceedings (provided such proceedings are not dismissed within one hundred twenty (120) days of such
institution), (ii) upon the other party's making an assignment for the benefit of creditors, or (iii) upon the other
party's dissolution or ceasing to do business without a successor.

5.3 Effect of Termination or Expiration. Termination or expiration shall not relieve You of the obligation to
pay any fees or other amounts accrued or payable to BANKTEXT, including fees for the remainder of the
Order Term(s) after an earlier termination. If BANKTEXT terminates for cause, or Customer terminates for
convenience, Customer will immediately pay all amounts due and payable for the remainder of the Order
Term without limiting BANKTEXT’s other rights and remedies. Without prejudice to any other rights, upon
termination or expiration, You must cease all use of the Services, Software, and Documentation and destroy
or return (upon request by BANKTEXT) all copies of the Services, Software, and Documentation. You
further acknowledge and agree that You will retrieve Your Data or copies of Your Data from BANKTEXT
within thirty (30) business days of the termination or expiration. Unless in accordance with our internal
policies, contractual, legal, or other obligation, You acknowledge and agree that BANKTEXT has the right to
delete Your Data, including any and all copies thereof. Your Data, once deleted, will not be able to be
recovered. Sections 1, 3, 4, 5.3, 6, 8, 9, 10, 11, and 12, shall survive any termination or expiration of this
Agreement.

6. FEES AND PAYMENT; TAXES.

6.1 Fees and Payment. All Order Forms placed will be considered final upon acceptance by BANKTEXT.
Fees will be due and payable as set forth on the Order Form, which are attached to and made part of this
Agreement. Unless otherwise set forth herein, fees shall be at BANKTEXT’s then-standard rates at the time
of invoice or, if applicable, as set forth in the Order Form. If You fail to pay, BANKTEXT shall be entitled, at
its sole discretion, to (i) suspend the provision of the Services until You fulfill Your pending payment
obligations; (ii) charge You an interest rate designated by BANKTEXT at the time of invoice; and/or (iii)
terminate this Agreement and all Order Forms. Unless otherwise stated, all payments made under this
Agreement shall be in United States dollars. Fees and payments are non-refundable except to the extent
expressly described otherwise. All fees due to BANKTEXT under these Terms are non-cancellable, and the
sums paid are non-refundable and non-creditable, except as otherwise expressly provided in these Terms.

6.2 Taxes. All fees are exclusive of taxes and You shall pay or reimburse BANKTEXT for all taxes arising
out of transactions contemplated by this Agreement. As reasonably requested, You will provide
documentation to BANKTEXT showing that taxes have been paid to the relevant taxing authority. "Taxes"
means any sales, VAT, use, and other taxes (other than taxes on BANKTEXT’s income), export and import
fees, customs duties and similar charges imposed by any government or other authority. You hereby confirm
that BANKTEXT can rely on the name and address that You provide to BANKTEXT when You agree to the
fees or in connection with Your payment method as being the place of supply for sales tax and income tax
purposes or as being the place of supply for VAT purposes where You have established Your business.

7. DATA; PROTECTION OF YOUR DATA.


7.1 Your Data. You agree that You and Your Users are responsible for maintaining and protecting backups
of Your Data directly or indirectly processed using the Services and Software and that BANKTEXT is not
responsible for exportation of, the failure to store, the loss, or the corruption of Your Data.

You agree that BANKTEXT and its Affiliates will process configuration, performance, usage, and
consumption data about You and Your Users use of the Services and Software to assist with the necessary
operation and function of the Services and Software and to improve BANKTEXT products and Services and
Your and Your Users’ experience with BANKTEXT and its Affiliates pursuant to the BANKTEXT Privacy
Notice, available at https://BANKTEXT/privacy.

7.2 Protection of Your Data. Each party shall comply with its respective obligations under applicable data
protection laws. Each party shall maintain appropriate administrative, physical, technical and organizational
measures that ensure an appropriate level of security for Confidential Information and Personal Data. You
are responsible for ensuring that the security of the Services is appropriate for Your intended use and the
storage, hosting, or processing of Personal Data. Information on how BANKTEXT protects personal data is
in BANKTEXT´s Privacy Policy.

8. CONFIDENTIAL INFORMATION.

As used in this Agreement, "Confidential Information" means any nonpublic information or materials
disclosed by either party to the other party, either directly or indirectly, in writing, orally, or by inspection of
tangible objects that the disclosing party clearly identifies as confidential or proprietary. For clarity,
Confidential Information includes Personal Data and BANKTEXT Confidential Information includes the
Services, Software, Documentation, and any information or materials relating to the Services, Software
(including pricing), or otherwise. Confidential Information may also include confidential or proprietary
information disclosed to a disclosing party by a third party.

The receiving party will: (i) hold the disclosing party’s Confidential Information in confidence and use
reasonable care to protect the same; (ii) restrict disclosure of such Confidential Information to those
employees or agents with a need to know such information and who are under a duty of confidentiality
respecting the protection of Confidential Information substantially similar to those of this Agreement; and (iii)
use Confidential Information only for the purposes for which it was disclosed, unless otherwise set forth
herein. The restrictions will not apply to Confidential Information, excluding Personal Data, to the extent it (i)
is (or through no fault of the recipient, has become) generally available to the public; (ii) was lawfully
received by the receiving party from a third party without such restrictions; (iii) was known to the receiving
party without such restrictions prior to receipt from the disclosing party; or (iv) was independently developed
by the receiving party without breach of this Agreement or access to or use of the Confidential Information.

The receiving party will return to the disclosing party or destroy all Confidential Information of the disclosing
party in the receiving party’s possession or control and permanently erase all electronic copies of such
Confidential Information promptly upon the written request of the disclosing party upon the termination of this
Agreement. The receiving party will certify in writing signed by an officer of the receiving party that it has fully
complied with its obligations under this Section 8.
The receiving party may disclose Confidential Information to the extent the disclosure is required by law,
regulation, or judicial order, provided that the receiving party will provide to the disclosing party prompt
notice, where permitted, of such order and will take reasonable steps to contest or limit the steps of any
required disclosure. The parties agree that any material breach of Section 3 or this Section 8 will cause
irreparable injury and that injunctive relief in a court of competent jurisdiction will be appropriate to prevent
an initial or continuing breach of these Sections in addition to any other relief to the applicable party may be
entitled.

9. DISCLAIMER.

THE SERVICES, SOFTWARE, DOCUMENTATION, AND ALL OTHER PRODUCTS AND SERVICES
PROVIDED UNDER THE TERMS OF THIS AGREEMENT AND/OR APPLICABLE ORDER FORM,
INCLUDING HOSTED SERVICES, ARE PROVIDED ON "AS IS" AND “AS AVAILABLE” BASIS.
BANKTEXT DISCLAIMS ALL REPRESENTATIONS AND WARRANTIES OF ANY KIND, EXPRESS,
IMPLIED, OR STATUTORY, INCLUDING ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, ACCURACY, RELIABILITY, SECURITY, LOSS
OR CORRUPTION OF YOUR DATA, CONTINUITY, OR ABSENCE OF DEFECT RELATING TO THE
SERVICES, SOFTWARE, DOCUMENTATION, ANY OTHER PRODUCT OR SERVICES, OR RESULTS
OF THE SAME PROVIDED TO YOU UNDER THIS AGREEMENT. BANKTEXT DOES NOT WARRANT
THAT THE SPECIFICATIONS OR FUNCTIONS CONTAINED IN THE SERVICES OR SOFTWARE WILL
MEET YOUR REQUIREMENTS OR THAT DEFECTS IN THE SERVICES OR SOFTWARE WILL BE
CORRECTED.

EACH PARTY SPECIFICALLY DISCLAIMS RESPONSIBILITY OF THIRD-PARTY PRODUCTS AND


SERVICES WITH WHICH YOU MAY UTILIZE THE SERVICES AND SOFTWARE, AND EACH PARTY
SPECIFICALLY DISCLAIMS AND WAIVES ANY RIGHTS AND CLAIMS AGAINST THE OTHER PARTY
WITH RESPECT TO SUCH THIRD PARTY PRODUCTS AND SERVICES.

10. INDEMNIFICATION.

10.1 BANKTEXT Indemnification. BANKTEXT will indemnify, defend, and hold You harmless from any
third party claim brought against You that the Services, as provided by BANKTEXT, infringe or
misappropriate any U.S. patent, copyright, trademark, trade secret, or other intellectual property rights of a
third party, provided (i) use of the Services by You is in conformity with the Agreement and Documentation;
(ii) the infringement is not caused by modification or alteration of the Services; and/or (iii) the infringement
was not caused by a combination or use of the Services with products not supplied by BANKTEXT.
BANKTEXT’s indemnification obligations are contingent upon You: (i) promptly notifying BANKTEXT in
writing of the claim; (ii) granting BANKTEXT sole control of the selection of counsel, defense, and
settlement of the claim; and (iii) providing BANKTEXT with reasonable assistance, information, and
authority required for the defense and settlement of the claim. This Section states BANKTEXT’s entire
liability (and shall be Your sole and exclusive remedy) with respect to indemnification to You.

10.2 Your Indemnification. You agree to indemnify, defend, and hold harmless BANKTEXT and its
Affiliates, and its directors, employees, and agents from and against any claims arising out of or due to: (i)
Your Data; (ii) Your (or Your User’s) breach of this Agreement; (iii) Your (or Your User’s) use of the Services,
Software, or Documentation in violation of third party rights, including any intellectual property or privacy
rights, or any applicable laws; or (iv) Your (or Your User’s) misuse of the Services, Software, or
Documentation.
11. LIMITATION OF LIABILITY.

TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, (I) IN NO EVENT WILL BANKTEXT
AND ITS AFFILIATES, DIRECTORS, EMPLOYEES, OR AGENTS HAVE ANY LIABILITY, CONTINGENT
OR OTHERWISE, FOR ANY INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE,
STATUTORY OR EXEMPLARY DAMAGES ARISING OUT OF OR RELATING TO THIS AGREEMENT,
THE SERVICES, SOFTWARE, DOCUMENTATION, OR ANY OTHER PRODUCTS OR SERVICES
PROVIDED HEREUNDER, INCLUDING, BUT NOT LIMITED TO LOST PROFITS, LOST OR
CORRUPTED DATA, LOSS OF GOODWILL, WORK STOPPAGE, EQUIPMENT FAILURE OR
MALFUNCTION, PROPERTY DAMAGE OR ANY OTHER DAMAGES OR LOSSES, EVEN IF A PARTY
HAS BEEN ADVISED OF THE POSSIBILITY THEREOF, AND REGARDLESS OF THE LEGAL OR
EQUITABLE THEORY (CONTRACT, TORT, STATUTE, INDEMNITY OR OTHERWISE) UPON WHICH
ANY SUCH LIABILITY IS BASED; AND (II) THE AGGREGATE LIABILITY OF BANKTEXT AND ITS
AFFILIATES, DIRECTORS, EMPLOYEES, AND AGENTS, AND THE SOLE REMEDY AVAILABLE TO
YOU ARISING OUT OF OR RELATING TO THIS AGREEMENT, THE SERVICES, SOFTWARE, OR ANY
PRODUCTS OR SERVICES PROVIDED HEREUNDER SHALL BE LIMITED TO TERMINATION OF THIS
AGREEMENT AND DAMAGES NOT TO EXCEED THE TOTAL AMOUNT PAYABLE OR PAID TO
BANKTEXT BY YOU UNDER THIS AGREEMENT DURING THE TWELVE (12) MONTHS PRIOR TO
TERMINATION.

12. GENERAL.

12.1 Notices. All notices must be in writing and shall be mailed by registered or certified mail to
BANKTEXT Technologies Corp., 251 Little Falls Drive, Wilmington, DE, 19808, or sent via email to
legal@BANKTEXT (with evidence of the effective transmission).

12.2 Entire Agreement. This Agreement and the exhibits and attachments hereto constitute the entire
agreement between the parties relating to the Services, Software, and Documentation provided hereunder
and supersedes all prior or contemporaneous communications, agreements, and understandings, written or
oral, with respect to the subject matter hereof. If other BANKTEXT terms or conditions conflict with this
Agreement, this Agreement shall prevail and control with respect to the Services, Software, and
Documentation provided hereunder. In addition, any and all additional or conflicting terms provided by You,
whether in a purchase order, an alternative license, or otherwise, shall be void and shall have no effect.

12.3 Export Control Laws. The Services, Software, and Documentation delivered to You under this
Agreement are subject to export control laws and regulations and may also be subject to import and export
laws of the jurisdiction in which it was accessed, used, or obtained, if outside those jurisdictions. You shall
abide by all applicable export control laws, rules, and regulations applicable to the Services, Software, and
Documentation. You agree that You are not located in or are not under the control of or a resident of any
country, person, or entity prohibited to receive the Services, Software, or Documentation due to export
restrictions and that You will not export, re-export, transfer, or permit the use of the Services, Software, or
Documentation, in whole or in part, to or in any of such countries or to any of such persons or entities.

12.4 Modifications. Unless as otherwise set forth herein, this Agreement shall not be amended or modified
by You except in writing signed by authorized representatives of each party.
12.5 Severability. If any provision of this Agreement is held to be unenforceable, illegal, or void, that shall
not affect the enforceability of the remaining provisions. The parties further agree that the unenforceable
provision(s) shall be deemed replaced by a provision(s) that is binding and enforceable and that differs as
little as possible from the unenforceable provision(s), with considerations of the object and purpose of this
Agreement.

12.6 Waiver. The delay or failure of either party to exercise any right provided in this Agreement shall not be
deemed a waiver of that right.

12.7 Force Majeure. BANKTEXT will not be liable for any delay or failure to perform obligations under this
Agreement due to any cause beyond its reasonable control, including acts of God; labor disputes; industrial
disturbances; systematic electrical, telecommunications or other utility failures; earthquakes, storms, or other
elements of nature; blockages; embargoes; riots; acts or orders of government; acts of terrorism; pandemics,
public health crisis and war.

12.8 Construction. Paragraph headings are for convenience and shall have no effect on interpretation.

12.9 Governing Law; Venue; Waiver of Jury Trial; Fees

Governing Law. Any dispute, controversy, or claim arising out of or in connection with these Terms shall be
sought settled through negotiations in good faith. This Agreement and any disputes arising out of or related
to this Agreement shall be governed by and construed in accordance with applicable law as outlined in
Section, without regard to any conflict of law provisions. The terms of the United Nations Convention on
Contracts for the Sale of Goods do not apply to these Terms. The Uniform Computer Information
Transactions Act (UCITA) will not apply to these Terms regardless of when or where adopted.

Applicable Law. All references to BANKTEXT,’ ‘we,’ or ‘us’ under the Contract, what law will apply in any
dispute or lawsuit arising out of or in connection with the Contract, and which courts have jurisdiction over
any such dispute or lawsuit, depending on where Customer is domiciled.

BANKTEXT Contract
Domicile Governing Law Venue
Entity

United States and Rocketchat Delaware, United Delaware, United


other Countries Technologies Corp. States States

Rocketchat Tecnologia Porto Alegre, Rio


Brazil Brazil
LTDA Grande do Sul

The Agreement and any disputes arising out of or related hereto will be governed exclusively by the
applicable governing law above. The courts located in the applicable venue above will have exclusive
jurisdiction to adjudicate any dispute arising out of or relating to the Agreement or its formation,
interpretation, or enforcement. Each party hereby consents and submits to the exclusive jurisdiction of such
courts.
Attorneys’ Fees. If any legal action or other proceeding is brought to enforce the provisions of this
Agreement, the prevailing party shall be entitled to recover reasonable attorney fees and other costs
incurred in the action or proceeding, in addition to any other relief to which the prevailing party may be
entitled.

Dispute Resolution. In the event of any controversy or claim arising out of or relating to these Terms, the
parties will consult and negotiate with each other and, recognizing their mutual interests, attempt to reach a
solution satisfactory to both parties. If the parties do not reach a settlement within a period of sixty (60) days,
either party may pursue relief as may be available under these Terms pursuant to Governing Law and
Jurisdiction Sections. All negotiations pursuant to this Section will be confidential and treated as
compromise and settlement negotiations for purposes of all rules and codes of evidence of applicable
legislation and jurisdictions.

Injunctive Relief; Enforcement. Notwithstanding the provisions of Dispute Resolution and Governing Law
Sections, nothing in these Terms will prevent us from seeking injunctive relief with respect to a violation of
intellectual property rights, confidentiality obligations, or enforcement or recognition of any award or order in
any appropriate jurisdiction.

Language. If this Agreement is translated into a language other than English and there are conflicts
between the translations of this Agreement, you agree that the English version of this Agreement shall
prevail and control.

12.10 Third Party Rights. Other than as expressly provided herein, this Agreement does not create any
rights for any person who is not a party to it, and no person not a party to this Agreement may enforce any of
its terms or rely on an exclusion or limitation contained in it.

12.11 Relationship of the Parties. The parties are independent contractors. This Agreement does not
create a partnership, franchise, joint venture, agency, fiduciary, or employment relationship between the
parties.
Master Service Agreement for Professional
Services

Effective date: September 23, 2022

This Professional Services Master Agreement (“Agreement”) describes your (“Customer’s”) rights and
responsibilities when using our (“BANKTEXT’s”) professional services.

This Agreement applies to all Customers of BANKTEXT’s Professional Services and governs each
Statement of Work (SOW) and Order Form that specifies services for a particular term or period (the
“Order/SOW Term”).

We may update this Agreement and we will let you know when we do through the Services (e.g., a bot
notification) or by the Customer email address provided to BANKTEXT.

Please read this document carefully before using this service.

1. Definitions

"Affiliate" of a Person means any other Person that directly or indirectly, through one or more
intermediaries, controls, is controlled by, or is under common control with, such Person. The term "control"
(including the terms "controlled by" and "under common control with") means the possession, directly or
indirectly, of the power to direct or cause the direction of the management and policies of a Person, whether
through the ownership of voting securities, by contract, or otherwise.

"Authorized Service Recipients" means the Affiliates of Customer as may be identified by Customer to
BANKTEXT from time to time, or Persons identified as such in a Statement of Work.

"Agreement" has the meaning set forth in the preamble.

"Change Order" has the meaning set forth in Section 5.2

"Confidential Information" means any information that is treated as confidential by a party, including but
not limited to all non-public information about its business affairs, products or services, Intellectual Property
Rights, trade secrets, third-party confidential information, and other sensitive or proprietary information,
whether disclosed orally or in written, electronic, or other form or media, and whether or not marked,
designated, or otherwise identified as "confidential". Confidential Information shall not include information
that: (a) is already known to the Receiving Party without restriction on use or disclosure prior to receipt of
such information from the Disclosing Party; (b) is or becomes generally known by the public other than by
breach of this Agreement by, or other wrongful act of, the Receiving Party; (c) is developed by the Receiving
Party independently of, and without reference to, any Confidential Information of the Disclosing Party; or (d)
is received by the Receiving Party from a third party who is not under any obligation to the Disclosing Party
to maintain the confidentiality of such information.

"Customer" has the meaning set forth in the preamble.

"Customer Contract Manager" has the meaning set forth in Section 4.1(a).
"Customer Materials" means any documents, data, know-how, methodologies, software, and other
materials provided to BANKTEXT by Customer[, including computer programs, reports, and specifications.

"Deliverables" means all documents, work product, and other materials that are delivered to Customer
hereunder or prepared by or on behalf of BANKTEXT in the course of performing the Services, including
any items identified as such in a Statement of Work.

"Disclosing Party" means a party that discloses Confidential Information under this Agreement.

“Documentation” means the official user documentation prepared and provided by BANKTEXT to
Customer on the use of the Services or BANKTEXT software (as updated from time to time). For the
avoidance of doubt, any online community site, unofficial documentation, videos, white papers, or related
media, or feedback do not constitute Documentation.

"Effective date" means the signature date of the SOW or Order Form in which the Services provided under
this Agreement are foreseen.

"Intellectual Property Rights" means all (a) patents, patent disclosures, and inventions (whether
patentable or not), (b) trademarks, service marks, trade dress, trade names, logos, corporate names, and
domain names, together with all of the goodwill associated therewith, (c) copyrights and copyrightable works
(including computer programs), and rights in data and databases, (d) trade secrets, know-how, and other
Confidential Information, and (e) all other intellectual property rights, in each case whether registered or
unregistered and including all applications for, and renewals or extensions of, such rights, and all similar or
equivalent rights or forms of protection in any part of the world.

"Key Personnel" means any BANKTEXT personnel identified as being key in a Statement of Work.

"Losses" mean all losses, damages, liabilities, deficiencies, actions, judgments, interest, awards,
penalties, fines, costs, or expenses of whatever kind, including reasonable attorneys' fees and the cost of
enforcing any right to indemnification hereunder and the cost of pursuing any insurance providers.

“Person” means any individual or business entity that obtains Services as defined below.

"Pre-Existing Materials" means the pre-existing materials specified in a Statement of Work, such as
documents, data, know-how, methodologies, software, and other materials.

"Project" means a project as described in a Statement of Work.

"Project Milestone" means an event or task described in a Statement of Work which shall be completed by
the relevant date set forth in the Statement of Work.

"Receiving Party" means a party that receives or acquires Confidential Information directly or indirectly
under this Agreement.

"BANKTEXT Contract Manager" means a primary contact with respect to this Agreement who will have
the authority to act on behalf of BANKTEXT in connection with matters pertaining to this Agreement

"BANKTEXT Personnel" means all employees and Subcontractors, if any, engaged by BANKTEXT to
perform the Services.

"Services" mean the professional and other services to be provided by BANKTEXT under this Agreement,
as described in more detail in a Statement of Work, and BANKTEXT's obligations under this Agreement.
"Statement of Work" or "SOW" means each Statement of Work entered into by the parties.

2. Services

2.1 General. BANKTEXT shall provide the Services to Customer and the Authorized Service Recipients as
described in more detail in each SOW/Order Form in accordance with the terms and conditions of this
Agreement. Customer acknowledges that (a) all aspects of the scope of work are described in the applicable
SOW and no aspect of the scope of work is implied; (b) the signed SOW and the receipt of a purchase order
constitutes authorization for BANKTEXT to perform the Services under this Agreement and the applicable
SOW and issue invoices as set forth in Section 7.

2.2 Statement of Work. Each Statement of Work shall include the following information, if applicable: a
detailed description of the Services to be performed pursuant to the SOW; the date upon which the Services
will commence and the term of such SOW; the names of BANKTEXT Contract Manager and any Key
Personnel; the fees to be paid to BANKTEXT under the SOW; Project Milestones and payment schedules;
any criteria for completion of the Services; procedures for the testing and acceptance of the Services and
Deliverables by Customer; and any other terms and conditions agreed upon by the parties in connection
with the Services to be performed pursuant to such SOW.

2.3 Documentation. The content and format of all Documentation produced under this Agreement and its
supplements will be created according to BANKTEXT standard practices. Except if clearly defined as part of
the Services to be performed, Services under this Agreement do not include architecture for high availability
or failover systems. 2.4 Service Language. All Services will be provided in a single language mutually
agreed to by the parties and specified within the SOW. If no other language is specified in the Agreement or
its supplements, the default language for Services provided will be English. 2.5 Business Hours. The
Services performed under this Agreement will be executed during business hours mutually agreed to by
BANKTEXT and the Customer Contract Manager. BANKTEXT will not exceed the total estimated number of
business days or hours described in the applicable SOW without prior written approval from Customer, as
set forth in Section 5.

3. BANKTEXT's Obligations.

3.1 BANKTEXT shall:

(a) before the date on which the Services are to start, obtain, and at all times during the term of this
Agreement maintain, all necessary licenses and consents and comply with all relevant Laws applicable to
the provision of the Services;

(b) comply with, and ensure that all BANKTEXT Personnel comply with, all rules, regulations, and policies
of Customer that are communicated to BANKTEXT in writing, including security procedures concerning
systems and data and remote access thereto, building security procedures and general security practices
and procedures; and;

(c) provide (if applicable) the Customer with a project implementation plan including the timeframe within the
term established in the applicable SOW.
3.2 BANKTEXT Personnel. BANKTEXT is responsible for all BANKTEXT Personnel and for the payment
of their compensation, including, if applicable, withholding of income taxes, and the payment and
withholding of social security and other payroll taxes, unemployment insurance, workers' compensation
insurance payments, and disability benefits.

3.3 Timeframe. BANKTEXT shall use reasonable efforts to meet any performance dates specified in a
Statement of Work, and any such dates shall be estimates only.

4. Customer's Obligations.

4.1 Customer shall: cooperate with BANKTEXT in all matters relating to the Services and appoint a
Customer employee to serve as the primary contact with respect to this Agreement and who will have the
authority to act on behalf of Customer with respect to matters pertaining to this Agreement (the "Customer
Contract Manager"); respond promptly to any BANKTEXT request to provide direction, information,
approvals, authorizations, or decisions that are reasonably necessary for BANKTEXT to perform Services in
accordance with the requirements of this Agreement; provide such information as BANKTEXT may request,
in order to carry out the Services, in a timely manner, and ensure that it is complete and accurate in all
material respects; provide (if applicable), access to Customer's premises and such office accommodations
and other facilities as may reasonably be required by BANKTEXT, for the purposes of performing the
Services; notify BANKTEXT of any laws, regulations, and/or statutes specific to Customer’s industry that
BANKTEXT will be required to know to fulfill their obligations under this Agreement; provide suitably
equipped and knowledgeable resource(s) to work with BANKTEXT to refine the requirements, design, build
and test the solution as per the scope of work section outlined in each SOW; provide the necessary
resources to participate in meetings/workshops/communications needed to provide the required data or
inputs necessary to deliver the contracted services (within a defined timeframe); take responsibility for the
content of any Customer data file, control access to the files, and maintain their backup and recovery; obtain
and maintain all necessary licenses and consents and comply with all applicable law in relation to the
Services to the extent that such licenses, consents, and law relate to Customer's business, premises, staff,
and equipment, in all cases before the date on which the Services are to start;

4.2 Customer failure and delay. Customer acknowledges that any failure or delay in complying with the
obligations described in this Section 4 may impact the estimated schedule and produce other effects as set
forth in Section 5 ("Change Order").

5. Change Orders.

5.1 Change Orders Procedure. If either party wishes to change the scope or performance of the Services, it
shall submit details of the requested change to the other party in writing in accordance with the notice
provisions in Section 13.2. BANKTEXT shall, within a reasonable time (not to exceed 30 days) after
receiving a Customer-initiated request, or at the same time that BANKTEXT initiates such a request, provide
a written estimate to Customer of: (a) the likely time required to implement the change; (b) any necessary
variations to the fees and other charges for the Services arising from the change; (c) the likely effect of the
change on the Services; (d) any other impact the change might have on the performance under this
Agreement; and (e) any other information reasonably requested by the Customer. 5.2 Change Orders
Agreement. Promptly after receipt of the written estimate, the parties shall negotiate and agree in writing on
the terms of such change (a "Change Order"). Neither party shall be bound by any Change Order unless
mutually agreed upon in writing in accordance with Section 13.6.
6. Term and Termination

6.1 Term. This Agreement shall commence as of the Effective Date and shall continue thereafter until the
completion of the Services under all SOWs, unless sooner terminated pursuant to this Section 6.

6.2 Termination for Cause. Either party may terminate this Agreement or any SOW, effective upon written
notice to the other party (the "Defaulting Party"), if the Defaulting Party: materially breaches this Agreement,
and such breach is incapable of cure, or with respect to a material breach capable of cure, the Defaulting
Party does not cure such breach within 30 days after receipt of written notice of such breach; or (i) becomes
insolvent or admits its inability to pay its debts generally as they become due; (ii) becomes subject,
voluntarily or involuntarily, to any proceeding under any domestic or foreign bankruptcy or insolvency law,
which is not fully stayed within 30 business days or is not dismissed or vacated within 30 days after filing;
(iii) is dissolved or liquidated or takes any corporate action for such purpose; (iv) makes a general
assignment for the benefit of creditors; or (v) has a receiver, trustee, custodian, or similar agent appointed by
order of any court of competent jurisdiction to take charge of or sell any material portion of its property or
business.

6.3 Effects of Termination or Expiration. Upon expiration or termination of this Agreement for any reason:
BANKTEXT shall promptly deliver to Customer all Deliverables (whether complete or incomplete) for which
Customer has paid. Each party shall (i) return to the other party all documents and tangible materials (and
any copies) containing, reflecting, incorporating, or based on the other party's Confidential Information, (ii)
permanently delete all of the other party's Confidential Information from its computer systems, and (iii) certify
in writing to the other party that it has complied with the requirements of this clause.

6.4 Survival. The rights and obligations of the parties set forth in this Section 6.5 and Section 1 (Definitions),
Section 8 (Intellectual Property Rights; Ownership), Section 9 (Confidential Information), Section 10
Representations and Warranties., Section 12 (Limitation of Liability), Section 6.4 Effects of Termination or
Expiration, and Section 13 (Miscellaneous), and any right or obligation of the parties to this Agreement
which, by its nature, should survive termination or expiration of this Agreement, will survive any such
termination or expiration of this Agreement.

7. Fees and Expenses; Payment Terms.

7.1 General. In consideration of the provision of the Services by the BANKTEXT and the rights granted to
Customer under this Agreement, Customer shall pay the fees as follows: Time and Materials. For Services
provided on a time and materials basis, Customer shall pay fees (the "Fees") calculated in accordance with
BANKTEXT's daily/hourly fee rates as set forth in [the applicable SOW. Fixed Price. Where Services are
provided for a fixed price, the total Fees shall be the amount set out in the applicable SOW. 7.2 Expense
Reimbursement. Customer agrees to reimburse BANKTEXT for all actual, documented, and reasonable
travel and out-of-pocket expenses incurred by BANKTEXT in connection with the performance of the
Services; 7.3 Invoicing and Payment. All information regarding payment and invoices such as payment
terms and fines shall be set forth in the applicable SOW. Unless expressly provided otherwise in the SOW,
payments shall be paid prior to the execution of the Services.

7.4 Taxes. Customer shall be responsible for all sales, use, and excise taxes, and any other similar taxes,
duties, and charges of any kind imposed by any federal, state, or local governmental entity on any amounts
payable by Customer hereunder except for any taxes imposed on, or with respect to, BANKTEXT's income,
revenues, gross receipts, personnel, or real or personal property or other assets.
8. Intellectual Property Rights; Ownership.

8.1 Intellectual Property Rights. As between Customer and BANKTEXT, all Intellectual Property Rights
and all other rights in and to the Deliverables (except for any Confidential Information of Customer or
Customer Materials) and the Pre-Existing Materials shall be owned by BANKTEXT. BANKTEXT hereby
grants Customer and the Authorized Service Recipients a license to use all such rights to the extent
necessary to enable the Customer to make reasonable use of the Deliverables and the Services. 8.2
Ownership. Customer and its licensors are, and shall remain, the sole and exclusive owner of all right, title,
and interest in and to the Customer Materials, including all Intellectual Property Rights therein. BANKTEXT
shall have no right or license to use any Customer Materials except solely during the term of this Agreement
to the extent necessary to provide the Services to Customer. All other rights in and to the Customer Materials
are expressly reserved by Customer.

9. Confidential Information.

9.1 The Receiving Party agrees: not to disclose or otherwise make available Confidential Information of
the Disclosing Party to any third party without the prior written consent of the Disclosing Party; provided,
however, that the Receiving Party may disclose the Confidential Information of the Disclosing Party to its
and its Affiliates, and their officers, employees, consultants, and legal advisors who have a "need to know",
who have been apprised of this restriction, and who are themselves bound by nondisclosure obligations at
least as restrictive as those set forth in this Section 9; to use the Confidential Information of the Disclosing
Party only for the purposes of performing its obligations under the Agreement or, in the case of Customer, to
make use of the Services and Deliverables; and to immediately notify the Disclosing Party in the event it
becomes aware of any loss or disclosure of any of the Confidential Information of Disclosing Party.

9.2 Compelled disclosure. If the Receiving Party becomes legally compelled to disclose any Confidential
Information, the Receiving Party shall provide: (a) prompt written notice of such requirement so that the
Disclosing Party may seek, at its sole cost and expense, a protective order or other remedy; and (b)
reasonable assistance, at the Disclosing Party's sole cost and expense, in opposing such disclosure or
seeking a protective order or other limitations on disclosure. If, after providing such notice and assistance as
required herein, the Receiving Party remains required by Law to disclose any Confidential Information, the
Receiving Party shall disclose no more than that portion of the Confidential Information which, on the advice
of the Receiving Party's legal counsel, the Receiving Party is legally required to disclose and, upon the
Disclosing Party's request, shall use commercially reasonable efforts to obtain assurances from the
applicable court or agency that such Confidential Information will be afforded confidential treatment.

9.3 Nothing in this Agreement shall prevent either party from using any general methodologies or know-how
contained in the unaided memory of such party's personnel or those of its Affiliates developed or disclosed
under this Agreement, provided that in doing so it is not in breach of its obligations of confidentiality under
this section or using any Intellectual Property Rights of the other party or any of its Affiliates.

10. Representations and Warranties.

10.1 Mutual. Each party represents and warrants to the other party that: (a) it has the full right, power, and
authority to enter into this Agreement, to grant the rights and licenses granted hereunder and to perform its
obligations hereunder; and (b) when executed and delivered by such party, this Agreement will constitute
the legal, valid and binding obligation of such party, enforceable against such party in accordance with its
terms.
10.2 BANKTEXT. BANKTEXT represents and warrants to Customer that: (a) it shall perform the Services
in a professional and workmanlike manner and in compliance with all applicable laws, and shall devote
adequate resources to meet its obligations under this Agreement; (b) the Services and Deliverables shall
conform in all respects with the specifications and will be performed to Customer's reasonable satisfaction;
and (c) the Services and Deliverables, and Customer's use thereof, do not and will not infringe any third
party rights.

10.3 EXCEPT FOR THE EXPRESS WARRANTIES IN THIS SECTION 10, (A) EACH PARTY HEREBY
DISCLAIMS ALL WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE UNDER
THIS AGREEMENT, AND (B) BANKTEXT SPECIFICALLY DISCLAIMS ALL IMPLIED WARRANTIES OF
MERCHANTABILITY.

11. Indemnification.

11.1 General. Each party ("Indemnifying Party") shall indemnify, defend, and hold harmless the other party
("Indemnified Party") against any and all losses, damages, liabilities, deficiencies, claims, actions,
judgments, settlements, interest, awards, penalties, fines, costs (collectively, "Losses"), relating to any claim
of a third party arising out of or occurring in connection with: (a) bodily injury, death of any person or damage
to real or tangible, personal property resulting from Indemnifying Party's willful, fraudulent or negligent acts
or omissions; or (b) Indemnifying Party's negligence, willful misconduct, or material breach of this
Agreement, including but not limited to material breach of any representation or warranty made by
Indemnifying Party in this Agreement.

11.2 Intellectual Property Infringement. BANKTEXT shall defend, indemnify, and hold harmless the
Customer from and against all losses based on a claim that any of the Services or Deliverables or
Customer's receipt or use thereof infringes any Intellectual Property Right of a third party; provided, however,
that BANKTEXT shall have no obligations under this Section 11.2 with respect to claims to the extent
arising out of (a) any instruction, information, designs, specifications, or other materials provided by
Customer in writing to BANKTEXT; (b) Customer's use of the Deliverables in combination with any
materials or equipment not supplied to Customer or specified by BANKTEXT in writing; or (c) any
modifications or changes made to the Deliverables other than by BANKTEXT.

12. LIMITATION OF LIABILITY.


TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, (I) IN NO EVENT WILL BANKTEXT
AND ITS AFFILIATES, DIRECTORS, EMPLOYEES, OR AGENTS HAVE ANY LIABILITY, CONTINGENT
OR OTHERWISE, FOR ANY INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE,
STATUTORY OR EXEMPLARY DAMAGES ARISING OUT OF OR RELATING TO THIS AGREEMENT,
THE SERVICES, SOFTWARE, DOCUMENTATION, OR ANY OTHER PRODUCTS OR SERVICES
PROVIDED HEREUNDER, INCLUDING, BUT NOT LIMITED TO LOST PROFITS, LOST OR
CORRUPTED DATA, LOSS OF GOODWILL, WORK STOPPAGE, EQUIPMENT FAILURE OR
MALFUNCTION, PROPERTY DAMAGE OR ANY OTHER DAMAGES OR LOSSES, EVEN IF A PARTY
HAS BEEN ADVISED OF THE POSSIBILITY THEREOF, AND REGARDLESS OF THE LEGAL OR
EQUITABLE THEORY (CONTRACT, TORT, STATUTE, INDEMNITY OR OTHERWISE) UPON WHICH
ANY SUCH LIABILITY IS BASED; AND (II) THE AGGREGATE LIABILITY OF BANKTEXT AND ITS
AFFILIATES, DIRECTORS, EMPLOYEES, AND AGENTS, AND THE SOLE REMEDY AVAILABLE TO
CUSTOMER ARISING OUT OF OR RELATING TO THIS AGREEMENT, THE SERVICES, SOFTWARE,
OR ANY PRODUCTS OR SERVICES PROVIDED HEREUNDER SHALL BE LIMITED TO TERMINATION
OF THIS AGREEMENT AND DAMAGES NOT TO EXCEED THE TOTAL AMOUNT PAYABLE OR PAID
TO BANKTEXT BY CUSTOMER UNDER THIS AGREEMENT DURING THE TWELVE (12) MONTHS
PRIOR TO TERMINATION.

13. Miscellaneous.

13.1 Independent Contractors. The parties are independent contractors, and nothing contained in this
Agreement shall be construed as creating any agency, partnership, joint venture or other form of joint
enterprise, employment, or fiduciary relationship between them. Neither party shall be authorized to contract
for or bind the other party in any manner whatsoever

13.2 Notices. Except as otherwise set forth herein, all notices under this Agreement and its appendices
shall be by email. Notices to customer shall be addressed to addresses set forth on the SOW, although
BANKTEXT may instead choose to provide notice to Customer through the Services (e.g., a bot
notification). Notices to BANKTEXT should be sent to legal@BANKTEXT and include in copy BANKTEXT’s
primary point of contact defined in the SOW. A notice will be deemed to have been duly given (a) the day
after it is sent, in the case of a notice sent through email; and (b) the same day, in the case of a notice sent
through the Services. Customer must keep all of its account information with BANKTEXT current.

13.3 Entire Agreement; Order of Precedence. This Agreement, together with all schedules, exhibits, and
Statements of Work, and any other documents incorporated herein by reference, constitutes the sole and
entire agreement of the parties to this Agreement with respect to the subject matter contained herein, and
supersedes all prior and contemporaneous understandings and agreements, both written and oral, with
respect to such subject matter. In the event of any conflict between the terms and provisions of this
Agreement and those of any schedule, exhibit or Statement of Work, the following order of precedence shall
govern: (a) first, this Agreement, exclusive of its exhibits and schedules; (b) second, the applicable
Statement of Work; and (c) third, any exhibits and schedules to this Agreement.
13.4 Assignment and Subcontractors. This Agreement shall be assignable by BANKTEXT. Customer
acknowledges that from time to time, Rocket. Chat may enlist a subcontractor to perform some of the
Services provided to the Customer. In the event services to be performed as outlined in this Agreement are
subcontracted to a third party, the third party shall accept responsibility for the performance of such activities.
BANKTEXT will cease to bear any responsibility related to the performance of subcontracted services;
however BANKTEXT will act as a liaison between the subcontractor and Customer, to monitor the
performance of services to be provided by any third party.

13.5 No Third-Party Beneficiaries. This Agreement is for the sole benefit of the parties hereto and their
respective successors and permitted assigns and nothing herein, express or implied, is intended to or shall
confer upon any other Person any legal or equitable right, benefit, or remedy of any nature whatsoever,
under or by reason of this Agreement.

13.6 Amendment and Modification; Waiver. As our business evolves, we may change this Agreement. If
we make a material change to these provisions, we will provide you with reasonable notice prior to the
change taking effect either by emailing the email address associated with your account or by messaging you
through the Services. You can review the most current version of the Customer Terms at any time by visiting
this page: https://docs.BANKTEXT/legal/master-service-agreement-for-professional-services. Any material
revisions to these Customer Terms will become effective on the date set forth in our notice, and all other
changes will become effective on the date we publish the change. If you use the Services after the effective
date of any changes, that use will constitute your acceptance of the revised terms and conditions. No failure
to exercise any right, remedy, power or privilege ("Rights") arising under this Agreement shall operate or be
construed as a waiver thereof. No single or partial exercise of any Right hereunder precludes any other or
further exercise thereof or the exercise of any other Right.

13.7 Severability. No invalidity, illegality, or unenforceability of any provision herein in any jurisdiction, shall
affect any other term or provision of this Agreement or invalidate or render such provision unenforceable in
any other jurisdiction. If any provision is determined to be invalid, illegal, or unenforceable, the parties hereto
shall negotiate in good faith to modify this Agreement so as to effect the original intent of the parties as
closely as possible.

13.8 Governing Law: Submission to Jurisdiction. This Agreement shall be governed by the laws of the
State of Delaware and of the United States, without regard to any conflict of law provisions, except that the
United Nations Convention on the International Sale of Goods and the provisions of the Uniform Computer
Information Transactions Act shall not apply to this Agreement. Customer hereby consent to the jurisdiction
of the state and federal courts of Delaware. If this Agreement is translated into a language other than English
and there are conflicts between the translations of this Agreement, Customer agrees that the English version
of this Agreement shall prevail and control.

13.9 Non-Exclusivity. BANKTEXT retains the right to perform the same or similar type of services for third
parties during the term of this Agreement.

13.10 Force Majeure. Neither Party will be liable for nonperformance or delays caused by acts of God,
wars, riots, strikes, fires, floods, hurricanes, earthquakes, government restrictions, terrorist acts or other
causes beyond its reasonable control. In addition, BANKTEXT shall have no liability for any failure or delay
of performance by BANKTEXT that is caused by or results from any failure or delay of performance by the
Customer of any obligations it is required to undertake or deliverables it is required to provide under this
Agreement, an SOW or any applicable Supplement.
13.11 Equitable Relief; Cumulative Remedies. Each party acknowledges that a breach of Section 8
(Intellectual Property Rights; Ownership) or Section 9 (Confidentiality) may cause the non-breaching party
irreparable damages, for which an award of damages would not be adequate compensation. In the event of
such breach or threatened breach, the non-breaching party will be entitled to seek equitable relief. Except as
expressly set forth in this Agreement, the rights and remedies under this Agreement are cumulative and in
addition to any other rights or remedies available at law or in equity or otherwise.

13.12 Headings. The headings in this Agreement are for reference only and shall not affect the
interpretation of this Agreement.

13.13 Counterparts. This Agreement may be executed in counterparts, each of which shall be deemed an
original, but all of which together shall be deemed to be one and the same agreement. A signed copy of this
Agreement delivered by facsimile, email or other means of electronic transmission shall be deemed to have
the same legal effect as delivery of an original signed copy of this Agreement.
Code of Conduct for our services
Applicable to the Server hosted by us (https://open.BANKTEXT)

Effective date: September 06, 2019

BANKTEXT Code of Conduct


Dear users,

BANKTEXT provides numerous spaces for our community to interact and experience our product. Among
these are: Open.BANKTEXT, an open chat community for bringing people together and to showcase
BANKTEXT´s community edition. In addition, new features are tested on the server on a regular basis.
github.com/RocketChat, our source code repositories where we discuss issues and plan new features
Forums.BANKTEXT, our webforum to announce new features and provide ways for direct interaction with our
developers

Introduction
The main objective of the BANKTEXT community spaces is bringing people together to discuss and
experience BANKTEXT - our awesome communication platform. This Code of Conduct is mainly written in
mind for Open.BANKTEXT, but in its spirit will be applied to other BANKTEXT community spaces as well.

When new visitors enter a channel, you should acknowledge their arrival especially if you're engaged in
social chit-chat / passing time. Failure to do so is likely to result in them leaving the channel feeling
unwelcome.

You should try to minimize the chances of conflict by being open-minded and accepting of others.
Understand that we each have a unique set of values, and we are all entitled to our own opinions.

Feel free to share your views on someone else's problem as an outsider, but avoid using excessive force,
and don't expect your thoughts and ideas to be accepted all of the time.

We're mainly an English speaking community but welcome all nationalities. If you find yourself speaking
primarily in a different language in an open channel or discussion, please PM that person to continue the
conversation in a separate channel.

Unwanted behavior

We do not want the following behavior on open.BANKTEXT:


Soliciting / advertising

Offensive, rude, disruptive and unwanted


Posting of pornographic / gore / nude images
Harassment, name-calling, racist or sexist remarks, profanity towards others and other forms of bullying
Insensitive behavior - this will be judged by the reaction of others in the channel
Flirting or adult content - take these conversations elsewhere

Posting of links (URLs) to offensive material, sites hosting malware, initiating downloads or promoting
illegal activities

Flooding the chat, spamming, multiple repeats of the same or slightly modified messages
Reregistering under another account after you have been banned and still under a ban period

Reporting unwanted behavior


Users affected by unwanted behavior can mute other users or report them to the administrators of either the
group, discussion or the open.BANKTEXT server. You can contact the server administrator by posting in
the group report-abuse channel

Process in case of unwanted behavior


If you are asked to modify your behavior or given some other form of instruction but fail to comply, you are
likely to be removed from the channel, the discussion or the whole server for a discretionary or unlimited
period of time depending on the severity of the matter, depending on the administrator's decision.

Depending on the severity of the misbehavior, users can get banned without warning or be issued a
warning. Should administrators deem a subject matter to be inappropriate for the channel and / or the current
audience, they may at their discretion make contact via Private Message, making clear any requirement to
cease discussing the topic, or - as per their permission level - ban the user. A ban may be temporary (in form
of a ban period) or permanent. In addition, the server administrator has the right to remove your user
account.

When being corrected by an administrator, please do not argue with them in the main chat. You should
request a PM session to help avoid conflict and keep the involvement of others to a minimum.

Attacking administrators in a channel will likely result in a ban. Any genuine visitor should respect their
decisions - they have nothing to gain from issuing bans / mutes and are doing so to the best of their ability,
on behalf of the community.

Administrators may also choose to request users to leave if they're deemed to be a risk to the safety of the
general users / guests within the channel. Not adhering to the request will result in manual removal;

If you believe that an administrator has misused their authority and you have complied 100% with the rules
documented on this page, please forward the following details to support@BANKTEXT, including the
following information:
administrator's open.BANKTEXT nickname;

What you believe they have done that demonstrates an abuse of power;
Associated dates and times - required to review log files etc.

Note that it can take some time to review log files and liaise with the administrator team, so please don't
expect an immediate response.

In case of a ban period issued, you are welcome to return to the channel once your ban period expires, but
please be mindful of the reason(s) you got banned, abide by the rules and take into account any
administrator feedback received.
Censorship and Harmful Content

Last updated: September 24th, 2020

Our stance on harmful content and censorship in BANKTEXT


Our position:

BANKTEXT is built to be an open and free communication platform. We want everyone to be able to run it
and use our platform freely, and to improve people's lives. Today, our platform is used for myriads of different
purposes, according to how our users deem it fit for their purposes.

We also do not want to be the judges on what constitutes the “right” way to use BANKTEXT. Moral values
differ from person to person, and laws often collide over highly debated issues such as free speech. We
believe the users of BANKTEXT know best how to use our platform to their and everyone else's benefit.

How does BANKTEXT deal with reports of illegal content?

Sometimes, our organization receives a request from a law enforcement body with the aim to produce a
certain set of user data to aid in a criminal investigation. Or there might be a request to take down content
that has been deemed illegal. We treat these requests very carefully and - where we are able and obliged to
help - bring this to the attention of the administrator of the instance. Oftentimes, we cannot do anything,
though.

That is because we have no way to access or control self-managed BANKTEXT servers. Self-managed
means that BANKTEXT is installed on a server we do not own. Our platform is open source and has no
backdoors or whatsoever to allow us to access your installations remotely.

In case of BANKTEXT instances hosted by us for others, we forward reports to the respective administrator
and if determined an obvious breach of terms of service we can terminate the hosting. Where the request is
about content on a server directly under our control, such as our Open Server, you can contact us directly
under legal@BANKTEXT and we will take action.

Resources for Administrators Be Notified About Harmful Content

On the same side, we also see that many organizations using our platform are subject to strict content
moderation requirements. We are already providing various features for these organizations to administer
their instance. For example, notifications for keywords can help to identify potential abuse quickly.
Administrators that want to use these features can use them but are not forced by us to use them. Ultimately,
the administrator is the one responsible for what content is being processed within their BANKTEXT
instance.

With this being the current situation, we wanted to share our stance on how we plan to deal with addressing
harmful content soon.

Our principles
Our policy principles in this matter are:

We do not endorse illegal or unethical usage of BANKTEXT in any way. We understand these terms to
be relative and to be interpreted in their local context.
We want BANKTEXT to be a platform that allows for free and unrestricted communication. We do not
plan or want to build any kind of backdoor, censorship tool, or hidden remote control mechanism into
BANKTEXT.
Administrators are the ones in control over their installation. Administrators are responsible for
configuration and content moderation decisions within their instance.
We comply with valid local or international law enforcement requests to remove content or produce user
data and inform our users affected by these requests.
On our Open Server run by us, we want to provide users a positive and fun environment to test our
platform and get in touch with us.

While none of these principles are absolute, they are guiding our actions.

What can you do when dealing with harmful content in BANKTEXT?


For users: On our Open Server, you can report harmful content as per our code of conduct and we will look
into removing it. We want you to be able to use our open server hassle free.

If you encounter another BANKTEXT instance that is not hosted by us and which you think contains illegal
or otherwise harmful content, we recommend you reach out to the administrator of that instance to moderate
the related content.

If you do not know who your administrator is, you can check the DNS records for contact information. For
instances that are hosted by us, we can contact the administrator on your behalf. We have published a tool
where you can find out if a BANKTEXT instance is hosted by us (server lookup). This is not always clear
because no one is obliged to use the BANKTEXT logo or name.

As an ultimate resort, you may want to contact the law enforcement body in charge of investigating the
potential offense in question. They will tell you the legal remedies available and the potential next steps to
take.

For administrators: If you are an administrator, you might be interested in moderating the content that users
create or put in your instance. Notable features that can help you with that are:
Making use of the “moderator”-permission in channels to appoint individuals to purge or modify
inappropriate messages

Notification feature for the use of specified words of phrases


Blacklisting certain words or phrases
Notifying your users of applicable policies via e.g. pinning messages or adding an announcement to the
room
Requiring confirmation of user registration by an administrator, to prevent unvetted users from posting
messages
Enabling or disabling end-to-end encryption: with end-to-end encryption enabled, only an encrypted
string of the message is stored on the server. This however prevents content auditing via administrators
and moves responsibility for content moderation to users.

Turning on GoogleVision integration for image uploads, which has options to block images containing
graphic or adult content

All of these features are optional to choose, so you have the total flexibility in what to apply in your specific
case. Let us know which kind of features you are currently missing - but would find useful - by opening
feature requests in our Github repository.

For law enforcement: We sometimes receive requests from law enforcement to remove content from
certain BANKTEXT instances. We have published guidelines for law enforcement, how we deal with
requests and what to consider before submitting a request to us as the legal entity behind BANKTEXT.

In summary: In most cases, we cannot remove the majority of content, because it is outside of our control
on servers we do not have (and do not want) access to. If the content in question is on our Open Server, we
remove it if it is a breach of our code of conduct or if we are compelled by a law enforcement request. For
servers hosted by us and under control of our customers, we remove content after notifying and in
collaboration with the customer or directly as a violation of our terms of service. For questions or contact,
please use legal@BANKTEXT

For reporters and media requests: Are you researching for an article about BANKTEXT or where
BANKTEXT plays a role?

We would love to explain to you our stance in detail or get a chance to comment before you publish your
article. Please reach out to contact@BANKTEXT to get a comment from us on the topic in question.
Guidelines for Law Enforcement

Last updated: February 24, 2022

These guidelines are intended for law enforcement authorities seeking information about BANKTEXT
accounts. More general information is available in our Privacy Policy and Terms of Service.

Important Highlight from the page below


All requests for user account information must specify the server URL (e.g.
https://open.BANKTEXT) where the user in question is registered. Requests without the server
URL will be rejected.

What is BANKTEXT?
BANKTEXT is a free and open source team chat collaboration platform that allows users to communicate
securely in real-time on web, desktop or mobile and to customize their interface with a range of plugins,
themes and integrations with other key software. Anyone in the world can download and run a BANKTEXT
server at any time.

As a platform, BANKTEXT can be deployed various ways. The interaction on the platform between users
happens via user accounts.

Deployment options
In short, there are three relevant deployment options of BANKTEXT, that affect the process for requesting
information:

1. servers hosted by us (BANKTEXT Technologies Corp.) and managed by us directly (such as our
community servers)
2. servers hosted by us, but managed by a customer (our hosted offering)
3. servers hosted by a third party (private servers)

The third option - private server - is the most common one.

For clarification purposes: a server, on which BANKTEXT is running, **** can contain various
instances of BANKTEXT, depending on the configuration. An instance of BANKTEXT is each a
unique community of users communicating with each other. In the following, we refer to servers,
that run whichever number of BANKTEXT instances (1 or more).

How can you find out, which deployment is being used?


We offer a lookup, which checks if the server is hosted by us (options 1 and 2) or not (option 3). Please
check here for the lookup form.

Servers under control of BANKTEXT


For total transparency, BANKTEXT Technologies Corp. owns and operates only one publicly available
BANKTEXT server in the world. The server that BANKTEXT Technologies Corp. operates can only be
accessed at:

https://open.BANKTEXT

That server is subject to our Code of Conduct.

Any other BANKTEXT server you access is not operated by BANKTEXT Technologies Corp. and is
subjected to the usage warning above.

That said, BANKTEXT Technologies Corp. provides a cloud service for hosting BANKTEXT servers. The
user data, messages, and files on those servers are subject to our Terms of Use.

To know if a server belongs to BANKTEXT cloud, please contact us, use the aforementioned server lookup
or use domain information systems.

What account information does BANKTEXT have?

BANKTEXT does not keep a log of IPs used to access either Community Server or BANKTEXT
Cloud servers.

Community Server

When someone registers an account at our community server, hosted at https://open.BANKTEXT, we ask
for a name, an e-mail and a password, and they have to verify their e-mail address. BANKTEXT does not
monitor any public or private channels activities other than for the company's own use, such as the #general,
#support and #dev public channels.

We do not keep a log of IPs.

BANKTEXT Cloud

When someone signs up for a BANKTEXT Cloud server, we ask for a name, e-mail, workspace name and
domain they'd like to use. The e-mail is then verified before the server is deployed. Every message and file
sent is stored within BANKTEXT cloud servers and databases are hosted with a third-party hosting provider.
BANKTEXT does not actively scan the content activity in Cloud servers.

Private Servers
You need to be aware that any private BANKTEXT server may be operated by arbitrary businesses, groups
or individuals with no relationship to BANKTEXT Technologies Corp.
In particular:
BANKTEXT Technologies Corp. do not have access to these servers.

BANKTEXT Technologies Corp. does not and cannot control or regulate how these servers are
operated.
BANKTEXT Technologies Corp. cannot access, determine or regulate any contents or
information flow on these servers.

Administrators of private servers may opt-in to register their servers for additional connected services by
BANKTEXT (e.g. push notifications for mobile devices).

The registration requires a working email address, a name or pseudonym and the server URL. More
information is generally not available. We do not store content that passes through our gateways to provide
the connectivity services.

Individual user account information


BANKTEXT is a platform and the interaction between individuals on the platform happens based on user
accounts, e.g. in the format of:

firstname.lastname

These accounts are unique to the deployed server of the BANKTEXT platform. So if information is
requested for an individual user account of the platform, this information goes only as far as the scope of that
specific, individual server of BANKTEXT.

To identify the proper user account, the specific server therefore must be named as well (generally in
form of the URL).

The aforementioned restrictions with regards to the deployment options apply to users as well. User
information cannot be produced by us for user accounts of private BANKTEXT servers. Requests for such
information should be targeted at the administrator of the private server. If the administrator is unknown, the
request should be targeted at the owner of the DNS record of the private server domain.

Data retention information


BANKTEXT retains data and backups of data for an undisclosed amount of time. BANKTEXT makes
backups of Cloud servers according to each customer's choice of plan (daily, twice daily or hourly). Some
information we store is automatically collected, while other information is provided at the user’s discretion.
Though we do store this information, we cannot guarantee its accuracy. For example, the server in use may
not require real name use, email verification or identity authentication, hence the user may have created a
fake or anonymous profile.

Preservation requests
We accept requests from law enforcement to preserve records, which constitute potentially relevant
evidence in legal proceedings. We will preserve, but not disclose, a temporary snapshot of the relevant
account records for 90 days pending service of valid legal process.

Preservation requests, in accordance with applicable law, should:


be signed by the requesting official;

have a valid return official email address; and be sent on law enforcement letterhead;
include the server URL of the subject offense and any other information that may help us identify the
offending server and/or user.

We may honor requests for extensions of preservation requests, but encourage law enforcement agencies to
seek records through the appropriate channels in a timely manner, as we cannot guarantee that requested
information will be available.

Law enforcement and government preservation requests for user information must be submitted to our legal
team at legal@BANKTEXT. You can find further instructions below.

Requests for BANKTEXT Cloud or Community Server account information


Requests for user account information from law enforcement should be directed to BANKTEXT
Technologies Corp. in Wilmington, Delaware. BANKTEXT responds to valid legal process issued in
compliance with applicable law.

Private information requires a subpoena or court order

Non-public information about BANKTEXT users will not be released to law enforcement except in response
to appropriate legal process such as a subpoena, court order, or other valid legal process – or in response to
a valid emergency request, as described below.

Contents of communications requires a search warrant

Requests for the contents of communications (e.g., messages, files) require a valid search warrant or
equivalent from an agency with proper jurisdiction over BANKTEXT.

Will BANKTEXT notify users of requests for account information?

Yes. BANKTEXT's policy is to notify users of requests for their BANKTEXT account information, which
includes a copy of the request, as soon as we are able (e.g., prior to or after disclosure of account
information) unless we are prohibited from doing so (e.g., an order under 18 U.S.C. § 2705(b)). We ask that
any non-disclosure provisions include a specified duration (e.g., 90 days) during which BANKTEXT is
prohibited from notifying the user. Exceptions to user notice may include exigent or counterproductive
circumstances, such as emergencies regarding imminent threat to life, child sexual exploitation, or terrorism.

What details must be included in account information requests?

Requests for user account information in accordance with applicable law, are required to include the
following information:
Include the BANKTEXT server URL (!) and @username of the subject BANKTEXT account in
question;

Provide details about what specific information is requested (e.g., messages, files, account information)
and its relationship to your investigation;

Include a valid official email address (e.g., name@agency.gov) so we may get back in touch with you
upon receipt of your legal process;
Be issued on law enforcement letterhead.
Law enforcement and government requests for user information should be submitted through
legal@BANKTEXT. You can find further instructions below.

Production of records

Unless otherwise agreed upon, we currently provide responsive records in electronic format (i.e., text files
that can be opened with any word processing software such as Word or TextEdit).

Records authentication

The records that we produce are self-authenticating. Additionally, the records are electronically signed to
ensure their integrity at the time of production. If you require a declaration, please indicate it in your
submission.

Cost reimbursement

BANKTEXT may seek reimbursement for costs associated with information produced pursuant to legal
process and as permitted by law (e.g. under 18 U.S.C. §2706).

Emergency disclosure requests


In line with our Privacy Policy, we may disclose account information to law enforcement in response to a
valid emergency disclosure request.

BANKTEXT evaluates emergency disclosure requests on a case-by-case basis in compliance with relevant
law (e.g., 18 U.S.C. § 2702(b)(8)). If we receive information that provides us with a good faith belief that there
is an exigent emergency involving the danger of death or serious physical injury to a person, we may
provide information necessary to prevent that harm, if we have it.

How to make an emergency disclosure request

If there is an exigent emergency that involves the danger of death or serious physical injury to a person that
BANKTEXT may have information necessary to prevent, law enforcement officers must submit an
emergency disclosure request through legal@BANKTEXT.

Please include all of the following information:


Indication on your cover sheet, which must be on law enforcement letterhead, that you're submitting an
Emergency Disclosure Request;

Identity of the person who is in danger of death or serious physical injury;


The nature of the emergency (e.g., report of suicide, bomb threat);
BANKTEXT server URL and/or @username of the subject account(s) whose information is necessary to
prevent the emergency;
Any specific BANKTEXT messages you would like us to review;

The specific information requested and why that information is necessary to prevent the emergency;
The signature of the submitting law enforcement officer; and
All other available details or context regarding the particular circumstances (e.g. names of channels,
timeframe for which information is requested, etc.)

Contact information
Our address details are:

BANKTEXT Technologies Corp. 251 Little Falls Drive, Wilmington, DE, 19808

Receipt of correspondence is for convenience only and does not waive any objections, including the lack of
jurisdiction or proper service.

Electronic communication must go to: legal@BANKTEXT


Server Lookup

BANKTEXT is open source software and can be installed by everyone.

To find out if a BANKTEXT server is hosted by us or by a third party (e.g. if you want to contact the server
administrator), use this lookup form:

https://BANKTEXT/server-lookup
DMCA Policy

Effective date: December 18, 2017

BANKTEXT Copyright Dispute Policy


In accordance with the DMCA, we’ve adopted the policy below toward copyright infringement. We reserve
the right to (1) block access to or remove material that we believe in good faith to be copyrighted material
that has been illegally copied and distributed by any of our advertisers, affiliates, content providers,
members or users and (2) remove and discontinue service to repeat offenders.

(1) Procedure for Reporting Copyright Infringements.

If you believe that material or content residing on or accessible through the services infringes your copyright
(or the copyright of someone whom you are authorized to act on behalf of), please send a notice of copyright
infringement containing the following information to BANKTEXT’s Designated Agent to Receive Notification
of Claimed Infringement (our “Designated Agent,” whose contact details are listed below):

(a) A physical or electronic signature of a person authorized to act on behalf of the owner of the copyright
that has been allegedly infringed;
(b) Identification of works or materials being infringed;
(c) Identification of the material that is claimed to be infringing including information regarding the location of
the infringing materials that the copyright owner seeks to have removed, with sufficient detail so that
BANKTEXT is capable of finding and verifying its existence;
(d) Contact information about the notifier including address, telephone number and, if available, email
address;
(e) A statement that the notifier has a good faith belief that the material identified in (1)(c) is not authorized by
the copyright owner, its agent, or the law; and
(f) A statement made under penalty of perjury that the information provided is accurate and the notifying
party is authorized to make the complaint on behalf of the copyright owner.

(2) Once Proper Bona Fide Infringement Notification is Received by the Designated Agent.

Upon receipt of a proper notice of copyright infringement, we reserve the right to:

(a) remove or disable access to the infringing material;


(b) notify the content provider who is accused of infringement that we have removed or disabled access to
the applicable material; and
(c) terminate such content provider's access to the services if he or she is a repeat offender.

(3) Procedure to Supply a Counter-Notice to the Designated Agent.

If the content provider believes that the material that was removed (or to which access was disabled) is not
infringing, or the content provider believes that it has the right to post and use such material from the
copyright owner, the copyright owner's agent, or, pursuant to the law, the content provider may send us a
counter-notice containing the following information to the Designated Agent:
(a) A physical or electronic signature of the content provider;
(b) Identification of the material that has been removed or to which access has been disabled and the
location at which the material appeared before it was removed or disabled;
(c) A statement that the content provider has a good faith belief that the material was removed or disabled as
a result of mistake or misidentification of the material; and
(d) Content provider's name, address, telephone number, and, if available, email address, and a statement
that such person or entity consents to the jurisdiction of the Federal Court for the judicial district in which the
content provider’s address is located, or, if the content provider's address is located outside the United
States, for any judicial district in which BANKTEXT is located, and that such person or entity will accept
service of process from the person who provided notification of the alleged infringement.

If a counter-notice is received by the Designated Agent, BANKTEXT may, in its discretion, send a copy of
the counter-notice to the original complaining party informing that person that BANKTEXT may replace the
removed material or cease disabling it in 10 business days. Unless the copyright owner files an action
seeking a court order against the content provider accused of committing infringement, the removed material
may be replaced or access to it restored in 10 to 14 business days or more after receipt of the counter-notice,
at BANKTEXT's discretion.

Please contact BANKTEXT's Designated Agent at the following address:

Marcelo Schmidt
marcelo.schmidt@BANKTEXT
Rua Jorge Fayet 757
Porto Alegre – RS – Brazil
91330-330
BANKTEXT privacy and security
BANKTEXT Privacy Policy

Effective date: January 5th, 2023.

BANKTEXT Technologies Corp. ("us", "we", or "our") operates the https://BANKTEXT website, the
https://open.BANKTEXT community server, the Marketplace, incl. associated BANKTEXT Apps, BANKTEXT
´s Cloud Offering and the BANKTEXT mobile applications (the "Service").

This page informs you of our policies regarding the collection, use, and disclosure of personal data when
you use our Service and the choices you have associated with that data.

We use your data to provide and improve the Service. By using the Service, you agree to the collection and
use of information in accordance with this policy. Unless otherwise defined in this Privacy Policy, terms used
in this Privacy Policy have the same meanings as in our Terms and Conditions.

Summary

Administrators are responsible for user privacy, we help administrators


There are basically two ways of using BANKTEXT: self-managed (also known as on-premises
deployment) on your own or someone else´s infrastructure or via our hosted offering. In both cases, the
administrator of that instance - or the organization behind the administrator - is the person responsible to
ensure privacy of BANKTEXT users. We aim to help by providing features in our products and services
to make that job easier. We also provide this policy to explain what we do as a "helping hand"/data
processor for administrators in case we process personal data of users.
You remain in control of your personal data
We cannot access your personal data in a self-managed instance of BANKTEXT. Our code is open
source, there are no back doors whatsoever. You are however free to connect a self-managed instance
to other services, e.g. our marketplace or push notification gateway, where this privacy policy applies.
When you do not register your instance, these settings are turned off by default. You can also connect it
to third party services, such as external authentication services, in which case their privacy policy
applies. It is your choice and you are not forced to do so. In our hosted offering, we only process your
data for the purposes of providing you the service in the name of the administrator. Administrators are
still in full control over the configuration of their instance.
We don´t sell your data
We do not sell your personal data. Our business model is to provide you with a free edition and we
charge you for extra services or features, according to the plan you choose. What you process within
BANKTEXT is yours and stays yours.
Our community server is for testing purposes
Our community server https://open.BANKTEXT is a testing ground for our users and we use it to test and
analyze new features. We track user activity in there with the trackers described below - including
google analytics - to learn how our service is used and to improve our product.

Definitions
Service

Service means the https://BANKTEXT website, the https://open.BANKTEXT community server, the
BANKTEXT Marketplace, incl. associated BANKTEXT Apps, the https://cloud.BANKTEXT service
offering, push notification gateways and the BANKTEXT mobile applications operated by BANKTEXT
Technologies Corp.
Personal Data
Personal Data means data about a living individual who can be identified from those data (or from those
and other information either in our possession or likely to come into our possession).
Usage Data
Usage Data is data collected automatically either generated by the use of the Service or from the
Service infrastructure itself (for example, the duration of a page visit).
Cookies
Cookies are small pieces of data stored on your device (computer or mobile device).
Data Controller
Data Controller means the natural or legal person who (either alone or jointly or in common with other
persons) determines the purposes for which and the manner in which any personal information are, or
are to be, processed.
For the purpose of this Privacy Policy, we are a Data Controller of your Personal Data.

Data Processors (or Service Providers)


Data Processor (or Service Provider) means any natural or legal person who processes the data on
behalf of the Data Controller.
We may use the services of various Service Providers in order to process your data more effectively.

Data Subject (or User)


Data Subject is any living individual who is using our Service and is the subject of Personal Data.

What personal data do we collect and to which purposes do we use your


personal data?
In connection with our operations and during the lifecycle of business relationship with our customers, we
collect various types of personal data, meaning any information that identifies or allows to identify you,
including:

Types of Data Collected

Personal Data

While using our Service, we may ask you to provide us with certain personally identifiable information that
can be used to contact or identify you ("Personal Data"). Personally identifiable information may include, but
is not limited to:

Email address
First name and last name
Cookies and Usage Data
We may use your Personal Data to contact you with newsletters, marketing or promotional materials, and
other information that may be of interest to you, if you have provided consent to this processing or if we can
base this processing on a legitimate interest that is not overridden by your fundamental rights. You may in
the future withdraw that consent or object to receiving any, or all, of these communications from us by
following the unsubscribe link or instructions provided in any email we send or by contacting us.

Account Data

Some Services may allow or require that you register for a personalized account. Account data may include
in addition your account name, authentication information, registration date, contact information, payment
information, and any other information associated with your account.

Usage Data

We may also collect information that your browser sends whenever you visit our Service or when you
access the Service, incl. by or through a mobile device ("Usage Data").

This Usage Data may include information such as your computer's Internet Protocol address (e.g. IP
address), browser type, browser version, the pages of our Service that you visit, the time and date of your
visit, the time spent on those pages, unique device identifiers and other diagnostic data.

When you access the Service by or through a mobile device, this Usage Data may include information such
as the type of mobile device you use, the IP address of your mobile device, your mobile operating system,
the app version, the type of mobile Internet browser you use, unique device identifiers and other diagnostic
data.

As a byproduct of the usage data within a BANKTEXT instance, Administrators may choose to share
aggregated and therefore anonymous, non-personal data with us to help us learn more about how our
product is being used. This setting is described here. The information shared is the same information as is
shown on the "info"-page of the administration panel of an instance. E.g. these statistics sharing would
transmit the total # of channels, but it would not transmit the actual channel names, and so on, preserving
the privacy of your workspace. This is completely optional to use and can be activated and deactivated at
any time.

Location Data

We may use and store information about your location if you give us permission to do so (“Location Data”).
We use this data to provide features of our Service (only to allow you to share your location to another user
via BANKTEXT, if it was enabled by the administrator).

You can enable or disable location services when you use our Service at any time, through your device
settings.

App Data
When you use the Marketplace, you may choose to install Apps provided by BANKTEXT. These Apps
process data from your instance of BANKTEXT and therefore nonpersonal data, such as software version,
amount of users, and similar. Depending on the purpose and your actual usage of the App (e.g. enabling
certain features), Personal Data may however be processed. E.g. you enable an integration, which
processes your users' information. The description of the App will make the types of personal data
sufficiently clear as well as any potential deviations from this policy.

For Third-Party Apps on the Marketplace, the Vendor will provide you with a specific privacy policy that
governs his Third-Party App.

Content you provide

When you use our Services you may provide content into that service (e.g. upload file, send a message).

Tracking & Cookies Data

We use cookies and similar tracking technologies to track the activity on our Service and hold certain
information. We DO NOT track activity in your self-managed instances. We regularly monitor aggregated
activity data on our infrastructure, but it is not tracking of individual users in the sense of this paragraph,
which only occurs when we have a legitimate interest to do so (e.g. for security and compliance purposes).
We do perform regular tracking on our community server.

Cookies are files with a small amount of data which may include an anonymous unique identifier. Cookies
are sent to your browser from a website and stored on your device. Tracking technologies also used are
beacons, tags, and scripts to collect and track information and to improve and analyze our Service.

You can instruct your browser to refuse all cookies or to indicate when a cookie is being sent. However, if
you do not accept cookies, you may not be able to use some portions of our Service.

Examples of Cookies we use:

Session Cookies. We use Session Cookies to operate our Service.

Preference Cookies. We use Preference Cookies to remember your preferences and various settings.
Security Cookies. We use Security Cookies for security purposes.

Distinction of data collection between Self Managed Workspaces and Hosted Workspaces

The following paragraph applies to data processing in BANKTEXT workspaces and is for clarification
purposes only. Self Managed workspaces and workspaces hosted by us differ in the kind of data we are
processing from you because, in the case of our hosted offering, all data put into the workspaces is
technically processed on our infrastructure.

There is also a difference between registered, self-managed workspaces (which consume services from
us) and unregistered, self-managed workspaces.

See the following table for a general distinction between the data that is processed in each case. Keep in
mind that this can differ in individual circumstances, such as cases where apps are installed on unregistered
workspaces via workarounds.
Self Managed (not Self Managed
Data type Hosted
registered) (registered)

yes - to register your yes - to register you


Account Data no workspace via an workspace via an
account (optional) account

yes - as per the service


you are consuming via
yes - as part of usin
your registration, e.g.
Usage Data no the hosted workspa
push notifications via
on our infrastructure
our gateway

yes - if you install apps yes - if you install app


from the marketplace from the marketplac
and based on the use and based on the us
App Data no case of the app. Third case of the app. Thir
party apps have their party apps have thei
own privacy policy. own privacy policy.

no - content is not
yes - as part of using
processed, unless it
the hosted workspac
falls under the
on our infrastructure
aforementioned (e.g.
User content no End-to-end encrypte
the content of a push
content is only store
notification sent via our
in encrypted form.
gateway)

yes - tracking occurs


on our end to monitor yes - tracking occurs
the consumption of the monitor the
services you use consumption of the
Tracking and Cookies no
(Usage Data). We do services used.
not track inside the
workspace.

How do we use information?


We collect and use your personal data to the extent necessary to carry out our operations and provide our
services as well as to comply with any regulatory obligations in our activities.

These purposes are defined in more detail below:


To provide and maintain our Service
To notify you about changes to our Service
To allow you to participate in interactive features of our Service when you choose to do so

To provide customer support

To gather analysis or valuable information so that we can improve our Service


To monitor the usage of our Service
To detect, prevent and address technical issues
To provide you with news, special offers and general information about other goods, services and events
which we offer that are similar to those that you have already purchased or enquired about if you have
provided consent to receive this information or the processing is in our legitimate interests and it's not
overridden by your rights.

Legal Basis for Processing Personal Data


In accordance with the applicable regulations, we may only use your personal data for at least one of the
following reasons:

To comply with legal and regulatory obligations

We collect and use your personal data to comply various legal and regulatory obligations, such as:

Anti-money laundering regulations and counter-financing of terrorism regulations, including Know Your
Customer (KYC) obligations.
Regulations relating to international financial sanctions and embargoes.

To fulfil our legitimate interest

We also use your personal data to fulfill our legitimate interests, which include the following:

Provision and delivery of our products and services.

Marketing and customer communication and development of our customer relationships.


Development of our products and services.
Security and safety of our IT and facilities.

Based on your consent

If processing of certain personal data requires your consent (e.g. cookies), we will inform you of this
including details of the specific processing activity and request your consent to such processing. You may
request to revoke your consent at any time.

Retention of Data
BANKTEXT Technologies Corp. will retain your Personal Data only for as long as is necessary for the
purposes set out in this Privacy Policy. We will retain and use your Personal Data to the extent necessary to
comply with our legal obligations (for example, if we are required to retain your data to comply with
applicable laws), resolve disputes, and enforce our legal agreements and policies.

BANKTEXT Technologies Corp. will also retain Usage Data for internal analysis purposes. Usage Data is
generally retained for a shorter period of time, except when this data is used to strengthen the security or to
improve the functionality of our Service, or we are legally obligated to retain this data for longer time periods.

Transfer of Data
Your information, including Personal Data, may be transferred to — and maintained on — computers located
outside of your state, province, country or other governmental jurisdiction where the data protection laws
may differ than those from your jurisdiction.

If you are located outside United States and choose to provide information to us, please note that we transfer
the data, including Personal Data, to the United States or other jurisdictions deemed not not have an
adequate level of data protection deemed by the competent authorities of your residence. BANKTEXT
Technologies Corp. will take all steps reasonably necessary to ensure that your data is treated securely and
in accordance with this Privacy Policy and no transfer of your Personal Data will take place to an
organization or a country unless there are adequate controls in place including the security of your data and
other personal information.

Disclosure of Data

Business Transaction

If BANKTEXT Technologies Corp. is involved in a merger, acquisition or asset sale, your Personal Data
may be transferred. We will provide notice before your Personal Data is transferred and becomes subject to
a different Privacy Policy.

Disclosure for Law Enforcement

Under certain circumstances, BANKTEXT Technologies Corp. may be required to disclose your Personal
Data if required to do so by law or in response to valid requests by public authorities (e.g. a court or a
government agency).

Legal Requirements

BANKTEXT Technologies Corp. may disclose your Personal Data in the good faith belief that such action is
necessary to:
To comply with a legal obligation

To protect and defend the rights or property of BANKTEXT Technologies Corp.


To prevent or investigate possible wrongdoing in connection with the Service
To protect the personal safety of users of the Service or the public
To protect against legal liability

How do we secure your data?


Ensuring the security of the data you entrust to us is one of our most important responsibilities. We apply
appropriate technical and organizational measures to keep your personal data secure. We use physical,
administrative, and technical security measures to reduce the risk of loss, misuse, or unauthorized access,
disclosure, or modification of your personal data.

Your data can only be accessed by persons for whom it is necessary in relation to their work.

We may outsource our processing of personal data to external service providers. In such events we enter
into appropriate agreements with the providers in order to ensure that your personal data is processed in
accordance with this Privacy Policy and any applicable laws. We also have received internationally
recognised security certifications.

Although we do our best, given the nature of communications and information processing technology, we
cannot guarantee that Information during transmission through the Internet or while stored on our systems or
otherwise in our care will be absolutely safe from intrusion by others.

"Do Not Track" Signals Under California Online Privacy Protection Act
(CalOPPA)
We do not support Do Not Track ("DNT"). Do Not Track is a preference you can set in your web browser to
inform websites that you do not want to be tracked.

You can enable or disable Do Not Track by visiting the Preferences or Settings page of your web browser.

Your Rights
In accordance with applicable regulations and where applicable, you have the following rights:
To access: you can obtain information relating to the processing of your personal data, and a copy of
such personal data.

To rectify: where you consider that your personal data are inaccurate or incomplete, you can request
that such personal data be modified accordingly.
To erase: you can require the deletion of your personal data, to the extent permitted by law.
To restrict: you can request the restriction of the processing of your personal data.
To object: you can object to the processing of your personal data, on grounds relating to your particular
situation. You have the right to object to the processing of your personal data for direct marketing
purposes, which includes profiling related to such direct marketing.
To withdraw your consent: where you have given your consent for the processing of your personal
data, you have the right to withdraw your consent at any time.

To data portability: where legally applicable, you have the right to have the personal data you have
provided to us be returned to you or, where technically feasible, transferred to a third party.

How to exercise your rights?

If you wish to exercise the rights listed above, please send your request to our Data Protection Office, the
contact information of which is provided at the end of this Privacy Policy.

Please include a scan/copy of your proof of identity for identification purposes when required.

In accordance with applicable regulations, in addition to your rights above, you are also entitled to lodge a
complaint with the competent supervisory authority.

Service Providers and Subprocessors


We may employ third-party companies and individuals to facilitate our Service ("Service Providers"), to
provide the Service on our behalf, to perform Service-related services, or to assist us in analyzing how our
Service is used.

These third parties have access to your Personal Data only to perform these tasks on our behalf and are
obligated not to disclose or use it for any other purpose.

Subprocessors

We employ subprocessors to process personal data. The current list of subprocessors can be found here.

Analytics

We may use third-party Service Providers to monitor and analyze the use of our Service.
Google Analytics
Google Analytics is a web analytics service offered by Google that tracks and reports website traffic.
Google uses the data collected to track and monitor the use of our Service. This data is shared with
other Google services. Google may use the collected data to contextualize and personalize the ads of its
own advertising network.
For more information on the privacy practices of Google, please visit the Google Privacy & Terms web
page: https://policies.google.com/privacy?hl=en

Firebase
Firebase is analytics service provided by Google Inc.
You may opt-out of certain Firebase features through your mobile device settings, such as your device
advertising settings or by following the instructions provided by Google in their Privacy Policy:
https://policies.google.com/privacy?hl=en
We also encourage you to review the Google's policy for safeguarding your data:
https://support.google.com/analytics/answer/6004245. For more information on what type of information
Firebase collects, please visit please visit the Google Privacy & Terms web page:
https://policies.google.com/privacy?hl=en

Links to Other Sites


Our Service may contain links to other sites that are not operated by us. If you click on a third party link, you
will be directed to that third party's site. We strongly advise you to review the Privacy Policy of every site you
visit.

We have no control over and assume no responsibility for the content, privacy policies or practices of any
third party sites or services.

Children's Privacy
Our Service does not address anyone under the age of 18 ("Children").

We do not knowingly collect personally identifiable information from anyone under the age of 18. If you are a
parent or guardian and you are aware that your child has provided us with Personal Data, please contact us.
If we become aware that we have collected Personal Data from children without verification of parental
consent, we take steps to remove that information from our servers.

Specific Provisions to our Cloud Offerings


For our Cloud Offerings, we act as a Data Processor for our Customers, who are the Data Controllers of the
instances they have licensed and administer. You as a user generally will be bound by the Data Controller´s
policies. For theses instances, please direct your data privacy questions to the Data Controller.

With regards to some of our Cloud Products, Customers have certain options to select the processing
location of data and to configure the privacy-relevant settings of the instance. If you are the customer of one
of these instances, you can contact us and get more information on where your instance is running.

We generally offer two regions:


hosting in the United States
hosting in the European Union

Other regions may be added over time.

Where required, we also offer to sign Standard Contractual Clauses approved by the European Commission
to guarantee an adequate level of data protection or other mechanisms relevant for the Customer.

The amount of Personal Data we process with our Cloud Offerings is limited to what the Customer and his
users enter into the Service. In the cloud offering, we will not process the personalized cookie or analytics
data described above. The purposes of processing the data are strictly limited to providing and improving
the Service and in accordance with the Data Controller´s instructions. We never access workspace data (i.e.
the actual content the customer is entering in his instance), unless the customer asks us to in form of a
support request, we are bound by a valid law enforcement request or to protect our own interests, such as
investigating potential abuse of the service.

Once your usage of our cloud offering ceases, we will remove all your data, including backups, after a short
grace period - or immediately, if you tell us to.

Changes to This Privacy Policy


We may update our Privacy Policy from time to time. We will notify you of any changes by posting the new
Privacy Policy on this page.

We will let you know via email and/or a prominent notice on our Service, prior to the change becoming
effective and update the "effective date" at the top of this Privacy Policy.

You are advised to review this Privacy Policy periodically for any changes. Changes to this Privacy Policy
are effective when they are posted on this page.

Contact Us
If you have any questions about this Privacy Policy, please contact us:

BANKTEXT´s Data Protection Officer by email: privacy@BANKTEXT


By visiting this page on our website: https://BANKTEXT/contact

Data Protection Officer


To communicate with our Data Protection Officer, please email privacy@BANKTEXT
Subprocessors
Last update: April 5th, 2023

We have updated this policy. For the previous version of this policy, please expand the section below.

The list below identifies sub-contractors (sub-processors) that may be engaged by BANKTEXT to Process
personal data during the provisioning of our Services.

What is a Subprocessor

A sub-processor is a third-party data processor engaged by BANKTEXT, including entities from


within the BANKTEXT Group, who has or potentially will have access to or process Service Data
(which may contain Personal Data). BANKTEXT engages different types of sub-processors to
perform various functions as explained in the tables below.

Due Diligence

BANKTEXT undertakes to use a commercially reasonable selection process by which it evaluates


the security, privacy, and confidentiality practices of proposed sub-processors that will or may have
access to or otherwise process Service Data.

Infrastructure Sub-processors – Service Data Storage and Processing


Entity Name Purpose Data Hosting Location

We use OVH to underlying the


United States
infrastructure of our hosted
The location of where an
offering, marketplace, open
instance of our hosted offering
community server, and other
Amazon Web Services, deployed is determined by the
services such as push
OVH customer during onboarding.
notifications. We use a hybrid
Please reach out to support if
deployment. Generally
you want to know the concrete
speaking, after June 2020, all
subprocessor for your case.
workspaces run on OVH.

Infrastructure that runs the cloud


deployments and supports
AWS United States
BANKTEXT's internal
processes

Analytics and Backup


MongoDB Cloud United States
Management

Service Specific Sub-processors

Entity Name Purpose Data Processing Location

Stripe Billing platform

email marketing, newsletter,


ZOHO
CRM, customer support

Apple Push Notification Service, Push notification service for iOS


Firebase devices

Innovation Service Specific Sub-processors

Entity Name Purpose Data Processing Location

Clearbit Account Enrichment United States

Yesware email marketing United States

Marketing and Sales


Appollo.io United States
Intelligence.

PRVolt email marketing

Mailchimp email marketing


BANKTEXT Affiliates
BANKTEXT affiliates involved in processing of personal data will depend on the location of our users and
their customers and the nature of the services we provide to you. By agreeing to the DPA, you agree all of
these Sub-Processors may have access to Customer Data.

The following entities are members of the BANKTEXT Group. Accordingly, they function as sub-processors
to provide the Services.

Entity Name Data Processing Location

BANKTEXT Technologies Corp. United States

Rocketchat Tecnologia LTDA Brazil

Partners Joint Processors or Sub-processors


Entity Name Purpose Data Processing Location

Fabulor is a BANKTEXT Official Partner.


When we receive a lead from the EMEA
and APAC region that classify under
some contractual conditions, we may
share this lead information to Fabulor for
Fabulor.eu Belgium; Netherlands
Sales, Marketing and Professional
services purposes. Fabulor may access
the following Lead's/Customer data for
this purpose: Email; Contact Name;
Country; Phone.

CCNet is a BANKTEXT Official Partner.


We may share the Lead/Customer's
information with CCNet to reach out to
them.
When we receive a lead from Germany,
CCNet Austria and Switzerland we may share Gießen, Germany
this lead information for Sales, Marketing
and Professional services purposes.
CCNet may access the following
Lead's/Customer data for this purpose:
Email; Contact Name; Country; Phone.

Sanwa Comtec is a BANKTEXT Official


Partner. We may share the
Lead/Customer's information with
Sanwa to reach out to them.
When we receive a Community Lead
from Japan we may share this lead
Sanwa information to Sanwa for Sales, Japan
Marketing and Professional services
purposes. Sanwa may access the
following
Lead's/Customer data for this purpose:
Email; Country; workspace ID.

Objecting to a subprocessor
You may object to a subprocessor by submitting your objection by email to privacy@BANKTEXT with the
subject line “Subprocessor Objection," along with your name, company name, name of the BANKTEXT
service, name of the subprocessor, and objectively justifiable grounds for objection unless otherwise
provided for in your service agreement with BANKTEXT which terms control.

Updates to this page


Due to the nature of our business, we are consistently updating the list and controls of our subprocessors.

For more information on BANKTEXT's privacy practices, please visit our Privacy Policy. If you have
questions regarding this page, please get in touch with us at privacy@BANKTEXT.

Previous Versions of this Subprocessors List

BANKTEXT-Subprocessors-list-01-05-2023.pdf 138KB
PDF

Subprocessors-list-10-23-20.pdf 50KB
PDF
Privacy Policy Facebook Messenger

Please read the following Customer Terms:

For SaaS deployments: BANKTEXT Terms of Service


For Self-managed deployments: Master Services Agreement

We use your data to provide and improve the Service. By using the Service, you agree to the collection and
use of information in accordance with this policy. Unless otherwise defined in this Privacy Policy, the terms
used in this Privacy Policy have the same meanings as in our Terms and Conditions.

Please, check the Facebook privacy policies here.


Security Policy

We have created a general information security policy and specific policies for related topics and are
working to put them in place. These policies are necessary to set up secure processes and demonstrate our
compliance with industry standards towards our customers. You can also find the annual acknowledgment
forms here.

In case of any questions, contact the security team. More information on this page

Do you want a short summary? You can find a security one pager here!

Mandatory Acknowledgment & Secure Configuration


Because we all must follow our security policies, we have set up GoogleForms that you can fill out and
submit. Use the following 3 checklists to set yourself up securely:

Policy Acknowledgment, an acknowledgment for our current policies. Mandatory to complete annually
by all employees
Security configuration, a checklist to set up a basic secure configuration of your tools. Mandatory to
complete annually by all employees.

Overall Security Policy


Overall Management intention on security and baseline for our security management system.

Purpose

BANKTEXT places a great emphasis on protecting its information. Such information includes e.g.
information we manage on behalf of our customers, personnel files, our intellectual property.

At BANKTEXT, we aim to ensure at all times that information we manage is appropriately secured to protect
against the consequences of breaches of confidentiality, failures of integrity or interruptions to the availability
of that information.

Our objectives are:


We will meet all applicable requirements in properly protecting our information, including: laws,
regulations, industry standards and contractual commitments

The protections we apply to information assets will be in proportion to the value and sensitivity of the
information, and will balance the sensitivity of the information against the cost of controls, the impact of
the controls on the effectiveness of business operations and the risks against confidentiality, integrity
and availability of the information
We will ensure that these controls are accepted by all employees, vendors, service providers,
representatives and associates of our company who may have access to our information. This includes
ensuring that all personnel at all levels are aware of, and are held accountable for safeguarding
information assets

We will identify and mitigate any breaches to this policy.


We aim to continually improve our security practices over time.

Applicability and Ratification

This information security policy provides management direction and support for information security across
the organisation. Specific, subsidiary information security policies, procedures and guidelines are
considered an integral part of this information security policy, because only when followed in its entirety, we
can ensure the objectives of this policy are met. This policy has been ratified by BANKTEXT´s management
team and forms part of its policies and procedures. It is applicable to and will be communicated to our staff,
contractors, students and other relevant parties.

Responsibilities

Everyone handling BANKTEXT information has the responsibility to keep the information safe, no matter
where the information is located. This includes our staff members, contractors, students, etc., but also our
suppliers (e.g. those that provide us with our tools to work) and other recipients of that information.

To determine the appropriate levels of security measures applied to information systems, a process of risk
assessment is carried out to identify the probability and impact of security failures.

To manage information security within the organisation an information security oversight committee is
established, chaired by BANKTEXT´s Security Lead and consisting of senior members of our relevant
teams. The objective of this committee is to ensure that there is clear direction and visible management
support for security initiatives. This oversight group shall promote security through appropriate commitment
and adequate resourcing.

An information security working party, comprising management representatives from all relevant parts of the
organisation, shall devise and coordinate the implementation of information security controls. The
responsibility for ensuring the protection of information systems and ensuring that specific security
processes are carried out shall lie with the head of the department managing that information system.

Specialist advice on information security is available throughout the organisation. Any member of the
organization can contact his manager or directly BANKTEXT´s Security Lead.
BANKTEXT will establish and maintain appropriate contacts with other organisations, law enforcement
authorities, regulatory bodies, and network and telecommunications operators.

Violations of our policies will be handled in accordance with the severity of the violation and applicable
rules and regulations, including up to termination of contract for severe violations.

Review

This policy is reviewed and updated regularly to ensure that it remains appropriate in the light of any
relevant changes to the law, our other policies or contractual obligations. We will inform relevant parties
about the updates.

The implementation of the information security policy shall be reviewed independently of those charged with
its implementation.

Security Special Policies


The following are subpolicies related to specific areas and supplement the general policy.

Organization
We maintain a RASCI-chart that contains the responsibilities around information security. Conflicts of
interest in these responsibilities must be avoided and tasks that create these conflicts be assigned to
different persons. Where this is not possible, compensating controls (e.g. four-eyes principle) should be
considered.

Current conflicting roles identified:

The roles of data protection officer and security lead are currently taken by one person and cases of
conflict of interest will be raised to the management team to resolve.

The company maintains relevant contacts with authorities and agencies, those relevant for BANKTEXT
being mostly:

Data protection agencies


NIST
ISO
Open Source Community

In project management, the project leads are responsible to ensure security is properly addressed in a
project.

Personnel Security
All personnel is screened before entering a position and subject to a Terms of employment, including a duty
of confidentiality. The screening process is in relation to the applicable laws and regulations as well as the
requirements of the position. All personnel is subject to contractual terms that describe their duties. The
Information Security Team ensures that all personnel is aware of BANKTEXT´s Security policies. Personnel
that is leaving BANKTEXT must certify that all assets have been returned to the company and then will be
de-registered from the user directories.

The details of these processes are implemented and the records kept by the Human Resources Team.

Asset Management
All assets must be inventoried. An asset is something of value for BANKTEXT (e.g. information itself, a
device, intellectual property). We maintain a list of all devices and all software used, including additional
information relevant per type of asset. References to sublists for assets (e.g. virtual machine inventories,
mobile device lists) are allowed and should be referenced. The amount of effort needed to maintain a
detailed list of assets should correspond to the criticality of the asset.Assets must be returned to BANKTEXT
once an owner leaves the organization. Ownership of an asset and the risks associated with an asset are
separated to focus on overarching risk mitigation without boundaries between assets.

The lists of assets can be found here.

Data Classification & Lifecycle Policy


This section is about how we classify various elements of data and how to treat them regarding their
criticality. You might have seen documents containing footers like "confidential" / "top secret", etc. This
section focusses on general aspects of handling data.

Scope:

This data classification policy applies to all data and to all user-developed data sets and systems that may
access these data, regardless of the environment where the data reside (including cloud systems, servers,
personal computers, mobile devices, etc.). The policy applies regardless of the media on which data reside
(including electronic, microfiche, printouts, CD, etc.) or the form they may take (text, graphics, video, voice,
etc.) Your private opinion, e.g. what you share on social media under your personal name, is not in scope of
this policy. You should always make clear if you are posting in the name of BANKTEXT or privately, if the
context leaves room for ambiguity.

Classifications:

All data you create, modify, receive or otherwise process in connection with BANKTEXT, must be handled
confidentially and protected according to the risk related to it. (Confidential Data). Your NDA includes more
details on what is considered confidential and what not. We do not distinguish between various levels of
confidentiality (like secret, top secret, super secret, ...).

An exception to confidentiality of data applies when the data in question is specifically targeted at a broader
audience outside the organization (e.g. blog posts, webinars, public source code). This data is classified as
"public". (Public Data).
In case a customer has a different way of classifying data and we are required to follow the customer's
classification scheme (either by contract or because it is custom), then the customer classification scheme
applies. (Customer Data Classification)

Handling and marking of data, incl. access control:

Unless stated otherwise, the creator of data is considered its owner and has to ensure the provisions of this
policy are followed. Our general policy is that access to data is denied by default within the company, unless
the owner has authorized access to it (e.g. to an individual, to a role or to a group of individuals). This
granting or changing of access must be logged and the access control lists regularly reviewed by the owner.
This also means we follow the principle of discretionary access control, meaning that owners of data grant
access to this data by themselves.

Confidential data: We generally do not tag or otherwise mark confidential information. Instead we store
information in secure repositories and grant access to information only when there is a legitimate need to it
("need-to-know"-access). Unauthorized access must be prevented with the features of the tools you are
using. E.g. you should set links to a file with the correct sharing permission. Before sharing confidential data
with individuals outside the BANKTEXT organization, an NDA must be signed. This NDA signature is the
responsiblity of the HR team for employees and contractors and of the Sales team for potential clients and
customers. In case you are in doubt of the existence of an NDA, contact these teams respectively before
sharing confidential data. For confidential information shared from us to customers or other external parties
(e.g. a slidedeck), you must tag it with the BANKTEXT logo to indicate its origin and minimize intellectual
property infringement. Where the context warrants an additional note to the recipient, you should consider
putting a footer like "Confidential material. Do not reproduce" on your document. Secure ways of sharing
data (e.g. PGP-encrypted mailing, end-to-end encrypted channels on BANKTEXT) should be preferred. For
sending confidential material via hardcopy, only use legitimate mail services and avoid marking that draws
attention to the content of the package.

Public data: Public data is also not marked specifically, instead it is characterized as being public when you
put it on a place where the intended audience can access it (e.g. on our website or a public GitHub
repository). To distinguish public data and confidential data, consider where it is being placed. Consider
also that all data you put on the web is potentially replicated in other places (e.g. wayback machine,
reupload on youtube, etc.) so be sure to check in advance if the data in question is really intended to be
public.

Customer Data Classification: For information that is received from customers or regularly exchanged with
them (e.g. slidedecks, RFQs, etc.) stick to the customer´s classification method and mark it appropriately.

Other handling and marking methods depending on tools and systems you use: When you work with
specific tools and systems, these systems often come with their own classification schemes (e.g. GitHub
Public vs Private Repositories) and mechanisms (access control lists, metadata, etc.). You should use these
classification mechanisms in the spirit of this policy and the context of how you use the system.

Deletion of data:
Once data is considered no longer necessary, it should be deleted. Keep in mind that we are required to
keep certain data for a minimum or maximum amount of time (e.g. for legal reasons). Use secure methods
for deleting data, e.g. DBAN Contact the security team in case you are in doubt of deleting data. Public data
generally does not need to be deleted since the risk associated with it is low and our external audience
often expects this data to be available (e.g. in our public source code repositories).

Acceptable Use
This section is about general acceptable use of equipment, systems, the internet, etc. when you are using
those in a capacity for BANKTEXT. We have additional, specific policies for device types, which are
presented in the upcoming sections.

Applicability:

This policy applies to assets, when these assets are provided by BANKTEXT or when they are provided by
you and used in the name of BANKTEXT. Assets are: Internet/Intranet/Extranet-related systems, including
but not limited to computer equipment, software, operating systems, storage media, network accounts
providing electronic mail, WWW browsing, and FTP. It does not apply to the usage of e.g. your private
internet at home when not working for BANKTEXT.

Acceptable Use:

Assets must primarily be used for business purposes in serving the interests of the company, and of our
clients and customers in the course of normal operations. You are responsible for exercising good judgment
regarding the reasonability of personal use. Personal use may never endanger the objectives of our policies
(e.g. via actions regarded as unacceptable use)

Unacceptable Use:

The following are examples of unacceptable use:

Violations of the law or of rights of any person or company, e.g. copyrights, patents, trademarks
Accessing data, a server or an account for any purpose other than conducting company business
Exporting technology in violation of international or regional export control laws
Introduction of malicious programs into the network or server

Revealing your account password to others or allowing use of your account by others. This includes
family and other household members when work is being done at home.
Making statements about warranty, expressly or implied, unless it is a part of normal job duties
Effecting security breaches or disruptions of network communication, e.g. port scanning or security
scanning
Circumventing user authentication or security of any host, network or account.
Certain exceptions to the items listed under acceptable use apply when such behaviour listed is expressly
part of your job duties (e.g. to perform vulnerability scanning) or with prior authorization of senior
management.

Enforcement:

For security and network maintenance purposes, authorized individuals within BANKTEXT may monitor
equipment, systems and network traffic at any time. This also includes equipment that you privately own, but
use for business purposes. BANKTEXT reserves the right to audit networks and systems on a periodic
basis to ensure compliance with this policy. In case additional software is needed to run on a system or
device, you must facilitate the installation of the software and not interfere with its intended function.

Device & Portable Storage Security


Our general policy is that everyone is responsible to secure their workstation by themselves. We do not
enforce group policies, software whitelisting, or such. This means in turn that you yourself must be taking a
greater amount of care to secure your workstation.

General

Applicable to all devices:

Keep your workstation in a secure environment (e.g. a locked room or building).


Always lock your workstation screen when leaving it.
Store all important or sensitive information on network drives (e.g. GSuite).
Keep your antivirus and antimalware protection up to date at all times and with daily definition updates

Keep on updating your operating system and local software to the latest version as soon as it becomes
available.
Run a full anti-malware check at least monthly.
In case of a virus/malware warning, run a full scan and resolve all findings.
Use software and OS that still receive security updates from their vendors.
Do not install software that could cause security risks (e.g. not from official app stores). You are
responsible to determine if a new software you are about to install poses a security risk.
Limit your privileges to what is necessary (e.g. do not run programs with administrator privileges that do
not need them).
When decommissioning a workstation, securely wipe it with DBAN or an alternative (e.g. factory reset)
before using it in another way (e.g. selling it).

Mobile Device Specifics


Install at least one authenticator app to allow for multifactor authentication
No jailbreak / rooted devices
Do not store business information outside of apps (e.g. in the download folder), instead keep information
inside the native apps and use the app-side browser to view and modify information.

Portable Storage

Portable Storage (e.g. USB sticks, external HDDs) creates some additional risks, especially to availability of
information and the risk of theft. That is why portable storage is generally not allowed to be used for
BANKTEXT information. You may use portable storage in limited circumstances when you have custody of
the device (e.g. you own it) and it is used:

For non-sensitive purposes (e.g. marketing material to be shared with a customer on a USB stick)
For encrypted backups of your workstation
To extend the storage of your mobile devices

Portable storage you acquire in a used state or not directly from a vendor (e.g. a gift you received, lost &
found devices) may never be connected to your devices and should be returned or destroyed because they
could be infected with Malware, even after wiping them. Instead of using portable storage, you should
always use shared network resources (e.g. GSuite).

Physical Security, incl. Homeoffice

Porto Alegre

Read the rules that are pinned in the office


Join the BANKTEXT channel to be informed about news

Homeoffice / Remote Work

Additional rules apply if you work remotely:

Configure a secure home network, you can use a guide like: link 1 or link 2
Use VPN when working outside of your home office (e.g. in a coffee shop)

Block sight lines of others, so that only you can see your screen when it contains confidential
information
Keep printouts with work data to an absolute minimum and destroy them securely once done. In general,
most of your work should be done paperless.
Keep your workstation secure at all times (e.g. not leave it in a car)

Cryptography
Cryptographic requirements are adressed in the other parts of the subpolicies and must follow the general
principles as described by OWASP Cryptography in our products will be described in the product
documentation.

On the BANKTEXT servers you use for business purposes and share sensitive business information, you
must set your End-to-End-Encryption key when logging in the first time on a new device and encrypt the
relevant channels before sharing the sensitive information.

Password & Secrets Policy

Always use strong passwords, as described e.g. here.


Always reset your password if you have suspicion of it being compromised.

Always keep your passwords in a secure and encrypted location like your password manager
(preferred, e.g. ZOHO Vault) or your head.
Never share your passwords with anyone. Credential sharing is not allowed. An exception to this
applies if the password is shared by nature.

Shared Passwords

Shared passwords & secrets should only be used, if a personal password can NOT be used. Always prefer
using your own passwords (tied with your own account/credential). Shared passwords must be stored in an
approved secure and auditable password storage system. Our current standard is ZOHO Vault, its
integrations are approved (e.g. the browser extension).

Shared Passwords must:

Abide our password policies (complexity, length), unless the target system/use case does not allow this
or prescribes a different standard

Have one or multiple owners, default owner is the creator of the shared password. In Zoho, this is called
“Authorizer” or “Owner”.
Always be maintained in the central storage system. Do not update passwords and keep an outdated
password in ZOHO. ZOHO is single source of truth.

Shared Passwords SHOULD:

Be put in folders (ZOHO: “Chambers”), with a preconfigured set of persons with access. This makes it
easier to manage access control.
Not be exported out of Zoho.

When a person leaves the company, he must transfer ownership of the shared password to a successor.
Click on “more actions” → “Transfer Ownership” in ZOHO.

Authentication Policy
Access to confidential BANKTEXT data is only allowed after successfully and securely authenticating an
individual. Your main account is your BANKTEXT account and serves as your main digital identity. You
will receive your account during your onboarding process as well as other, potentially needed digital
identities.

You should always use your firstname.lastname@BANKTEXT identity. Exceptions apply when you are
testing out a service or you specifically want to access the service under a pseudonym. You may not
circumvent authentication or use different identities unless this is specifically part of your duties.

In terms of authentication methods, you should always opt for using SSO/SAML authentication where
possible. Since your identity is tied to a Google account, you can also click on the "Sign up with Google"
button or similar phrasing, in case SAML/SSO is not available. If you get an error when authenticating via
SAML or SSO, contact the person who invited you to enable it properly.

2- Factor- or Multifactor-Authentication is required before accessing critical assets and will be set as
mandatory there.

Secure Development & Change Management


Secure engineering basic principles:

Features or changes involving components that could affect overall system security (e.g. authentication,
encryption, access control) should consider the following steps:

have a thoroughly documented PR explaining the change


the PR must pass all checks, alerts must be remediated before merging

be subject to the regular tests (including security tests) before a release and not be introduced after
these tests
should check if documentation needs to be updated and if so, update it

Changes to assets should only occur when a change is necessary. All changes must be controlled. All
changes related to source code must occur through the authorized version control system (e.g. GitHub). In
case a change is urgent, the change control process may be shortened by decision of management, in order
to mitigate potential damages to the organization.

Accessing Customer Data


For access to customer data, you must adhere to the following:

You may only access customer data if

The customer specifically requests it (e.g. support request) or

When it is necessary for us to fulfill our contractual obligations (e.g. to act proactively to prevent an
instance from failing)

Access is strictly limited to the data needed to fulfill the request. You may not access data of other
customers. No customer data may be extracted unless this is strictly requested by the customer. All data
extracted must be stored safely and deleted when it is no longer necessary.
You must terminate the session immediately after the reason for your access has been resolved. You must
as soon as possible inform the customer of the outcome of your access.

Incident Management
An incident is any event that has the potential to affect the confidentiality, integrity or availability of
BANKTEXT information, in any format, or IT systems in which this information is held. Violations of laws,
policies, contractual obligations or also external requests should also be considered as incidents in this
sense.

Examples of incidents include:

Lost devices
A suspicious and successful log in
Malware incident
Ransomware attack

Email with confidential data sent to wrong recipient


Law enforcement requests to disclose data of customers

General Incident Process:

1. Logging the incident


2. Assigning it to the proper team to investigate
3. Triage
4. Escalation (if needed)

5. Resolution, including implementation, testing, as well as reaching out to other parties necessary. Before
advancing, the affected user or customer must also be in agreement that the incident has been
resolved.
6. Closing

The Security Team will produce metrics on the incidents occurring in order to reduce their occurrence and
improve our process. The detailed process is in the playbooks section of the security team.

Incidents happen and it is important for BANKTEXT to be aware of them and taking proper action. In case
you feel you are in a conflict of interest or in fear of potential repercussions of reporting an incident, you can
confidentially contact the HR team or the Security team and your incident report will be submitted
anonymously.

Business Continuity and Disaster Recovery


Business Continuity ensures that regular business will continue even during a disaster.

Disaster recovery means restoring vital support systems and is a subset of business continuity.
Disaster prevention:

Disaster prevention is everyone´s responsibility. This means that every employee must actively prevent
disasters from occurring and report potential risks of a disaster to management. Most controls to prevent
disasters are taken on a system level by the respective system administrator and will be performed against a
system specific control catalog (e.g. backup configuration). Since many of our systems rely on third party
providers, following our policies for third parties is critical. Disaster Prevention controls include:

Redundancy of the network in the office


Preventing vendor lock-ins
Chosing of trusted partners that provide an adequate level of security (e.g. SaaS providers)
Storing data offsite and off-client

Criticality ratings:

BANKTEXT maintains a list of all systems, including a rating of their criticality on our business processes.
This criticality is mostly based on tolerable downtime. The criticality ratings are defined in specific DR
documents. Criticality ratings to a system may be adjusted on a case-by-case basis where the
circumstances justify the adjustment. BANKTEXT also runs a risk management program to identify and
manage risks, including risks of a disaster occuring.

Disaster Recovery:

In case of a disaster, we will form an incident response team consisting of the respective members of our
management team, security and other individuals, depending on the type of disaster. The members of the
team will communicate using BANKTEXT - or where this is not possible - email or phone. We will inform all
affected employees via the BANKTEXT channel "important" or others where relevant. In case the disaster
has taken down the BANKTEXT servers, we will notify via email or - where warranted - contact you via the
phone numbers you have given us during onboarding. The incident response team will also ensure that
affected customers are informed via the proper methods.

Testing:

Annually, we test our business continuity and disaster recovery capabilities. The scope and method of
testing are related to our risk management process and decided by management. The results of these tests
are shared in the company and may lead to updates to this policy.

Procurement
All Systems procured must comply with defined information security requirements. Those requirements are
defined before a procurement decision is made.

Supplier Relationships
This policy applies to the security and compliance of supplier relationships. Maintaining a secure supply
chain is important because often vulnerabilities and risks are introduced through supplier relationships.
Suppliers can be SaaS providers, hardware suppliers and similar.

Contracts & Service levels:

Relationships with suppliers must be based on written agreements/contracts. Such contracts must include
provisions on information security when necessary. Service levels of suppliers must be agreed upon and
monitored, e.g. by monitoring uptime reports, quality of service, and in case the service does not meet the
expected level, the supplier be notified to remediate the issues. Changes to the provision of services by
vendors, including changes to agreements, must be recorded (e.g. a contract amendment).

Supplier access & privacy:

Suppliers accessing or processing BANKTEXT data must be subject to an NDA or other confidentiality
clauses. They must follow either our privacy policy or have their own, legally compliant privacy policy.

Supplier compliance:

Supplier compliance is assessed on a risk-based approach and against the requirements of our security
policies. Suppliers must demonstrate the same level of compliance for their supply chain.

Auditing
The Information Security Team will audit the design and implementation of these policies on a regular basis,
with a focus on risks identified in the risk management process. Where a potential conflict of interest takes
place, the audit will be delegated to another individual with such conflict or other compensating controls be
taken.
Security and Compliance Guides
BANKTEXT Security Documentation

One-Stop-Shop

Here you can find all BANKTEXT security- and compliance-related Documentation with links to the different
sections to navigate our documentation more efficiently.

If you still have questions, feel free to reach out to security@BANKTEXT

Product-related security information


Security is built-in myriads of features in BANKTEXT. Detailed information about each of the security
features of our product can best be found via the search function of our Docs section. Use keywords (e.g.
OAuth, LDAP, Encryption) to narrow your search.

We have compiled summaries of important security aspects on the pages below:

Learn more

Compliance Resources, including certifications like ISO 27001 to help your organization to determine, if
BANKTEXT fits your needs.
Security fixes and update - an overview of vulnerabilities that have recently been closed and in which
versions.
End-to-End Encryption Specifications - an overview of our algorithms and functionality.

Outside Resources
Below are related resources in other sections of BANKTEXT's Documentation.

Security Features Overview

Security Solutions - features, testimonials, and use cases on how BANKTEXT can help you to secure
your data.

Privacy

Privacy Policy - how we process personal data.


Terms of Service - legal documentation on how we provide services to you (e.g. push notifications, etc.).
GDPR - a special page dedicated to GDPR requirements we implemented in 2018.
Community

Report Vulnerabilities - how to best let us know about the security vulnerabilities you have found.
Code of Conduct - rules that apply to our servers.
White Hat Hall of Fame - Famous contributors that made BANKTEXT more secure.

BANKTEXT Handbook

Company Security Policy - how we ourselves do security internally.


Compliance Resources and Certifications

On this page, we provide you with resources around compliance of BANKTEXT with industry standards,
regulations and best practices. Also our certifications are listed here. Contact our specialists for further
information under mayara.santos@BANKTEXT.

Each resource is tagged with a section to indicate the scope.

Compliance certifications

ISO 27001 certification

Scope: Hosted Offering, App Store, Software Development

BANKTEXT is ISO 27001 certified. ISO 27001 is an internationally recognized standard for information
security management systems. Our organization is audited on an annual basis by an independent third-
party auditor to verify the design and operational effectiveness of the management system.

Certificate:
Certificate 2020.pdf 522KB

PDF

ISO 27001 certificate 2020

Name: ISO 27001 Information Security Management Systems

Statement of applicability (link)

contains a list of controls and whether they are applicable or not


Certifying body: QMS Certification Services
Validity: July 2020 - July 2023

Use cases for BANKTEXT users: due diligence, security review, regulatory compliance, internal audit,
supply chain audit
Security fixes and updates

This page includes regular updates about recently patched security issues in BANKTEXT.

Do you want to report a security issue yourself? Please have a look at our Responsible Disclosure Policy.
We appreciate your reports.

New issues are listed below, at first without details to give administrators and users sufficient time to
upgrade. Details to the issue are added in with the next version release, e.g.: fixes introduced in version x.1
will be added when version x.2 is available.

Providing fixes for legacy versions of BANKTEXT becomes increasingly difficult due to the code
differences, which is why we focus on providing fixes for the most recent versions only. Please
see our support policy, which outlines our supported versions.

Please make sure to follow new version updates by subscribing to our newsletters or activating the
announcement feature for new releases directly in the BANKTEXT server administration settings. We
recommend updating to the newest version as soon as possible to always have the newest security fixes.

Known vulnerabilities

We address a CVE for all vulnerabilities found in our product, you can check it by accessing the following
page:

https://www.cvedetails.com/vulnerability-list/vendor_id-17468/BANKTEXT.html
cve-2022-32211

Dear customers,

Recently our security team received from an external researcher a report related to some vulnerabilities. As
soon as we received it we took some actions to fix the vulnerabilities and applied the patches for the
versions 3.18.x, 4.4.x, and 4.7.x

All our cloud instances are already upgraded to this version and our incident response team guarantees that
we didn't have any incident related to this vulnerability. We kindly ask all our customers that upgrade the
instances for the versions 3.18.7, 4.4.5, and 4.7.4 to avoid any security breaches.

We will keep you updated about any news regarding this vulnerability and soon we will release the cve-
2022-32211

For further information, please, check

BANKTEXT : Security vulnerabilities

We'd like to thank Ghaem Arasteh for the report.

Best regards, BANKTEXT

security team
End-to-End Encryption Specifications
The following contains an overview of the implemented mechanisms of the
BANKTEXT End to End Encryption feature. It provides technical information and
supplements the user guide.

Encryption Process Overview

IMPORTANT: E2E encryption functionality is currently in beta and includes notable


restrictions that workspace owners should carefully consider before activating this feature for
production use as follow:
E2E encrypted messages will not appear in search operations

Bots or other ancillary systems interacting via webhooks or REST API will not be able to read
E2EE encrypted messages
File uploads are not encrypted

BANKTEXT enables users to reset their private E2EE key to avoid permanent loss of data
during the beta period

Upon login, the client auto-generates the encryption password and asks the user to save it. This password is
used to generate a secure 256-bit AES-CBC encryption key, called “Master Key.”

For using end-to-end encryption (E2EE), the client (C) of a user (U) needs to have a Public-Private key pair
(Ku, Kr). This key pair is generated when the user logs in with a client for the first time. The public key is
sent to the server and stored in the database in the User model. The private key is first encrypted using the
Master key and then sent to the server for storing in the User model database. If a public-private key pair
already exists in the database for the user, instead of generating it again, it is downloaded from the server.
The downloaded public key is used as-is, and the encrypted private key is first decrypted using the master
key. If the master key has not been decrypted client-side already, the user is prompted to enter the master
key again.

The public key is used to encrypt a persistent session key (Ks), which is then used for the actual encryption
of messages and files. This encrypted session key is stored in the database, in the Subscription model for
every user in a room (including the user who initiates the E2EE session). Note that this method works for
direct messages as well as groups since direct messaging is just a room with only two people in it.

When starting a new E2EE session, first, if an existing session key exists in the room subscription of the
current user, it is downloaded and decrypted using the user’s private key and then used to encrypt future
messages. In case an existing session key is not found in the database, a new session key is generated by
the current user and then stored in the database encrypted for every user in the room.

Once a session key has been obtained in the above manner, we enter E2EE mode, and all messages sent
henceforth are encrypted using this session key.
Because keys are stored in the database and are persistent, the other users in the room do not need to be
online to participate in an E2EE conversation.

Code
The relevant code for E2EE is located in

(BANKTEXT/app/e2e/client)
https://github.com/RocketChat/BANKTEXT/tree/2bf8edab056dbc5e0d40aeae2c4472f729ec09d9/app/e2e/c
lient

(BANKTEXT/app/e2e/client)
https://github.com/RocketChat/BANKTEXT/tree/2bf8edab056dbc5e0d40aeae2c4472f729ec09d9/app/e2e/c
lient
And
https://github.com/RocketChat/BANKTEXT/blob/2bf8edab056dbc5e0d40aeae2c4472f729ec09d9/app/e2e/
client/helper.js
https://github.com/RocketChat/BANKTEXT/blob/2bf8edab056dbc5e0d40aeae2c4472f729ec09d9/app/e2e/
client/helper.js

contains the technical specifications of the implementation of E2EE.

Algorithms Used
Specifically, E2EE uses:

- client key pair: RSA-OAEP, length 2048

- master key: AES-CBC, length 256, iterations: 1000

- session key: AES-CBC, length 128

Architectural Specifications
1. User Login: As soon as the user logs in, we ask for their “E2E password”. Using this password with a
PBKDF (Password-based Key Derivation Function), we generate a “Master Key.” We then check the
server database for whether a public-private key pair exists for this user. If it does, we download that key
pair. The public key is used as-is. The private key is in encrypted form and will be decrypted using the
master key before it can be used.
2. Client Startup: Using startClient() in rocketchat.e2e.js , check the local storage of the
client to determine whether this is a new client or not. If local storage does not have the public-private
key pair for this client, then this is treated as a new client, and this RSA-OAEP key pair is generated
using a function call to: crypto.subtle.generateKey({name: 'RSA-OAEP',
modulusLength: 2048, publicExponent: new Uint8Array([0x01, 0x00, 0x01]),
hash: {name: 'SHA-256'}}, true, ['encrypt', 'decrypt']); This key pair is finally
stored in the client’s local storage in a serialized form (JSON-stringified). This serial form of the public
key and encrypted private key is also sent over to the server database using a server-method call to
addKeyToChain() .

3. The client starts the encryption session from the E2E flex tab button: The handshake() function in
rocketchat.e2e.room.js is called for the room where the client started the session. First, try fetching an
encrypted session key from the subscription for this user-room pair from the database. If this key is
found, decrypt this using the client’s private key, and the E2EE session is started using this decrypted
key. If the user’s subscription to this room does not contain a key, generate a new AES-CBC session
key for use. This is done by a function call to: RocketChat.E2E.crypto.generateKey({name:
'AES-CBC', length: 128}, true, ['encrypt', 'decrypt']) Once a key has been
generated, it has to be stored, encrypted in the subscriptions of all users in the current room. This is
done by: Fetch public keys for all users in the room using server-method calls to
getUsersOfRoom() and fetchKeychain() . One by one, encrypt the newly generated session
key using each of these public keys, and store this encrypted key in the corresponding user’s
subscription to this room using a server-method call to updateGroupE2EKey() . E2EE session is
now started using the generated session key. 4. Client sends a message: Making use of the
onClientBeforeSendMessage event when the user sends the message, the message object is
encrypted using the session key obtained in the previous step when E2E is in session. This encrypted
message is wrapped in another object, in a “msg” parameter, and a new parameter for type, called “t”, is
added to this new object with the value “e2e” to distinguish it from a regular message. Thus, the new
object becomes:

final_message: {

msg: &lt;encrypted_message>,

T: “e2e” }
This new object is sent to the other client. Note that the original message is not visible to anyone, and only
the encrypted message is sent.
1. The client receives a message: When a message object is received, using the
` onClientMessageReceived event, we intercept it and check whether the “t” type parameter of the
message object is “e2e”, like we set when sending the message. If it is not, we don't need to decrypt it
as it is a plaintext message, and E2EE was not used. If it is an encrypted message, we take the “msg”
parameter’s value and decrypt that message using the session key.

Note that if the receiving client does not have the session key in its local storage, it will have to
download the encrypted session key from the server using the fetchGroupE2EKey `method, and
then decrypt it using its own private key, and then use this key for decryption of the incoming message.

Server Methods

1. addKeyToChain(key)

For saving a newly generated public key to the database for the current user.
Request:

key = {

RSA-PubKey: “&lt; The generated public key for a client>”,

RSA-EPrivKey: “&lt; `` Generated private key, encrypted using the master


key>”

The keys have been converted from ArrayBuffer to String format before sending them.

Response: null

2. fetchGroupE2EKey(rid)

For fetching the encrypted session key for a conversation, for the current user.

Request:

rid = The room id of a conversation (either of direct or private).

Response:

The E2EE session key for the current user for that conversation.

3. fetchKeychain(userId)

For fetching the public key of a user (to be used for encrypting the session key for that user).

Request:

userId = The id of a user


Response:

RSA-PubKey: “&lt; The public key for that user>”,

RSA-EPrivKey: “&lt; The private key, encrypted using the master key>”

4. updateGroupE2EKey(rid, uid, key)

For saving an encrypted session key to the database for a user.

Request:

rid = The room id of a conversation (either of direct or private)

uid = The id of a user

key = The E2EE Session key for that user, for that conversation

Response:

{ BANKTEXT subscription object }

5. emptyKeychain()

Clears out the current user’s public and encrypted private keys from the server database.

Request: {}

Response: {}

6. fetchMyKeys()

Fetches current user’s public and encrypted private keys from the server database.

Request: {}

Response:

RSA-PubKey: “&lt;The public key for current user>”,

RSA-EPrivKey: “&lt;The private key, encrypted using the master key>”

REST API routes for encryption-related requests


Each route directly corresponds to one server DDP method described above. These routes follow the same
naming system as the DDP methods described above. Please refer to the above description to know more
about the individual request/response pairs for each route.

GET e2e.fetchGroupE2EKey(rid)

GET e2e.fetchKeychain(uid)

GET e2e.fetchMyKeys()

POST e2e.addKeyToChain(RSAPubKey, RSAEPrivKey)

POST e2e.emptyKeychain()

POST e2e.updateGroupE2EKey(uid, rid, key)

Push Notifications of End-to-End encrypted messages


Push Notifications for messages of an E2EE room just contain the encrypted payload of a message, the job
of decrypting this content before shown is done locally by the mobile clients (iOS/Android).

Process

The server sends Push notifications. The server, however, doesn't store the unencrypted content of any
message from an E2EE room, because only the encrypted string is stored on the server. These encrypted
strings can only be decrypted using the private key of a user that is stored locally on clients.

When a new push notification from a E2EE message arrives, it has a messageType: ' e2e '. The mobile
client then starts decrypting the message, within the push payload, checking for the locally stored private
key of a user and the E2EE key of the room that the message came from. If both are found, the message is
decrypted locally on the device and then shows the plaintext message. In this process, only the encrypted
message content passed via the push notification gateways.

This feature is available in our Community Edition.

Fetching full message content from the server on receipt (Enterprise Edition only)

To add an additional layer of security, there exists another feature for push notifications:

Fetch full message content from the server on receipt

This means to request the push message content from the server to display it, and it does not pass any
message content - encrypted or not - via Google/Apple/other push gateways. Instead, the message content
itself is fetched by and within the BANKTEXT client itself. What passes via the gateways is only the
information that a new message should be fetched and then shown as a push notification. Once the client
receives this, the client will fetch the content. This way, you can prevent that the message content (even in
encrypted form) passes via a separate gateway.

Note: This feature is Enterprise Edition only.


Off-the-record Messaging (OTR) encryption specifications
OTR is closely related to End-to-End-Encryption. It uses the same ciphers but instead uses only the
participant´s local session storage to store the keys.

Keys are exchanged when the OTR invitation is accepted by the counterpart, that is why all participants
need to be online. Messages from an OTR session are removed when the session storage is cleared.
Data Processing Agreement

Are you a BANKTEXT customer and looking for a GDPR-compliant Data Processing Agreement (DPA)?

You can find one here: Link to Data Processing Agreement Signature Form

It is pre-signed and only needs to be signed from your end for your compliance purposes. It contains EU
standard contract clauses as a data transfer mechanism for data controllers subject to EU law. Keep in mind
that our privacy policy is already part of any customer agreement and therefore already is deemed sufficient
by most jurisdictions as a "contractual agreement" to prescribe our processing of personal data.

The DPA covers our hosted offering. The DPA can also cover cases of customers, that run a self-managed
instance of BANKTEXT, but connect to BANKTEXT services such as the push notification gateway or
the marketplace. For this, you generally need to register your server. In these cases, personal data is
processed by us to provide you with these services and you might be required by the applicable laws to
have a DPA in place. Our DPA is flexible enough to cover for these cases as well.

Info: The DPA is not valid for individual BANKTEXT users (individual persons). For them, only the privacy
policy of their BANKTEXT workspace (provided by the data controller) applies. This DPA also does not
cover processing of third-party apps from our marketplace (beyond us providing the capability to consume
such apps) and in case of multiple DPAs being submitted, only the most recent version applies.

How does it work?

1. Click the link to request your copy. Enter your email-address and you will receive an
authentication code to your email.
2. Enter your authentication code and accept the ZOHO Sign Terms and Conditions for
Electronic Signature.
3. Fill out the remaining fields, such as company name and address. Check optional fields and
enter additional information into the text boxes. Keep in mind that excluding certain types of
personal data but effectively entering them into our services does not preclude us from
processing such data. You can forward the document to be signed by someone else, by using
the function within ZOHO Sign.
4. Once all mandatory fields are filled out, click "finish".

5. Choose your delivery method (download a copy or send via email). A copy of the DPA with
your signature will be mailed to us automatically.

For questions, contact privacy@BANKTEXT


GDPR

Effective date: May 22, 2018

BANKTEXT is GDPR compliant


BANKTEXT has implemented various updates and changes to its codebase in preparation for GDPR
enforcement on May 25th 2018.

A summary of BANKTEXT's overall GDPR readiness strategy for this project can be found below:

#9769

Our public statement can also be found on GitHub.

The following are some of the more recent GDPR updates that are now part of the core codebase:

Right of Access
#9767 (implemented #9906)

Right to be forgotten/erased
#9766 (implemented #9947)

Data Portability
#9768 (implemented in #9906)

Other rights
Other rights for the data subjects are either covered by features already built into our codebase, or outside
the scope of the open source software project, including:

Right to Rectification

The codebase can be configured to support user modification/correction/rectification of any data supplied
(entered) by the user.

Right to restriction of processing

This is outside the scope of the open source software project, and is up to the controller ( administrator /
deployer / operator of the the server system) to enforce.

Right to Object
This is outside the scope of the open source software project, and is up to the controller ( administrator /
deployer / operator of the server system) to enforce.

Community compliance
The above will allow our community members to build and deploy GDPR compliant systems and services.
We know and understand that all of you have custom installation, configuration and deployment
environments and that you are working to ensure your own deployment of BANKTEXT is compliant with
GDPR if necessary.

Meanwhile, we would welcome any advice, input, or questions you may have regarding BANKTEXT’s
GDPR readiness. Please help us by emailing your thoughts to privacy@BANKTEXT.

Thank you!

The BANKTEXT Team

You might also like