<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Andrew R. Freed</title>
    <description>The latest articles on DEV Community by Andrew R. Freed (@andrewrfreed).</description>
    <link>https://dev.to/andrewrfreed</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F593818%2F40113e63-ab85-42c5-b280-b52dab0efbf9.jpeg</url>
      <title>DEV Community: Andrew R. Freed</title>
      <link>https://dev.to/andrewrfreed</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/andrewrfreed"/>
    <language>en</language>
    <item>
      <title>How to Improve your Assistant</title>
      <dc:creator>Andrew R. Freed</dc:creator>
      <pubDate>Thu, 07 Oct 2021 20:37:07 +0000</pubDate>
      <link>https://dev.to/andrewrfreed/how-to-improve-your-assistant-585o</link>
      <guid>https://dev.to/andrewrfreed/how-to-improve-your-assistant-585o</guid>
      <description>&lt;p&gt;Take 40% off &lt;a href="https://www.manning.com/books/conversational-ai"&gt;Conversational AI&lt;/a&gt; by entering &lt;strong&gt;fccfreed&lt;/strong&gt; into the discount code box at checkout at &lt;a href="https://www.manning.com/"&gt;manning.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Imagine that you have been contracted to diagnose problems and offer solutions for a virtual assistant belonging to a company called FICTITIOUS INC.&lt;/p&gt;

&lt;p&gt;FICTITIOUS INC have deployed their virtual assistant to production, but aren’t achieving the success metrics they outlined for the solution.  The virtual assistant was supposed to reduce the burden on other customer service channels, but these channels haven’t seen a significant reduction in user activity.  FICTITIOUS INC knows how to troubleshoot their traditional applications but doesn’t know where to start troubleshooting their virtual assistant.&lt;/p&gt;

&lt;p&gt;FICTITIOUS INC needs to quickly drill down into WHY their assistant isn’t performing well.  They need to find out if their conversational flow doesn’t work for users, or if the intent mapping they have done doesn’t work, or if there’s some other core problem with their assistant.&lt;/p&gt;

&lt;p&gt;FICTITIOUS INC is in good company.  Deploying a virtual assistant to production isn’t the end – it’s only the beginning!  Figure 1 demonstrates the continuous improvement in a virtual assistant’s lifecycle.  Continuous improvement is broadly applicable in software projects, and it’s applicable for virtual assistants.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kR057Q8z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wn7jd7ns95sunbc3h59z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kR057Q8z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wn7jd7ns95sunbc3h59z.png" alt="Continuous Improvement cycle of Gather Data, Train, Test, Improve"&gt;&lt;/a&gt;&lt;br&gt;
Figure 1 Improvement is part of a continuous cycle in the life of a virtual assistant.  This cycle continues even after an assistant is deployed to production!&lt;/p&gt;

&lt;p&gt;This cycle doesn’t stop for FICTITIOUS INC when they deploy their assistant.  The first improvement cycle after deploying to production is the most informative.  This is where FICTITIOUS INC learns which of their assumptions were correct and which ones need to be revisited.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deploying a virtual assistant to production isn’t the end – it’s only the beginning!&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;In this article, we learn how FICTITIOUS INC can identify where their assistant needs the most improvement.  FICTITIOUS INC has chosen “successful containment” as their key success metric and we use that to drive our investigation.  Containment for virtual assistants is the percentage of conversations handled entirely by the virtual assistant.  (A conversation which isn’t escalated to a human is “contained”).  FICTITIOUS INC’s “successful containment” modifies this definition: only conversations that finish with the least process flow are “successfully contained”.&lt;/p&gt;

&lt;p&gt;With successful containment in mind, we use a data-driven approach to evaluate their virtual assistant, including the dialog flows and intent identification.  We conduct a single evaluation of FICTITIOUS INC’s virtual assistant.  FICTITIOUS INC needs to evaluate their virtual assistant many times over its lifetime.  Let’s start by looking for the first improvement FICTITIOUS INC needs to make.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Change is the only constant in life." Heraclitus, Greek philosopher&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Using a success metric to determine where to start improvements
&lt;/h1&gt;

&lt;p&gt;Analyzing a virtual assistant can feel like a daunting process.  Many different types of analyses exist.  Where should FICTITIOUS INC begin their analysis?  Analysis should center on a success metric.  This success metric forms a guiding principle for all analysis and improvement.  Any potential analysis or improvement work should be prioritized based on how it impacts a success metric.&lt;/p&gt;

&lt;p&gt;FICTITIOUS INC’s chosen success metric is “successful containment”.  “Successful containment” is better aligned with their users’ needs better than “containment”.  If a user quits a conversation before getting an answer, that conversation is contained, but FICTITIOUS INC doesn’t consider the conversation a success.  Table 1 contrasts containment and successful containment.&lt;/p&gt;

&lt;p&gt;Table 1 Sample scenarios and how they are measured.  FICTITIOUS INC uses "successful containment".&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZpOxfA3c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gz3p14kawgdefkvj3c10.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZpOxfA3c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gz3p14kawgdefkvj3c10.png" alt="Table 1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;FICTITIOUS INC uses three data point to start the analysis of their assistant: overall successful containment, volume by intent, and successful containment by intent.  These data points enable analysis of each intent.  From these data points we can find which intents have the largest impact on the overall successful containment.&lt;/p&gt;

&lt;p&gt;To simplify the analysis, we only consider five of FICTITIOUS INC’s intents.  These intents and their associated metrics are shown in Table 2.  Based on this table, which intent would you explore first?&lt;/p&gt;

&lt;p&gt;Table 2 FICTITIOUS INC's metrics for conversation volume and successful containment, broken down per intent.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kRX1TZcP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o6hlxedxjylhl8jdylw4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kRX1TZcP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o6hlxedxjylhl8jdylw4.png" alt="Table 2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;#appointments&lt;/code&gt; has the lowest overall containment at thirty percent, but it’s a low-volume intent.  And &lt;code&gt;#reset_password&lt;/code&gt; is the largest source of uncontained conversations, comprising two-thirds of the total uncontained conversations.  If FICTITIOUS INC can fix what’s wrong in those two intents, their virtual assistant will have much higher containment and be more successful.  Because &lt;code&gt;#reset_password&lt;/code&gt; has the biggest problem, FICTITIOUS INC should start there. &lt;/p&gt;

&lt;h2&gt;
  
  
  Improving the first flow to fix containment problems
&lt;/h2&gt;

&lt;p&gt;Solving problems is easier when you know what the specific problems are.   FICTITIOUS INC has identified the &lt;code&gt;#reset_password&lt;/code&gt; flow as the biggest source of non-contained conversations.  This is the most complex of FICTITIOUS INC’s process flows, and this is probably not a coincidence.  Let’s reacquaint ourselves with FICTITIOUS INC’s &lt;code&gt;#reset_password&lt;/code&gt; flow in Figure 2.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5t_6KiLU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vs0iiitxo52bdsoucqif.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5t_6KiLU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vs0iiitxo52bdsoucqif.png" alt="Password reset dialog flow"&gt;&lt;/a&gt;&lt;br&gt;
Figure 2 FICTITIOUS INC’s reset password conversational flow.  Any conversation that visits P00 is counted as a password reset conversation.  Only conversations that include P08 are successfully contained.&lt;/p&gt;

&lt;p&gt;A password reset conversation always starts with dialog P00 and P01.  After that, the password reset flow has only one path to success.  The successful path includes dialog nodes P00, P01, P03, P05, and P08.  These nodes form a conversion funnel which is shown in Figure 3.  Every conversation that includes P03 must necessarily include P01, but some conversations that include P01 don’t include P03.  A conversation that includes P01 but not P03 has “drop-off” at P01.  By measuring the drop-off between P01, P03, P05, and P08, FICTITIOUS INC can narrow in on why password reset conversations fail to complete.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Xli-dnb5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g5s52cm9mnosc5eftpmu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Xli-dnb5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g5s52cm9mnosc5eftpmu.png" alt="Conversion funnel for password reset process"&gt;&lt;/a&gt;&lt;br&gt;
Figure 3 A successful password reset flow, visualized as a funnel.  A conversation that completes each step in this funnel is successfully contained.&lt;/p&gt;

&lt;p&gt;FICTITIOUS INC can analyze their password reset process flow via a conversion funnel by analyzing their virtual assistant logs and counting how many times each dialog node is invoked.  Then, they can compute the drop-off in each step of the funnel.  This high-level analysis illuminates what parts of the process flow require further analysis.  The parts causing the most drop-off should be improved first.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How can you run log analysis in your specific virtual assistant platform?&lt;br&gt;
You can perform the analysis multiple ways in this section.  The specific steps vary by virtual assistant platform.  For instance, your virtual assistant platform may make it easy to find conversations that include one dialog node but not another.&lt;br&gt;
The techniques in this article are purposely generic, even if somewhat inefficient.  If your virtual assistant provider doesn’t include analytic capabilities, you should build the analyses described in this section.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;FICTITIOUS INC’s password reset conversion funnel metrics can be found in Table 3.&lt;/p&gt;

&lt;p&gt;Table 3 Conversion funnel for FICTITIOUS INC's password reset dialog flow.  This analysis shows a steep drop-off after asking for the user ID and the security question.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OD9cpUdj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zeaebfmhbv74nmtvtlrn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OD9cpUdj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zeaebfmhbv74nmtvtlrn.png" alt="Table 3"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The conversion funnel tells FICTITIOUS INC that one-third of password reset flow conversations included the question “What is your user ID?” but doesn’t include the question “What is your date of birth?”.  The “What is your user ID?” question has a thirty-three percent drop-off rate.  It’s also the largest source of drop-offs, causing containment failure on sixty-five total conversations.  The entire conversion funnel can be visualized as in Figure 4.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--93ScGVSC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dcejjxwqtyuyznowboco.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--93ScGVSC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dcejjxwqtyuyznowboco.png" alt="Conversion funnel with number of people in each part of reset password process"&gt;&lt;/a&gt;&lt;br&gt;
Figure 4 FICTITIOUS INC's password reset flow conversion funnel annotated with the number of conversations containing each step of the dialog.  P01 and P05 cause most of the total drop-off.&lt;/p&gt;

&lt;p&gt;The severe drop-offs between P01 and P03, as well as P05 and P08, are both detrimental to FICTITIOUS INC’s successful containment metric.  The P05 to P08 drop-off is more severe from a relativistic perspective (38% vs 33%), but the P01 to P03 drop-off affects more conversations in total.  FICTITIOUS INC should first focus on the P01 to P03 drop-off.&lt;/p&gt;

&lt;h3&gt;
  
  
  Analyzing the first source of drop-off in the first intent
&lt;/h3&gt;

&lt;p&gt;The first detailed analysis for the P01 to P03 drop-off is to find out what users are saying to the assistant between P01 and P03.  Depending on their virtual assistant platform, FICTITIOUS INC can query for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What users say immediately after P01&lt;/li&gt;
&lt;li&gt;What users say immediately before P03&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This query tells FICTITIOUS INC what users are saying in response to the “What is your User ID?” question.  FICTITIOUS INC can inspect a small sample of these responses, perhaps ten or twenty, in their initial investigation.  The query results are shown in Table 4.  All valid FICTITIOUS INC user IDs follow the same format: four to twelve alphabetic characters followed by one to three numeric characters.  Any other user ID string is invalid.  Before reading ahead, see if you can classify the response patterns.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;afreed1&lt;/li&gt;
&lt;li&gt;don't know, that’s why I called&lt;/li&gt;
&lt;li&gt;ebrown5&lt;/li&gt;
&lt;li&gt;fjones8&lt;/li&gt;
&lt;li&gt;hgarcia3
&lt;/li&gt;
&lt;li&gt;I don't know it&lt;/li&gt;
&lt;li&gt;I'm not sure&lt;/li&gt;
&lt;li&gt;jdoe3&lt;/li&gt;
&lt;li&gt;mhill14&lt;/li&gt;
&lt;li&gt;nmiller
&lt;/li&gt;
&lt;li&gt;no idea&lt;/li&gt;
&lt;li&gt;pjohnson4&lt;/li&gt;
&lt;li&gt;pdavis18&lt;/li&gt;
&lt;li&gt;tsmith&lt;/li&gt;
&lt;li&gt;vwilliams4&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The analysis of these responses is shown in Figure 5.  The analysis surfaces several patterns in the response utterances.  The expected response to P01 is a valid user ID consisting of four-to-twelve letters followed by one to three numbers, but this isn’t what users always provide!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pngTezNs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cpbkez863euwz88da070.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pngTezNs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cpbkez863euwz88da070.png" alt="Analysis of P01 responses"&gt;&lt;/a&gt;&lt;br&gt;
Figure 5 Patterns in user utterances given in response to FICTITIOUS INC's question P01: "What is your User ID?"&lt;/p&gt;

&lt;p&gt;FICTITIOUS INC can transform these patterns into actionable insights that improves successful containment.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Insight #1: Many users don’t know their user ID.&lt;/strong&gt;  FICTITIOUS INC could build an intent for &lt;code&gt;#i_dont_know&lt;/code&gt;.  When a user is asked for their ID and responds with &lt;code&gt;#i_dont_know&lt;/code&gt;, the assistant could provide the user with instructions on how to find their user ID.  Or the assistant could be programmed to validate the user another way.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Insight #2: Many users provide their user ID incorrectly.&lt;/strong&gt;  This may be because they don’t know their user ID, or they may have entered it incorrectly.  These users could be given another chance to enter their ID or guidance on what a valid user ID looks like. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s all for this article. If you want to learn more about the book, check it out on Manning’s liveBook platform &lt;a href="https://livebook.manning.com/book/conversational-ai?origin=product-look-inside"&gt;here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>analytics</category>
      <category>improvement</category>
      <category>conversationalai</category>
    </item>
    <item>
      <title>The Command Interpreter Pattern</title>
      <dc:creator>Andrew R. Freed</dc:creator>
      <pubDate>Fri, 14 May 2021 20:28:35 +0000</pubDate>
      <link>https://dev.to/andrewrfreed/the-command-interpreter-pattern-23oi</link>
      <guid>https://dev.to/andrewrfreed/the-command-interpreter-pattern-23oi</guid>
      <description>&lt;h1&gt;
  
  
  An Introduction to Virtual Assistants
&lt;/h1&gt;

&lt;p&gt;(From &lt;a href="https://www.manning.com/books/creating-virtual-assistants?utm_source=devto&amp;amp;utm_medium=organic&amp;amp;utm_campaign=book_freed_creating_12_27_20&amp;amp;utm_content=devto"&gt;Creating Virtual Assistants&lt;/a&gt; by Andrew Freed)&lt;/p&gt;

&lt;p&gt;This article gives you an introduction to creating useful virtual assistants with the Command Interpreter pattern.&lt;/p&gt;

&lt;p&gt;(Take 40% off &lt;em&gt;&lt;a href="https://www.manning.com/books/creating-virtual-assistants?utm_source=devto&amp;amp;utm_medium=organic&amp;amp;utm_campaign=book_freed_creating_12_27_20&amp;amp;utm_content=devto"&gt;Creating Virtual Assistants&lt;/a&gt;&lt;/em&gt; by entering &lt;strong&gt;fccfreed&lt;/strong&gt; into the discount code box at checkout at &lt;a href="https://www.manning.com/?utm_source=devto&amp;amp;utm_medium=organic&amp;amp;utm_campaign=book_freed_creating_12_27_20&amp;amp;utm_content=devto"&gt;manning.com&lt;/a&gt;.)&lt;/p&gt;

&lt;p&gt;A common use of virtual assistant technology is in the Command Interpreter pattern.  This is prevalent in "smart" devices: your phone, your TV remote, your appliances.  The command interpreter deals with a limited vocabulary - enough to invoke the commands it supports - and the interaction is finished as soon as the information needed to execute the task is collected.  A smart television remote is tuned to recognize words like “channel” and “volume” but won’t recognize a command like “Set air temperature to 76 degrees”.  Table 1 shows example command interpreters and commands that in their vocabulary.&lt;/p&gt;

&lt;p&gt;Table 1 Example command interpreters and supported commands&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command Interpreter Type&lt;/th&gt;
&lt;th&gt;Example command&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Smart phone&lt;/td&gt;
&lt;td&gt;“Set an alarm for 9PM”&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Smart phone&lt;/td&gt;
&lt;td&gt;“Call Mom”&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Smart phone&lt;/td&gt;
&lt;td&gt;“Open Facebook”&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Voice-powered television remote&lt;/td&gt;
&lt;td&gt;“Increase volume”&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Voice-powered television remote&lt;/td&gt;
&lt;td&gt;“Turn to channel 3”&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Smart home controller&lt;/td&gt;
&lt;td&gt;“Turn on the light”&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Smart home controller&lt;/td&gt;
&lt;td&gt;“Set air temperature to 76 degrees”&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;My favorite command on my phone is the "set alarm" command which has two parameter slots: the alarm time and the alarm reason.  On my phone the alarm time is a required parameter and the alarm reason is optional.  In the first example below, I've mapped out the simplest "set alarm" invocation: "Set an alarm".  The interpreter knows that setting an alarm without an alarm time is impossible and it prompts me for the alarm time.&lt;/p&gt;

&lt;p&gt;The command interpreters you’re most familiar with require activation either via a physical button or a "wake word".  Several wake words you may be familiar with include "Hey Siri", "Ok Google", and "Alexa".  Devices that wake via a button don't start listening until you press that button.  Devices which are always listening don't jump into action until you use a wake word.&lt;/p&gt;

&lt;p&gt;The diagram below demonstrates how several command interpreters parse your input into an actionable command.  Try experimenting with your devices to see how many different ways you can execute a command, either by changing the words ("create alarm" vs "set an alarm") or changing the order of the information given.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iauoQrgE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/htofrzvkryauvc06qiz0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iauoQrgE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/htofrzvkryauvc06qiz0.png" alt="Diagram of commands and command parameters used by the Command Interpreter"&gt;&lt;/a&gt;&lt;br&gt;
Figure 1 Exploring the parts of a command&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3nB2RAia--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pgymh6sjh1pdq2vp5h9y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3nB2RAia--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pgymh6sjh1pdq2vp5h9y.png" alt="Alternate diagram of commands and command parameters used by the Command Interpreter"&gt;&lt;/a&gt;&lt;br&gt;
Figure 2 Alternate terminology for the command interpreter pattern&lt;/p&gt;

&lt;p&gt;The command interpreter’s job is to identify a command (ex: “set alarm”) and fill all of the parameter "slots" (ex: time of alarm) for that command.  When the command interpreter is invoked it asks as many follow-up questions as needed to fill all of the required slots - no more questions and no less.  This is similar to how virtual assistants work except that command interpreters only service a single request - the entire conversation is finished when the required parameters are gathered and the initial command is executed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do virtual assistants always have “commands”?&lt;/strong&gt;&lt;br&gt;
Terminology differs.  In this article I refer to intents and entities; nearly every virtual assistant platform uses the “intent” terminology.  Some platforms use “action” and “intent” interchangeably. In the case of command interpreters, commands are intents and parameters are entities.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--a3PF8Sn1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lwmtnhrcn49vmwzp1u48.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--a3PF8Sn1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lwmtnhrcn49vmwzp1u48.png" alt="Setting an alarm without specifying the alarm time"&gt;&lt;/a&gt;&lt;br&gt;
Figure 3 A command can require follow-up questions from the command interpreter&lt;/p&gt;

&lt;p&gt;Command interpreters can also be coded to receive multiple parameters at once as long as there’s a way to distinguish them.  In the next example I provide all of the alarm parameters in a single statement: "Set an alarm for 9PM to write Chapter 1."  The phone gladly obliges this request!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MEU00U1Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/17qap3n9jq2mhha6il7z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MEU00U1Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/17qap3n9jq2mhha6il7z.png" alt="Setting an alarm by providing all parameters at once"&gt;&lt;/a&gt;&lt;br&gt;
Figure 4 When all required parameters are passed to the command interpreter, it completes the command and ends the conversation.&lt;/p&gt;

&lt;p&gt;When developing a command interpreter, you need to separate the parameters from the command.  In the case of setting an alarm this isn’t too difficult: the command is something like "set an alarm", the alarm time is text that parses to a time, and any remaining text (minus filler words like "for", "to", "at", etc.) is the reason.&lt;/p&gt;

&lt;p&gt;If you want to learn more, you can check out the book on Manning’s browser-based liveBook platform &lt;a href="https://livebook.manning.com/book/creating-virtual-assistants?origin=product-look-inside&amp;amp;utm_source=devto&amp;amp;utm_medium=organic&amp;amp;utm_campaign=book_freed_creating_12_27_20&amp;amp;utm_content=devto"&gt;here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>chatbot</category>
      <category>ai</category>
      <category>entity</category>
    </item>
    <item>
      <title>Comparing Voice and Text Chat Experiences</title>
      <dc:creator>Andrew R. Freed</dc:creator>
      <pubDate>Wed, 10 Mar 2021 14:41:59 +0000</pubDate>
      <link>https://dev.to/andrewrfreed/comparing-voice-and-text-chat-experiences-3453</link>
      <guid>https://dev.to/andrewrfreed/comparing-voice-and-text-chat-experiences-3453</guid>
      <description>&lt;p&gt;&lt;em&gt;Excerpted from &lt;a href="https://www.manning.com/books/creating-virtual-assistants?utm_source=devto&amp;amp;utm_medium=organic&amp;amp;utm_campaign=book_freed_creating_12_27_20"&gt;Creating Virtual Assistants&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The choice of a channel has far-reaching considerations into how your virtual assistant works.  Each channel has pros and cons and you will likely need to customize your virtual assistant to exploit the benefits of a channel while avoiding the pitfalls. The specific channel you already use—voice or web—can also influence what you can go after first. Additionally, some business processes may be friendlier to adapt to either voice or web. For example, you can give driving directions with a map in a web channel – how would you give directions over voice?&lt;/p&gt;

&lt;p&gt;Today's consumers are used to getting the information they want, when they want it, in the mode that they most prefer, as shown in figure 1.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--u5WzsmpD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gsh56zgzz34oa4mdvzbj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--u5WzsmpD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gsh56zgzz34oa4mdvzbj.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Figure 1&lt;/strong&gt; Consumers are used to picking the channel that works best for them&lt;/p&gt;

&lt;p&gt;Which channel has the closest affinity to most of your users? If your users are on the phone all day then they will be more likely to prefer a voice channel. If your users primarily interact with you through your website, app, or email they will be more likely to prefer a web chat option. Phones are ubiquitous and nearly everyone knows how to make phone calls—whether or not they like using the phone is a different story! Similarly, instructing users to "go to our website" may be a welcome relief or a daunting challenge depending on your user base. Of course—there is nothing to stop you from supporting both channels—just time and money!&lt;/p&gt;

&lt;p&gt;With all else being equal it is easier to start with web chat rather than voice. Voice introduces two additional AI service (speech to text and text to speech conversion) which requires additional development and training work—though training a speech engine is continuing to get easier.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Table 1&lt;/strong&gt; Comparison between web and voice channels&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Web Benefits&lt;/th&gt;
&lt;th&gt;Voice Benefits&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Technical implementation has less moving parts&lt;/td&gt;
&lt;td&gt;Almost everyone has a phone&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Do not have to train speech recognition&lt;/td&gt;
&lt;td&gt;Friendlier to non-tech-savvy users&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Easily deployed on websites and mobile apps&lt;/td&gt;
&lt;td&gt;Easy to transfer users in and out of virtual assistant using public telephony switching&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  How users receive information in voice and web
&lt;/h2&gt;

&lt;p&gt;The first difference between voice and web is the way the user receives information from the solution. In a web solution, the user will have the full chat transcript on their screen—a complete record of everything they said and what you said. While many users don't like scrolling, they have the option to scroll back to view the entire conversation at any time and re-read any part they would like. They can print their screen or copy/paste parts or the entire transcript at any time. A lengthy response can be skimmed or read in full at the user's discretion. The user may multi-task while chatting with little impact on the broader solution.  A web assistant can return rich responses including not just text but images, buttons, and more.  Figure 2 shows some of the differences.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IlZlu4Z4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/46cvclchkwip8720rrfm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IlZlu4Z4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/46cvclchkwip8720rrfm.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Figure 2&lt;/strong&gt; The web channel allows rich responses like images. Voice solutions should be prepared to repeat important information. Map photo by &lt;a href="https://unsplash.com/@waldemarbrandt67w?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Waldemar Brandt&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/city-map?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Conversely, in a voice channel, the user's interaction is only what they hear. If the user misses a key piece of information, they do not have a way of getting it again, unless you code a "repeat" question or functionality into your assistant. Figure 2 shows how web and voice channels can best handle a question like “where’s the nearest store?”&lt;/p&gt;

&lt;p&gt;Further, a long verbal readout can be very frustrating for a user: they may need a pencil and paper to take notes, they may have to wait a long time to get what they want, and they probably have to be very quiet for fear of confusing the speech engine (I practically hold my breath when talking with some automated voice systems). Also, directly sending rich media responses like images is impossible over voice though you may be able to leverage side channels like SMS or email to send information for later review.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nV0gMvWr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zizojbvs17vtzmy74qp5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nV0gMvWr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zizojbvs17vtzmy74qp5.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Figure 3&lt;/strong&gt; Different channels have different user experiences&lt;/p&gt;

&lt;p&gt;You must be aware of the cost to the user when you have a long message.  As shown in Figure 3, a web user can skim long messages, but a voice user cannot. Beware the temptation to cram every last piece of information into a message, especially in voice. The average adult reading speed is around 200 words per minute and speaking speed is around 160 words per minute, though automated speech systems can be tuned to speak more quickly.&lt;/p&gt;

&lt;p&gt;Consider a hypothetical greeting:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Thank you for calling the So-and-So automated voice hotline.  We appreciate your call and look forward to serving you.  This call may be recorded for quality assurance and training purposes. If you know the extension of the party you are calling you can dial it at any time. Please listen carefully as our menu options have recently changed.  For appointments press 1."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I timed myself reading this 62-word message. It takes 20 seconds of audio to get to the first useful piece of information! (Hopefully you wanted appointments!)  Perhaps the lawyers insisted—but look at how much "junk" is in that message from the user's point of view. Figure 4 breaks down the greeting. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Q8xpZhvA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rnif8xk4am71ywdlwfyi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Q8xpZhvA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rnif8xk4am71ywdlwfyi.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Figure 4&lt;/strong&gt; User's thought progression through a long greeting&lt;/p&gt;

&lt;p&gt;Contrast that with the following greeting:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Thanks for calling So-and-So. Calls are recorded. How can I help you?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This new message has 4 seconds to value while still covering the basics of greeting, notification, and intent gathering. You only get one chance to make a great first impression—don't waste your users' time on your greeting!&lt;/p&gt;

&lt;p&gt;Take to heart the following quote:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I have only made this letter longer because I have not had the time to make it shorter."&lt;br&gt;
Blaise Pascal, The Provincial Letters (Letter 16, 1657)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It takes work to be concise, but your users will appreciate you for it!&lt;/p&gt;

&lt;h2&gt;
  
  
  How the assistant receives information in Voice and Web
&lt;/h2&gt;

&lt;p&gt;Another key difference between voice and web is how you receive input from the user. In a web channel, you can be sure of receiving exactly what was on the user's screen. You may provide a pop-up form to collect one or more pieces of information at once (first and last name, full address). The user may have clicked a button and you will know exactly what they clicked. The user may have misspelled one or more words but virtual assistants are increasingly resilient to misspellings and typos as demonstrated in Figure 5.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tPFF4PMi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jfzuazwt93uuujofdq14.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tPFF4PMi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jfzuazwt93uuujofdq14.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Figure 5&lt;/strong&gt; Most major virtual assistant platforms are resilient against misspellings&lt;/p&gt;

&lt;p&gt;In a voice channel you will receive a textual transcription of what the speech engine interpreted. Anyone who has used voice dictation has seen words get missed. The assistant can be adaptive to some mis-transcriptions (just like it can be adaptive to misspellings in chat) when the words are not contextually important. Figure 6 shows a voice assistant adapting to a pair of mis-transcriptions: “wear” for “where” and “a” for “the”.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LU0gJYfF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9mulzu4kpzzo1jym1tf0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LU0gJYfF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9mulzu4kpzzo1jym1tf0.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Figure 6&lt;/strong&gt; Voice assistants can adapt to mis-transcriptions in general utterances as long as the key contextual phrases are preserved, like "nearest store"&lt;/p&gt;

&lt;p&gt;Aside from simple mis-transcriptions, another class of inputs gives speech engines trouble—any input that is hard for humans will be hard for speech engines as well.&lt;/p&gt;

&lt;p&gt;Proper names and addresses are both notoriously difficult for speech engines in both recognition (speech to text) and synthesis (text to speech). When I'm talking to a person on the phone and they ask for my last name I say "Freed. F-R-E-E-D" since many people hear "Free" or try to use the old German spelling "Fried". Common names are not that common—you should be easily able to rattle off a couple of "uncommon" names within your personal network rather quickly. Speech engines work best with a constrained vocabulary, even if that vocabulary is "the English language", and most names are considered out-of-vocabulary.  &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Sidebar: What’s a vocabulary?&lt;br&gt;
Speech to text providers refer to a “vocabulary” – this is simply a list of words.  A speech model is trained to recognize a set of words. A generalized English model may have a dictionary that includes all of the most common words in the English language.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Your virtual assistant will probably need to deal with uncommon words and jargon. The name of your company, or the products your company offers, may not be included in that vocabulary of words. If so, you will need to train a speech model to recognize them. &lt;/p&gt;

&lt;p&gt;Addresses are harder than names.  I found a random street name on a map "Westmoreland Drive." If you heard that would you transcribe "Westmoreland Drive" or "W. Moreland Drive" or "West Moorland Drive"?  Figure 7 shows a challenge in mapping similar phonetics to words that sound similar.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FHJyYer0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iznf4k1qxu62wovnnr1c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FHJyYer0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iznf4k1qxu62wovnnr1c.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Figure 7&lt;/strong&gt; Transcription challenges on unusual terms&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Sidebar: On spelling out words and the difficulty of names and addresses&lt;br&gt;
Spelling out a difficult name can sometimes be helpful for humans, but it does not help machines much. Letters are easily confused with each other: B/C/D/E/G/P/T all sound similar without context. Humans may require several repetitions to correctly interpret a proper name, even spelled out.  There is rich literature on the difficulty of names and addresses. One such article is "The Difficulties with Names: Overcoming Barriers to Personal Voice Services" by Dr. Murray Spiegel (2003) &lt;a href="http://web.media.mit.edu/%7Egeek/TheDifficultiesWithNames.htm"&gt;http://web.media.mit.edu/~geek/TheDifficultiesWithNames.htm&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The difficulty in receiving certain inputs from users affects the way you build a dialog structure, perhaps most significantly in authenticating users. In a web chat you can collect any information you need verbatim from a user. You may in fact authenticate in your regular website and pass an authenticated session to the web chat. In a voice channel, you need to be more restrictive in what you receive. During authentication, a single transcription error in the utterance will fail validation, just like if the user mistypes their password, as shown in Figure 8.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--r6Xij9zE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ybcqzlb79vhko2kvxf7j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--r6Xij9zE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ybcqzlb79vhko2kvxf7j.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Figure 8&lt;/strong&gt; For most data inputs, a single transcription mistake prevents the conversation from proceeding.  Voice systems need to take this into account by using re-prompts or alternate ways to receive difficult inputs.&lt;/p&gt;

&lt;p&gt;In the best cases, speech technology has a 5% error rate and in challenging cases like names and addresses the error rate can be much, much higher (Some voice projects report a 60-70% error rate on addresses). With alphanumeric identifiers, the entire sequence needs to be transcribed correctly, as shown in Figure 8. A 5% error rate may apply to each character, so the error rate for the entire sequence will be higher. For this reason, a six-digit ID is much more likely to transcribe accurately than a twelve-digit ID.&lt;/p&gt;

&lt;p&gt;For accurate transcriptions, constrained inputs like numeric sequences and dates work best. If you encounter a transcription error, you can always prompt the user to provide the information again. Keep in mind that you will want to limit the number of re-prompts. You may implement a “three strikes rule” – if three consecutive transcriptions fail then you direct the user to alternate forms of help that will serve them better.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Table 2&lt;/strong&gt; Summary of data types by how well speech engines can transcribe them&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Data types that transcribe well&lt;/th&gt;
&lt;th&gt;Data types that do not transcribe well&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Numeric identifiers (ex: Social Security Number)&lt;/td&gt;
&lt;td&gt;Proper names&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dates&lt;/td&gt;
&lt;td&gt;Addresses&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Short alphanumeric sequences (i.e. “ABC123”)&lt;/td&gt;
&lt;td&gt;Long alphanumeric sequences (i.e. "ABCDEFGHI123456")&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Voice authentication can make use of an alternate channel such as SMS. You can send a text message to a number on file for a user with a one-time code and use that in authentication, instead of collecting information over voice. If you absolutely must authenticate via an option that is difficult for speech, over the speech channel, be prepared to work hard in both speech training and orchestration layer post-processing logic. You will need a good call hand-off strategy in this scenario.&lt;/p&gt;

&lt;p&gt;That’s all for this article. If you want to learn more about the book, check it out on Manning’s browser-based liveBook reader &lt;a href="https://livebook.manning.com/book/creating-virtual-assistants?origin=product-look-inside&amp;amp;utm_source=devto&amp;amp;utm_medium=organic&amp;amp;utm_campaign=book_freed_creating_12_27_20"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Take 35% off &lt;a href="https://www.manning.com/books/creating-virtual-assistants?utm_source=devto&amp;amp;utm_medium=organic&amp;amp;utm_campaign=book_freed_creating_12_27_20"&gt;Creating Virtual Assistants&lt;/a&gt; by entering &lt;strong&gt;devtofreed&lt;/strong&gt; into the discount code box at checkout at &lt;a href="https://www.manning.com/?utm_source=devto&amp;amp;utm_medium=organic&amp;amp;utm_campaign=book_freed_creating_12_27_20"&gt;manning.com&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>chatbot</category>
      <category>ai</category>
      <category>voice</category>
      <category>ux</category>
    </item>
  </channel>
</rss>
