Frequently Asked Questions

What is Bold360 AI?

Bold360 AI is a customer engagement solution that uses Natural Language Processing (NLP) to learn about your customers? needs from the very first interaction with them.

With Bold360 AI you can build a help center where your customers can self-serve through a dynamic search bar and you can optimize dynamic search bar engagement with a chatbot.

When visitors hit a dead end or get lost in online FAQs, they either bounce or involve a costly human agent. Bold360 AI's dynamic search bars understand what your customers are looking for and deliver relevant results within seconds. Your customers won?t waste their time digging or your agents? time when not necessary.

The chatbot can answer simple, repetitive inquires that often eat up the majority of an agent's time. This allows customers to be served immediately, at any time of the day or night, and frees up customer service agents for more complex issues and higher-value work that require a human touch. Built with patented NLP, Bold360 AI chatbots understand, remember, and respond like humans, so your customers can get the help they?re looking for in a quick, personalized way.

When your chatbot needs to involve an agent, whether it?s to answer a complex request or hand off a high-value opportunity, the transition is seamless. Agents can clearly see what has occurred in the self-service interaction, so customers don?t have to repeat themselves. AI continues to help the agent as a virtual assistant, offering contextual information at the right time to resolve issues faster.

Instead of pre-loading a customer self-service solution with every possible knowledge base article you can think of, go with what you have and let Bold360 AI help fill the gaps. See what customers are asking in self-service interactions to know which questions need new or additional information. Your Bold360 AI chatbot also takes feedback from customers and agents to self-learn how to answer queries better over time.

Try Bold360 AI to see it in action. Get a Demo!

Bold360 AI platform, Bold360 Agent platform, BoldChat. What's the difference?

You are now at Bold360 AI's support site. Bold360 AI (formerly Bold360ai or Nanorep) customer engagement solution that enables your customers to self-serve.

Bold360 Agent is a web-based application for live agents. You can sign in at agent.bold360.com or admin.bold360.com, depending on whether you want to support your customers, or set up the support experience for your customers and agents. For information about Bold360 Agent, see the Bold360 Agent support site.

BoldChat users generally use the .NET-based BoldChat Operator Client, which is a standalone application available on Windows only. BoldChat users can also sign in to the web-based Bold360 Agent Workspace, (also known as Agent Workspace), but you must first contact your account manager or sales representative for assistance. For information on BoldChat, see the BoldChat support site.

How to use the BoldChat Web Client

The BoldChat web-based application, often called the web client, provides flexibility in non-Windows environments.

Most chat set-up and customization features are available in the web-based client, allowing organizations with smaller chat-only environments to do everything online. In larger settings, the web client is useful for chat operators who only need to login to take live chats from visitors.

The web client is available at https://web.boldchat.com, with additional administrative features at https://setup.boldchat.com.

Cross-Browser Compatibility
You can use the BoldChat web client to monitor visitors and chat interactions. Your operators need only an Internet connection and a leading browser (Internet Explorer, Firefox, Chrome, or Safari), so the web client is perfect for cross-platform deployments.
Web-based Chat Reporting
Web-based chat reporting provides an easy way to access chat reporting from any web browser on Windows and Mac. You can run, schedule and work with BoldChat reports interactively in HTML and you?ll find the chat data you need even faster and easier than before.
Limited Admin Functions
While many chat-focused set-up and customization options are available via the web client, the desktop Operator Client will still be required for larger or more complex chat deployments using permissions, skill routing, and/or automatic chat distribution. Reporting is also a PC Client feature at this time. Online setup features are available at https://setup.boldchat.com.
Multiple-Language Support
BoldChat is dedicated to agent efficiency, so we offer the web client in six additional languages beyond English. With just a few mouse clicks, chat operators can choose to use the web client?s chat functionality in French, German, Spanish, Italian, Dutch, or Brazilian Portuguese.
Secure
All data transferred from the BoldChat's Web application to BoldChat's servers is encrypted over an https connection secured by a high-grade 128-bit encryption.

The web-based client is meant to be an alternative to the desktop desktop Operator Client, not a full replacement. The web application provides core functionality, including the tools needed to manage chats, visits, canned messages, alerts and operators. However, some functionality such as administrative tasks, setup, reporting and customization must be configured or accessed from the desktop application.

Table 1. Features per BoldChat Client version
Feature Web Client .NET desktop Operator Client (All features, including Premier and Enterprise-only)
Active browser sharing with form fill yes
Adaptive messaging yes
Auto correct yes yes
Automatic chat distribution/load balancing yes yes
Chat yes yes
Chat history yes yes
Conversion tracking yes
Customizable operator alerts yes yes
Customizable operator UI yes yes
Customizable buttons and windows yes yes
Department/Skill routing yes yes
Email management yes
Insert image yes yes
Integrated workspace yes
Manual proactive chat invitations yes yes
Multi-OS support yes
Passive browsing sharing yes
Personal canned message library yes yes
Proactive invitation setup yes
Real-time visitor history yes yes
Real-time visitor monitoring yes yes
Reporting engine and scheduler yes yes
Sale Recovery Technology yes
Salesforce module yes yes
Searchable canned messages yes yes
Searchable chat history yes yes
Single sign-on support yes yes
SMS management yes
Spell check yes yes
Supervisor dashboard yes
Twitter management yes
Typing indicator yes yes
Video chat yes

How to display chat transcripts in a Salesforce object

How to display chat transcripts in a Salesforce object

You can associate chat transcripts with Salesforce objects so when you open a record in Salesforce, you see the transcripts of all related chats.

  1. When you log in to your Salesforce account, go to the Salesforce Setup > Object Manager tab and select the object where you want to display chat transcripts.
  2. On the Page Layouts page, select the layout that you want to associate with chat transcripts.
  3. From the Related Lists group at the top of the page, drag and drop Bold360 Conversations to the Related Lists section of the page.
  4. Click Save when you are done.

Allowlists and the Digital DX AI platform

To use Genesys DX, you may want to allowlist certain URLs so that its connected services are able to connect.

We recommend you add the following URLs to your network's allowlist:

  • *.boldchat.com, *bold360.com, *.bold360usercontent.com  - Genesys' service for adding chat to websites
  • *.nanorep.co ? The site for customers who have access to the Bold360 AI platform (Service, Advise, and Acquire)
  • auth.bold360.com
  • launch.bold360.com

IP addresses for the sign in service

 

Add the following IPs to your firewall settings:

  • 34.199.209.240
  • 35.173.84.18
  • 78.108.120.24
  • 173.199.2.47
  • 173.199.4.47

Email addresses for the sign in service

Make sure you allow the following email address so that identity-related and authentication emails are received:

  • support@bold360.com

Third-party IP Ranges

You must also allowlist ranges for these third-party services based upon your use of these service providers:

Email Domains

For email invitations and correspondences from us and the BoldChat/Bold360 software, we recommend allowing the following email domains through your email's spam and allowlist filters.

  • support@bold360.com

Allowlists

Ireland

  • eub-app16-01.boldchat.com
  • eub-app16-02.boldchat.com
  • eub-app16-03.boldchat.com
  • eub-app16-04.boldchat.com
  • eub-app16-05.boldchat.com
  • eub-app16-06.boldchat.com
  • eub-app16-07.boldchat.com
  • eub-app16-08.boldchat.com
  • eub-app16-09.boldchat.com
  • eub-app16-10.boldchat.com
  • eub-app16-11.boldchat.com
  • eub-app16-12.boldchat.com

Frankfurt

  • eub-app17-01.boldchat.com
  • eub-app17-02.boldchat.com
  • eub-app17-03.boldchat.com
  • eub-app17-04.boldchat.com
  • eub-app17-05.boldchat.com
  • eub-app17-06.boldchat.com
  • eub-app17-07.boldchat.com
  • eub-app17-08.boldchat.com
  • eub-app17-09.boldchat.com
  • eub-app17-10.boldchat.com
  • eub-app17-11.boldchat.com
  • eub-app17-12.boldchat.com

US East (N. Virginia)

  • b-app18-01.boldchat.com
  • b-app18-02.boldchat.com
  • b-app18-03.boldchat.com
  • b-app18-04.boldchat.com
  • b-app18-05.boldchat.com
  • b-app18-06.boldchat.com
  • b-app18-07.boldchat.com
  • b-app18-08.boldchat.com
  • b-app18-09.boldchat.com
  • b-app18-10.boldchat.com
  • b-app18-11.boldchat.com
  • b-app18-12.boldchat.com
  • b-app18-13.boldchat.com
  • b-app18-14.boldchat.com
  • b-app18-15.boldchat.com
  • b-app18-16.boldchat.com
  • b-app18-17.boldchat.com
  • b-app18-18.boldchat.com
  • b-app18-19.boldchat.com
  • b-app18-20.boldchat.com
  • b-app18-21.boldchat.com
  • b-app18-22.boldchat.com
  • b-app18-23.boldchat.com
  • b-app18-24.boldchat.com
  • b-app18-25.boldchat.com
  • b-app18-26.boldchat.com
  • b-app18-27.boldchat.com
  • b-app18-28.boldchat.com
  • b-app18-29.boldchat.com
  • b-app18-30.boldchat.com
  • b-app18-31.boldchat.com
  • b-app18-32.boldchat.com
  • b-app18-33.boldchat.com
  • b-app18-34.boldchat.com
  • b-app18-35.boldchat.com
  • b-app18-36.boldchat.com
  • b-app18-37.boldchat.com
  • b-app18-38.boldchat.com
  • b-app18-39.boldchat.com
  • b-app18-40.boldchat.com
  • b-app18-41.boldchat.com
  • b-app18-42.boldchat.com
  • b-app18-43.boldchat.com
  • b-app18-44.boldchat.com
  • b-app18-45.boldchat.com
  • b-app18-46.boldchat.com
  • b-app18-47.boldchat.com
  • b-app18-48.boldchat.com
  • b-app18-49.boldchat.com
  • b-app18-50.boldchat.com
  • b-app18-51.boldchat.com
  • b-app18-52.boldchat.com
  • b-app18-53.boldchat.com
  • b-app18-54.boldchat.com
  • b-app18-55.boldchat.com
  • b-app18-56.boldchat.com
  • b-app18-57.boldchat.com
  • b-app18-58.boldchat.com
  • b-app18-59.boldchat.com
  • b-app18-60.boldchat.com

US West (Oregon)

  • b-app19-01.boldchat.com
  • b-app19-02.boldchat.com
  • b-app19-03.boldchat.com
  • b-app19-04.boldchat.com
  • b-app19-05.boldchat.com
  • b-app19-06.boldchat.com
  • b-app19-07.boldchat.com
  • b-app19-08.boldchat.com
  • b-app19-09.boldchat.com
  • b-app19-10.boldchat.com
  • b-app19-11.boldchat.com
  • b-app19-12.boldchat.com
  • b-app19-13.boldchat.com
  • b-app19-14.boldchat.com
  • b-app19-15.boldchat.com
  • b-app19-16.boldchat.com
  • b-app19-17.boldchat.com
  • b-app19-18.boldchat.com
  • b-app19-19.boldchat.com
  • b-app19-20.boldchat.com
  • b-app19-21.boldchat.com
  • b-app19-22.boldchat.com
  • b-app19-23.boldchat.com
  • b-app19-24.boldchat.com
  • b-app19-25.boldchat.com
  • b-app19-26.boldchat.com
  • b-app19-27.boldchat.com
  • b-app19-28.boldchat.com
  • b-app19-29.boldchat.com
  • b-app19-30.boldchat.com
  • b-app19-31.boldchat.com
  • b-app19-32.boldchat.com
  • b-app19-33.boldchat.com
  • b-app19-34.boldchat.com
  • b-app19-35.boldchat.com
  • b-app19-36.boldchat.com
  • b-app19-37.boldchat.com
  • b-app19-38.boldchat.com
  • b-app19-39.boldchat.com
  • b-app19-40.boldchat.com
  • b-app19-41.boldchat.com
  • b-app19-42.boldchat.com
  • b-app19-43.boldchat.com
  • b-app19-44.boldchat.com
  • b-app19-45.boldchat.com
  • b-app19-46.boldchat.com
  • b-app19-47.boldchat.com
  • b-app19-48.boldchat.com
  • b-app19-49.boldchat.com
  • b-app19-50.boldchat.com
  • b-app19-51.boldchat.com
  • b-app19-52.boldchat.com
  • b-app19-53.boldchat.com
  • b-app19-54.boldchat.com
  • b-app19-55.boldchat.com
  • b-app19-56.boldchat.com
  • b-app19-57.boldchat.com
  • b-app19-58.boldchat.com
  • b-app19-59.boldchat.com
  • b-app19-60.boldchat.com
     

[ACTION] - If you allow-list Agent (formerly known as BoldChat) by IP, here are the IPs you will need to allow list in your organization in order to avoid connectivity issues with the new Data Center on March 5th:

Ireland

  • 34.246.13.84
  • 54.155.23.252
  • 46.137.48.149
  • 34.254.28.102 5
  • 2.49.80.82
  • 63.33.229.51
  • 54.75.218.75
  • 54.216.206.26
  • 34.246.145.123
  • 52.212.90.186 5
  • 4.77.148.81
  • 34.251.74.92

Frankfurt

  • 3.122.210.241
  • 18.192.113.151
  • 3.68.175.68
  • 18.196.140.195
  • 3.68.178.202
  • 18.194.200.171
  • 18.198.110.95
  • 18.192.7.127
  • 3.65.55.253
  • 3.64.238.21
  • 3.64.109.185
  • 18.198.123.19

US East (N. Virginia)

  • 107.20.174.150
  • 18.214.187.122
  • 18.233.1.191
  • 18.233.79.13
  • 18.233.95.16
  • 18.235.217.246
  • 23.20.109.244
  • 23.20.253.55
  • 23.21.167.45
  • 3.225.82.217
  • 3.231.116.10
  • 3.233.101.193
  • 3.233.111.68
  • 3.89.11.143
  • 34.194.220.164
  • 34.195.70.224
  • 34.206.233.8
  • 34.224.220.30
  • 34.228.50.168
  • 34.230.132.34
  • 34.234.140.16
  • 34.236.195.183
  • 34.236.241.191
  • 34.236.83.24
  • 35.153.29.169
  • 35.168.4.139
  • 35.174.34.186
  • 35.175.163.252
  • 44.193.104.84
  • 44.193.127.42
  • 44.193.247.199
  • 44.194.100.181
  • 44.194.137.67
  • 44.194.208.207
  • 44.194.25.105
  • 44.194.73.45
  • 44.195.9.217
  • 52.20.221.203
  • 52.207.76.221
  • 52.3.185.243
  • 52.44.154.238
  • 52.71.46.102
  • 52.71.71.29
  • 52.86.214.10
  • 54.144.250.111
  • 54.147.215.157
  • 54.152.188.62
  • 54.156.114.221
  • 54.156.48.172
  • 54.160.133.4
  • 54.160.196.54
  • 54.161.46.241
  • 54.163.230.72
  • 54.164.146.233
  • 54.166.248.29
  • 54.198.148.121
  • 54.226.231.169
  • 54.236.144.76
  • 54.84.163.19
  • 75.101.233.126

US West (Oregon)

  • 34.210.135.97
  • 34.213.254.212
  • 35.160.120.77
  • 35.161.150.98
  • 35.167.75.41
  • 35.80.158.24
  • 35.80.170.11
  • 35.80.194.13
  • 35.80.219.155
  • 35.81.101.126
  • 35.81.88.49
  • 35.82.204.234
  • 35.82.9.197
  • 35.83.116.129
  • 44.224.251.121
  • 44.226.244.84
  • 44.228.212.110
  • 44.230.126.250
  • 44.230.250.92
  • 44.231.153.96
  • 44.231.91.181
  • 44.232.19.77
  • 44.233.171.9
  • 44.237.129.5
  • 44.237.13.169
  • 44.237.28.122
  • 44.237.55.136
  • 44.238.219.222
  • 44.239.247.221
  • 44.241.208.142
  • 44.242.45.116
  • 44.242.53.108
  • 52.11.10.7
  • 52.12.160.123
  • 52.12.220.61
  • 52.13.124.118
  • 52.24.130.127
  • 52.32.198.76
  • 52.32.241.86
  • 52.35.142.151
  • 52.36.48.105
  • 52.38.106.12
  • 52.38.150.246
  • 52.40.239.227
  • 52.40.30.115
  • 52.41.198.141
  • 52.41.47.191
  • 54.184.129.107
  • 54.184.178.79
  • 54.184.90.24
  • 54.188.53.58
  • 54.200.230.213
  • 54.200.68.184
  • 54.201.26.44
  • 54.203.206.223
  • 54.212.170.137
  • 54.212.95.24
  • 54.69.131.234
  • 54.69.177.37
  • 54.69.85.11
     

How to set up a Microsoft Teams messaging channel

To use Microsoft Teams for communicating with your customers, you need to create a messaging channel in Bold360 AI.

Make sure the following steps have been completed:

  • You have created an API key in Bold360 AI that meets the following criteria:
    • It is set up to have access to the knowledge base you selected in the previous step
    • It has all permissions set to write
    • Its allowed IP ranges are set to 0.0.0.0-255-255.255.255

      Go to Admin Center > API Keys in Bold360 AI to see a list of already existing API keys or to create one. See How to create an API key in Bold360 AI to learn more.

  • If you want to use live agents too, make sure you have integrated Bold360 AI with Bold360 Agent.
  1. In the AI Console, go to Touchpoints > Widgets.
  2. Under Conversation configuration, select Messaging applications.
  3. On the Channels tab, choose the plus icon to create a new channel.

    Result: You are taken to the Create Channel page.

  4. On the Create Channel page, enter a name and a description for the channel.
  5. Select the knowledge base that the bot should use to serve your customers.
  6. Enter the knowledge base API key.

    You need to provide an API key here that meets the following criteria:

    • It is set up to have access to the knowledge base you selected in the previous step
    • It has all permissions set to write
    • Its Allowed IP ranges are set to 0.0.0.0-255-255.255.255

      Go to Admin Center > API Keys in Bold360 AI to see a list of already existing API keys or to create one. See How to create an API key in Bold360 AI to learn more.

  7. Select Bold360ai for Escalation Provider Type.
    • Make sure you have the correct Bold360 integration URL.

      Your integration is either in the US or EU region. For an EU-based integration, add -eu into the integrations field. Otherwise, leave it empty.

    • In the API Key filed, enter your Bold360 Agent API key.

      To get this API key, log in to the Bold360 Admin Center and go to Integrations > API Access Keys and create a new key. Make sure you select the correct chat window.

    • Select the Smart Advisor Knowledge Base that will offer potential responses to your human agents during chat.
  8. Select Microsoft Teams for Provider.
  9. In the Channelid field, enter your Microsoft Office tenant ID.

    To get your tenant ID, in Microsoft Teams, right-click a team and select Get link to team. Ask your administrator if you need help.

  10. Save your channel settings.
What's next?
  • Make sure Allow sideloading of external apps and Allow external apps in Microsoft Teams are enabled and use the .zip file attached to this article to add the Bold360 app to Microsoft Teams. For more information refer to Microsoft?s documentation.
  • Read this article to learn how to configure your messaging channel further.
  • See this article to complete additional configuration in Bold360 AI.
  • Read this article for additional configuration steps in Bold360 Agent.

The aim of this article is to help you how to set up Azure for Office365/Outlook email integration in Bold360 with the OAuth 2.0 authentication method.
 

Step 1: Set up an Outlook email account

It is possible to integrate both normal mailboxes and shared mailboxes with Genesys DX.

POP3 and IMAP is enabled by default, but Authenticated SMTP is not. The following guide will help you to enable it for both normal and shared mailboxes.

Note: The password for this account is necessary for the authentication process. Make sure you have the email account configured and the password at hand!

 Mailbox SMTP configuration

  1. Go to admin.microsoft.com.
  2. Go to Users > Active users.
  3. Add a new user or select an existing user.
  4. Click on Mail.
  5. Click on Manage mail apps.
  6. Make sure that the desired email receiving protocol and Authenticated SMTP is allowed (Authenticated SMTP is NOT allowed by default).

Shared mailbox configuration

  1. Go to admin.microsoft.com.
  2. Go to Teams & Groups > Shared mailboxes.
  3. Add a mailbox or note the name of the mailbox you are going to use.
  4. Go to Users > Active Users and find the account corresponding to the shared mailbox. The user is automatically created when you create a shared mailbox.
  5. Select the user.
  6. Click Licenses and apps.
  7. Add a license for an Outlook 365 or AD app.
    If you do not have the correct license, the following error message will appear in the next step: This user doesn't have an Exchange Online license.
  8. Go to the Mail tab.
  9. Click on Manage email apps.

    Make sure that the desired email receiving protocol and Authenticated SMTP is allowed (Authenticated SMTP is NOT allowed by default).
  10. Click  Save changes.
  11. Click the Back button.

Note: If you want, you can create a password for the created user, but it is not required.

Add a user to a shared mailbox

  1. Go to admin.microsoft.com.
  2. Go to Teams & Groups > Shared mailboxes.
  3. Select the relevant shared mailbox.
  4. Click Edit under Members.
  5. Click Add members and select the users you wish to add to the shared mailbox.


Step 2: Register an app

You have to register an application in Azure for the authentication process. One app registration can be used with several mailboxes in Genesys DX.

  1. Login into Azure portal (https://portal.azure.com) with your credentials.
  2. Select Azure Active directory on the Home Screen.
  3. Select Application registrations.
  4. Select New registrations.
    • Specify a name.
    • Select Single tenant.
    • Select Web as platform.
    • Enter the Redirect URL: https://admin.bold360.com/email/authorize
  5. After a successful registration you can see the details of the application.

Note: if you are troubleshooting an existing configuration, make sure that the platform is set to Web in the Authentication tab, where you also have to set the Redirect URL.
 
If the platform is not set to Web, remove the platform, and add a new "Web" platform. Checkboxes are not necessary.


Step 3: Get the secret key

A secret key is necessary for the authentication process.

  1. Go to Certificates & Secrets in the Azure application page.
  2. Click the New Client Secret button.
  3. The description and the expiration time are arbitrary. Click on Add to continue.
  4. After a successful generation the new client secret is visible. Make sure to grab the Value and not the ID (the secret's ID is not needed). 


Step 4: Set the API permissions

In order that Genesys DX be able to receive emails and send emails through your mailboxes, you have to enable specific API permissions for the Azure app.

  1. Go to API permissions in the Azure application page.
  2. Click on Add a permission.
  3. Select Microsoft Graph.
  4. Select Application permissions.
  5. Search for "mail", then select Mail.ReadWrite and Mail.Send, then click Add permissions.
  6. Default status for the permissions is Not granted for.... Click Grant admin consent for... 
  7. Once the consent has been granted, statuses reflect the correct state.

Note: App permission changes might take up to 30 minutes to take effect. You might get an error in Genesys DX if you try to connect when the permissions are still not applied. 


Step 5: Genesys DX email account configuration

Email in Genesys DX operates like an email client application on a desktop (for example, Microsoft Outlook or Mozilla Thunderbird). This means that incoming email messages are received by and stored on your email server (Office 365 in our case). Genesys DX periodically synchronizes with the server and downloads any new emails from the email server.

  1. Go to admin.bold360.com, navigate to Channels > Email > Email accounts and click Create New.
  2. Create a new account:
    • Configuration name - arbitrary name only visible for Genesys DX users.
    • Sender email address - arbitrary email address that will show up as the sender email address in emails sent from this Genesys DX email account. This is not used in the authentication.
    • Friendly sender name - arbitrary name that will show up as the sender name in emails sent from this Genesys DX email account. This is not used in the authentication. 
    • Email client - MS Office 365.
    • User name - The full email address of the Outlook mailbox where the incoming emails will be downloaded from. 
    • Server, Port, Secure connection (SSL) and Server type - users typically choose IMAP with SSL. The official Office 365 server names and ports can be found in the following link: https://support.microsoft.com/en-us/office/pop-imap-and-smtp-settings-8361e398-8af4-4e97-b147-6c6c4ac95353
    • Folder - the folder in the Office 365 mailbox there the incoming emails are to be downloaded from. The Refresh folder list button will only be operational after you authorize. 
    • Tenant ID, Client ID and Client secret (value) - from the AD application 
    • Outgoing server - outgoing emails can be sent from Genesys DX mail servers, or there is an option to use a custom SMTP server. The Office 365 SMTP server settings can be found under the link in step F. 
  3. Click Save to go back to the Email Accounts page. Click on Authorize for the account you have just set up.
  4. A popup browser window appears with a Microsoft login page. Log in with with the email account of the mailbox.

    Note: if the mailbox is a shared mailbox, make sure to activate it's user in the Microsoft 365 admin center, and allow Authenticated SMTP in the Manage email apps settings menu. 
  5. Once the authorization is done, click on the Test button. It might take around 30 seconds for the tests to go through (it tests the POP3/IMAP and SMTP connections).
  6. If the test was successful, a message appears under the button. From now on, incoming emails are visible in the Agent Workspace at agent.bold360.com. 

To use the chatbot, you must first integrate the Bold360 Agent and AI platforms.

Note: This feature is only available with a Bold360 AI platform account.
  1. Enable the Bold360 ai integration in the Bold360 Admin Center as follows:
    1. In the Web Admin Center, go to Integrations > Genesys DX ai.
    2. Enter your Bold360 AI platform account name, host URL, and API key that you can copy from your Bold360 Admin Console.

      To find this API key, log in to your organization's Bold360 AI platform account and go to the Admin Center > API keys tab.

    3. Click Integrate.
  2. Set up an AI-enabled chat window so that both your customers and agents receive help from the chatbot:
    1. In the Web Admin Center, go to Channels > Chat > Chat Windows and create or edit a chat window.
    2. On the General tab, select Genesys DX ai chat window for chat window type.
    3. Select the Bold360 ai chat window configuration from the Floating Widget Configuration drop-down list that you want to use. Smart Advisor will use the selected knowledge base to answer customer queries.

      Result:

      Note: You can only customize an AI chat window in the Bold360 Admin Console.
    4. Optionally, to define a separate knowledge base for your agents, select a Knowledge Base for Agents from the respective drop-down list.

      Result: This way, you can define an additional knowledge base that agents can use when the bot does not find a suitable answer. Additionally, agent answers would not influence your primary knowledge base's statistics on the Bold360 ai Dashboard.

    5. Save your changes.
  3. Set up your AI-enabled chat window's escalation path, which is called channeling policy in the Bold360 Admin Console:
    1. Create a Bold360 API access key.
      • In the Bold360 Admin Center, go to Integrations > API Access Keys and click Create New.
      • Name your API key and select a Website and a Chat window that you want to associate with chats.
      • Select the Department where you want to direct your chats.
      • Click Save and copy your API access key.

      Result:

      Note: After closing this dialog you will not be able to view this key.
    2. In the Bold360 Admin Console, go to Channeling > Policy and click Add channel.

      Channel setup requires the Bold360 API access key that you have previously created.

    Remember: To implement a chat window, you must associate it with a chat button.
    Important: When you generate your chat button HTML code, you must select the same Website that you have defined for your API Access Key in Step 3.

    Result: The integration is now available for your agents. After integration, the Smart Advisor panel automatically replaces the Canned Messages panel when a chat is transferred from the chatbot. For more information, see Smart Advisor: Chatbot-assisted conversations.


    Figure 1. Agent's view when Genesys DX ai is activated

After integrating Genesys DX ai, you may also do the following:

  • Set up the knowledge base that contains help articles. The chatbot presents the same knowledge base articles in the AI-enabled chat window to customers and on the Smart Advisor panel to agents. You can define multiple knowledge bases to serve different audiences, but every knowledge base must be associated with a separate chat window definition in the Bold360 Admin Center.
  • Customize the AI-enabled chat window. In the Bold360 Admin Console, go to Touchpoints > Floating widget and click Personalize.

For information on working with the Bold360 Admin Console, see the Bold360 ai support page.

What cookies and local storage entities are used by Digital DX AI widgets?

The following table lists all customer-side cookies used in widgets to provide reporting and analytics capabilities. Customers stay anonymous and their unique visitor IDs are only used to group customer queries in reports.

Cookie name Example value Description
bc.visitor_token 5d1ab47f-f7de-14c9-0045-b8d7c8a7c18b Identifies the visitor in Business Insights, used also when navigating across subdomains and by the customer information hub.
u v2,EU1,38DA82AC634C0F31 The cookie is used by visitors' engagement tracking in Bold360Ai's reporting system and leveraged by internal analytics tools. If the 'u' cookie is blocked, then the Engagement and Interaction data in legacy AI reporting is distorted.
35EBBB48 cv_4#t_ED43D8F69#v_1#lv_ ED43D8F57#e_00000000 Legacy visitor journey tracking cookie. There is one cookie per visitor journey.

Digital DX AI also uses customer-side localStorage entities in Conversational widgets to provide widget state persistence. You can change it to sessionStorage with the public widget API, but the content of the storage remains the same:

Storage key Storage value Description
bc.visitor_token 5d1ab47f-f7de-14c9-0045-b8d7c8a7c18b To provide better persistence and reporting, the unique visitor token is also currently stored in the localStorage of the customer's website.
nanorep.float.conversational. product_demo.kb904641352 {"convId":"7835951554271442645", "convLog":[...]} Stores widget state, including current conversation ID, chat history, active live-chat channel information and so on.


List of cookies used by Digital DX

Genesys DX/Bold360 cookies track the actions associated with a website customer's activity on this website to allow the website owner to provide accurate, helpful and feature-rich web chat features.

This data is handled as follows:

  • Suppressible by the customer who limits browser cookies
  • Used to identify behavior of a user on the website for purposes of Digital DX chat features (e.g. aggregated performance/analytics reporting, chat, visit, conversion history individual reporting)
  • Only useful during the visit or upon a subsequent visit
  • Not available between customers
  • Protected by the Digital DX secure infrastructure

The first five (5) are targeting types for uniquely identifying the website user within the Digital DX service and are used for things like targeted chat invitation, allowing a chat agent to better assist the website customer during a chat session, and for aggregate reporting. The latter four (4) are strictly necessary and only used for chat-related functionality.

Personalization

This cookie is used for providing the proper content based on context settings (query parameter).

Cookie nrContext2
Host 1st Party Website
Type 1st Party
Category Performance/Functionality
Expiration End of session
Purpose Bold360Ai is providing context-based, tailored content to customers in order to find the most relevant answers to their problem. The 'nrContext2' cookie is stored for collecting the right context from the user's machine.  
Creation When the website user loads a page containing a chat button/customer monitoring script or when a chat session launches.

Harmony

These cookies are used for seamless integration of AI interactions (search, botchat) and live agent chats.

Cookie _bc-chat-ended
Host 1st Party Website
Type 1st Party
Category Performance/Functionality
Expiration End of session
Purpose Stores a unique, anonymous identifier (VisitID) to allow Digital DX to recognize a particular browsing session or visit to the website.
Creation When the website user loads a page containing a chat button/customer monitoring script or when a chat session launches.
Cookie _bcContinueChat
Host 1st Party Website
Type 1st Party
Category Performance/Functionality
Expiration End of session
Purpose Stores a unique, anonymous identifier (VisitID) to allow Digital DX to recognize a particular browsing session or visit to the website.
Creation When the website user loads a page containing a chat button/customer monitoring script or when a chat session launches.
Cookie _bcvm_vid_{visitorParam}
Host 1st Party Website
Type 1st Party
Category Essential
Expiration End of session
Purpose Stores a unique, anonymous identifier (VisitID) to allow Digital DX to recognize a particular browsing session or visit to the website.
Creation When the website user loads a page containing a chat button/customer monitoring script or when a chat session launches.
Cookie _bcvm_vrid_{visitorParam}
Host 1st Party Website
Type 1st Party
Category Essential
Expiration Persistent
Purpose Stores a unique, anonymous identifier (VisitorID) to allow Digital DX  to recognize the website user during current and subsequent visits to the website.
Creation When the website user loads a page containing a chat button/customer monitoring script or when a chat session launches.
Cookie bc_pv_end
Host 1st Party Website
Type 1st Party
Category Performance/Functionality
Expiration End of session / 30 seconds
Purpose Improves accuracy of pageview tracking when a website user (customer) moves between pages.
Creation When the website user changes pages.
Cookie bc-visit-id
Host bold360.com
Type 3rd Party
Category Performance/Functionality
Expiration End of session
Purpose Same as _bcvm_vid_{visitorParam}. Stores a unique, anonymous identifier (VisitID) to allow Digital DX to recognize a particular browsing session or visit to the website.
Creation When the website user loads a page containing a chat button / customer monitoring script or when a chat session launches.
Cookie bc-visitor-id
Host bold360.com
Type 3rd Party
Category Essential
Expiration Persistent
Purpose Same as _bcvm_vrid_{visitorParam}. Stores a unique, anonymous identifier (VisitorID) to allow Digital DX to recognize the website user during current and subsequent visits to the website.
Creation When the website user loads a page containing a chat button / customer monitoring script or when a chat session launches.
Cookie _bc-curl
Host 1st Party Website
Type 1st Party
Category Performance/Functionality
Expiration End of session
Purpose Identifies the state of the layered chat window when the website user changes pages on the website so the chat window can be maintained.
Creation When the layered chat window is opened.
Cookie _url-cid
Host livechat.boldchat.com
Type 3rd Party
Category Performance/Functionality
Expiration End of session
Purpose Used to identify the cached URL of the open chat window for the website user.
Creation When the layered chat window is opened.
Cookie _bc_aa*

(_bc_aas, _bc_aaq, _bc_aasi-XXX-XXX-viewed, _bc_aasc)

Host livechat.boldchat.com
Type 3rd Party
Category Performance/Functionality
Expiration End of session
Purpose Used to identify the current state of auto-answers being shown to the customer within the chat window.
Creation When auto-answers is shown and used within the chat window, and only if Local Storage is not supported by the browser.
Cookie _reboot-cid
Host livechat.boldchat.com
Type 3rd Party
Category Essential
Expiration End of session
Purpose Used to track the chat URL to be reloaded after a Rescue-initiated reboot (in order to reconstitute the chat session).
Creation When a Rescue-initiated reboot is triggered.
Cookie _bcck
Host livechat.boldchat.com
Type 1st party
Category Performance/Functionality
Expiration 2 hours
Purpose Used for chat validation, chat start.
Creation When the website user loads a page containing a chat button / customer monitoring script or when a chat session launches.
Cookie _bc-escalation
Host livechat.boldchat.com
Type 1st party
Category Performance/Functionality
Expiration End of session
Purpose Stores the escalation state.
Creation When the website user loads a page containing a chat button / customer monitoring script or when a chat session launches.
Cookie _bc-escalation-time
Host livechat.boldchat.com
Type 1st party
Category Performance/Functionality
Expiration 2 hours
Purpose Keeps chat in sync when refreshed or new tabs are opened.
Creation When the website user loads a page containing a chat button / customer monitoring script or when a chat session launches.
Cookie _bc-prechat-submitted_{chat_id}
Host livechat.boldchat.com
Type 1st party
Category Performance/Functionality
Expiration 24 hours
Purpose Keeps prechat form in sync when refreshed or new tabs are opened. Only placed when prechat feature is used.
Creation When the website user loads a page containing a chat button / customer monitoring script or when a chat session launches.
Cookie csrf-token
Host livechat.boldchat.com
Type 1st party
Category Performance/Functionality
Expiration End of session
Purpose Stores security token for safe form submission.
Creation When the website user loads a page containing a chat button / customer monitoring script or when a chat session launches.

Support Center Customization

The support center is fully HTML supported and you can change the templates within its HTML code.

Tip: Check out this video to see support center configuration in action.
This video is currently under construction. Thank you for your patience.
  1. Go to Touchpoints > Support Center and click the Page Templates tab.

    Result: The HTML Master page set-up is displayed, which you can then customize using placeholders (documented here).

  2. Use the special syntax in the tables below to insert the dynamic content (i.e article body) to your pages.
    Table 1. Entity Selector Placeholders

    Attributes

    Syntax

    Description

    Name

    Type

     

    < nR:Entity type="label" id="B025" >

    Selects the specified label by ID

    label

    Entity Selector

     

    < nR:Entity type="article" id="B025" >

    Selects the specified article by ID

    article

    Entity Selector

    Table 2. Repeater Placeholders

    Attributes

    Syntax

    Description

    Name

    Type

    labelId = -1 articles with no parent labellabelId = < %Label.ID% > current label ID, maxItems, sort(=faq), days

    < nR:Repeater type="article" sort='faq' labelId='1234' > ... < /nR:Repeater >

    Repeater's enclosed code for each article in the specified enumeration. For information on sorting articles in your Support Center, see How to change the sorting of support center articles

    article

    Repeater

    labelId, maxItems, sort(=faq), days

    < nR:Repeater type="attachment"> ... < /nR:Repeater >

    Repeater's enclosed code for each attachment for current article

    attachment

    Repeater

     

    < nR:Repeater type="phrasings"> ... < /nR:Repeater >

    Repeater's enclosed code for each phrasing for current article

    phrasing

    Repeater

    type='root'/'all'/'nestedUnder/list' maxItems='10' (OPTIONAL)

    < nR:Repeater type="label"> ... < /nR:Repeater >

    Repeats for each Label

    Label

    Repeater

      < nR:IF condition="Site.IsMultiKB" > < nR:Repeater type="language" > < a href="< %Lang.URL% >" >< %Lang.Code% >< /a > < /nR:Repeater > < /nR:IF > Repeats for each separate language KB Language KB Repeater
    Table 3. Value Placeholders

    Attributes

    Syntax

    Description

    Name

    Type

     

    < %Site.Name% >

    Configured site name

    Site.Name

    Value

     

    < %Site.Domain% >

    Configured site domain

    Site.Domain

    Value

     

    < %Site.URL% >

    Configured site URL (includes http/s)

    Site.URL

    Value

     

    < %Site.Account% >

    Configured site Account

    Site.Account

    Value

     

    < %Site.KBID% >

    Current knowledge-base ID

    Site.KBID

    Value

     

    < %Label.Name% >

    Label name

    Label.Name

    Value

     

    < %Label.ID% >

    Label ID

    Label.ID

    Value

     

    < %Label.Link% >

    Link to dedicated label page

    Label.Link

    Value

     

    < %Label.Count% >

    Amount of elements in label

    Label.Count

    Value

     

    < %Label.PositionInPath% >

    0 based index of position in current path, -1 returned if label is not in path

    Label.PositionInPath

    Value

     

    < %Article.ID% >

     

    Article.ID

    Value

     

    < %Article.Title% >

     

    Article.Title

    Value

     

    < %Article.Body% >

     

    Article.Body

    Value

     

    < %Article.Link% >

     

    Article.Link

    Value

     

    < %Article.AttachmentCount% >

     

    Article.AttachmentCount

    Value

     

    < %Article.Attachment.URL% >

     

    Article.Attachment.URL

    Value

     

    < %Article.Attachment.Name% >

     

    Article.Attachment.Name

    Value

     

    < %Article.MetaDescription% >

    Articles Meta-Description

    Article.MetaDescription

    Value

     

    < %Article.PhrasingCount% >

     

    Article.PhrasingCount

    Value

     

    < %Article.Phrasing% >

     

    Article.Phrasing

    Value

     

    < %Repeater.Ordinal% >

    The ordinal for current repeater loop

    Repeater.Ordinal

    Value

    Use in condition "Page.Type=Home" to check page type:Home/Label/Article

    < %Page.Type% >

    Determines the current page type

    Page.Type

    Value

    checks if current Label is the current page label

    < nR:IF condition= "Article.IsPageArticle" >

     

    Article.IsPageArticle

    Value (condition only)

    check if the current Article is the current page article

    < nR:IF condition= "Label.IsPageLabel" >

     

    Label.IsPageLabel

    Value (condition only)

     

    < %Site.NanorepDomain% >

    Places Digital DX AI servers domains

    Site.NanorepDomain

    Value

     

    < %Page.Error% >

    The error that is displayed

       

Data validation code samples

Sample generated HTML is given below. When HTML is generated with an associated Website definition that has Data validation enabled, the generated HTML includes the comment /* Requires Authentication */. This provides sample data that has not been validated. You can add or remove what is needed from the data on your server, then validate the data and replace the value (either with the hash appended in the case of HMAC-SHA512, or just the raw encrypted PGP data).

For chat launches, it is best to use the function callback method to make an asynchronous call to your server to validate the chat and return the validated data.

Note: This is a self-launching anonymous function that is initially invoked indirectly by another function.

Sample Code ? Static Chat Button

<!-- BoldChat Live Chat Button HTML v5.00 (Type=Web,ChatButton=7.1 T,Website=Tilapia  -->
<div style="text-align: center; white-space: nowrap;">
<script type="text/javascript">
  var bccbId = Math.random(); document.write(unescape('%3Cdiv id=' + bccbId + '%3E%3C/div%3E'));
  var _bcvma = _bcvma || [];
  _bcvma.push(["setAccountID", "2307475884"]);
  _bcvma.push(["setParameter", "WebsiteID", "665123557559499"]);
  _bcvma.push(["setParameter", "SecureParameters", function(callback, type){ callback("61D2774599ABE6B36086DB65A32571F8D43F0D57170CFDE5A9CCF49AB38DD235FC151FD15F2F557163C73155E031C0B401D9124A5297746381791D589F7E6273Type=chat&ChatButtonDefID=58444531713309044&CustomURL=http://boldchat.com&VisitRef=a ref&VisitInfo=info&VisitEmail=email@gmail.com&VisitPhone=3166704000&URL=http://boldchat.com&ChatKey=Something unique to chat 1400085276518&VisitorKey=something unique to visitor&Expiration=1400085306518"); }]);
  _bcvma.push(["addStatic", {type: "chat", bdid: "58444531713309044", id: bccbId}]);
  var bcLoad = function(){
    if(window.bcLoaded) return; window.bcLoaded = true;
    var vms = document.createElement("script"); vms.type = "text/javascript"; vms.async = true;
    vms.src = ('https:'==document.location.protocol?'https://':'http://') + "vmss.boldchat.com/aid/2307475884/bc.vms4/vms.js";
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(vms, s);
  };
  if(window.pageViewer && pageViewer.load) pageViewer.load();
  else if(window.addEventListener) window.addEventListener('load', bcLoad, false);
  else window.attachEvent('onload', bcLoad);
</script>
 <span style="font-family: Arial; font-size: 8pt; color: black;"><a href="http://www.boldchat.com" style="text-decoration: none; color: black;">Live chat</a> by BoldChat</span>
</div>
<!-- /BoldChat Live Chat Button HTML v5.00 -->
Important: When you define the SecureParameters callback, you can use the type argument to specify three different types of events: chat, visit, and conversion. These event types are especially useful when you want to implement PGP encryption for only a selected event type. For example, you may want to encrypt chat events (when the customer clicks the chat button), but not every visit event (when the page with the chat window code loads). To define event types, you can do the following:
_bcvma.push(["setParameter", "SecureParameters", function(callback, type) {
            if (type == "chat") {
                callback(getChatPGPEncryption());
            } else if (type == "visit") {
                callback(getVisitPGPEncryption());
            }
            else if (type == "conversion") {
                callback(getConversionPGPEncyprtion());
            }
        }]);

Sample Code ? Text Chat Button

<!-- BoldChat Live Chat Button HTML v5.00 (Type=HTML,ChatWindow=7.1 T,Department=Billing,Website=Tilapia 2 -->
<div style="text-align: center; white-space: nowrap;">
<script type="text/javascript">
  var bccbId = Math.random(); document.write(unescape('%3Cdiv id=' + bccbId + '%3E%3C/div%3E'));
  window._bcvma = window._bcvma || [];
  _bcvma.push(["setAccountID", "2307475884"]);
  _bcvma.push(["setParameter", "WebsiteDefID", "665123557559499"]);
  _bcvma.push(["setParameter", "SecureParameters", function(callback, type){ callback("61D2774599ABE6B36086DB65A32571F8D43F0D57170CFDE5A9CCF49AB38DD235FC151FD15F2F557163C73155E031C0B401D9124A5297746381791D589F7E6273Type=chat&DepartmentID=2401021351553992858&ChatWindowID=8972751348093551233&CustomURL=http://boldchat.com&VisitRef=a ref&VisitInfo=info&VisitEmail=email@gmail.com&VisitPhone=3166704000&URL=http://boldchat.com&ChatKey=Something unique to chat 1400085276518&VisitorKey=something unique to visitor&Expiration=1400085306518"); }]);
  _bcvma.push(["addText", {type: "chat", department: "2401021351553992858", window: "8972751348093551233", available: "Chat is Available", unavailable: "Chat is Unavailable", id: bccbId}]);
  var bcLoad = function(){
    if(window.bcLoaded) return; window.bcLoaded = true;
    var vms = document.createElement("script"); vms.type = "text/javascript"; vms.async = true;
    vms.src = ('https:'==document.location.protocol?'https://':'http://') + "vmss.boldchat.com/aid/2307475884/bc.vms4/vms.js";
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(vms, s);
  };
  if(window.pageViewer && pageViewer.load) pageViewer.load();
  else if(window.addEventListener) window.addEventListener('load', bcLoad, false);
  else window.attachEvent('onload', bcLoad);
</script>
 <span style="font-family: Arial; font-size: 8pt; color: black;"><a href="http://www.boldchat.com" style="text-decoration: none; color: black;">Live chat</a> by BoldChat</span>
</div>
<!-- /BoldChat Live Chat Button HTML v5.00 -->

Sample Code - Customer Monitoring and Floating Chat Button

<!-- BoldChat Customer Monitor HTML v5.00 (Website=Tilapia ,Ruleset=7.1 My Custom Chat Invitation (Ryan),Floating Chat=7.1 (Ryan) floating,Floating Call=- None - -->
<script type="text/javascript">
  var _bcvma = _bcvma || [];
  _bcvma.push(["setAccountID", "2307475884"]);
  _bcvma.push(["setParameter", "WebsiteID", "665123557559499"]);
  _bcvma.push(["setParameter", "SecureParameters", function(callback, type){ callback("7F305427D701DB665E5A273F259C9B1E6EFED73B512CCB779E7D31FCA789FE8488AA179278ED2F0DF5845F209FD1CC6A0FF6E27BD2151F218F73F4BFF8BF375FType=chat&FloatingChatButtonDefID=660128588754890&VisitName=floating&CustomURL=http://boldchat.com&VisitRef=a ref&VisitInfo=info&VisitEmail=email@gmail.com&VisitPhone=3166704000&URL=http://boldchat.com&ChatKey=Something unique to chat 1400085276518&VisitorKey=something unique to visitor&Expiration=1400085306518"); }]);
  _bcvma.push(["addFloat", {type: "chat", id: "660128588754890"}]);
  _bcvma.push(["setParameter", "SecureParameters", "1AC03C6EF0B1C46A96DE1CD9250D40EB4DF5C105837162AA063FC2B2424DA4870B34F1FB17BC35EB60A6576B32E092F6153BD1F9219BBAB388571FFAA183EB64Type=visit&InvitationID=2076721744768832302&VisitName=invite&VisitRef=a ref&VisitInfo=info&VisitEmail=email@gmail.com&VisitPhone=3166704000&URL=http://boldchat.com&ReferrerURL=https://google.com&VisitorKey=something unique to visitor&Expiration=1400085306518"]);
  _bcvma.push(["pageViewed"]);
  var bcLoad = function(){
    if(window.bcLoaded) return; window.bcLoaded = true;
    var vms = document.createElement("script"); vms.type = "text/javascript"; vms.async = true;
    vms.src = ('https:'==document.location.protocol?'https://':'http://') + "vmss.boldchat.com/aid/2307475884/bc.vms4/vms.js";
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(vms, s);
  };
  if(window.pageViewer && pageViewer.load) pageViewer.load();
  else if(window.addEventListener) window.addEventListener('load', bcLoad, false);
  else window.attachEvent('onload', bcLoad);
</script>
<noscript>
<a href="http://www.boldchat.com" title="Live Chat Software" target="_blank"><img alt="Live Chat Software" src="https://vms.boldchat.com/aid/2307475884/bc.vmi?&amp;wdid=665123557559499&amp;secured=1AC03C6EF0B1C46A96DE1CD9250D40EB4DF5C105837162AA063FC2B2424DA4870B34F1FB17BC35EB60A6576B32E092F6153BD1F9219BBAB388571FFAA183EB64Type%3Dvisit%26InvitationID%3D2076721744768832302%26VisitName%3Dinvite%26VisitRef%3Da%20ref%26VisitInfo%3Dinfo%26VisitEmail%3Demail%40gmail.com%26VisitPhone%3D3166704000%26URL%3Dhttp%3A%2F%2Fboldchat.com%26ReferrerURL%3Dhttps%3A%2F%2Fgoogle.com%26VisitorKey%3Dsomething%20unique%20to%20visitor%26Expiration%3D1400085306518" border="0" width="1" height="1" /></a>
</noscript>
<!-- /BoldChat Customer Monitor HTML v5.00 -->

Sample Code ? Conversion Code

<!-- BoldChat Conversion Tracking HTML v5.00 (Website=Tilapia ,ConversionCode=account) -->
<script type="text/javascript">
  var _bcvma = _bcvma || [];
  _bcvma.push(["setAccountID", "2307475884"]);
  _bcvma.push(["addConversion", {
    SecureParameters: "53D52AC941C774AB8A0D0F575D12FE873A2CB861D57172A4E54BE897583E294E3B6B665129AF19DEAD041C6975E84D160B2B4FD0EC825A69FE606729F1F81776Type=conversion&ConversionCodeID=33221100&ConversionAmount=100.0&ConversionInfo=conversion info&ConversionRef=123456&Expiration=1400085306518",
    WebsiteDefID: "665123557559499"
  }]);
  if(window.pageViewer && pageViewer.conversion) pageViewer.conversion(_bcct[_bcct.length-1]);
  var bcLoad = function(){
    if(window.bcLoaded) return; window.bcLoaded = true;
    var vms = document.createElement("script"); vms.type = "text/javascript"; vms.async = true;
    vms.src = ('https:'==document.location.protocol?'https://':'http://') + "vmss.boldchat.com/aid/2307475884/bc.vms4/vms.js";
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(vms, s);
  };
  if(window.pageViewer && pageViewer.load) pageViewer.load();
  else if(window.addEventListener) window.addEventListener('load', bcLoad, false);
  else window.attachEvent('onload', bcLoad);
</script>
<noscript>
<a href="http://www.boldchat.com" title="Live Chat Software" target="_blank"><img alt="Live Chat Software" src="https://vms.boldchat.com/aid/2307475884/bc.vci?wdid=665123557559499&amp;secured=53D52AC941C774AB8A0D0F575D12FE873A2CB861D57172A4E54BE897583E294E3B6B665129AF19DEAD041C6975E84D160B2B4FD0EC825A69FE606729F1F81776Type%3Dconversion%26ConversionCodeID%3D33221100%26ConversionAmount%3D100.0%26ConversionInfo%3Dconversion%20info%26ConversionRef%3D123456%26Expiration%3D1400085306518" border="0" width="1" height="1" /></a>
</noscript>
<!-- /BoldChat Conversion Tracking HTML v5.00 -->

Sample Encryption and Hashing Applications

Here we use the Bouncy Castle APIs for performing PGP encryption: https://www.bouncycastle.org/

The methods illustrated in the samples below validate the parameter data by either encrypting it with the given PGP key or hashing it with the given hash key. The samples can be either embedded inline in jsp/asp.net or pulled out into utility classes/packages.

Java PGP

import java.util.Date;
import java.util.Iterator;
import java.net.URLEncoder;
import java.security.KeyPairGenerator;
import java.security.SecureRandom;
import java.security.Security;
import java.security.MessageDigest;
import org.bouncycastle.openpgp.*;
import org.bouncycastle.openpgp.operator.*;
import org.bouncycastle.openpgp.operator.bc.*;
import org.bouncycastle.bcpg.*;
import java.io.*;
public class PGPUtil {
	public static void main(String[] args) throws Exception {
		Long accountID = 2307475884L;
		Long websiteID = 665123557559499L;
		Long chatButtonID = 58444531713309044L;
		Long floatingChatButtonID = 660128588754890L;
		
		String url = "http://boldchat.com";
		String referrer = "http://google.com";
		String chatKey = "Something unique to chat " + String.valueOf(System.currentTimeMillis());;
		String visitorKey = "something unique to customer";
		String appendData =  "&ChatKey=" + chatKey + "&VisitorKey=" + visitorKey + "&Expiration=" + String.valueOf(System.currentTimeMillis()+30000);
		String customData = "&CustomURL=http://boldchat.com&VisitRef=a ref&VisitInfo=info&VisitEmail=email@gmail.com&VisitPhone=3166704000&URL="
			+ URLEncoder.encode(url, "UTF-8") + "&ReferrerURL=" + URLEncoder.encode(referrer, "UTF-8");
			
		String chat = "ChatButtonDefID=" + chatButtonID + customData + appendData;
		String invite = "FloatingChatButtonDefID=" + floatingChatButtonID + "&InvitationDefID=2076721744768832302&VisitName=floating" + customData + appendData;
		String conversion = "ConversionCodeID=33221100&ConversionAmount=100.0&ConversionInfo=conversion info" + appendData;
		
		
		byte[] encryptionKey = "-----BEGIN PGP PUBLIC KEY BLOCK-----\r\nVersion: BCPG v1.50\r\n\r\nmQENBFNnvrgDCACe2sn+PAHxG/fhfHgFNu4ClODlvrduchKS49AsILEsgB+ie1Yf\r\n3gz1j2JrIcwsEg1AAVPOHJvoXBjLJMoA0TfJbtVXP9S/9Q6XGuQgtOb/HVP5mDTZ\r\nwEGDQH5l6Oxob/xWBD8SAjlQoHzPwEsJMigZiFdQMDCUMIlpcSje3Om2ZGhZ7Qc0\r\ncw0PgR9Wk3NWzX38RqMkxlL+l2UPHvRU3e3nPEDvJSbFORzsd7H/D6iAOG//fd0j\r\nU+dM+vZ7AI4XncFI/OcHxUPISEZK6whg0DjaOMGONZD3bO2RtaeOL+5DD+DMRscW\r\nlYwrGjA4PTQQ+Ba2fyaG73FEUlRdcdwmhmXbABEBAAG0CGJvbGRjaGF0iQE3BBAD\r\nCgAhBQJTZ765AhsDBAsJCAcGFQoIAgkLBAsJCAcGFQoIAgkLAAoJECe+KX41fF/C\r\nO/kIAIEfLLyT9v9vyzgqpuaBh6l+6db0nKmaXB9wlYMWVtCPJ4XtG3paJXuuNbjw\r\nq5R0P+zwa2j5jDhkOHYasAxRvevxuIHjnkU/UIUshJRsFANGQ8d+vZdF9yRLneKB\r\n933svbm9XT/dQtzGVFpP0IgdI8TVmxmzc+2n69AM4u8ScmyBvX9m1cRYEuS9v4tS\r\n13AAp/xgOg4qujno1tc158jOsGE27IxZXyCco2EwJVkz2ms4e0I/4LNOOaqWRvOF\r\n7Nxnj06zfT0Reg4ILk2ERNfG/qVpOwUuYvYc7mCvhJ8UBtHw50v9K01k9/RC61Mf\r\nrjFvV5ynRX259HTeqJl9h+hNeHy5AQ0EU2e+uQEIALVukl/lfWWgyi0ThGoiWwGy\r\nVnunONHiby7CAz6gDtlGdgv1za6IB5RqVbgrGNfDYHyH8gHovXw69tMUA/1ux0YS\r\nC9wE3sXY9iDkdpQMPPobtoQhkPtDm4kEYVb/MYKapdgWxfXA/HOra4br21xiY5zS\r\nCJ1dDMu71uL2xLFtZvDMZjAxVLrbuY/QODfNro6hKiwJZ5X7PnHzJ7VVowlhYq0v\r\n7f61stNC2EGKsjOSUlr22Iw0k6H055xfwLWMrOBcE8Bqqd3GsAD7QypINSSrgSdV\r\n4ebYDRzD41O2elrfElGAB4yhqwLEVYOZ4JuZxJ1q2kpPxZjmjyxfPv7tox7dgxUA\r\nEQEAAYkBHwQYAwoACQUCU2e+uQIbDAAKCRAnvil+NXxfwtUbB/4pmdAV7COUoXdC\r\nNlTj3cpxSxtV0iBdxjneJaNBiR7JIuL/3uoD7bMMMxpXDs5L9s1CLRLUMNarK8pj\r\nkwi3pVhET19r/6I8rEt+V4ddxODjggO6zuc5vMki8tlufna4cyhAyvbGPIZ0C/b0\r\nqGYNnDqactBpzuqT9QjMfUQSMt7acAZIBqK0UvCCwPsuNFz4HFPGoqW3BWmCN7CC\r\nVOCKwecCNCj0Y9SJdOZP8mvXubSeb3inWGuONLpuBF2ciIQCkRO2DtGwEMbdbyoY\r\nZUkdI7Rk793tfLd4mqT/BfikQo0Uyc8yYYbBkr6lPTT8J0mYyFL7SOkf10XoJ+ap\r\n7cLZwjou\r\n=pD7x\r\n-----END PGP PUBLIC KEY BLOCK-----\r\n".getBytes("UTF-8");
		byte[] signingKey = "-----BEGIN PGP PRIVATE KEY BLOCK-----\r\nVersion: BCPG v1.50\r\n\r\nlQPGBFNnvvYDCACOeYaG9ugbRPHpe9P8GWdPFH/kpQlfFM1JVQNnCSC4OWkZhDbu\r\nUuAxWj7XaFWOsctnnjx1DYZ8EE54q1eI2j62KErqM58ZCZpChQ2Xh1L8lvmWPdbU\r\nTdWzjekfVaLGObyydl+LYRepjbrsWT/r2/nDcmJSvjesbwWZkfWH5AxXc0ngHbG0\r\nsnOVMtZBSGSj9AnRTJhcr6GIMh8DevG93NVLHu45nfXHOVkTx6oTlrq7LfYzoRAh\r\nBPu1ydbclbeNXsOJbPlxaEAjPwXsoRMa6xaNb4UHCaJX/7kyU2QeuJGJwk7sU09M\r\n/FADAo31A4dS58unr3RrxNaL4tVJ5jEJECojABEBAAH+CQMCW7scittNNYVgpaZ1\r\ngOyt59uRf4YcTUxq0j8NLqFNRo7kC8j/W/upd3i9OJM+95Bsf+Glr5tgKcnuP8SG\r\nCP8eTNyIUckhTJmUpDY0MRUS1yvOBqp+MpfIxrGZ2pP/fgcW1SUjx5f7kQ2pTJOQ\r\nbbQLeQHIPOJbCa0YbAWYmSES5XQCmZSZLvg9JZ1mptzCaPswyzUAViNQt6tTF8kO\r\nceX1rdAoMSzLoETfmPA6Jb4GdQUO/bJARIH0NqhGiZqanYpn6e8GNeqF/9P2fceH\r\n+VvRVlGa8kq0QSFD/fONmW2O67lxfI7A8tEIqj6I+IimsDNhf7c56eIo779ebHmX\r\nhbWlOTDdbPqskuTZTH58r+2gI+ayzxGQecQWk2KzxO4akhMCUyLZw3cAm2qeIXmo\r\nI8sAUwaPrjXtS9QSoqXzruoIcNIwUFk/G/mGMlkrOoAdP83Pw3qM3MmmcnBQoHRA\r\nDmDEZZtzlEyQUO8CR56HevyzibHRXuBJ6gLNDgWmu8ZbP1bUloC3GoXdkf43fQ4I\r\n+ZBEsjNr2QwLclcavZaKX0O6OUsxnCpt8QbkGEJyLUwT0lTomqpQRyHi96UnvpNb\r\n3j9iRtW82lT6nzP1PLpG47OoYoKr8ZjhmLJ2rMwHBkZoMFOeRqnQDdXScGNIb4IK\r\n3L8AWmtxa0obMpJC5CCaIZeQ9QW8mMVvGL7SShvDoVM0ZBKpAX6OBhPkr55Id5vT\r\nTuM1n0jl8AcreEy3aanvZn2AnWpKcVVbbU0XQxT9ceiX/Do4nVwTLEK4zso1BGQ1\r\nzKRH9EaoXlW/3Lo/qWzGdZ8+2ZoUYlDPEx92bmdL2pYOwCo3ymivWClx0rkGRLON\r\nUeOjrcf1t/gcJPvkcFvG8Ql7ENp2jnZ0e/kNzPLWoLKm+3+AthXKai8MzrTpJbeg\r\nN3LEEHzieRtBtAhib2xkY2hhdIkBNwQQAwoAIQUCU2e+9wIbAwQLCQgHBhUKCAIJ\r\nCwQLCQgHBhUKCAIJCwAKCRCko4tpkJqxpAaqB/9KvEr2uaBPU4rFMF1x72ApFCn2\r\na2Z85bDNVUEy5cba55tlekNLvgcy6X5hsaFM3dFOibkfadPwKd0taneX2AiFsFHn\r\n1XHCoyr2GGnabk4RlEVq/F9mMjwJuRGIrRupx93dldLw4gyK36nWV9VNO6+OEsD2\r\nccYMG7wcQqTnU39YT1d62p45vZLrMrh2H/unGdWMSsT/iPaXKJI9A4AFBc+3EaTx\r\nv0/UxOKmo1Fn1r3mbRG7m3P30Hb/T9czQub1ZMbTnnvBLE0JElWEWDlc7ljNYbed\r\nO0QjRDEXC01bU0CkGYE7Fru6ihqlIxoIagVVO5xNYVF2cHElv/+frbnJV0usnQPG\r\nBFNnvvcBCACui7N911WAh/ObAFiCauw1RBO1rLpLP7Hkb+FppCIDTiWuaYeEF5OX\r\nfZhtaVpzZnTz7zQgbFVPAe4OyktsijBMiR2rPMvRqU2ErJSzcx+YZJVpxqdi0Aso\r\npvzwZP0B4h6qA0FVtXl/pyYNQhXwErdyT42DchWOYcQsmAHJzjuLUpgsSCCvyKha\r\ntlf0NStZTkpMhyhHg/D2kMki94IPW127KbXcuJFFPHOdTRgiuCn4IW62gA1RRJaj\r\ng4s3J2Pesvx48ONoj3NXMTXnSq0WEKNLBS8sHE8B+25/Z4OU/Cg9bh99a3lPmkdg\r\nuEKueCu/Xj2ZE/QcrvtIa/E8dFc+FpG1ABEBAAH+CQMCW7scittNNYVgAtjr+rd9\r\nt/1sln9YmzVjgR4wPC4KJ27/G2BdKq0oxggPdnl50Vn78334j6S8+m7B8yZuZtV+\r\nwJnd6GRkMQe4+GQm5ujuayUmOrODY6M2tw/wIxSxUREpvzyPpg95tyx5bHei0AEM\r\nQC2A0sJZ6zsK1BivP7FZzFPwcdeKbbCaQcYjEH+YrPVWaCwfEmSveKwVjH70nrnS\r\nhCFOp1cjZnroNSaMKqq6pkzfDLD1xeOfKHJmuHd6XYfQ2WaZx0E9STcIQBnAzY0a\r\nyaEs2ckoMZpdrsKRxGBg51mRZLqCl1ZebebISpjn9czYudNgm/5blD7twPo3SOzy\r\nm7oTG1DiMPNwPxQu6X/yc2y6AQSVlZzbv+rnP8Mlv0x6VHkEbbVnA0J8NdGj2oxO\r\ngGUbPOG2ei7c0gBQs6ILQBNEf5L5EBdkx3iRkoD962daPT46BZym7aiuRWdclksB\r\noqjQ3NeePwVtI8sz9tXrCiVoB5FcmqdeqFhwxhZkUFfeSTAAIaxmjSEzMhYCiWjm\r\nKfc3fjDTYE5vi52ahphIFwgj3Vu6CmA7hb1WAuNR3C/oc+C0tXlqtX4joEpdkjwf\r\noNMyEOttiy3Nd2Y2toJ0lGN2LvVbune4JthBrP9oNGoTGS+amk9s2BFLQz+QUdzL\r\nERe+X1ovTuGV0LgILWG32c55b3hJXNwgZeqnGGoPw7+XgSFUb0AzYmDmZWrvPMUJ\r\nnM/bLLEtVsipGdYuBcopLuq9stxSxfXpyugXkuwmLd9GkUIaCup1f7Um+FTy9q8c\r\nAyjFkOojM9V2Zooft2AHHesvm6HGwfyiLKd20WXtv8jBmmx7C44Q9LJksM5zzTeH\r\n97EHMM5TEZu6BjyMCwOrhnYNOae9AIrNFB+Dr6ynm0R6Fn+1xO82RG1VXK6i3di/\r\nh1r8t6jBiQEfBBgDCgAJBQJTZ773AhsMAAoJEKSji2mQmrGkg8gH/0YwswtvEQav\r\nu5GVfEGyFdTgiIkwHzhEDsWjr1KOMR6U+FcdcWvULCSsgXhWSaU4JalORsu93VB1\r\nELG5ju3dR3sPyocvOhxHjcJTSATYltVLlJGD3h46tVr5jo76zC0W3QjFoU8HMh63\r\nch9tY45/B3/UNRAY3ypapxZbnYKiYamAh4oKSjhE+aK3LS8gBIygVu93NQQ6mQiq\r\nc7SfnKxHqYfQaFe3d4ZQQ4oxb/f2NrJXxO22QZQv92o1YdOzYUYib8tFpXj9eps7\r\n3SldYNvQpSOTJLqwwruLwS45rEL+PbI9kEy08YiYE7qWC5JEwS2mhXiuAEFwst1P\r\n2sJmSsT9+mY=\r\n=tUYw\r\n-----END PGP PRIVATE KEY BLOCK-----\r\n".getBytes("UTF-8");
		char[] password = "boldchat".toCharArray();
		
		String encryptedChat = new String(PGPUtil.encrypt(chat.getBytes("UTF-8"), encryptionKey, signingKey, password), "UTF-8");
		String encryptedInvite = new String(PGPUtil.encrypt(invite.getBytes("UTF-8"), encryptionKey, signingKey, password), "UTF-8");
		String encryptedConversion = new String(PGPUtil.encrypt(conversion.getBytes("UTF-8"), encryptionKey, signingKey, password), "UTF-8");
	
		System.out.println("Encrypted Chat SecureParameters: " + encryptedChat);
		System.out.println("Encrypted Invite SecureParameters: " + encryptedInvite);
		System.out.println("Encrypted Conversion SecureParameters: " + encryptedConversion);
		
	}
	
    public static byte[] encrypt(byte[] data, byte[] publicKeyData, byte[] privateKeyData, char[] passwd) throws Exception
    {
    	ByteArrayOutputStream baos = new ByteArrayOutputStream();
        OutputStream out = new ArmoredOutputStream(baos);
 	    PGPPublicKey publicKey = null;
        InputStream inputStream = org.bouncycastle.openpgp.PGPUtil.getDecoderStream(new ByteArrayInputStream(publicKeyData));
        PGPPublicKeyRingCollection pgpPub = new PGPPublicKeyRingCollection(inputStream);
        OUTER1: for (Iterator i=pgpPub.getKeyRings(); i.hasNext();){
     	   for(Iterator j=((PGPPublicKeyRing)i.next()).getPublicKeys(); j.hasNext(); ){
         	   PGPPublicKey k = (PGPPublicKey) j.next();
         	   if(k.isEncryptionKey()) {
         		   publicKey = k;
         		   break OUTER1;
         	   }
     	   }
        }
        if(publicKey == null) throw new Exception("Can't find encryption key in key ring.");
        PGPSecretKeyRingCollection pgpSec = new PGPSecretKeyRingCollection(org.bouncycastle.openpgp.PGPUtil.getDecoderStream(new ByteArrayInputStream(privateKeyData)));
        PGPPrivateKey privateKey = null;
        PGPSecretKey secretKey = null;
        OUTER2: for(Iterator i=pgpSec.getKeyRings(); i.hasNext();){
        	PGPSecretKeyRing keyRing = (PGPSecretKeyRing) i.next();
        	for(Iterator j=keyRing.getSecretKeys(); j.hasNext();){
        		secretKey = (PGPSecretKey) j.next();
        		privateKey = secretKey.extractPrivateKey(new BcPBESecretKeyDecryptorBuilder(new BcPGPDigestCalculatorProvider()).build(passwd));
        		break OUTER2;
        	}
        }
        if(secretKey == null) throw new Exception("Can't find signature key in key ring.");
        
        ByteArrayOutputStream cb = new ByteArrayOutputStream();
        PGPCompressedDataGenerator compressedGenerator = new PGPCompressedDataGenerator(PGPCompressedData.ZIP);
        OutputStream compressedOut = compressedGenerator.open(cb);
        PGPSignatureGenerator signatureGenerator = new PGPSignatureGenerator(new BcPGPContentSignerBuilder(secretKey.getPublicKey().getAlgorithm(), HashAlgorithmTags.SHA512));
        signatureGenerator.init(PGPSignature.BINARY_DOCUMENT, privateKey);
        for(Iterator i=secretKey.getPublicKey().getUserIDs(); i.hasNext();){
            PGPSignatureSubpacketGenerator spGen = new PGPSignatureSubpacketGenerator();
            spGen.setSignerUserID(false, (String) i.next());
            signatureGenerator.setHashedSubpackets(spGen.generate());
        }
        signatureGenerator.generateOnePassVersion(true).encode(compressedOut);
        PGPLiteralDataGenerator lgen = new PGPLiteralDataGenerator();
        OutputStream finalOut = lgen.open(compressedOut, PGPLiteralData.BINARY, "", new Date(), new byte[4096]);
        finalOut.write(data);
        signatureGenerator.update(data);
        finalOut.close();
        lgen.close();
        signatureGenerator.generate().encode(compressedOut);
        compressedGenerator.close();
        compressedOut.close();
        
        byte[] compressedData = cb.toByteArray();
        PGPEncryptedDataGenerator encryptedDataGenerator = new PGPEncryptedDataGenerator(new BcPGPDataEncryptorBuilder(PGPEncryptedData.AES_256).setWithIntegrityPacket(true).setSecureRandom(new SecureRandom()));
        encryptedDataGenerator.addMethod(new BcPublicKeyKeyEncryptionMethodGenerator(publicKey));
        OutputStream encryptedOut = encryptedDataGenerator.open(out, compressedData.length);
        encryptedOut.write(compressedData);
        encryptedOut.close();
        encryptedDataGenerator.close();
        out.close();
        
    	return baos.toByteArray();
    }
	
}

Java HMAC-SHA512

import java.net.URLEncoder;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;

public class SHA512Util {

	public static void main(String[] args) throws Exception {
		Long chatButtonID = 58444531713309044L;
		Long floatingChatButtonID = 660128588754890L;
		Long expiration = System.currentTimeMillis();

		String url = "http://boldchat.com";
		String referrer = "http://google.com";
		String chatKey = "Something unique to chat " + expiration;
		String visitorKey = "something unique to customer";
		String appendData = "&ChatKey=" + chatKey + "&VisitorKey=" + visitorKey + "&Expiration=" + expiration;
		String customData = "&CustomURL=http://boldchat.com&VisitRef=a ref&VisitInfo=info&VisitEmail=email@gmail.com&VisitPhone=3166704000&URL=" + URLEncoder.encode(url, "UTF-8") + "&ReferrerURL=" + URLEncoder.encode(referrer, "UTF-8");

		String chat = "ChatButtonDefID=" + chatButtonID + customData + appendData;
		String invite = "FloatingChatButtonDefID=" + floatingChatButtonID + "&InvitationDefID=2076721744768832302&VisitName=floating" + customData + appendData;
		String conversion = "ConversionCodeID=33221100&ConversionAmount=100.0&ConversionInfo=conversion info" + appendData;

		String hashKey = "uWalJOJ8sOqcVuobDSwBIr7+KofZAq0K9/b0h/JviTYFqjpS/d0uIeewf/kgQLEM";

		String hashedChat = appendHash(chat, hashKey);
		String hashedInvite = appendHash(invite, hashKey);
		String hashedConversion = appendHash(conversion, hashKey);

		System.out.println("Hashed Chat SecureParameters: " + hashedChat);
		System.out.println("Hashed Invite SecureParameters: " + hashedInvite);
		System.out.println("Hashed Conversion SecureParameters: " + hashedConversion);
	}

	final protected static String HMAC_SHA512 = "HmacSHA512";

	public static String appendHash(String data, String hash) throws Exception {
		SecretKeySpec keySpec = new SecretKeySpec(hash.getBytes("UTF-8"), HMAC_SHA512);
		Mac hmac = Mac.getInstance(HMAC_SHA512);
		hmac.init(keySpec);
		byte[] hashBytes = hmac.doFinal(data.getBytes("UTF-8"));
		String hashText = bytesToHex(hashBytes);
		return hashText + data;
	}

	final protected static char[] hexArray = "0123456789ABCDEF".toCharArray();

	public static String bytesToHex(byte[] bytes) {
		char[] hexChars = new char[bytes.length * 2];
		for(int j = 0; j < bytes.length; j++) {
			int v = bytes[j] & 0xFF;
			hexChars[j * 2] = hexArray[v >>> 4];
			hexChars[j * 2 + 1] = hexArray[v & 0x0F];
		}
		return new String(hexChars);
	}
}

C# PGP

using System;
using System.Collections;
using System.Linq;
using System.Text;
using System.IO;
using System.Security.Cryptography;
using Org.BouncyCastle.Bcpg;
using Org.BouncyCastle.Bcpg.OpenPgp;
class PgpUtil
{
	static void Main(string[] args)
	{
		long accountID = 2307475884L;
		long websiteID = 665123557559499L;
		long chatButtonID = 58444531713309044L;
		long floatingChatButtonID = 660128588754890L;
	
		long expiration = (long)((DateTime.Now - DateTime.Parse("1/1/1970 0:0:0 GMT", System.Globalization.DateTimeFormatInfo.InvariantInfo, System.Globalization.DateTimeStyles.None).ToUniversalTime()).TotalMilliseconds + 30000);
		string url = "http://boldchat.com";
		string referrer = "http://google.com";
		string chatKey = "Something unique to chat";
		string visitorKey = "something unique to customer";
		string appendData = "&ChatKey=" + chatKey + "&VisitorKey=" + visitorKey + "&Expiration=" + expiration;
		string customData = "&CustomURL=http://boldchat.com&VisitRef=a ref&VisitInfo=info&VisitEmail=email@gmail.com&VisitPhone=3166704000&URL="
			+ Uri.EscapeUriString(url) + "&ReferrerURL=" + Uri.EscapeUriString(referrer);
		
		string chat = "ChatButtonDefID=" + chatButtonID + customData + appendData;
		string invite = "FloatingChatButtonDefID=" + floatingChatButtonID + "&InvitationDefID=2076721744768832302&VisitName=floating" + customData + appendData;
		string conversion = "ConversionCodeID=33221100&ConversionAmount=100.0&ConversionInfo=conversion info" + appendData;
		
		byte[] encryptionKey = Encoding.UTF8.GetBytes("-----BEGIN PGP PUBLIC KEY BLOCK-----\r\nVersion: BCPG v1.50\r\n\r\nmQENBFNnvrgDCACe2sn+PAHxG/fhfHgFNu4ClODlvrduchKS49AsILEsgB+ie1Yf\r\n3gz1j2JrIcwsEg1AAVPOHJvoXBjLJMoA0TfJbtVXP9S/9Q6XGuQgtOb/HVP5mDTZ\r\nwEGDQH5l6Oxob/xWBD8SAjlQoHzPwEsJMigZiFdQMDCUMIlpcSje3Om2ZGhZ7Qc0\r\ncw0PgR9Wk3NWzX38RqMkxlL+l2UPHvRU3e3nPEDvJSbFORzsd7H/D6iAOG//fd0j\r\nU+dM+vZ7AI4XncFI/OcHxUPISEZK6whg0DjaOMGONZD3bO2RtaeOL+5DD+DMRscW\r\nlYwrGjA4PTQQ+Ba2fyaG73FEUlRdcdwmhmXbABEBAAG0CGJvbGRjaGF0iQE3BBAD\r\nCgAhBQJTZ765AhsDBAsJCAcGFQoIAgkLBAsJCAcGFQoIAgkLAAoJECe+KX41fF/C\r\nO/kIAIEfLLyT9v9vyzgqpuaBh6l+6db0nKmaXB9wlYMWVtCPJ4XtG3paJXuuNbjw\r\nq5R0P+zwa2j5jDhkOHYasAxRvevxuIHjnkU/UIUshJRsFANGQ8d+vZdF9yRLneKB\r\n933svbm9XT/dQtzGVFpP0IgdI8TVmxmzc+2n69AM4u8ScmyBvX9m1cRYEuS9v4tS\r\n13AAp/xgOg4qujno1tc158jOsGE27IxZXyCco2EwJVkz2ms4e0I/4LNOOaqWRvOF\r\n7Nxnj06zfT0Reg4ILk2ERNfG/qVpOwUuYvYc7mCvhJ8UBtHw50v9K01k9/RC61Mf\r\nrjFvV5ynRX259HTeqJl9h+hNeHy5AQ0EU2e+uQEIALVukl/lfWWgyi0ThGoiWwGy\r\nVnunONHiby7CAz6gDtlGdgv1za6IB5RqVbgrGNfDYHyH8gHovXw69tMUA/1ux0YS\r\nC9wE3sXY9iDkdpQMPPobtoQhkPtDm4kEYVb/MYKapdgWxfXA/HOra4br21xiY5zS\r\nCJ1dDMu71uL2xLFtZvDMZjAxVLrbuY/QODfNro6hKiwJZ5X7PnHzJ7VVowlhYq0v\r\n7f61stNC2EGKsjOSUlr22Iw0k6H055xfwLWMrOBcE8Bqqd3GsAD7QypINSSrgSdV\r\n4ebYDRzD41O2elrfElGAB4yhqwLEVYOZ4JuZxJ1q2kpPxZjmjyxfPv7tox7dgxUA\r\nEQEAAYkBHwQYAwoACQUCU2e+uQIbDAAKCRAnvil+NXxfwtUbB/4pmdAV7COUoXdC\r\nNlTj3cpxSxtV0iBdxjneJaNBiR7JIuL/3uoD7bMMMxpXDs5L9s1CLRLUMNarK8pj\r\nkwi3pVhET19r/6I8rEt+V4ddxODjggO6zuc5vMki8tlufna4cyhAyvbGPIZ0C/b0\r\nqGYNnDqactBpzuqT9QjMfUQSMt7acAZIBqK0UvCCwPsuNFz4HFPGoqW3BWmCN7CC\r\nVOCKwecCNCj0Y9SJdOZP8mvXubSeb3inWGuONLpuBF2ciIQCkRO2DtGwEMbdbyoY\r\nZUkdI7Rk793tfLd4mqT/BfikQo0Uyc8yYYbBkr6lPTT8J0mYyFL7SOkf10XoJ+ap\r\n7cLZwjou\r\n=pD7x\r\n-----END PGP PUBLIC KEY BLOCK-----\r\n");
		byte[] signingKey = Encoding.UTF8.GetBytes("-----BEGIN PGP PRIVATE KEY BLOCK-----\r\nVersion: BCPG v1.50\r\n\r\nlQPGBFNnvvYDCACOeYaG9ugbRPHpe9P8GWdPFH/kpQlfFM1JVQNnCSC4OWkZhDbu\r\nUuAxWj7XaFWOsctnnjx1DYZ8EE54q1eI2j62KErqM58ZCZpChQ2Xh1L8lvmWPdbU\r\nTdWzjekfVaLGObyydl+LYRepjbrsWT/r2/nDcmJSvjesbwWZkfWH5AxXc0ngHbG0\r\nsnOVMtZBSGSj9AnRTJhcr6GIMh8DevG93NVLHu45nfXHOVkTx6oTlrq7LfYzoRAh\r\nBPu1ydbclbeNXsOJbPlxaEAjPwXsoRMa6xaNb4UHCaJX/7kyU2QeuJGJwk7sU09M\r\n/FADAo31A4dS58unr3RrxNaL4tVJ5jEJECojABEBAAH+CQMCW7scittNNYVgpaZ1\r\ngOyt59uRf4YcTUxq0j8NLqFNRo7kC8j/W/upd3i9OJM+95Bsf+Glr5tgKcnuP8SG\r\nCP8eTNyIUckhTJmUpDY0MRUS1yvOBqp+MpfIxrGZ2pP/fgcW1SUjx5f7kQ2pTJOQ\r\nbbQLeQHIPOJbCa0YbAWYmSES5XQCmZSZLvg9JZ1mptzCaPswyzUAViNQt6tTF8kO\r\nceX1rdAoMSzLoETfmPA6Jb4GdQUO/bJARIH0NqhGiZqanYpn6e8GNeqF/9P2fceH\r\n+VvRVlGa8kq0QSFD/fONmW2O67lxfI7A8tEIqj6I+IimsDNhf7c56eIo779ebHmX\r\nhbWlOTDdbPqskuTZTH58r+2gI+ayzxGQecQWk2KzxO4akhMCUyLZw3cAm2qeIXmo\r\nI8sAUwaPrjXtS9QSoqXzruoIcNIwUFk/G/mGMlkrOoAdP83Pw3qM3MmmcnBQoHRA\r\nDmDEZZtzlEyQUO8CR56HevyzibHRXuBJ6gLNDgWmu8ZbP1bUloC3GoXdkf43fQ4I\r\n+ZBEsjNr2QwLclcavZaKX0O6OUsxnCpt8QbkGEJyLUwT0lTomqpQRyHi96UnvpNb\r\n3j9iRtW82lT6nzP1PLpG47OoYoKr8ZjhmLJ2rMwHBkZoMFOeRqnQDdXScGNIb4IK\r\n3L8AWmtxa0obMpJC5CCaIZeQ9QW8mMVvGL7SShvDoVM

How to use Geofluent for auto-translation

Important: Please contact your Customer Success Manager to enable this feature if you want to use it.
Tip: Check out this video to learn how auto-translation work.

Digital DX AI offers automatic language translation in conversational and search modes. It enables your bot to answer your international visitors in any language while end user requests are served from one knowledge base in one language. This feature helps the multilingual support of knowledge bases that frequently change without the need of having to provide the translations as well. The translation engine supports more than 46 languages. The quality of Digital DX's automatic translation is almost as high as if you used a dedicated knowledge base per language.

Customers can switch between viewing the original bot or agent message, and the translated version of the message provided by GeoFluent. By using the toggle displayed above the input filed at the bottom of the widget, customers can check the original message in case of unclear translations. Currently, this toggle is always switched on.

Important: This feature requires a GeoFluent subscription that you can acquire by contacting Lionbridge. Lionbridge will provide you with the account key and secret you need to start using auto-translation.

Features and Benefits

  • Language selector in the beginning of the conversation.
  • Answer content, FAQs, and widget interface are automatically translated.
  • Language selection is saved if the bot conversation is transferred to a live agent.
  • Customers can easily switch between original and translated message.

What languages does GeoFluent support?

GeoFluent supports the following languages in the chat window:

Afrikaans* Arabic* Bengali* Bulgarian* Chinese (Simplified)* Chinese (Traditional)*
Croatian* Czech* Danish* Dutch English (UK)* Finnish*
French French (Canadian)* German Greek* Hebrew* Hindi*
Hungarian* Icelandic* Indonesian* Irish* Italian Japanese
Kazakh Korean Lithuanian Malay* Norwegian (Bokmal)* Norwegian (Nyorsk)*
Polish* Portuguese* Portuguese (Brazilian)* Punjabi* Romanian* Russian*
Serbian Slovak* Spanish Swedish* Tagalog Thai*
Turkish* Ukrainian* Vietnamese*      

* You need to translate the branding of the chat windows.

How to set up auto-translation with GeoFluent?

To set up auto-translation, contact your Customer Success Manager with the following information at hand:

  • GeoFluent Host
  • GeoFluent Account Key
  • GeoFluent Account Secret

How to enable auto-translation?

Once your GeoFluent account is set up for your Digital DX AI account, all your conversational widgets can provide live translations. To enable it, you must set up a language selector as follows:

  1. In the AI Console, go to Knowledge > Add Article.
  2. Create a welcome message as an article, which includes the language selector.
  3. Add a < language_selector / > tag to the article. This tag will be replaced by the languages drop-down list.
  4. Optionally, add a "languages" attribute to the < language_selector > to define the supported customer languages: By default, all languages are listed in the language drop-down list that are supported by your GeoFluent account. The list of languages must be a comma separated list of two-character language codes.
  5. Once you create this message, go to Touchpoints > Widgets and select the widget where you want to use the language selector.
  6. In the Auto Question field, select the newly created message.
  7. Save your changes and you are good to go.

How to use auto-translation with a Digital DX Agent integration?

At the beginning of a chat session, customers can select their language in the widget. When the chat is channeled to a human agent, Digital DX Agent receives the selected language value from Digital DX AI and automatically offers the relevant GeoFluent translations.

Auto-translation in Digital DX Agent takes the following parameters into account:

  • Customer language: Determined by the customer's chat window's language setting or the language the customer selected on the pre-chat form. You can define chat window language defaults in the chat window configuration.
  • Agent languages: The languages the agent speaks, prioritized by fluency level. Configured in the agent settings.
  • Language pairs: The translation pair is supported by your GeoFluent subscription.

If the agent and the customer share a common language, then there is no need for translation and it is switched off by default. Otherwise, if none of the agent languages match the customer language and the language pair is available, messages are translated automatically.

Reports for auto-translations provided by GeoFluent

When auto translations for conversational mode is enabled for an account, you can run reports on three new fields in the Automatic translation section of the Admin Center > Reports page:

  • Auto-translated - true if the query sent to the bot was auto-translated by GeoFluen
  • Query language - the language code of the original end-user query before auto translation. It is "empty" if live translation did not happen for the query
  • Original message - The original end user query before auto translation. The number of unread agent messages can be displayed on the conversational widget in Normal with minimized option mode.

You can group reports by the Auto-translated and Query language options.

Translation Analytics

You can generate reports on GeoFluent-based auto-translation on the Analytics > Reports page of the AI Console. You can select the following report fields from the Automatic translation category:

  • Auto-translated: Displays whether the customer voice was auto-translated
  • Query Language: Language of the original customer voice
  • Original Message: Content of the original customer voice

Notification of auto-translation failure

If GeoFluent translation service is used and it fails to translate the response, a message is displayed that the translation service is not available. The user can then resend the request.

How to print a chat transcript

To obtain a hard copy of a chat, you can print the transcript of the session.

  1. Select the chat you would like to send.
  2. In the toolbar above the chat list, click the Print icon.
    Tip: The visitor may also have the ability to print the chat transcript by clicking the Print icon in the lower-right corner of a pop-up chat window (visitor-side printing is not available with layered chat windows).

How to set up timeout for unanswered chats

You can define the maximum period of waiting time for your customers before telling them that none of your agents is free to chat.

  1. Create or edit a chat window, as follows:
    1. In the Web Admin Center, go to Channels > Chat > Chat Windows.
    2. Select an existing chat window or click Create New.
  2. On the General tab, select Timeout under Unanswered by agent.
  3. Enter the time in seconds after which customers waiting in line see the "Unavailable - Default" message. You can change this message on the Customization tab of your chat window configuration.
  4. Save your changes.

How to resolve account configuration errors

You can see all configuration issues with your Digital DX account at admin.bold360.com/failures. You may have the following configuration issues:

Invitation Rule Set-related issues

Configuration error message Resolution

Invitation rule set does not exist or has been deleted. Make sure that you've entered the correct invitation rule ID in your website's HTML code.

Check your website's HTML code. The script that you have generated in and copied from the Web Admin Center must contain the reported invitation rule ID. This ID may be incorrect for the following reasons:

  1. You have entered a wrong ID into the script.
  2. The ID you have entered was valid, but someone deleted the configuration. Check your deleted items list to see if the configuration existed.

Email Account-related issues

Configuration error message Resolution
Email server authentication failed. Check your credentials. (AuthenticationFailedException - AUTHENTICATE failed)

These error messages essentially refer to the same issue: Digital DX could not access your email account because of an authentication issue.

In the Admin Center, go to the Channels > Email > Email Accounts page and update your login credentials. Always test your connection to verify your login details.

Email server authentication failed. Check your credentials. (AuthenticationFailedException - Connection reset)
Email server authentication failed. Check your credentials. (AuthenticationFailedException - Could not determine server)
Email server authentication failed. Check your credentials.(AuthenticationFailedException - Logon failure: the specified account password has expired.)
Email server authentication failed. Check your credentials. (AuthenticationFailedException - Login failure: unknown user name or bad password)
Email server authentication failed. Check your credentials. (AuthenticationFailedException - Read timed out)
Email server authentication failed. Check your credentials. (AuthenticationFailedException - Unable to log in)
Email server authentication failed. Check your credentials. (AuthenticationFailedException - [ALERT] Invalid credentials (Failure))
Email server authentication failed. Check your credentials. (AuthenticationFailedException - [AUTHENTICATIONFAILED] AUTHENTICATE Invalid credentials)
Email server authentication failed. Check your credentials. (AuthenticationFailedException - [AUTHENTICATIONFAILED] Authentication failed.)
Email server authentication failed. Check your credentials. (AuthenticationFailedException - [AUTHENTICATIONFAILED] Invalid credentials (Failure))
Email server authentication failed. Check your credentials. (AuthenticationFailedException - [AUTH] Authentication failed)
Email server authentication failed. Check your credentials. (AuthenticationFailedException - [AUTH] Invalid login)
Email server authentication failed. Check your credentials. (AuthenticationFailedException - [AUTH] Username and password not accepted)
Email server authentication failed. Check your credentials. (AuthenticationFailedException - authorization failed)
Email server authentication failed. Check your credentials. (AuthenticationFailedException - temporary error)
Could not connect to the configured email server. Check your email server settings. (ConnectException - Connection refused) Digital DX could not connect to the configured email server for one of the following reasons:
  • Email server is temporarily unavailable
  • Your firewall blocks connection
  • An IP filter is configured on the email server
  • Slow network connection may result in time out errors

Check your email server connection with another email client to verify that the server is available.

Could not connect to the configured email server. Check your email server settings. (ConnectException - Connection timed out)
Could not connect to the configured email server. Check your email server settings. (NoRouteToHostException - No route to host (Host unreachable))
Could not connect to the configured email server. Check your email server settings. (SocketTimeoutException - Read timed out)
Could not connect to the configured email server. Check your email server settings. (SocketTimeoutException - Connection timed out)
The configured email server URL cannot be resolved. Check your email server settings. (UnknownHostException - host.url.to.mail.server)

The configured email server URL cannot be resolved. In this case,

  • Check your configuration for mistyped URL and test the connection.
  • There may be DNS configuration issues.
  • The email server URL may have changed. Check your provider's website for information.

Websites-related issues

Configuration error message Resolution
Incorrect website or department ID in your website's HTML code. Make sure that you've entered the correct IDs.

Check your website's HTML code. The script that you have generated in and copied from the Web Admin Center must contain the reported website ID. This ID may be incorrect for the following reasons:

  1. You have entered a wrong ID into the script
  2. The ID you have entered was valid, but someone deleted the configuration. Check your deleted items list to see if the configuration existed.

Floating chat button-related issues

Configuration error message Resolution
The defined floating chat button definition does not exist or has been deleted. Make sure that you've entered the correct floating chat button ID in your website's HTML code.

Check your website's HTML code. The script that you have generated in and copied from the Web Admin Center must contain the reported Floating chat button ID. This ID may be incorrect for the following reasons:

  1. You have entered a wrong ID into the script
  2. The ID you have entered was valid, but someone deleted the configuration. Check your deleted items list to see if the configuration existed.

API setting-related issues

Configuration error message Resolution
Your API authentication token has expired. Check the refresh rate of your API client. API tokens are valid for five minutes only. (AuthSecurityException - Expired authorization)

The AuthToken provided to execute API calls is expired.

Check your client that you use to call the API to see how it refreshes the token. Tokens are valid for five minutes only.

Your API Access Key is not enabled or does not exist. Check your API Access Key settings. (AuthSecurityException - No integration settings)

API settings defined by AuthToken does not exists or not enabled. Check API settings for Enabled status first.

API authentication token could not be validated or the signed parameter is invalid. See our Support Center for more information. (AuthSecurityException - Invalid auth or signature)

Note: support center link should be the same as the one at the top of the "Failures" page.

When the API authentication token cannot be validated, you must create a valid token as described in the Developer Guide

When you use Signed Authorization, make sure that you follow all security considerations.

The "Integration API Server Calls" feature is disabled for your account. Contact your Success Manager to enable it for you. (AuthSecurityException - Feature not enabled)

The "Integration API Server Calls" feature is not enabled for your account. Contact your Success Manager to enable it for you.

The specified Account IDs in the API authentication token and in the request URL do not match. Please generate a proper authentication token. (AuthSecurityException - AccountID does not match)

The AccountID defined in the authorization token does not match the AccountID in request URL.

Generate a proper authorization token.

Integration API trigger-related issues

Configuration error message Resolution
Your integration URL was terminated by the remote server. Check you server's log for details. (ClientAbortException - Connection reset by peer)

Connection to your integration URL was terminated by the remote server. Please check you server's log for details.

You should update your server certificate as it most probably expired. (SSLHandshakeException - General SSLEngine problem)

Most probably your server certificate expired. Please update your server certificate.

To validate your certificate, call an API endpoint from a web browser, such as Google Chrome.

Client and server TLS versions do not match. Verify your server's TLS support and check the server logs for details. (SSLException - Received fatal alert: protocol_version)

An API call to your integration URL failed because the Client and server TLS versions do not match, or are incompatible. Please check your server's TLS support and your server logs for details.

Client and server TLS versions do not match. Verify your server's TLS support and check the server logs for details. (SSLException - Received fatal alert: unexpected_message)
Client and server TLS versions do not match. Verify your server's TLS support and check the server logs for details. (SSLException - Received fatal alert: handshake_failure)
Connection refused by remote server. Check the URL and port values in the configuration and the firewall settings on the remote server. (ConnectException - Connection refused)

Check the URL and port values in the configuration and the firewall settings on the remote server.

Server path is configured incorrectly. Check the URL and port values in the configuration and the firewall settings on the remote server. (NoRouteToHostException - No route to host)

Server path is configured incorrectly.

Check the URL and port values in the configuration and the firewall settings on the remote server.

Cannot connect to the specified URL and port. Check the URL and port values in the configuration and the firewall settings on the remote server. (SocketException - Network is unreachable)

Cannot connect to the specified URL and port.

Check the URL and port values in the configuration and the firewall settings on the remote server.

The amount of outgoing data exceeds 256 kilobytes. Please review the trigger configuration for your content. (Exception - Buffer size exceeded)

The amount of outgoing data exceeds 256 kilobytes.

Please review the trigger configuration for your content.

Facebook Messenger Account-related issues

Configuration error message Resolution
Your recent Facebook password reset invalidated API access tokens. Please renew connection to your Facebook account. (HttpException - Response code 400: Error validating access token: The session has been invalidated because the user changed their password or Facebook has changed the session for security reasons.)

Your recent Facebook password reset invalidated API access tokens.

You must renew connection to your Facebook account:

  1. In the Admin Center, go to Channels > Messaging > Facebook Messenger.
  2. Select your Facebook account.
  3. On the Account Settings tab, select Renew connection to your Facebook account.
  4. Save your changes
Your Facebook authentication either expired after 60 days of inactivity or was manually revoked. Please renew connection to your Facebook account. (HttpException - Response code 400: Error validating access token: The user has not authorized application X.)

Your Facebook authentication either expired after 60 days of inactivity or was manually revoked.

You must renew connection to your Facebook account:

  1. In the Admin Center, go to Channels > Messaging > Facebook Messenger.
  2. Select your Facebook account.
  3. On the Account Settings tab, select Renew connection to your Facebook account.
  4. Save your changes

Chat Summary report

This report includes a breakdown of all button clicks (reactive and proactive) and their associated disposition.

Fastpath: report.boldchat.com > New Report > Chat > Chat Summary
Note: You can download chat transcripts with the BoldChat API as described in the Bold360 and BoldChat Developer Center.

Reported data:

Total Clicks
All clicks of the chat button plus all accepted invitations.
Unavailable
All chats already in created status where chat was unavailable because of agent availability, hours of operation, or queue size limits. For information on chat statuses, see What is chat lifecycle?
Blocked
All clicks on chat buttons by those customers who have been blocked. See How to block customers during chat.
Abandoned
All chats in created status that were not started, blocked, or unavailable (as described above). Most commonly, these are customers who were shown the pre-chat survey but failed to complete it.
Unanswered Chats
Chats that were started but were never answered. This happens either because the customer closed the chat window while waiting for an agent, or because the chat reached the Unanswered by agent timeout limit. You can set this timeout on the General tab of your chat window configuration. See How to set up timeout for unanswered chats.
Answered Chats
All chats that a live agent accepted and were moved to answered status.
AMC
Average Message Count for answered chats.
Unanswered Time
Time in queue for unanswered chats. Calculated as "chat ended" time minus "chat started" time for unanswered chats.
ASA
Average Speed to Answer for answered chats. Calculates the average time from chat started to answered by a live agent.
ACT
Average Chat Time for answered chats. Calculates the average time from the first agent answering a chat until it ends. ACT is measured for the final agent only.

If you need to look more closely at chat activity, use the Agent Activity report.

You can group and filter the report several ways in order to see the data from different perspectives.

When grouping by agent, note the following (for chats answered by multiple agents):

  • <None> in the Agent column represents chats that have not been assigned to an agent. This generally occurs if either agents were unavailable or the chat was abandoned and was never assigned to an agent.
  • All actions are reported as if executed by the final agent who answered the chat
  • The Answered value represents the number of chats for which an agent was the final assigned agent
  • The Answered Time of the first live agent handling the chat is counted toward the ASA calculation of the final agent who handled the chat

Department filters:

  • Department (operator membership) - Shows chats where the assigned agent or operator is a member of the selected department. For agents who are members of multiple departments, this also includes chats that were not assigned to the selected department, but to another department of the agent.
  • Department (initial assignment) -Shows chats where the first assignment was the selected department
  • Department (final assignment) - Shows chats where the last assignment was the selected department
  • Department (any assignment) - Show chats where the chat assignment history has assignments to the selected department
    • The Department (Any assignment) filter does not recognize chats that are assigned to a department but not to a specific agent. This may happen under certain circumstances:
      • When ACD is off and a chat is assigned to a department but not to an agent.
      • When ACD is on and a chat is assigned to an offline department but not to an agent. (Assignment to an offline department can happen manually, due to a rule, or when assignment is made to a department with a queue.) An offline department is where ACD cannot assign chats to agents because there are no agents currently available (they are away, their concurrency limit is reached, or the chat was started outside business hours).
Note: For Bold360 Service subscribers, the calculation method of certain chat report metrics are affected by conversations with the chatbot as described in Chat reports involving a chatbot. When no custom operator filters are selected, chats assigned to the chatbot are excluded from report.

What are the common details in reports?

Unavail(able) - no operator was available to take the chat

Blocked - user was blocked so could not start chat

Abandon(ed) - user did not complete pre-chat survey

Unanswer(ed) - user left before receiving an answer

Answered - if None then it means an agent answered the customer, but then was transferred to another department, waited in a queue, and dropped before being assigned to an agent.

None in the Operator column may mean the following:

  • Chat ended with no agent assigned. Bold360 Agent reports look at the Ended state of a chat, so if it ended without assignment then it is registered under None.
  • Agent was deleted in the meantime, which is why we recommend disabling rather than deleting users.

How to automatically activate chats (Automatic Chat Distribution)

Use Automatic Chat Distribution (ACD) to automatically place agents in an active chat session without agent interaction.

For example, you can automatically invite customers to chat with an agent when they have been on a particular page for a certain time, clicked a link or revisited a URL. Automatic Chat Distribution balances the number of customers in queue and the agent's workload in order to keep the rate of invitations at a maintainable level and the agent's chat queue saturated.

  1. In the Web Admin Center, go to Channels > Chat > Automatic Distribution.

    Result: The Automatic Distribution for Chat window is displayed.

  2. Select Enable automatic distribution.

    Result: This activates ACD at the account level.

  3. Select the following options:
    Option Description
    Initial assignment delay When Automatic Chat Distribution is enabled, you can delay the automatic assignment of chat sessions by the defined time. This way, you can keep chats in queue - in unassigned status - for an extended period.
    Reassign unanswered messages (seconds) When selected, chats are reassigned to another agent when the originally assigned agent does not answer the chat session within the specified period. In practice this means that a chat is answered by another agent when the originally assigned agent fails to respond.

    An agent who fails to answer in time is set to Away status to prevent new chats from being assigned. The agent must then explicitly set their status to Available.

    Reassign messages after agent disconnected (seconds) When an agent disconnects (for example, after logging out), Automatic Distribution reassigns all active chats to other agents after the defined period of time. When the agent disconnects due to network connectivity issues, chats are reassigned after at least two minutes. Therefore, even if you set the Reassign messages after agent disconnected value to 30 seconds, chats will only be reassigned after two minutes. Keep in mind that if no agents are available to take additional workload then chats will be placed in queue and their waiting time will be counted from the time the customer started the chat.
    Concurrent chat limit When selected, the number of chats that can be assigned to each agent is limited. When an agent reaches the chat limit, they are no longer assigned new chats. This limit setting can be overridden at an individual agent level. Chat and discussion difficulty affects this limit.
  4. If you choose to limit concurrent chats, the following options are also available:
    Option Description
    Show queue position When no agents are eligible to receive new chats (all have reached their maximum concurrent chats limit), then new chats are placed in a queue. When selected, customers see their position in the queue in the chat window. Agents can manually start chatting with the next customer in queue as described in How to manually start chatting with the next customer in queue.
    Estimated wait time With this option it is possible to display the approximate waiting time to visitors who are waiting in the queue for agent chat. This option can be enabled if the Show queue position option is active. The estimated wait time is calculated based on previous wait times and the visitor's position in the queue.
    Enable exit from queue When selected, customers in the waiting queue are presented a button that cancels the chat and displays the unavailable form (if enabled).
    Queue length limits

    Maximum in queue: Do not allow new chat sessions when the total queue size reaches this number.

    Average per agent: Disable the Chat Button when the total number in the queue divided by the number of available agents reaches this number.

    Invitation throttling

    The invitation throttle controls the balance between the number of invitations sent and the risk that your target queue is exceeded. This helps you avoid long queues of unassigned chats when more customers accept invitations than agents can handle.

    Throttling options:

    • Target queue size. The target number of chats that you are willing to leave queued for assignment. The invitation throttle adjusts the number of invitations sent in order to optimize queue size.

      Note: The target queue size is independent of the Disable chat queue size setting. Chat becomes unavailable when the target queue size reaches a number equal to or less than the Disable chat queue size. You are recommended to set a higher threshold for the Disable chat queue size setting than your target queue size.
    • Expected acceptance rate. The expected likelihood that an invitation will be accepted. You can choose your own percentage or use the calculated value, which is based on a moving average of the actual acceptance rate over approximately one week for the given account or department.

    • Throttling rate. This is your willingness to risk that more invitations will be accepted than your target queue size. When you choose a lower risk option, fewer invitations are sent, thus decreasing the potential number of acceptances. The options represent a 50%, 5% and 0.1% probability that you will exceed the target queue size, assuming that the expected acceptance rate is accurate.

      Note: For optimal results, make sure that the expected and real acceptance rates correlate closely. If the rates diverge, either you will not be sending out as many invites as you are able to handle, or your target queue size will be frequently exceeded.
    Allow customers to enter queue upon Available click Decide how to handle new chat sessions when a customer clicks a button shown as Available, but meanwhile all agents become unavailable. You can override other queue limits and allow them to enter the queue according to the following limits:
    • Max. in queue upon Available click: Allow the queue to reach this limit before preventing new chat sessions.
    • Concurrent chat limit upon Available click: Allow agents to reach this limit before they are no longer assigned chats.
  5. Define the difficulty level for chats and discussions. These limits are used to calculate agent chat capacity when concurrent chat limit is enabled.
    Note: You can change chat difficulty at department level only.
    How is agent chat capacity calculated?

    Suppose concurrent chat limit is set to 3, chat difficulty has a multiplier of 1, and chat discussion difficulty has a multiplier of 0.5. When an agent has two ongoing chats (counts as 2 x 1 concurrent chats) and a chat discussion (counts as 1 x 0.5 concurrent chat) then the concurrent limit is 2.5. In this case, - since chat capacity is 0.5 - the agent can still receive an additional discussion task, but cannot receive new chats.

  6. When there are fewer incoming chats than what agents could handle, some agents will be waiting for an assignment. Chats are assigned to highest ranked agents first, but you can choose an assignment method for agents of the same rank. See How to assign chats to certain agents before others (ranking within department).
    Option Description
    Agents waiting for assignment

    To determine which waiting same-rank agent gets the next chat, choose an assignment method:

    • Least Busy. Assign the next incoming chat to the agent who has the fewest active chats and has waited the longest. This naturally means that if you have multiple agents available with no chats, ACD will assign the next incoming chat to the agent who has been in Available status for the longest period of time.

      Choose this to balance the chat workload between agents.

    • Most Busy. Assign chats to your busiest agents. The next incoming chat is assigned to the agent who is handling the most chats until their limit is reached, and thereafter to the agent who has been idle for the shortest period of time. Choose this option if your agents must manage non-chat tasks along with their chat related work. Those who are chatting will stay busy chatting, while others can stay focused on non-chat tasks. To prevent overload on a single agent, make sure concurrent chat limits are set.
    • Round Robin Rotate chat assignment among all available agents regardless of waiting time or number of active chats (until their concurrent limit is reached). Choose this option to balance the number of chats assigned per agent. Lower ranked agents will only be assigned a chat if all higher ranked agents have reached their limit.
    Note: If you are using difficulty-based distribution, chats are assigned to the agent within the same rank who is working on chats with the lowest total relative difficulty. For example, an incoming chat will be assigned to an agent handling one difficulty 3 chat before an agent who is handling four difficulty 1 chats.
  7. Under Manual reassignment, tell Bold360 how to place customers into the queue when they are reassigned by an agent rather than ACD.

    You can set this option independently for customers reassigned within a department (From same department) as opposed to between departments (From other departments).

    Note: For answered items that are manually reassigned, the queue time is always reset. For automatically assigned items, customers always maintain their place in the queue.
    • To place customers at the end of the queue regardless of how long they have been waiting, select Move to end of queue (time is reset)
    • To place customers in the queue based on time already spent waiting, select Maintain place in queue (time is preserved)
  8. Save your changes.

    Result: Settings are applied to your entire account except where overridden at the department or agent level.

Set up an email account

Configure Digital DX to receive, track, and manage emails.

  1. Create or edit an email account, as follows:
    1. In the Web Admin Center, go to Channels > Email > Email Accounts. The Email Accounts window is displayed.
      Note: To verify that an email account is set up properly, click Test next to an account.
    2. Select an existing account or click Create New. The New/Edit Email Account page is displayed.
  2. Select Enable email to activate the email account.
  3. Enter basic account settings on the General tab:
    Option Description
    Configuration Name Name the account for internal reference.
    Sender Email Address To use when sending email.
    Friendly Sender Name Used as the From Email Name when sending emails via this account. For example: Support Team, Jane Doe.
    Email client

    Select the email client you are using: MS Office 365 / Gmail / Other.

    The MS Office 365 and Gmail options don't only support the recommended OAuth 2.0 authentication, the Other option supports any client with basic authentication.

  4. Select the email client that you use to communicate over email.
    Note: In the Digital DX Desktop Client, you cannot select email client.
  5. Depending on your email client, you have the following options:
    Option Description
    User Name User name of the email server. For example, in the email address support@acme.com, the user name is support.
    Password The password associated with the user name for the POP3 server. Only available when you select Other for email client type.
    Server/Port Enter the host name or IP address and port of your mail server. If your email address is support@acme.com, then your mail server host name is normally mail.acme.com or just acme.com. All inbound emails are retrieved from this POP3 server.
    Secure Connection (SSL) To use a secure connection to your mail server, check Secure Connection (SSL) and enter the Port to be used for the connection. Check with your service provider as required.
    Type Choose your server type: POP3 or IMAP.
    Note: POP3 is unavailable for Microsoft Office 365 users.
    Leave copy of messages on server Store copies of emails on your POP3 server to facilitate download to Outlook or any other mail client.
    Folder Click Refresh folder list and then select the folder in your email account that you want to use for email communication with your customers.
    Tenant ID You Microsoft Tenant ID that you can find in the Azure AD admin center. (in the Directory ID field on the Properties page). Only available for Microsoft Office 365 users.
    Client ID
    • Microsoft Office 365 users find it in the Overview page of the Azure AD admin center
    • Gmail users find it on the APIs & Services > Credentials page Google Cloud Platform
    Client Secret Your client secret that you can find right next to your client ID. Only available for Microsoft Office 365 and Gmail users.
    Outgoing server Select SMTP server to set up an SMTP server for outgoing email.
  6. Optional: (Optional) Enter additional settings on the Distribution - Organization tab:
    Option Description
    Department Associate a Department with the email account. The Department can be used to override account-level automatic distribution settings and to determine which agents can be assigned emails by the automatic distribution system.
    Maintain email thread ownership on new mails Preserve the Owner (agent) field of each email thread.
    Append email thread ID to subject Append the Email Thread ID to the subject of replies. This make it easier to keep track of conversations with customers.
    Append email thread ID to subject Append the Email Thread ID to the subject of replies. This make it easier to keep track of conversations with customers.
    Auto-bcc Specify an email address that is included in the BCC field of all outbound emails from the agent.
  7. Optional: (Optional) Enter additional settings on the Format and content tab:
    Option Description
    Encoding Encoding for outgoing and incoming messages.
    Format Choose to show incoming email as either plain text or HTML.
    Canned messages for emails Select canned message folders that agents can use with email.
    Email Footer Enable and design a footer that is appended to all emails sent from this email account.
  8. Save your changes.
  9. For Gmail and MS O365 integrations, go to the recently added email account on the Email Account view and select the Authorize option.

    Complete the steps in the dialog that appears. Once the authentication is complete, the status of the email channel changes to Ready.

How do I import my knowledge base from ServiceNow?

Bold360 AI uses ServiceNow's API to import knowledge base articles.

Remember: Your account must have the Enable ServiceNow article import setting enabled for each knowledge base where you want to import articles. Contact your Customer Success Manager for more information.
Note: If you are looking for information about importing articles in a batch using Bold360 AI's API, see this article.

Integrate ServiceNow with Bold360 AI

Before you can import knowledge base articles, you must first integrate ServiceNow with Bold360 AI as follows:

  1. In the AI Console, go to Admin Center > KB Setup and choose the Integration tab.
  2. From the Third-party service drop-down list, select ServiceNow. From your ServiceNow account copy the following details:
    • Copy the instance URL from your browser. Look for https://< instanceURL >.servicenow.com
    • Enter your ServiceNow user credentials.
    • From the Application Registry page in ServiceNow, create a new OAuth API endpoint for external clients that you want to use to set up a connection between ServiceNow and Bold360 AI. Then copy Client ID and Client secret to the Bold360 AI platform.

    The following is an example of the ServiceNow integration parameters:

  3. Choose Connect.

ServiceNow is now integrated with Bold360 AI.

Import Knowledge Base articles

To import knowledge base articles, do the following:

  1. Select the Bold360 AI knowledge base where you want to import articles. Note: You can only import articles to a single Bold360 AI knowledge base. Your account must have the Enable ServiceNow article import setting enabled for this knowledge base.
  2. Go to Admin Center > KB Setup and choose the Integration tab.
  3. Select the ServiceNow knowledge bases that you want to import. These are pre-populated during the integration process.
  4. Optionally, select article labels to filter the articles in the selected knowledge bases.
  5. Choose Fetch Articles and wait for the list of articles to load. Depending on the number of articles in the selected knowledge bases, this process may take a while.

    Articles that you can update in your Bold360 AI knowledge base are listed. Only those articles are listed that have changed in ServiceNow since your last knowledge base import.

  6. Select the articles that you want to import. You can click the arrow next to the title of an article to view its content.

    Articles are color-coded in the list to reflect changes in the ServiceNow knowledge base:

    • Green: new article. A new Bold360 AI article will be created.
    • Yellow: updated article. The article in the ServiceNow knowledge base has been changed. If you have edited the article in Bold360 AI then those changes will be overwritten when importing from ServiceNow.
    • Red: deleted article. The article will be removed from the Bold360 AI knowledge base.
  7. Choose Import selected articles at the top of the list.

The ServiceNow articles are now imported into your Bold360 AI knowledge base.

What happens after articles are imported?

The imported articles receive a ServiceNow label and their expiry dates are also synchronized. When an article expires, it is removed from the live site. To see expired articles in Bold360 AI, go to Knowledge > Expired.

Finally, the revision list is updated to reflect the changes in the number of imported articles.

Canned messages for agents

Canned messages are predefined strings of text that an agent can insert into a conversation. With canned messages, the agent can reuse commonly used responses without having to type them.

  1. Choose the channel for which you want to create or edit a canned message:
    • Chat: Channels > Chat > Canned Messages
    • Email: Channels > Email > Canned Messages
    • Messaging: Channels > Messaging > Canned Messages
  2. Create, edit, or copy a canned message on the Canned Messages page, as follows:
    • To create a new message, click Create New
    • To edit, click an existing message
    • To copy, click the Copy icon next to an existing message
  3. Name and identify the message so agents can find it:
    Option Description
    Name This is never seen by customers; used to identify and reference the message.
    Subject For messages that are auto answers, the subject is shown to customers as a label in search results.
    Keywords Enter words and phrases that help identify this message as relevant to a conversation.
    Shortcut To use this message, agents can type this shortcut as a /slash command (for example, /shortcutname)
  4. Set the message's Language.

    This value acts as a filter to ensure that agents see only messages that match the customer's language or with no value specified. For example, when an Italian speaking customer starts a chat, the agent sees Italian canned messages plus those with no language value.

    Result:

    Tip: Subject, Keywords, and Body should use the same language.
  5. Type and format the message.
    Channel Options
    Chat HTML* or plain text
    Email HTML* or plain text
    Messaging Plain text
    *HTML Variables For HTML, you can insert variables in ${variable_name} format. For example, use the variable ${login.ChatName} to insert the agent's chat name into the canned message.

    Available variables:

    • ${chat.ChatUrl} - The URL of the chat from where the customer started the chat session
    • ${chat.ChatName} - The name of the customer as provided on the pre-chat form. If the First name field is available on the pre-chat form then this variable displays only the first name of the customer.
    • ${chat.CountryCode} - The two-digit code of the country where the customer started the conversation
    • ${chat.RegionCode} - The region or ZIP code of the country where the customer started the conversation
    • ${chat.City} - The city where the customer started the conversation
    • ${chat.VisitEmailAddress} - Email address of the customer as provided on the pre-chat form
    • ${chat.VisitPhone} Phone number of the customer as provided on the pre-chat form
    • ${login.UserName} - The User Name of the agent as set on the Organization > Agents > Agent Information tab
    • ${login.Name} - The Agent Name of the agent as set on the Organization > Agents > Agent Information tab
    • ${login.EmailName} - The Email Name of the agent as set on the Organization > Agents > Email Settings tab
    • ${login.BestChatName} - The Chat Name of the agent. If this is unavailable, then the Agent Name of the agent.
  6. Save your changes.

    Result: The canned message is made available for responses to incoming conversations for the chosen channel (Chat, Email, or Messaging).

Remember: Messages that will be used as Auto Answers must be organized in folders as part of Chat Window setup.

This article provides a step-by-step process for configuring the Genesys DX Product Authentication Service as SSO service provider.

  1. Login to https://auth.bold360.com/ and click Go to SSO Setup in the bottom left corner.
  2. Note: If you cannot see the Go to SSO Setup button, contact your support representative or the Genesys CX support.


    You are then navigated to the SSO setup webpage.
    NoteGeneral Settings and Domain are read-only fields, you cannot modify them.
  3. Click Sign-in configuration, and enable the SSO.

     
  4. Choose one of the two configuration methods.
    You can obtain the necessary details from your Identity Provider settings.

    Method 1: Manual Configuration


    Add your Verification Certificate when you are finished with manual configuration.

    When you add the Verification Certificate, remove the following tags:
    "-----BEGIN CERTIFICATE-----"
    "-----END CERTIFICATE-----"

    A Verification Certificate example with removed BEGIN and END tags: 


    Method 2: SAML IdP metadata URL

    Host your Identity Provider metadata XML file on a publicly accessible URL.


    Note: Since we cache this file for only 2 minutes, please ensure high availability of this file via the specified URL to avoid SSO login failures.

    Note: You can configure a SAML 2.0 based auth delegation with any ID provider that supports SAML 2.0 protocol.
    Please note that if you create users on your ID provider side, these users are not automatically synced in Bold360. You need to create Bold360 users in the Bold admin center as well.
    • The configuration is applied to each user whose email address belong to the configured domain.
    • The configuration is not account specific, multiple accounts can have users with email addresses with from the same domain.
    • An account can have users from other email domains as well.
       
  5. Once you have setup your configuration using a method of your choice, save your changes.

    Enter your email /username that uses the domain you have setup in your Identity Provider service and click Continue.
    You can see the following message on a successful login.


 

Announcements

Bold360 21.10 Release Notes

Bold360 21.10 release notes

Bold360 version 21.10 contains the following new enhancements:

Enforcing HTTPS and removing HTTP across widget scripts

Going forward, there will no longer be an option to choose (non-secure) HTTP-only connections when generating widget touchpoint scripts. HTTPS will be enforced across all touchpoints going forward and HTTP-only widget configurations will no longer be supported as of December 31, 2021. Any widget script using HTTP only will need to be changed by this date in order to continue uninterrupted

Access to the Genesys DX AI management (*.nanorep.co) will only be accessible through HTTPs

In-product announcements will be present to raise awareness of this change

Important: Any widget script using HTTP only will need to be changed by this date in order to continue uninterrupted.

In-Product Rebranding

As part of the transformation to Genesys DX, the product interfaces are now rebranded to reflect this change. Logos, product names, and company links are now updated to Genesys branding and is present within each of the product interfaces.

getEstimatedWaitTime API call

Using the "getEstimatedWaitTime" API call will provide the estimated wait time that the visitor would spend waiting before starting a live chat with an agent.

Details on using this API can be located in this article.

Bold360 21.11 Release Notes

Bold360 version 21.11 contains the following new enhancements:

New KB Launchpad Intent Library for COVID-19/Vaccinations

In order to help businesses with providing just-in-time information related to updates to COVID-19 and vaccination protocols, a new entry in the KB Launchpad is now available with intents that can be used to deploy knowledge to keep your workforce informed of new policies and information that you may need to enforce.

Not familiar with the KB Launchpad? The KB Launchpad contains pre-defined intent libraries to help you add industry and use-case specific questions/intents to your KBs with your own specific responses to help with adding commonly asked questions for newly created KBs.

We will be enabling the KB Launchpad as a default setup option on all accounts shortly but contact your Account or Success Manager to get it enabled early if necessary.

ICO Cookie Compliance

In order to support ICO cookie compliance in regions that require end-user consent for allowing cookies to be set, Genesys DX now complies with this standard by making the tracking and analytics related cookies that are set through the touchpoint and visitor monitoring HTML snippets to be optional.

By default, all cookies will continue to be set upon page load. To restrict these cookies from loading automatically and only upon end-user consent, additional steps will be required on the website that the Genesys DX code is being deployed to.

You can learn more about what this compliance is and how to update your Genesys DX deployment to be compliant by reviewing the details in this article: ICO Cookie Compliance.