Upgrade tasks
Document version: 244. Automatically generated.
Document lists important changes to Automate platform which affect existing deployments.
Each change is provided with migration guide which has to be applied in order to keep platform running correctly.
Prerequisites
- Automate platform has been installed
- Dedicated Automate configuration repository has been cloned to local filesystem (eg.
/home/user/automate-config
) - Dedicated configuration repository follows official Automate Configuration repository template
Conventions
CAPITAL_LETTERS_VARIABLE_NAME
- fragment which should be replaced with actual values matching particular environmentAUTOMATE_CONFIG_REPO_PATH
- Path to automate configuration repository (eg./home/user/automate-config
)ENVIRONMENT_NAME
- Environment name (eg.production
)
Example
$ cd AUTOMATE_CONFIG_REPO_PATH/ENVIRONMENT_NAME/external-services
Should be substituted with:
$ cd /home/user/automate-config/production/external-services
Releases
Ordered from latest to oldest
244
1. LiveChat channel requires new scope
This step is only required if LiveChat integration is configured.
The customers:rw
scope is now required for LiveChat integration. Please follow steps below to add it.
- Log in to LiveChat Developer Console.
- Go to Apps -> Your apps.
- Click on the app that is used for integration with Automate.
- Go to the "App Authorization" block.
- Scroll down to "App scopes and API access" section.
- Add scope
customers:rw
.
This scope is needed for SetLiveChatCustomVariables command. It's going to work only in newly created LiveChat channels.
2. Added Microsoft Entra ID support
To enable Entra ID provider in SSO server, provide config values:
chatbots.sso-server {
host: "" # publicly visible SSO Server's URL (only host) for generating links
is-https: true # is SSO Server available under SSL
entra-id {
tenant-id: ""
client-id: ""
client-secret: ""
}
}
243 (build 243.0.7 and newer)
1. Migration of RabbitMQ queues from classic to quorum
It's not possible to change the type of existing RabbitMQ queue, so we've added version suffix to all queue names.
For example, automate.analytics.message
is now automate.analytics.message.v2
.
New queues will be automatically created by Automate. Automate won't connect to old queues, so if there are some messages left, they won't be processed.
For production environments with ongoing bot conversations, we recommend manually moving messages from old queues that contain conversations history and their metadata to new queues:
automate.analytics.message
->automate.analytics.message.v2
automate.analytics.metadata
->automate.analytics.metadata.v2
automate.analytics.callSummary
->automate.analytics.callSummary.v2
automate.analytics.recording
->automate.analytics.recording.v2
transcription.add.v2
->transcription.add.v3
transcription.recording.attach
->transcription.recording.attach.v2
transcription.metadata.update.v2
->transcription.metadata.update.v3
To to move messages from old queue to new queue, you can use RabbitMQ Management UI. This step should be performed after the deployment, when the new queues are created.
- Open RabbitMQ Management UI
- Go to Queues tab
- Find old queue that contains messages
- Click on queue name
- Go to Move messages section
- Enter new queue name in Destination field
- Click Move messages
240
1. NLU Facade resources requirements increase
This step is only required if autocorrect feature is going to be enabled. For description of autocorrect feature please visit documentation.
1.1. Resources requirements
Please refer to NLU Facade
resources requirements in the adequate platform size in Platform scaling.
1.2. Enable autocorrect
1.2.1. Navigate to Automate configuration repository
1.2.2. Please open ENVIRONMENT_NAME/kubernetes/helm/automate/values.yaml in Text Editor of your choice
1.2.3. Head to section chatbots.commonConf
chatbots.commonConf
1.2.4. Add following config
chatbots.nlu-facade-api {
autocorrect-languages: ["pl", ...]
}
For information about supported autocorrect-languages
please refer to NLU Facade Application's config.
2. NLU Complex models limit configuration (Optional)
As NLU Complex model is much heavier than Simple model, we've introduced
configuration parameter for limiting number of NLU complex models on the platform.
It's recommended to set the limit to avoid out-of-memory issues on the platform. To do so please follow steps below.
For information about available intentizer types and how to calculate NLU Complex models limit please refer to documentation.
2.1. Navigate to Automate configuration repository
2.2. Please open ENVIRONMENT_NAME/kubernetes/helm/automate/values.yaml in Text Editor of your choice
2.3. Head to section chatbots.commonConf
chatbots.commonConf
2.4. Add following config
chatbots.nlu.complex-models-limit: Integer
2.5. Commit changes and push to configuration repository
3. Livechat API proxy configuration (optional)
In this version, we introduced the ability to use HTTP proxy to communicate with the Livechat API.
Please follow steps below if you want to use proxy.
2.1. Navigate to Automate configuration repository
2.2. Please open ENVIRONMENT_NAME/kubernetes/helm/automate/values.yaml in Text Editor of your choice
2.3. Head to section chatbots.commonConf
chatbots.commonConf
2.4. Add following config
chatbots.channels-connector {
livechat {
proxy {
host: "PROXY_HOST"
port: PROXY_PORT
username: "PROXY_USER"
password: "PROXY_PASSWORD"
}
}
}
238
1. Speech-to-text service's configuration change
It doesn't affect on-premise deployments.
This configuration change is only required if
chatbots.admin.speech-to-text
exists.
1.1. Navigate to Automate configuration repository
1.2. Please open ENVIRONMENT_NAME/kubernetes/helm/automate/values.yaml in Text Editor of your choice
1.3. Head to section chatbots.commonConf
chatbots.commonConf
1.4. Replace chatbots.admin.speech-to-text
with following config
chatbots.admin.speech-to-text
with following configchatbots.admin.speech-to-text {
endpoint {
hostname: HOSTNAME
port: 6881
}
}
1.5. Commit changes and push to configuration repository
237
1. New database chatbots-nlu-facade
chatbots-nlu-facade
nlu-facade
application from now requires database.
1.1 Create new database in PostgreSQL Server by issuing following SQL command
CREATE DATABASE "chatbots-nlu-facade";
2. nlu-facade
configuration changes
nlu-facade
configuration changesThere are new mandatory configuration keys for nlu-facade
application.
Please follow steps below to make sure nlu-facade
connects to DB chatbots-nlu-facade
2.1. Navigate to Automate configuration repository
2.2. Please open ENVIRONMENT_NAME/kubernetes/helm/automate/values.yaml in Text Editor of your choice
2.3. Head to section chatbots.commonConf
chatbots.commonConf
2.4. Add following config
chatbots.nlu-facade.db.url: "jdbc:postgresql://DB_HOST:DB_PORT/chatbots-nlu-facade",
chatbots.nlu-facade.db.user: "PUT_USERNAME_HERE",
chatbots.nlu-facade.db.password: "PUT_PASSWORD_HERE"
2.5. Commit changes and push to configuration repository
$ git add ENVIRONMENT_NAME/kubernetes/helm/automate/values.yaml
$ git commit -m 'UPGRADE#237 1. Configure db in nlu-facade'
$ git push
3. Enable response cleaner if needed
Response cleaner is a mechanism that post-processes bot response before returning it to user. It is responsible for:
- removing whitespaces at the beginning and end
- replacing multiple spaces with one
- cleaning whitespaces before punctuation mark
- replacing multiple punctuation marks with last one
In this version, we've disabled it by default. To keep using it, you have to override config setting.
3.1. Navigate to Automate configuration repository
3.2. Please open ENVIRONMENT_NAME/kubernetes/helm/automate/values.yaml in Text Editor of your choice
3.3. Head to section chatbots.commonConf
chatbots.commonConf
3.4. Add following config
chatbots.utils.response-cleaner.enabled: true
3.5. Commit changes and push to configuration repository
4. New application storage
storage
Storage is a new application. App is enabled by default, so no additional steps are required.
4.1 Resources requirements
By default, following resources are required on the environment.
resources:
requests:
cpu: "1"
memory: "1Gi"
limits:
cpu: "1"
memory: "1Gi"
Please adjust resources requirements based on owned platform size - Platform Scaling.
4.2 New database chatbots-storage
chatbots-storage
4.2.1 Create new database in PostgreSQL Server by issuing following SQL command
CREATE DATABASE "chatbots-storage";
4.2.2 Add storage
's database configuration section
storage
's database configuration sectionAdd following properties to ENVIRONMENT_NAME/kubernetes/helm/automate/values.yaml
in section chatbots.commonConf
chatbots.storage.db.url: "jdbc:postgresql://DB_HOST:DB_PORT/chatbots-storage",
chatbots.storage.db.user: "PUT_USERNAME_HERE",
chatbots.storage.db.password: "PUT_PASSWORD_HERE"
4.3 Disk requirements
Depending on configured data source and monthly voice-based conversations traffic, please make sure that attached disk is capable of storing such an amount of data.
For more details, please refer to Storage.
235
1. CPU requirements for emerging-intents
increases
emerging-intents
increases4 additional CPUs might be required
If
emerging-intents
service is enabled on your environment (disabled by default) then you'll need 4 additional CPUs.
Resources requirements for emerging-intents
changed from:
resources:
requests:
cpu: "0.1"
memory: "1Gi"
limits:
cpu: "1"
memory: "2Gi"
to
resources:
requests:
cpu: "4"
memory: "1Gi"
limits:
cpu: "12"
memory: "2Gi"
So please make sure there's enough resources on Kubernetes cluster to accommodate the change.
234.0.74
1. web-chat
configuration changes
web-chat
configuration changesThere are new mandatory configuration keys for web-chat
application.
Please follow steps below to make sure web-chat channel works properly
This step is optional if
web-chat
application is disabled. If it's not set theweb-chat
won't be displayed as an available channel.
1.1. Navigate to Automate configuration repository
1.2. Please open ENVIRONMENT_NAME/kubernetes/helm/automate/values.yaml in Text Editor of your choice
1.3. Head to section chatbots.commonConf
chatbots.commonConf
1.4. Make sure chatbots.admin.web-chat-demo-url
key is set and points to URL of web-chat
application
chatbots.admin.web-chat-demo-url
key is set and points to URL of web-chat
application1.5. If not set add new configuration key
chatbots.admin.web-chat-demo-url: https://WEB_CHAT_URL
1.6. Commit changes and push to configuration repository
$ git add ENVIRONMENT_NAME/kubernetes/helm/automate/values.yaml
$ git commit -m 'UPGRADE#234.19 1. set web-chat demo url'
$ git push
234
1. New index in chatbots-analytics
database
chatbots-analytics
databaseBefore upgrading to the new version, create a new index in chatbots-analytics
database by issuing following SQL command
CREATE INDEX IF NOT EXISTS idx_session_company_id ON session_log(company_id);
Issuing this command manually will significantly smoothen the upgrading process.
233
1. New index in chatbots-analytics
database
chatbots-analytics
databaseBefore upgrading to the new version, create a new index in chatbots-analytics
database by issuing following SQL command
CREATE INDEX IF NOT EXISTS idx_session_updated_at ON session_log(update_time);
Issuing this command manually will significantly smoothen the upgrading process.
232
1. Settings moved from config to UI
The following settings have been moved to the System module in Admin panel:
- chatbots.admin.conversation-history-enabled
- chatbots.admin.open-ai.api-key
- chatbots.admin.open-ai.org-id
- chatbots.admin.invitations.enabled
- chatbots.admin.invitations.expire-after
Those config settings will no longer be considered by the application. If you override any of those settings, please remove it (or comment-out) from your config to avoid confusion.
231
1. web-chat
's external API
web-chat
's external APIThe configuration key that holds OTP secret has been renamed from chatbots.web-chat.external-api.otp-secret
to chatbots.web-chat-api.otp-secret
.
228
1. Change hooks configuration in thread-coordinator
and web-chat
thread-coordinator
and web-chat
1.1. thread-coordinator
configuration
thread-coordinator
configurationchatbots.thread-coordinator.hooks.hook-receivers-urls
renamed tochatbots.thread-coordinator.hooks.hooks-receivers
- OTP secret need to be defined separately for each hook receiver URL
- there is new optional field:
chatbots.thread-coordinator.hooks.hooks-messages-max-age
chatbots.thread-coordinator.hooks {
hooks-receivers: [
{
url: "https://REACT_HOOKS_SERVER_URL/automate"
otp-secret: "XXX"
}
]
}
1.2. web-chat
configuration
web-chat
configurationchatbots.web-chat.hooks.hooks-api-config
renamed tochatbots.web-chat.hooks.hooks-receivers
chatbots.web-chat.hooks.hooks-receivers
is now a list of URLs with OTP secrets
chatbots.web-chat.hooks {
hooks-receivers: [
{
url: "https://REACT_HOOKS_SERVER_URL/webchat"
otp-secret: "XXX"
}
]
}
The format of message web-chat
hooks messages has been changed. It's breaking change. It's possible that, some events in old format might be present in the queue, causing the message will be lost and there might be some parsing failures in the logs.
(Optional) If there are parsing failures after deploy in
automate.webhooks.webchat
queue, then please purge the queue.
225
1. DB HTTP connector is a new optional application.
By default, the application is disabled and won't be deployed. To enable it, modify the following configuration keys in [ENV_NAME]/kubernetes/helm/automate/values.yaml
automate:
chatbots:
apps:
dbHttpConnector: true
2. Migrate MS Teams bots to Channels
MS Teams Bot service has been removed - it needs to be disabled in custom config for environments with MS Teams.
Cron job changes
We have renamed RefreshMSTeamsSubscriptions
cron job to RefreshChannelsSubscriptions
.
From now on, it's a system job. There is no need to configure it manually for environments with MS Teams. Please remove the following configuration if present:
chatbots.cron-orchestrator {
cron-jobs: [
{
name: RefreshMSTeamsSubscriptions,
uuid: "c06156ed-ccb1-4d85-b28a-8319bd93613b",
interval: "0 */5 * ? * *",
message-timeout: 3m
}
]
}
Enable MS Teams Channel
The service that takes over the communication with MS Teams is Channels Connector. Bots configuration has been moved from config to the UI - Channels module.
In order to enable MS Teams channel, please provide the configuration:
chatbots.channels-connector.ms-teams {
enabled: true
private-key: "XXX",
client-secret: "XXX"
tenant-id: "XXX"
client-id: "XXX"
}
224
1. Unsync NLU after the deploy
Due to the new intentizer and keywords deployment, all NLUs will have to be retrained. To mark all NLUs "Not ready",
following SQL script on DB chatbots-admin
has to be triggered.
Please run it only when deployment is verified as successful, because it cannot be rolled back.
UPDATE nlu_models SET status = 'OutSync';
2. Delete all intentizer (simple) models from RedisAI
The new version of the intentizer introduces a generation of drastically smaller models.
To remove any "loose" or "forgotten" models run following command from any of RedisAI cluster node.
Please run it only when deployment is verified as successful, because it cannot be rolled back.
$ redis-cli --cluster call localhost:6379 keys '*::intentizer*' | xargs -L 1 -d'
' redis-cli --cluster call localhost:6379 del
3. Restart RedisAI cluster in order to free up memory
Delete each redis-ai pod independently - one by one, waiting until the previous is marked as healthy and then proceeding with next.
4. New application platform-api
platform-api
Platform API is new optional application.
Steps
Please follow steps below if you want to turn it on.
1. Enable application deployment
By default, the platform-api
application is disabled and won't be deployed. To enable it modify following configuration keys in [ENV_NAME]/kubernetes/helm/automate/values.yaml
chatbots:
apps:
platformApi: true
2. Expose Platform API outside Kubernetes
Platform API needs to be accessible from the outside of Kubernetes to serve it's purpose.
2.1 Add following entry to [ENV_NAME]/kubernetes/ingress/automate_ingress.yaml
[ENV_NAME]/kubernetes/ingress/automate_ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: envname-automate-ingress
spec:
tls: # add spec.tls section
- hosts: # include URIs to be secured by the certificate
- platform-api-envname.automate.example.com
secretName: tls-wildcard-example-com-secret # TLS certificate secret name that will be added in the next step
rules:
- host: platform-api-envname.automate.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: platform-api
port:
number: 5780
2.2 Install ingress configuration on Kubernetes cluster & configure any proxy servers in front of it.
kubectl apply -f [ENV_NAME]/kubernetes/ingress/automate_ingress.yaml
222
1. Webchat Connectivity changes
Removed connections:
webchat
application no longer connects to bot-integration
service from SentiOne Listen & React.
The configuration chatbots.senti-one-api
is not used in webchat
configuration anymore.
More details can be found here.
New connections:
webchat
now connects to: hooks-server
and thread-coordinator
.
hooks-server
URL need to be defined in chatbots.web-chat.hooks.hooks-api-config.url
.
More details can be found here.
2. Override the default OTP secret for Webchat external API
Generate a new secret and set it in [ENV_NAME]/kubernetes/helm/automate/chatbots/common.conf
chatbots.web-chat {
external-api {
otp-secret: "XXX"
}
}
The same secret should be set for L&R by modifying the following key in sentione.config.configYaml
in [ENV_NAME]/kubernetes/helm/automate/values.yaml
webchat:
otpSecret: "XXX"
3. Twilio/Vonage - React integration changes (optional)
If React is used to provide human agent service to Twilio/Vonage conversations then the steps below have to be followed
3.1 Navigate to Automate configuration repository
3.2 Amend ENVIRONMENT_NAME/kubernetes/helm/automate/values.yaml
Change following section in chatbots.config.commonConf
chatbots.channels-connector.hooks-server-url: https://REACT_HOOKS_SERVER_URL
More details about react hooks server can be found here
3.3 Commit changes and push to configuration repository
$ git add ENVIRONMENT_NAME/kubernetes/helm/automate/values.yaml
$ git commit -m 'UPGRADE#222 3. sets hooks-server url used by channels-connector'
$ git push
4. React hooks-server
is no longer required for setting-up Twilio/Vonage chatbots (optional)
hooks-server
is no longer required for setting-up Twilio/Vonage chatbots (optional)Primary receiver of Twilio/Vonage webhooks is now
channels-connector
service which implies thathooks-server
application is now optional and no needed if no Human Agent serviced sources are integrated within SentiOne React.
Please follow the steps below only if you want to save resources and no react integration with these sources is used: Facebook, Twilio, Vonage, Twitter
4.1 Navigate Automate configuration repository
4.2 Amend ENVIRONMENT_NAME/kubernetes/helm/automate/values.yaml
Change following key:
sentione.hooksServer.enable: false
4.3 Commmit changes and push to configuration repository
$ git add ENVIRONMENT_NAME/kubernetes/helm/automate/values.yaml
$ git commit -m 'UPGRADE#222 4. disables hooks-server'
$ git push
5. Twilio webhooks URL changes
Following steps should be performed after platform upgrade
Twilio webhook events should now be delivered to channels-connector
service.
5.1 Log in to automate
5.2 Navigate to Channels module
5.3 Click Edit icon on any of the Twilio channels.
5.4 Copy Webhook URL to clipboard
5.5 Log in to twilio.com
5.6 Navigate to Phone numbers
5.7 Set Webhook URL for messaging service to be the one you copied in step 5.4
5.8 Repeat the steps for all Twilio channels / numbers.
6. Vonage webhooks URL changes
Following steps should be performed after platform upgrade
Vonage webhook events should now be delivered to channels-connector
service.
6.1 Log in to automate
6.2 Navigate to Channels module
6.3 Click Edit icon on any of the Vonage channels.
6.4 Copy Webhook URL & Webhook Status URL to clipboard
6.5 Log in to vonage.com
6.6 Navigate to Applications
6.7 Set Webhook URL to match URLs copied in step 6.4
6.8 Repeat the steps for all Vonage channels / numbers.
7. Removed URL and HMAC key for Channels
We have removed two properties from chatbots.channels
:
hooks-server-url
,vonage-repeat-hmac-key
.
These changes are related to aforementioned Twilio/Vonage changes.
From now on, these properties are not supported.
7.1 Navigate to Automate configuration repository
7.2 Amend ENVIRONMENT_NAME/kubernetes/helm/automate/values.yaml
Remove following sections in chatbots.config.commonConf
chatbots.channels.hooks-server-url
chatbots.channels.vonage-repeat-hmac-key
218
1. Set URLs and HMAC key for Channels
We've added webhook URLs generator. Based on configured properties, webhooks URLs will be generated and displayed on appropriate channels forms.
Please override below properties before upgrading the platform.
hooks-server-url
is only required for environments with configuredHooksServerUrl
.
chatbots.channels {
channels-connector-url: "URL"
vonage-repeat-hmac-key: "XXX" # By default it is equal to Listen's onpremise hookServer.vonage.repeatHmacKey
hooks-server-url: "URL" # Optional
}
217.0.24
Healthchecks for slim-uploader and refinery applications
From this release
(217.0.24)
readiness and liveness healthchecks are enabled also for applications:slim-uploader
andrefinery
, which are part of thesentione
helm chart.
217
1. Migrate Facebook and WhatsApp bots to Channels
Facebook Bot and WhatsApp Bot services have been removed - they need to be disabled in custom config.
The service that takes over the communication with Facebook, WhatsApp etc. is Channels Connector.
Bots configuration have been moved from config to the UI - Channels module.
2. Set encryption key for Channels params
We've added encrypting Channels parameters (like API keys to external services) before saving them to the database.
Generate new encription key and place it in config. Key length should be 256 bits (32 characters).
chatbots.channels {
channel-data-encryption-key: "XXX"
}
216
1. Elasticsearch script
We have added two new fields into to Statement
schema, in order to update your current ES cluster there is a need to run a script from our repository.
More details about the upgrade steps soon.
2. Unsync NLU after the deploy
Due to the new Intentizer + RedisAI deployment, all NLUs will have to be retrained. To mark all NLUs "Not ready", following SQL script on DB chatbots-admin has to be triggered. Please run it only when deployment is verified as successful, because it cannot be rolled back.
UPDATE nlu_models SET status = 'OutSync';
3. Configure RefreshMSTeamsSubscriptions cron job
We have removed RefreshMSTeamsSubscriptions
cron job from system jobs. From now, RefreshMSTeamsSubscriptions
has to be defined in configuration.
WHERE?
Environments where ms-teams-bot
are deployed should have configured RefreshMSTeamsSubscriptions
cron job using following configuration.
chatbots.cron-orchestrator {
cron-jobs: [
{
name: RefreshMSTeamsSubscriptions,
uuid: "c06156ed-ccb1-4d85-b28a-8319bd93613b",
interval: "0 */5 * ? * *",
message-timeout: 3m
}
]
}
Please make sure that on all environments, which don't have
ms-teams-bot
deployed, queuesautomate.job.msteams.subscription
are purged.
214
1. Reddit Domain Category
Issue ID: DEV-14830
WHERE?
Environments where Listen crawlers are used
Apply SQL script on chimeo
(new-web) database AFTER THE DEPLOY.
do $$
declare
domain_exists boolean := false;
begin
select true from urldomain where host_name = 'www.reddit.com' INTO domain_exists;
if not found then
INSERT INTO urldomain (id, ip, allow_redirect_to_host, allow_subdomains, archived, automatic_learn_count, charset, commentsapiname, crawl, created_at, custom_cookie, deactivation_date, from_auto_search, from_blog_search, group_id, host_name, important, kindness, lang, learn_by_generic_to_configurable, learning_date, learning_flow_state, manual_profile, max_depth, modified_at, name, never_crawl, no_statements_sites_to_learn, no_statements_sites_to_reset, notes, path_after_host, posts_page_link, profile, robotstxt, seo_moz_domain_authority, topics_page_link, user_agent, ignore_encoding, average_posts_per_month, monthly_uniqueurls, average_page_views, average_time_on_site, bounce_rate, data_month, seo_moz_page_authority, estimated_visits, sites_with_statements, sites_without_statements, fraction_of_whole_host, always_try_commentsapi, banned_hosts, ignore_robotstxt, version, manual_kindness, excluded_subdomains, excluded_paths_after_host, last_modified_by, accepted_languages, too_long_statements_error, max_posts_per_page, modified_by_user_at, proxy_host, proxy_port, problem, statistics_updated_at, queue_restart_interval, allow_different_top_level_domain_links, search_profile, only_private, country, download_mode, inactivity_reason) VALUES (74, null, null, false, false, null, 'UTF-8', null, false, '2023-03-15 12:45:33.403000 +00:00', null, null, null, null, 44, 'www.reddit.com', 0, 10000, 'en', false, null, null, false, null, '2023-03-15 13:25:45.791000 +00:00', 'https://www.reddit.com', false, null, null, null, null, null, 'eNp9k9tugzAMht+F6z1B76quSGithlh3kKZdWMFQq8FBiWk7TXv3BbK1AardIOX7fbb5SiwqY8u3HGSfLJLkLqHRgwUtg85uwwJbDQq91JOgliAYGUMne2NnYBRQGR+RJTayQkrj/SRWoMtZyMBXozDvHxdhR6JvxHkhPLkIt8aR0DG2ZOzEgh6RGiZGzielxn+e/Chj4YCfJz/ckMOFksK8H24oVLN3z6HGmGriQ4E1GZ7SlelajeHdeq+NZ1HvvYnbWWBXGdv4mg3/OQPXLlRYEZfbTgv5SBk/MhZDecmiAu2wP4bcYkXnYN1gSRC3sb0COIKADXaytwhlStZJbpxMthjUDfwj9oKb0em+Ai2mBxzwzrSkopEM9QN3oPuM7tKhvz0FEk7qAkEpbGUZzsS9khc7mfh1TkzTs3QY7+9s/axSa5o1K1MS13FF2bzIrHy2evT39FtLSXuwPivduevWrF8h16NuzsWUaaOGTfev7x904FAw', null, null, null, null, false, null, null, null, null, null, null, null, null, null, null, null, false, null, false, 0, false, null, null, '[email protected]', null, false, null, '2023-03-15 13:25:45.789000 +00:00', null, null, false, null, null, false, null, false, null, 'HttpClientMode', null);
else
UPDATE urldomain SET group_id = 44 WHERE host_name = 'www.reddit.com';
end if;
end $$
2. hookServer.publicUrl config parameter change
This change doesn't affect existing environments, so nothing has to be changed.
This change has been also backported to Automate 213.0.31.
Existing config property used for defining public URL of Sentione's hook-server has become polymorphic.
It can now both accept single string value as well as list of string values. Thanks to this change, hook-server can be exposed on multiple different URLs.
Some sources (like Twitter) use this property to register webhooks subscription. In this scenario - first URL from the list is going to be used.
To make a use of this property modify following key in sentione.config.configYaml
in [ENV_NAME]/kubernetes/helm/automate/values.yaml
using one of two possible options:
- as string
hookServer:
publicUrl: "https://sentione-webhooks-url.com"
- as list of strings
hookServer:
publicUrl: ["https://sentione-webhooks-url.com", "https://alternative-sentione-webhooks-url.com"]
213
1. Unsync NLU after the deploy
Issue: DEV-14857
Due to the RedisAI deployment, all NLUs will have to be retrained. To mark all NLUs "Not ready", following SQL script on DB chatbots-admin
has to be triggered. Please run it only when deployment is verified as successful, because it cannot be rolled back.
UPDATE nlu_models SET status = 'OutSync';
2. Upgrade ElasticSearch cluster from 6.8 to 7.17.9
This is major upgrade of document database used for storing chatbot transcriptions.
More details about the upgrade steps soon.
3. Install RedisAI
There are some major changes to NLU services which now require installation of RedisAI cluster.
More details about the installation process can be found in external-services/redisai-installation
212
1. Conditional update script bug has been fixed
Issue ID: DEV-14883
Mentions from social media like Instagram & Facebook were affected by a bug which could cause certain properties to be wiped out during metadata refresh.
In order for fix to be effective - following manual steps has to be followed.
Steps
1. Cloning GIT repository with ElasticSearch Ansible scripts in $HOME
directory
$HOME
directory$ cd ~
$ git clone https://repo-ext.sentione.com/public/external-services.git
Cloning into 'external-services'...
Username for 'https://repo-ext.sentione.com': YOUR_GIT_USERNAME
Password for 'https://[email protected]@repo-ext.sentione.com':
If you already cloned the repo - please pull latest changes!
2. Navigate to $HOME/external-services/elasticsearch/6.8.23/scripts
$ cd ~/external-services/elasticsearch/6.8.23/scripts
3. Run storeScripts.sh
$ ./storeScripts.sh ELASTICSEARCH_HOSTNAME ELASTICSEARCH_PORT ELASTICSEARCH_USERNAME ELASTICSEARCH_PASSWORD ELASTICSEARCH_CERTIFICATE_PATH
Example
$ ./storeScripts.sh elastic-master-host1 9200 esuser espassword ~/automate-config/production/external-services/elasticsearch/elastic-stack-ca.pem
Storing commonValuesUpdateScriptPain.painless...
Storing conditionalUpdate.painless...
Storing dayOfWeekIntScriptFieldPain.painless...
Storing dayOfWeekScriptFieldPain.painless...
Storing hourOfDayFilterPain.painless...
Storing hourOfDayScriptFieldPain.painless...
Storing opinionUpdate.painless...
Storing removeAndAddTagsScriptPain.painless...
211
1. New application channels-connector
channels-connector
Channels connector is new optional application.
Steps
Please follow steps below if you want to turn it on.
1. Enable application deployment
By default, the channels-connector
application is disabled and won't be deployed. To enable it modify following configuration keys in [ENV_NAME]/kubernetes/helm/automate/values.yaml
sentione:
channelsConnector:
enable: true
2. Expose Channels connector bot on public URL
Channels connector needs to be accessible from the outside.
This means that this application needs to be accessible from public internet in order to work properly.
2.1 Add following entry to [ENV_NAME]/kubernetes/ingress/automate_ingress.yaml
[ENV_NAME]/kubernetes/ingress/automate_ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: envname-automate-ingress
spec:
tls: # add spec.tls section
- hosts: # include URIs to be secured by the certificate
- channels-connector-envname.automate.example.com
secretName: tls-wildcard-example-com-secret # TLS certificate secret name that will be added in the next step
rules:
- host: channels-connector-envname.automate.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: channels-connector
port:
number: 5782
2.2 Install ingress configuration on Kubernetes cluster & configure any proxy servers in front of it.
kubectl apply -f [ENV_NAME]/kubernetes/ingress/automate_ingress.yaml
210
1. New application ms-teams-bot
ms-teams-bot
MS Teams bot is new optional application.
Steps
Please follow steps below if you want to turn it on.
1. Enable application deployment
By default, the ms-teams-bot
application is disabled and won't be deployed. To enable it modify following configuration keys in [ENV_NAME]/kubernetes/helm/automate/values.yaml
sentione:
msTeamsBot:
enable: true
2. Expose MS Teams bot on public URL
MS Teams bot application receives and sends webhooks from/to Microsoft Teams.
This means that this application needs to be accessible from public internet in order to work properly.
2.1 Add following entry to [ENV_NAME]/kubernetes/ingress/automate_ingress.yaml
[ENV_NAME]/kubernetes/ingress/automate_ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: envname-automate-ingress
spec:
tls: # add spec.tls section
- hosts: # include URIs to be secured by the certificate
- ms-teams-bot-envname.automate.example.com
secretName: tls-wildcard-example-com-secret # TLS certificate secret name that will be added in the next step
rules:
- host: ms-teams-bot-envname.automate.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: ms-teams-bot
port:
number: 5770
2.2 Install ingress configuration on Kubernetes cluster & configure any proxy servers in front of it.
kubectl apply -f [ENV_NAME]/kubernetes/ingress/automate_ingress.yaml
208
1. New application hooks-server
hooks-server
React Hooks Server is new optional application used by WhatsApp Bots.
hooks-server application has been also backported to 207.0.17.
Steps
Please follow steps below if you want to turn it on
1. Enable application deployment
By default, the hooks-server
application is disabled and won't be deployed. To enable it modify following configuration keys in [ENV_NAME]/kubernetes/helm/automate/values.yaml
sentione:
hooksServer:
enable: true
2. Expose hook server on public URL
Hook server application receives webhooks coming from Third party services like Twilio, Facebook, Twitter etc.
This means that this application needs to be accessible from public internet in order to work properly.
2.1 Add following entry to [ENV_NAME]/kubernetes/ingress/automate_ingress.yaml
[ENV_NAME]/kubernetes/ingress/automate_ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: envname-automate-ingress
spec:
tls: # add spec.tls section
- hosts: # include URIs to be secured by the certificate
- hooks-server-envname.automate.example.com
secretName: tls-wildcard-example-com-secret # TLS certificate secret name that will be added in the next step
rules:
- host: hook-server-envname.automate.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: hooks-server
port:
number: 8069
2.2 Install ingress configuration on Kubernetes cluster & configure any proxy servers in front of it.
kubectl apply -f [ENV_NAME]/kubernetes/ingress/automate_ingress.yaml
3. Add hookServer configuration section to config.yaml
Modify sentione.config.configYaml
key in [ENV_NAME]/kubernetes/helm/automate/values.yaml
by adding following section:
onpremise:
hookServer:
publicUrl: https://PUT_HOOKS_SERVER_PUBLIC_URL
automate:
# Please make sure it matches Chatbots config key: chatbots.thread-coordinator.hooks.otp-secret
otpSecret: PUT_OTP_SECRET_HERE
2. New database chatbots-thread-coordinator
chatbots-thread-coordinator
System now requires additional database for the purpose of thread-coordinator
application.
Steps
1. Create new database in PostgreSQL Server by issuing following SQL command
CREATE DATABASE "chatbots-thread-coordinator";
3. New application thread-coordinator
thread-coordinator
Thread coordinator is new optional application used by WhatsApp Bots.
Steps
Please follow steps below if you want to turn it on
1. Enable application deployment
Modify following configuration keys in [ENV_NAME]/kubernetes/helm/automate/values.yaml
chatbots:
apps:
threadCoordinator: true
2. Add thread coordinator configuration section
Add following section to [ENV_NAME]/kubernetes/helm/automate/chatbots/common.conf
chatbots.thread-coordinator {
db {
url: "jdbc:postgresql://database-host:5432/chatbots-thread-coordinator",
user: "PUT_USERNAME_HERE",
password: "PUT_PASSWORD_HERE"
max-connections: 20
}
hooks {
hook-receivers-urls: ["https://REACT_HOOKS_SERVER_PUBLIC_URL/automate"]
hooks-request-timeout: 30s
# Please make sure it matches with OTP Secret set in SentiOne's config.yaml key: hookServer.automate.otpSecret
otp-secret: "PUT_OTP_SECRET_HERE"
}
}
206
1. Elasticsearch script
We have added two new fields into to Statement
schema, in order to update your current ES cluster there is a need to run a script from our repository.
Steps
1. Cloning GIT repository with Ansible scripts
git clone https://repo-ext.sentione.com/public/external-services.git
Cloning into 'external-services'...
Username for 'https://repo-ext.sentione.com': YOUR_GIT_USERNAME
Password for 'https://[email protected]@repo-ext.sentione.com': YOUR_GIT_PASSWORD
2. Run existing mappings script
After pulling changes in elasticsearch repo run script with parameters
external-services/elasticsearch/6.8.23/indexScripts/updateExistingMappingInPlace/9-add-author-category.sh ELASTIC_HOST PORT [USERNAME] [PASSWORD]
3. Run index template script [NEW]
Step added: 30.11.2022
Run script with parameters
external-services/elasticsearch/6.8.23/indexScripts/updateAllIndexTemplates.sh ELASTIC_HOST PORT [USERNAME] [PASSWORD]
205
1. Docker image registry URL change
Docker image registry has changed from dockerhub.sentione.com to harbor-vm-proxy.sentione.com
In order to upgrade to new version of the platform you'll have to create new secret for pulling images from the new registry.
Default secret name for pulling images is set inside automate's HELM package values.yaml and have following values:
nlu:
imagePullSecrets:
- name: "sec-harbor-vm-proxy.sentione.com"
chatbots:
imagePullSecrets:
- name: "sec-harbor-vm-proxy.sentione.com"
sentione:
imagePullSecrets:
- name: "sec-harbor-vm-proxy.sentione.com"
If you override these values in your deployment you'll have to update commands below accordingly.
Steps
- Please execute following commands on your Kubernetes clusters:
# creating secret type object named 'sec-harbor-vm-proxy.sentione.com' - enabling access to SentiOne docker registry
kubectl create secret \
docker-registry sec-harbor-vm-proxy.sentione.com \
--docker-server=harbor-vm-proxy.sentione.com \
--docker-username=USERNAME \
--docker-password=PASSWORD \
[email protected] \
--namespace sentione
- Verify secret has been successfully created
# veryfying if secret type object has been created in sentione namespace
kubectl get secrets -n sentione sec-harbor-vm-proxy.sentione.com
NAME TYPE DATA AGE
sec-harbor-vm-proxy.sentione.com kubernetes.io/dockerconfigjson 1 2d17h
2. Docker registry key structure has changed.
Structure & Name of following keys from values.yaml has changed:
- chatbots.docker_registry
- sentione.docker_registry
- nlu.docker_registry
Steps
- If configuration for your environment overwrites default docker registry (eg. because of using self-hosted proxy),
please update your values.yaml accordingly to changes listed below.
Chatbots
- Before:
chatbots.docker_registry: custom-charts-repo.com
- After:
chatbots.dockerRegistry: host: custom-charts-repo.com path: application: /chatbots
SentiOne
- Before:
sentione.docker_registry: custom-charts-repo.com
- After:
sentione.dockerRegistry: host: custom-charts-repo.com path: application: /sentione thirdParty: /sentione
NLU
- Before:
nlu.docker_registry: custom-charts-repo.com
- After:
nlu.dockerRegistry: host: custom-charts-repo.com path: application: /nlu
3. Webchat is now using Redis
Redis is used for delivering websocket messages across different instances of webchat application. Webchat connects to Redis using host and port defined in chatbots.concurrency secion of config. It's the same config that is already used by gateway and dialog manager applications.
Default config:
chatbots.concurrency {
redis {
host: "redis"
port: 6379
}
}
You can override default config by adding this section to chatbots.config.commonConf key in customValues.yaml
4. Webchat is now using postgres database
Database has to be created manually by executing script:
CREATE DATABASE "chatbots-web-chat";
Default config:
chatbots.web-chat.db {
url: "jdbc:postgresql://db:5432/chatbots-web-chat",
user: "postgres",
password: "root"
max-connections: 20
}
You can override default config by adding this section to chatbots.config.commonConf key in customValues.yaml
202
- Text to speech integration (optional - does not affect on-premise deployments)
- There's new experimental feature of integrating with Text To Speech service
- To set it up please add following section to chatbots.config.commonConf key in customValues.yaml
chatbots.admin.text-to-speech { base-url: "http://text-to-speech-service-host:PORT" services { pl: "techmo-dev" # Endpoint name for polish language en: "techmo-dev-en" # Endpoint name for english language } }
- Speech to text integration (optional - does not affect on-premise deployments)
- There's new experimental feature of integrating with Speech To Text service (via GRPC)
- To set it up please add following section to chatbots.config.commonConf key in customValues.yaml
chatbots.admin.speech-to-text { services { pl { # Configuration for ASR service for polish language hostname: "HOSTNAME" # Hostname of GRPC service hosting Speech To Text endpoint port: 6881 # Port of GRPC service hosting Speech to Text Endpoint } en { # Configuration for ASR service for english language hostname: "HOSTNAME" port: 6882 } es { # Configuration for ASR service for spanish language hostname: "HOSTNAME" port: 6883 } } }
199
- SentiOne application (web, refinery etc.) is added as optional dependency to automate HELM package
- On environments where SentiOne React was not needed you'll have to add following section to values.yaml
sentione: enabled: false
- This change was also backported to previous releases:
- 197.0.9
- 198.0.3
- On environments where SentiOne React was not needed you'll have to add following section to values.yaml
- Installation method changes. Instead of installing individual components (nlu, sentione, chatbots) you should install one aggregated package called Automate. More details in INSTALLATION.md
195
- Implemented HELM package versioning
- Implemented Installation Guide versioning
- Latest installation instruction can now be found on https://automate.help.sentione.com/docs/installation-manual
Updated 14 days ago