Dialogue Studio OnPremises Deployment Manual

Note This product is in preview, contact your sales contact for more information.

Introduction

Anywhere365 Dialogue Studio is deployed as a Docker container for an on-premises deployment. This eliminates Dialogue Studio manual installation steps and configuration. Dialogue Studio has dependencies on third-party software that is also prepared in the container. All those dependencies are already installed inside the Dialogue Studio container image. A container is a virtual environment that runs on top of an Operating System kernel. Data from a container on your host system is by default not saved, unless you explicitly mount a host directory as a volume inside the container. The use of containers takes away deployment complexity and it also improves security.

Note The container does not have access to the filesystem of the host OS, however all networking operations are allowed by default. It is possible to create a separate network and restrict access on it for your container. However, this is not within the scope of this document.

Anywhere365 Dialogue Studio container images are built on Docker. For more information about Docker, please review their website.

This document describes both Windows and Linux deployments.

 

Quickstart

This chapter expects that you have basic knowledge of Docker and have Docker already installed on your server. It is recommended that you read the sections about your OS.

For Linux it doesn’t matter which OS you have, you just need the Anywhere365 Dialogue Studio container image without the windows-xxxx suffix.

The Anywhere365 Dialogue Studio installation media can be imported in Docker with:

docker load -i dialoguestudio-8.0.0.34950.tgz

To run the Anywhere365 Dialogue Studio container image, use the following command. Change the name, local folder path, host port, username, password and time zone to your preference.

Note that we are splitting the docker run command in multiple lines below, you should execute it in one line on your terminal or PowerShell window. Linux host example:

docker run \

--name dialoguestudio \

-d \

-p 1880:1880 \

-v ~/dialoguestudio:/data \

-e NODE_RED_USERNAME=John \

-e NODE_RED_PASSWORD=Doe \

-e TZ=Europe/Amsterdam \

--restart unless-stopped \

anywhere365-dialoguestudio:8.0.0.34950

 

Now Dialogue Studio is available through http://localhost:1880/ on the Docker host.

The ~ sign is replaced by /users/username on windows and /home/username on linux.

To update, simply stop and rename the container and start a new one with the new version.

docker stop dialoguestudio

docker rename dialoguestudio dialoguestudio-backup

docker run \

--name dialoguestudio \

-d \

-p 1880:1880 \

-v ~/dialoguestudio:/data \

-e NODE_RED_USERNAME=John \

-e NODE_RED_PASSWORD=Doe \

-e TZ=Europe/Amsterdam \

--restart unless-stopped \

anywhere365-dialoguestudio:8.0.0.34950

 

Installation of Docker

Linux host

Installation steps may vary for different Linux distributions. In this document we will handle an Ubuntu 18.04 LTS a Debian based distribution. Ubuntu 18.04 LTS or 20.04 are Anywhere365 Dialogue Studio reference platforms. You can deploy Desktop or Server. If you are unsure deploy Desktop, if you are experienced linux user consider Server.

Install Ubuntu Desktop or Server 18.04 LTS on a x64 hardware or Virtual Machine.

Make sure you have your OS up to date by running

sudo apt update

sudo apt upgrade -y

sudo reboot

Then install docker by running

sudo apt install docker.io -y

sudo usermod -aG docker ${USER}

sudo reboot

Or use your Linux distribution specific or preferred Docker installation instructions.

Verify that docker is installed and operational by running

sudo docker run --rm alpine echo "Hello world"

If everything is working you should see the message Hello world in your terminal like the image below.

 

Windows host

For Windows it is important to use the right container image. If your Windows version is 1809, you must use the -windows-1809 variant of the Dialogue Studio container image. To lookup which Windows version you have, execute the following command in PowerShell.

(Get-Item "HKLM:SOFTWARE\Microsoft\Windows NT\CurrentVersion").GetValue('ReleaseID')

Anywhere365 Dialogue Studio availability for Windows is listed in table below. When your Windows version is not listed, feel free to inform if support can be added.

Windows version

Friendly name

Supported?

Notes

1607

Windows Server 2016

No

Containers on Windows Server 2016 are not supported because of missing required features for Dialogue Studio.

1809

Windows Server 2019

Yes

 

1903

Windows Server 2019

Windows 10 (see note)

Yes

This Windows Server version doesn’t support Desktop Experience.host os or container?

1909

Windows Server 2019

Windows 10 (see note)

Yes

This Windows Server version doesn’t support Desktop Experience. Host os or container

Note Dialogue Studio can run on Windows 10 Docker Desktop installations, however Anywhere365 will not be able to provide support on those deployments.

 

For Windows it is important to use the right Dialogue Studio container image. If your Windows version is 1809, you must use the -windows-1809 variant of the Dialogue Studio container image. To lookup which Windows version you have, execute the following command in PowerShell.

(Get-Item "HKLM:SOFTWARE\Microsoft\Windows NT\CurrentVersion").GetValue('ReleaseID')

Before proceeding with Docker installation, make sure that Windows Server is up to date. Open a PowerShell prompt with Administrator permissions.

First install the DockerMsftProvider module. Answer Yes to all the prompts.

Install-Module -Name DockerMsftProvider -Repository PSGallery -Force

Then install the Docker program from the provider. Answer Yes to all the prompts.

Install-Package -Name docker -ProviderName DockerMsftProvider

Finally restart the server.

Restart-Computer -Force

After the server is rebooted open a new PowerShell prompt with elevated permissions. Now enter the following command to verify that Docker was installed and is operational for use. Make sure to replace the 1809 value with your Windows Server version id.

docker run --rm mcr.microsoft.com/windows/servercore:1809 powershell -Command Write-Host "Hello Dialogue Studio here"

The first time when you do this it can take some time. The Docker image has to be downloaded and configured first. When you see the Hello World message printed in the PowerShell window the Docker environment is up and running. The windows should look like this:

 

Windows Subsystem for Linux 2

Windows Subsystem for Linux 2 (WSL 2) is announced to be generally available on version 2004 of Windows . Test results for WSL 2 are positive. Much faster network and disk IO. Efficiently run small Linux containers on Windows. You are free to experiment with WSL 2 and Dialogue Studio, however we discourage to use WSL 2 in production environments until Microsoft releases a production version. When WSL 2 is released this document will be updated with instructions for installing Dialogue Studio on WSL 2. When using WSL 2 we will use a Linux container.

 

Deploying Anywhere365 Dialogue Studio

This chapter is split in 3 sections: general, Windows and Linux deployments. The general section is applicable for both Windows and Linux. The Windows and Linux sections contain OS specific instructions.

General

Load the container distribution into Docker

In general, you will always start with importing the Dialogue Studio container distribution into Docker. First obtain a Dialogue Studio container distribution (see paragraph obtain container image per OS section below).

To import the container image, make sure the container image file is downloaded to the Docker host and you have a terminal window open in the directory containing the file. Now, to import the container image, execute following command. Replace the filename with the file’s name you have downloaded.

sudo docker load -i dialoguestudio-8.0.0.34950.tgz

If the operation succeeds a result like the screenshot below. Please take note of the container image name on the last line of the response. In this example it is anywhere365-dialoguestudio:8.0.0.34950.

 

Run Dialogue Studio

The command below can be used to start a Dialogue Studio container. If this is the first time you are working with containers, please read the rest of the manual first before you try to get Dialogue Studio to work.

Note Always store the run command somewhere you can find it later. You’ll need it to update Dialogue Studio.

After executing the docker run command with the detach parameter -d you won’t see any startup errors. You can see if the container is running with docker ps -a. If the container isn’t running, then the container is stopped / exited. You can inspect the logs manually with the docker logs <containername> command.

Note that we are splitting the docker run command in multiple lines below, you should execute it in one line on your terminal or powershell window.

Linux

docker run \

--name dialoguestudio \

-d \

-p 1880:1880

-v ~/.dialoguestudio:/data \

-e NODE_RED_USERNAME=John \

-e NODE_RED_PASSWORD=Doe \

-e TZ=Europe/Amsterdam \

--restart unless-stopped \

anywhere365-dialoguestudio:8.0.0.34950

 

Windows

docker run \

--name dialoguestudio \

-d \

-p 1880:1880 \

-v c:/data/dialoguestudio:c:/Users/ContainerAdministrator/userdata \

-e NODE_RED_USERNAME=John \

-e NODE_RED_PASSWORD=Doe \

-e TZ=Europe/Amsterdam \

--restart unless-stopped \

anywhere365-dialoguestudio:8.0.0.34950-windows-1909

Note Only with the -v parameter your Dialogue Studio flow designs are stored and preserved outside the container. After using the Dialogue Studio container, stop it and check the content of the external directory.

  • Linux volume mounts should be mounted on /data

  • Windows mounts use c:/Users/ContainerAdministrator/userdata

 

Docker information

To start Dialogue Studio, you need to assemble a docker run command. We’ll take you step by step doing so. First, let’s look at the semantics of the docker run command.

Note Always store the run command somewhere you can find it later. You’ll need it to update Dialogue Studio.

docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

The docker run command always starts with docker run following the options, the image:tag and optionally a command with arguments. For Dialogue Studio the command and arguments are not required, so this document will not handle that.

The most basic docker run command is a docker run with the image and tag.

docker run anywhere365-dialoguestudio:8.0.0.34950

When this command is executed Dialogue Studio will start and the logs are printed in the terminal window. However, there are some things we did not take care of at this moment.

  • The container does not have a human friendly name

  • The container is not run in detached mode

  • The container does not have a port mapping

  • The container does not have a volume manually assigned

  • The Dialogue Studio’s username and password are default admin/admin

  • The Dialogue Studio’s time zone is UTC

  • The container does not automatically start at OS boot time

It seems a lot of work that has to be done in order to have the list above fixed, but as you will see it is not that much work. Docker has command line parameters for each.

 

Set a human friendly name

This is one of the easiest things we can do. Think of a name that is logical for your deployment. It has to be an alphanumeric name. It can also contain dashes and underscores. When we decide we want a Dialogue Studio instance for a group of UCCUCC stands for Unified Contact Center and consists of a queue that can be handled by Agents. Each UCC has its own settings, interactive voice response questions and Agents with specific skills. Agents can be member of, or sign up to, one or more UCCs.’s (a Dialogue Studio instance can handle multiple UCCs). Then we could come up with a name like dialoguestudio-support. In order to give our container this name we can compose the docker run command to contain a name:

docker run --name dialoguestudio-support anywhere365-dialoguestudio:8.0.0.34950

Now the container has a human friendly name that can be used to control the container, for example to stop it you can use

docker stop dialoguestudio-support

and to start it again use

docker start dialoguestudio-support

 

Run container in detached mode

When we run the container, we generally don’t want the Dialogue Studio logs printed in our terminal window. The windows can be detached from the container by pressing CTRL+P,Q. To run Dialogue Studio detached immediately we can add -d to the options of the docker run command:

docker run --name dialoguestudio -d anywhere365-dialoguestudio:8.0.0.34950

 

Assign a port mapping

To be able to connect with a browser like Chrome or Firefox to the Dialogue Studio flow design user interface, a host port needs to be assigned to the container. Dialogue Studio inside the container runs on port 1880. If we want to bind it to the host’s port 8080 instead, we can add an extra option to the docker run command. A port mapping is done in the form of -p host_port:container_port. For example -p 8080:1880

Note that we are splitting the docker run command in multiple lines below, you should execute it in one line on your terminal window.

docker run \

--name dialoguestudio \

-d \

-p 8080:1880 \

anywhere365-dialoguestudio:8.0.0.34950

Now it is possible to access the Dialogue Studio interface from a webbrowser by browsing to

http://serverhostname:8080 or 127.0.0.1:8080 or just localhost:8080

To run multiple Dialogue Studio containers at the same time use port mapping. E.g. -p 1880:1880 and -p 1881:1880

 

Assign a volume

The container is isolated from your host OS and this also true for the filesystem. This means that, by default, the user data like Dialogue Studio flows are stored inside the container and are difficult to backup. To work around this, it is possible to mount a directory on the host OS inside the container.

By default, Docker assigns a Docker volume to the container. This is fine if you don’t care where your data is stored or if your Docker server has a volume provider configured (i.e. a SAN). Our scope is to map a directory on the host OS to the container. This is a per OS specific operation, so make sure to take a look at one of the OS sections below.

In generally a folder on the host OS can be mounted in the container with the volume option -v hostdirectorypath:containerdirectorypath. The userdata inside the container is stored on the /data path for Linux images. Manually create the host directory before you start the docker run command. Replace /home/user with your home path.

docker run \

--name dialoguestudio \

-d \

-p 8080:1880 \

-v /home/user/dialoguestudio:/data \

anywhere365-dialoguestudio:8.0.0.34950

When the container is started files will be created inside the directory on the host OS. This directory should be checked and backed up regularly to prevent data loss when the user makes a mistake in the Dialogue Studio interface.

To restore a backup, simply stop the docker container by running docker stop <containername>, restore the data in the directory and start the container again by running docker start <containername>.

 

Set username and password

Dialogue Studio is configured with default username admin and password admin. This can be changed with environment variables. Dialogue Studio looks at the container’s environment variables to set the username and password configuration. The environment variable NODE_RED_USERNAME is used for the username and the NODE_RED_PASSWORD environment variable is used for the password. To change the username and password the docker run command can be modified:

docker run \

--name dialoguestudio \

-d \

-p 1880:1880 \

-v /home/user/dialoguestudio:/data \

-e NODE_RED_USERNAME=John \

-e NODE_RED_PASSWORD=Doe \

anywhere365-dialoguestudio:8.0.0.34950

The example above sets the username to John and the password to Doe.

For production environments it is recommended to use docker secrets.

 

Set time zone

The time zone can also be set by using an environment variable. Valid time zone identifiers can be found on https://en.wikipedia.org/wiki/List_of_tz_database_time_zones under the column TZ database name. A time zone is set as follows:

docker run \

--name dialoguestudio \

-d \

-p 1880:1880 \

-v /home/user/dialoguestudio:/data \

-e NODE_RED_USERNAME=John \

-e NODE_RED_PASSWORD=Doe \

-e TZ=Europe/Amsterdam \

anywhere365-dialoguestudio:8.0.0.34950

This example changes the time zone from UTC to Europe/Amsterdam time zone.

 

Start container at OS boot time

To make the container start at boot time we must add a restart policy to the docker run command. There are 4 restart policies and each one has its own behavior.

Restart policy

Behavior

no

Does not automatically restart the container (default).

on-failure

Restarts automatically when the container crashes. However, does not start when server reboots.

always

Restarts when container stops unexpectedly. When the container is stopped manually it will be started again after the host reboots.

unless-stopped

Same as always but doesn’t start at host boot time container when it was manually stopped.

 

docker run \

--name dialoguestudio \

-d \

-p 1880:1880 \

-v /home/user/dialoguestudio:/data \

-e NODE_RED_USERNAME=John \

-e NODE_RED_PASSWORD=Doe \

-e TZ=Europe/Amsterdam \

--restart unless-stopped \

anywhere365-dialoguestudio:8.0.0.34950

 

That’s it

The Dialogue Studio container is now fully configured and up and running. When the container is created with docker run, you don’t have to recreate it again after you stop the container. You can just simply start the container with docker start. A list of common docker commands can be found below.

 

Start container

docker start <containername>

docker start <containerid>

If you have assigned a –-name this is easier to use than the id.

 

Stop container

docker stop <containername>

 

Restart container

docker restart <containername>

 

Container logs

docker logs <containername> --tail=99

docker logs <containername> > containerlog.txt

Will write the container log to containerlog.txt.

 

Inspect container configuration

docker inspect <containername>

To see the container configuration info

 

Delete container

docker rm <containername>

Container can only be deleted if stopped first.

 

List containers

docker ps

This lists all running containers. To list also non-running containers, add the flag -a

docker ps -a

 

List container images

docker images

 

Delete container images

Docker rmi <containerImagename>

Container images can only be deleted when they aren’t used by any container.

 

Docker detailed information

docker info

 

Windows

Obtain container image

Windows container filenames are suffixed with -windows-<version id>. First find the version of the Windows Server installation by executing the following command in a PowerShell window:

(Get-Item "HKLM:SOFTWARE\Microsoft\Windows NT\CurrentVersion").GetValue('ReleaseID')

If the response is 1809 the filename of the container image with version 8.0.0.34950 is

dialoguestudio-8.0.0.34950-windows-1809.tgz

In the example filename above the 8.0.0.34950 version is the version of the container image. -windows-1809 indicates that it is built for Windows with kernel version 1809 (Windows Server 2019 LTS in this example). When there is no container image containing the release id of your Windows Server installation, it means that your Windows Server installation is currently not supported. Please check if the version is listed in Installation of Docker. If it’s not listed then create a support ticket with Anywhere365. We’ll investigate if it is possible to support your OS version and add it to the list.

 

Mount volume on local disk

Create a directory on your disk and take note of the full directory path. It is important that the directory is empty. The run command for a deployment with a mounted folder inside the container looks like this

docker run \

-v c:/path/to/your/volume/directory:c:/Users/ContainerAdministrator/userdata \

anywhere365-dialoguestudio:8.0.0.34950-windows-1809

 

Linux

Obtain container image

Linux container distribution filenames do not have any suffix like Windows container have. An example filename for a Dialogue Studio container distribution with version 8.0.0.34950 will be like:

dialoguestudio-8.0.0.34950.tgz

 

Mount volume on local disk

Create a directory on your disk and take note of the full directory path. It is important that the directory is empty. Also make sure that the owner of the directory is not the root user. The run command for a deployment with a mounted folder inside the container looks like this

docker run \

-v /path/to/your/volume/directory:/data \

anywhere365-dialoguestudio:8.0.0.34950

 

Update Dialogue Studio

To update Dialogue Studio, the new container image needs to be imported into Docker again. Always make sure to also update the Dialogue Studio UCC plugin and check Anywhere365 CoreThe Core is the contact center application of Anywhere365. It manages all the Dialogues and Dialogue related settings. The Core product can be extended with several Platform Elements. version in release notes.

docker load -i dialoguestudio-version.tgz

Stop Dialogue Studio

docker stop <containername>

Rename old container

docker rename <containername> <containername>_backup

Make sure to backup the userdata of Dialogue Studio (this is the folder that is mapped into the container).

Start container by running the docker run command with the new image version. It is important you run the same configuration in order to let Dialogue Studio work correctly. Use docker inspect <containername> if you need to look up the configuration.

When Dialogue Studio is up and running again, delete the old backup container (or you can keep it until next update).

docker rm <containername>_backup

 

Troubleshooting