Individual Component Installation of Nuance on Windows 2012 R2

I have done more Nuance installs in the last few weeks than I’ve done in my whole life. Recently I had to revisit installing Nuance without using the Nuance Portal and since it had been a few years since I had gotten around to it I figured I would document the process as a few things were murky in my mind. We’re going to be installing:

License Manger 11.7
Nuance Recognizer 10.2.8
Nuance Vocalizer (Enterprise) 6.0.7
Nuance Speech Server 6.2.9

This installation will work with UCCE/CVP 11.6 using VVB which means mrcp2 and the configuration is specific to mrcp2.

License Manager

First start with the License Manager as this components allows everything else to operate. The installation is pretty much a next, next, finish process. You will be asked to do a restart of the server.

The validation process is pretty straight forward. First, ensure that the Windows service was installed. It should not be running, but it should be set as automatic. Next open up the Licensing Tools program you just installed go to Start/Stop/Reread and hit Start Server. This will use a temp license to start up. The temp license is stored in C:\Program Files\Nuance\license_manager\license. Once you start the service confirm you see the Windows service as running. And that the output of Server Status is this:

——–
Status
——–
Flexible License Manager status on Tue 4/7/2020 13:17

[Detecting lmgrd processes…]
License server status: 27000@NUANCEHOST
License file(s) on NUANCEHOST: C:\Program Files\Nuance\license_manager\license\temp.lic:

NUANCEHOST: license server UP (MASTER) v11.7

Vendor daemon status (on NUANCEHOST):

swilmgrd: UP v11.7
Feature usage info:

Users of dummy: (Total of 1 license issued; Total of 0 licenses in use)

Go to Config Services tab to point to your license file. As a matter of practice I keep all licenses files in the same location to make it easy. Either restart the service or re-read the license file to ensure it reflects your entitlement correctly. From this point forward you need to make sure to have a proper license for each component otherwise the validation steps will fail.

Nuance Recognizer

This installer is very much like the licensing tool, which means it’s a next, next, finished process. You will have to perform a restart of the server once it’s done. Additionally, you will need to install the languages you want your recognizer to support. As an example, for en-us, there are two files you will need to install: NRec-en-US-10.0.2-10.2.0.x86_64-windows.zip and NRec-en-US-10.0.2-10.2.0-CumulativePatch-2_windows.zip.

The base installation of en-us is straight forward, but the patch is a bit more involved. First, unzip the patch to a temporary location make sure this temp location doesn’t have any spaces in the name otherwise the installer will fail. Second, open a command prompt as an administrator and cd to the temporary location of the patch. Ensure that “echo %SWISRSDK%” returns where the recognizer is installed for example C:\Program Files\Nuance\Recognizer. Also validate what version of nuance you’re running by running “nuance-version -p”. What you want to pay attention is the following:

Name: Nuance Recognizer
Location: C:\Program Files\Nuance\Recognizer\
Version:
Nuance Recognizer 10.2.8.2017022711 x86_64 – Package revision 17058

Name: Nuance Recognizer English en-US Language Pack
Location: C:\Program Files\Nuance\Recognizer\config\en.us\10.0.2
Version:
Nuance Recognizer en-US Language Pack – Rev. 10.0.2-10.2.0-15335

This tells us we have our base install and the language. Now run the install_cumulative_patch.bat and then validate it installed correctly by checking the Nuance version again. You should see this:

Name: Nuance Recognizer
Location: C:\Program Files\Nuance\Recognizer\
Version:
Nuance Recognizer 10.2.8.2017022711 x86_64 – Package revision 17058

Name: Nuance Recognizer English en-US Language Pack
Location: C:\Program Files\Nuance\Recognizer\config\en.us\10.0.2
Version:
Base: Nuance Recognizer en-US Language Pack – Rev. 10.0.2-10.2.0-15335
Cumulative Patch 2:
ELANGPACKS-36 Creditcard expiry date grammar – Extend default expiry year to be 25 years from now (parameter maxallowed changed to 300 months)
ELANGPACKS-39 Fixed @reject@, added @exh@ and removed #sil# from @noise
@ entries in system dictionary – all grammars recompiled with updated system dictionary
ENR-124 Added missing transcription ‘zed’ for letter z to system
dictionary

There are two ways to configure the recognizer service. The first is by editing Baseline.xml and the second it to use a user config which overwrites Baseline.xml. My preferred method is to use a user config file as it’s much easier to manage and it removes the monstrosity that is the Baseline files, but because that’s a whole other ball of wax we’re going to just do the direct edit to Baseline.xml. You must enter the licenses you have available in the value tags below in the following two lines:

<param name=”swirec_license_ports”>
<declaration group=”license” type=”int”
set_by=”default”>
<min_value>0</min_value>
</declaration>
<value>4</value>
</param>

<!– How many osr_swiep licenses will be checked out during SWIepInit() –>
<param name=”swiep_license_ports”>
<declaration group=”license” type=”int”
set_by=”default”>
<min_value>0</min_value>
</declaration>
<value>4</value>
</param>

The final step is ensuring you set the Recognizer to start as a service. Open up a command prompt again and cd to C:\Program Files\Nuance\Recognizer\Recognizer Service\amd64\bin. From there you need to decide what parameters you’ll set for the service. The below parameters are the default and should be used unless you know exactly what you’re doing.

C:\Program Files\Nuance\Recognizer\Recognizer Service\amd64\bin>nrs-win-service-
init.exe -i nrs-win-service.exe -servlet nrs -port 8200

From there start your service and then it’s time to validate everything worked as expected.

To validate that your recognizer is working as expected Nuance provides a small exe which allows you to test your config. You can find the utility at C:\Program Files\Nuance\Recognizer\samples\swirec_sample\SWIrecSample.exe. Using the command prompt run the utility piping the output to a log file:

SWIrecSample.exe > log.txt

You should see a lot of successful lines in the log file, here’s a small sample:

Function SWIrecInit returned SUCCESS.

Calling SWIepInit.

Calling SWIrecRecognizerCreate.

Function SWIrecRecognizerCreate returned SUCCESS.

Calling SWIrecSessionStart.

Nuance Vocalizer and Languages

Same thing as all the other installers, these are just a next, next, finished. Ensure you install the vocalizer first, restart, then languages and restart. The configuration is pretty straight forward too. As before having a user config is my preferred method however we’re going to stick with the basics and just update baseline.xml. Please note that this baseline.xml is different than the Recognizer Baseline.xml. Here are the two parameters you have to update based on your license entitlement:

<tts_license_ports>4</tts_license_ports>
<cpr_license_ports>4</cpr_license_ports>
<ssml_validation>warn</ssml_validation>

One thing to note is that the Vocalizer doesn’t need a Windows service to run, so don’t think you’ve done something wrong if you can’t see it in the services window. The validation process is two parts too. First run the nuance-version -p command and validate your voices are installed and recognized:

Name: Vocalizer for Enterprise en-US Zoe bet4 f8
Location: C:\Program Files (x86)\Nuance\Vocalizer for Enterprise\
Version:
Vocalizer for Enterprise 6.1.1.2013100217
Vocalizer for Enterprise Build ID 6.1.1.13275
Language: en-US
Voice: Zoe
Voice model: bet4
Coder: encrypt
Language version: 5.2.3.0000
Voice version: 5.2.3.13269

Name: Vocalizer for Enterprise
Location: C:\Program Files (x86)\Nuance\Vocalizer for Enterprise\
Version:
Vocalizer for Enterprise 6.0.7.2018052303
Vocalizer for Enterprise Build ID 6.0.7.18143

Next using the command line cd to C:\Program Files (x86)\Nuance\Vocalizer for Enterprise\common\speech\components and run the following command:

nvncmdline.exe -l en-us -n Zoe -s “Hello this is Zoe using text to speech.” -w –
o test.wav

Please note that you have to match the language and voice you have installed in the system. The good thing is that this command’s error outputs will tell you if there’s an issue with either the voice or the language not being detected. If the command runs successfully listen to test.wav to ensure it sounds like you expect it to.

Nuance Speech Server

The most important piece of this is that you install this component last as the installer detects the Recognizer and Vocalizer upon running. If you don’t install it last, then you will have to make some changes to your config to allow the Speech Server to know where to find the other components. The installer just like the others is just a next, next, finish installation. You will have to restart the server upon completion. Additionally, you should install the Nuance Speech Server Client matching your Speech Server which will allow you validate your configuration. Once everything is installed ensure the service is started and set it to an automatic startup type.

Validation is similar to the Vocalizer. Nuance provides a client which is able to test the Speech Server. From the command prompt go to C:\Program Files (x86)\Nuance\Speech Server\Client\script. From there run the following command:

..\bin\client.exe -s localhost -p 5060 demoprompt.mrcp

The output will be in demoPrompt.log and should be a good bit of SIP messaging and SSML. The most likely error you will see is that your service is not started or that you don’t have a valid license. Here’s a sample of the output:


INVITE sip:mresources@localhost:5060 SIP/2.0
Via: SIP/2.0/TCP NUANCEHOST:49474;branch=z9hG4bKf529526265c4fb15
Max-Forwards: 6
To: MediaServer <sip:mresources@localhost:5060>
From: clien_user <sip:clien_user@NUANCEHOST:49474>;tag=b5d67ee5
Contact: <sip:clien_user@NUANCEHOST;transport=TCP>
Call-ID: a385e9e251def062
CSeq: 1467710150 INVITE
Content-Type: application/sdp
Content-Length: 322

<?xml version=”1.0″?>
<speak version=”1.0″ xml:lang=”en-US” xmlns=”http://www.w3.org/2001/10/synthesis”>
<p>
<s>You have 4 new messages.</s>
<s>The first is from <say-as
interpret-as=”name”>Stephanie Williams</say-as>
and arrived at
<say-as interpret-as=”time”>3:45pm</say-as>.</s>

<s>The subject is <prosody
rate=”fast”>ski trip</prosody></s>
</p>
</speak>

Add your new ASR and TTS server to VVB and you should be good to go.

~david

Nuance Speech Suite Login Screen

Installing Nuance Speech Suite 10.5

The Nuance Speech Suite has been around for a couple of years, but it’s not until recently that I’ve started to really use it. Before I had always installed the individual components independently because that’s how I’ve always done it. However, I decided to finally buckle down and get the installation process for this down and wanted to create a tutorial post for it. Please note that while you can install the Extended version which includes MySQL as part of the installer. I wanted to install the Standard version which forces you to install the database individually. Additionally, this is strictly a lab install. For production and specially for a hosted environments there’s a lot more “engineering” that has to happen to get this right and to avoid killing your server.

What you’ll need:

  • Windows 2012 R2 x64
  • The latest version of JDK 1.8 (as of this post jdk-8u241-windows-i586.exe)
  • The latest Apache Tomcat package (as of this post apache-tomcat-8.5.51-windows-x86.zip)
  • The latest version of MySQL 5.7 Community or Enterprise (as of this post mysql-installer-community-5.7.29.0.msi)

Validate that 8.3 File naming is enabled:

  1. Open command prompt
  2. Type: cd c:\ <enter>
  3. Type: dir /x (/x will display the long and the 8.3 name)
  4. The important part is that you see something like “Progra~1″:
Command Prompt 8.3 File Naming Validation

Command prompt 8.3 file naming validation

5. If you don’t see the above Google how to enable 8.3 file naming in Windows.

Install the JDK:

  1. I choose all the installer defaults.
  2. Validate the installation by doing java -version from the command prompt.
Windows command prompt to validate JDK installation version

Windows command prompt to validate JDK installation version

Install Tomcat and validate it:

  1. Remember to not use the Tomcat installer, but the package which comes in a zip file. Extract this to your machine. I placed mine in C:\apache-tomcat-8.5.51
  2. Run C:\apache-tomcat-8.5.51\bin\startup.bat and ensure you can get to http://localhost:8080

Install MySQL:

  1. Choose custom installation.
MySQL Installer

MySQL Installer

2. Choose the following features. There is an issue in the below screen shot. Additionally, Python is not required, that’s just because I use Python to parse Nuance logs. Maybe a blog post to come on this. You will have to use the Filter in the installer to find some of the specific versions you need.

MySQL Installer Features

MySQL Installer Features

3. The installer might complain about some missing dependencies, but it should automatically resolve them. If that fails, you’ll have to resolve them manually. When everything looks good you should see this.

 

Screen Shot 2020-02-27 at 8.38.40 PM

MySQL Installer Ready

MySQL Installer Configuration

MySQL Installer Configuration

4. Along with installed MySQL in the default location I also install the connectors in the default location (e.g. C:\Program Files (x86)\MySQL\Connector J 8.0\) make note of this path as you’ll need it later.

MySQL Installer Cluster Configuration

MySQL Installer Cluster Configuration

MySQL Installer Cluster Configuration

MySQL Installer Cluster Configuration

MySQL Installer User Configuration

MySQL Installer User Configuration

MySQL Installer Service Configuration

MySQL Installer Service Configuration

MySQL Installer Confirmation

MySQL Installer Confirmation

MySQL Installer Finished

MySQL Installer Finished

Verify MySQL installation:

  1. Service is running and set to automatic.
Confirm MySQL Windows Service

Confirm MySQL Windows Service

2. Start > Command Line, enter the root password.

MySQL Client

MySQL Client

Installing Nuance Speech Suite:

  1. Make sure you’re not installing the extended version. Once you do that run the installer.
  2. Select all components as this is a one box solution.
Nuance Speech Suite Features

Nuance Speech Suite Features

3. Choose your license file.

Nuance Speech Suite License Selection

Nuance Speech Suite License Selection

4. Select your database type.

Nuance Speech Suite Database Selection

Nuance Speech Suite Database Selection

5. More than likely the installer will not find all your components automatically. So refer to your steps above to find the right path for each. Also enter your DB admin user and verify the installer can connect.

Nuance Speech Suite Component Configuration

Nuance Speech Suite Component Configuration

6. If you didn’t choose to customize the database details, you do not see this screen. Here’s is where you can set specific DB users as well as set your audit DB. By entering an admin account earlier you’ve chosen to either accept the default username and password (ms/msp) or you’re choosing a specific user. I use nuance as my DB user to make it clear who is accessing these DBs.

Nuance Speech Suite Database Configuration

Nuance Speech Suite Database Configuration

7. If you have any languages or voices you want to install choose the root directory and the installer will automatically find them. Make sure you’ve extracted the zip files to the same root folder.

Nuance Speech Suite Final Configuration

Nuance Speech Suite Final Configuration

8. From here it’s just waiting for the installer to run. You should see external install windows appears specially around the language and voices being installed.

Nuance Speech Suite Finished

Nuance Speech Suite Finished

9. Do a Windows restart.

Validate Installation of Nuance Speech Suite:

  1. Take a look at the install log (C:\Program Files (x86)\Nuance\Management Station\mstation\mserver\logs) and look for any ERRORs.
  2. Open the Windows services and ensure that the following servers are started:
    • Nuance Management Station
    • Nuance Management Station Data Collection
    • Nuance Management Station Stats Analyzer

3. Go to http://localhost:8080/mserver use the default login of administrator/changeit

Nuance Speech Suite Login Screen

Nuance Speech Suite Login Screen

4. You’ll be prompted to change your password. Make sure you check out the password requirements as they are very specific. I also use my trusted old C1sc0C1sc0123! password which generally works everywhere.

There’s a lot more to go in getting this up and running, but this post is long enough. More to come.

~david

 

CVP Studio Features Dialog

Multiple CVP Studio Versions on the Same Machine

If you’re like me and do a fair bit of CVP work, including development, and you like to run the same version of Studio as the version you’re deploying against, then you’ve struggled with the fact that CVP Studio doesn’t play very nice with other versions of CVP Studio. Hopefully this blog helps you get all versions of CVP Studio running in harmony on your Windows machine. This method has worked well when going from CVP 12.x to 11.x to 10.x. As well as going the other way around.

  • Backup your registry.
  • If you have a 12.x version of CVP Studio installed:
    • DELETE:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{763E1DF9-41BC-4C54-9705-A0C6D1594B26}
  • If you have a 10.x or 11.x version of CVP Studio installed:
    • DELETE: [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{763E1DF9-41BC-4C54-9705-A0C6D1594B26}]
  • Install the new version of CVP Studio in a different directory. I like to install mine in c:\cisco\CallStudioxxx, where xxx is the version (e.g. 100, 115, etc).
  • Repoint and create new shortcuts for the various versions.

You will have to repoint your shortcuts, but other than that you should be all good.

CVP Studio Features Dialog

CVP 11 and 12 running side by side.

~david

Revisting Saving Host Names in Cisco AnyConnect Client

One of my most popular blog posts is this where I talk about how to set your AnyConnect VPN client to remember the addresses of the various VPN URLs you use. I figured I would be good to revisit it since it’s been 5 years since I last talked about it to ensure things still worked the same way as they did back in 2014.

First, everything still works the same way on Windows 10. You go to C:\ProgramData\Cisco\Cisco AnyConnect Secure Mobility Client\Profile create a new xml file. I call mine Profile.xml and use the following format:

<?xml version=”1.0″ encoding=”UTF-8″?>
<AnyConnectProfile xmlns=”http://schemas.xmlsoap.org/encoding/” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”http://schemas.xmlsoap.org/encoding/ AnyConnectProfile.xsd”>
<ServerList>
<HostEntry>
<HostName>dcloud-rtp-anyconnect.cisco.com</HostName>
<HostAddress>dcloud-rtp-anyconnect.cisco.com</HostAddress>
</HostEntry>
<HostEntry>
<HostName>2dcloud-rtp-anyconnect.cisco.com</HostName>
<HostAddress>dcloud-rtp-anyconnect.cisco.com</HostAddress>
</HostEntry>
<HostEntry>
<HostName>3dcloud-rtp-anyconnect.cisco.com</HostName>
<HostAddress>dcloud-rtp-anyconnect.cisco.com</HostAddress>
</HostEntry>
</ServerList>
</AnyConnectProfile>
Save it and restart your client and it will look like this:
VPN Client With Multiple URLs Saved
There is another method I’ve found and this involves some additional software. First, from software.cisco.com you have to install the Profile Editor (Windows), you only need to enable the Cisco AnyConnect Profile Editor. Once installed run the program.
Screen Shot 2020-01-14 at 9.38.43 AM
Go to Server List > Add:
Screen Shot 2020-01-14 at 9.44.24 AM
Go to File > Save As and save the XML file to same location C:\ProgramData\Cisco\Cisco AnyConnect Secure Mobility Client\Profile, restart the client and you should be all set.
~david

VMWare Fusion 11.5 Windows 10 VM Black Screen on Catalina

I wanted to do a quick post on this as I had to try multiple things to get my Windows 10 VM up and running. There are two posts which helped. TCC DB Updates and the processor change post 10. To summarize it both links:

Turn Off the Rootless

  1. Reboot your MAC and hold CMD+R to enter the recovery mode.
  2. Open the terminal.
  3. Enter csrutil disable
  4. Restart

From a terminal run:

tccutil reset All com.vmware.fusion   
 
sudo sqlite3 "/Library/Application Support/com.apple.TCC/TCC.db" 'insert into access values ("kTCCServiceScreenCapture", "com.vmware.fusion", 0, 1, 1, "", "", "", "UNUSED", "", 0,1565595574)'   3, 
sudo sqlite3 "/Library/Application Support/com.apple.TCC/TCC.db" 'insert into access values ("kTCCServiceListenEvent", "com.vmware.fusion", 0, 1, 1, "", "", "", "UNUSED", "", 0,1565595574)'   4, 
sudo sqlite3 "/Library/Application Support/com.apple.TCC/TCC.db" 'insert into access values ("kTCCServicePostEvent", "com.vmware.fusion", 0, 1, 1, "", "", "", "UNUSED", "", 0,1565595574)'

Turn On the Rootless

  1. Reboot your MAC and hold CMD+R to enter the recovery mode.
  2. Open the terminal.
  3. Enter csrutil enable
  4. Restart

Launch Fusion and ensure that under your Mac’s Security and Privacy:

Accessibility > VMWare Fusion is checked
Screen Recording > Vmware Fusion is checked

With your VM shutdown go to settings > Processor and Memory and check these two settings:

VMProcessor&Memory

Hope this helps another poor soul.

~david

AWS’s AI in the Contact Center Pitch: A Swing and a Miss.

Recently AWS released a “Knowledge Brief” illustrating how Fortune 1000 companies are taking a deeper interest in AI related products and services for their contact centers. While I think there are plenty of points which could be argued, for the sake of this post, I will focus on the intro graph as this is the springboard to the whole document created by the Aberdeen Group’s research. Let’s start with the graph:

Capture.PNG

First, I was surprised of the atribution for the spike in contact center solutions research to the Google Duplex presentation during I/O 2018. Second, the report goes on to state that the red line declining off to the right are the search results for PBX because “firms are not as active in researching best practices and trends in use of PBX.” These two points stuck to me as odd specially if you’re building a whole paper on those two premises so I took it upon myself to see if I could indepedently confirm their positions.

Considering the paper states that this is all about research I decided to go to world’s research webpage: Google; specifically Google Trends. Let’s tackle the spike in research due to the announcement of Google Duplex. You will see that Google registered the terms “google duplex” spiking in May which matches with their blog post linked above. The report’s graph has this spike happening in July which is not correct. But let’s give them the benefit of the doubt that the x-axis is mislabled since there certainly was a spike in research on these terms.

Capture.PNG

The papers second point is around the decline of research around the term PBX. The document states “..it’s reflected through the dark red line that’s particularly trending downwards between July and September 2018.” The main reason why this caught my eye is because of the term PBX. As those of you in the conctact center business know the term PBX really has gone out of use in the late 90s and even more today in the 2000s. Mainly because with VoIP the PBX term is not used as broadly. Make no mistake things like Cisco’s CommunicationManager and Asterisks are PBXes, but they are so much more thus why the term has fallen out of favor. Given this information let’s compare how the term PBX and ACD, a more broadly used term to almost mean the same thing, have trended for the time period this report covers.

Capture.PNG

Neither term has really seen a decline. Heck you could argue that PBX saw an increase between May and July while ACD saw an increase after July. Ultimately debunking the premise this whole document stands upon.

AI/ML is the hot new topic, but there’s a time and a place for everything. This paper’s whole premise for an AI future relies on faulty data which causes the whole article to fall apart. This, like may other pieces, are more hype than substance.

~david

 

 

 

 

 

 

 

My take on easily improving your customer’s experience with not a lot of money and without having to hire me.

Recently I was talking to an acquaintance about our top IVR annoyances. While we debated back and forth on the merit of each annoyances it got me thinking about the current wave around customer experience, customer journey, and the amount of money and products some companies are putting in to try and get marginal improvements. While I’ve been working in the contact center for over a decade, I certainly don’t know it all, but I’ve come to realize that before spending a lot of money businesses should do a few small things. These small things will provide small improvements and will set you up to be better prepared for bringing some vendor to help you “revolutionize” your customer experience.

Now there is no data to backup these thoughts, but I like to think my experience should carry a bit of weight. Here we go:

Your IVR should reflect your personality. Every IVR sounds the same, is your business just like every other business? All businesses stress over print ads, color schemes for the website, logos, commercials, but their IVR still feels like every other IVR. Why not carry that stress over to something which can be personalized with just a few words and voice inflection?

Know your callers. We find ourselves in a data rich and information poor world. Are your callers millennials? Are they senior citizens? Is there a specific social economic status which gravitates towards your IVR while others go through a different channel?  All of this information is critical in trying to figure out what options you should be offering in your IVR and what your personality should be.

Make it sound fresh. Has your IVR welcomed every caller with “Thank you for calling…” since the dawn of time? Every modern and not so modern IVR in the world can play an array of greetings, use slightly different language depending on the time of year, and create some personalization without much work. No one likes to talk to that one person who always tells the same stories. Your IVR can easily and cheaply break that monotony, sound fresh, and make the wait seem more engaging.

Don’t make me tell you again. One of the things that’s most annoying is when you call a company to fix a problem, you think it’s solved only to find out a few hours later or a few days later that it’s not resolved. You know what I do, and the rest of the world does? Call right back. It’s very easy for modern IVRs to see that a customer called recently and there’s a very high likelihood they are calling for the same reason again. So why put them through your self-service menu? Get them immediately to an agent, you failed at first call resolution, you know it and they know. Here’s a second shot at making it better. Extra points if you get them to the same agent who will have some context from the first call.

Everyone likes surprises. Every once in a while, have calls be sent to agents without having to go through the full gamut of the IVR. Specially if you know you have agents available. which will increase your agent utilization, but this only works if your agents are able to handle most types of calls. Because if you’re going to have to transfer callers, do not do this!

Don’t pretend to care. Saying that my call is important is such an insult. It’s not, otherwise you would have staffed accordingly and not made me wait. Offer a way to call back a customer instead of having them wait hostage to your queue treatment.

Silence is golden.  If your call center deals with extremely high hold times greater than 15 minutes. Give the caller the option to not hear any music and announcements at all. An occasional beep and maybe a short message on how to enable music again will make the wait time much more enjoyable. If I can detect how often your music on hold loops, I will not be very pleasant when the agent takes my call.

~david

 

 

Right way to block ANIs using Amazon Connect

In this blog I’ll cover a potential financial issue you might face if you try to ANI block customers and they are calling you through a SIP trunk.

As I continue my journey of getting familiar with Amazon Connect I ran into an interesting and a bit worrisome issue. The use case I was working on was to create a table which blocks or allows specific ANIs to call in. Ultimately, when a blocked caller came in I wanted to just hang up on the call. My original flow looked like this:

image

Pretty straight forward, invoke Lambda, check attribute and if blocked = true, disconnect the call. When calling from my cellphone this worked great. However, when calling from my home phone (using a Flowroute SIP trunk) I got a nice surprise in the logs:

image

What you’re seeing is a partial log of my home phone constantly retrying to connect to Amazon Connect and generating a new call each time. Since there was no prompt play and no ring back heard I assume the network believes there as a connection issue and continues to try and connect. Which means that you could easily incur a huge expense both on your phone provider and on your Amazon AWS bill.

The way to fix this was to play a 1 second of silence prompt before disconnecting the call.

image

~david

Connecing an ESXi host to a QNAP NAS using NFS

Interesting little issue I ran into when trying to create a new datastore in my ESXi server. I had to use NFS v2/v3 even though the ESXi documention states v4 is supported. Here are my specs:

– QNAP TS-219P II 4.3.3.0404

– VMWare ESXi v6.0.0 Build 5050593

To configure the NFS share in the NAS. Control Panel > Win/MAC/NFS > NFS Service

QNAP NFS Service

To ensure your share has NFS partitions click on the link that says “Click here to set the NFS access…” Choose your shared folder and Edit Shared Folder Permissions. And click

QNAP NFS host access screen

In ESXi, click on the host server. Configuration > Storage > Add Storage…

1. Network File System

2. Server IP, Folder, Datastore Name

3. Finish

ESXi Locate Network File System

When done, you should see your NAS as a data store.

ESXi Datastore Configuration

~david

Installing Laravel 5.5 & MySQL in Ubuntu 16.04 with Nginix already installed

Here are my notes on how to install these components.

sudo apt-get install php7.0-mbstring php7.0-xml composer unzip
sudo apt-get install -y php7.0 php7.0-fpm php7.0-mysql php7.0-zip php7.0-gd
sudo apt-get install mcrypt php7.0-mcrypt
sudo apt-get install -y php7.0-mbstring php7.0-xml –force-yes
sudo apt-get install php7.0-curl php7.0-json
sudo vi /etc/php/7.0/fpm/php.ini
    cgi.fix_pathinfo=0
sudo service php7.0-fpm restart
sudo mkdir -p /var/www/laravel
sudo vi /etc/nginx/sites-available/default
server {
        listen 80;
        listen [::]:80 ipv6only=on;

        root /var/www/laravel/public;
        index index.php index.html index.htm;

        # Make site accessible from http://localhost/
        server_name <serverName>;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ /index.php?$query_string;
                # Uncomment to enable naxsi on this location
                # include /etc/nginx/naxsi.rules
        }
        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }
}
cd ~
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
sudo composer create-project laravel/laravel /var/www/laravel
sudo chown -R :www-data /var/www/laravel
sudo chmod -R 775 /var/www/laravel/storage
sudo chmod -R guo+w storage
sudo apt-get update
sudo apt-get install mysql-server
sudo mysql_secure_installation