<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Karine Dery - AI Virtual Voice Experts with Google Dialogflow CX - CCAI - Nu Echo</title>
	<atom:link href="https://www.nuecho.com/fr/author/kdery/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.nuecho.com/fr/author/kdery/</link>
	<description>Nu Echo</description>
	<lastBuildDate>Wed, 23 Nov 2022 22:43:05 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.nuecho.com/wp-content/uploads/2019/11/cropped-favicon-32x32.png</url>
	<title>Karine Dery - AI Virtual Voice Experts with Google Dialogflow CX - CCAI - Nu Echo</title>
	<link>https://www.nuecho.com/fr/author/kdery/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Du chatbot au voicebot: plus qu’un peu de maquillage</title>
		<link>https://www.nuecho.com/fr/du-chatbot-au-voicebot-plus-quun-peu-de-maquillage/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=du-chatbot-au-voicebot-plus-quun-peu-de-maquillage</link>
		
		<dc:creator><![CDATA[Karine Dery]]></dc:creator>
		<pubDate>Thu, 15 Sep 2022 15:12:12 +0000</pubDate>
				<category><![CDATA[Blogue]]></category>
		<category><![CDATA[Dialogflow]]></category>
		<category><![CDATA[Agent virtuel Centre de contact]]></category>
		<category><![CDATA[agent virtuels]]></category>
		<category><![CDATA[cas d'utilisation agent virtuels]]></category>
		<category><![CDATA[Chatbot]]></category>
		<category><![CDATA[contact center automation]]></category>
		<category><![CDATA[Design conversationnel]]></category>
		<category><![CDATA[DialogFlow]]></category>
		<category><![CDATA[IA conversationnelle]]></category>
		<category><![CDATA[Modèle NLU]]></category>
		<category><![CDATA[Modèle TALN]]></category>
		<category><![CDATA[Voicebot]]></category>
		<category><![CDATA[voicebot persona]]></category>
		<guid isPermaLink="false">https://www.nuecho.com/?p=9534</guid>

					<description><![CDATA[<p>Dans notre métier, on entend souvent “Après avoir fait l’assistant vocal, on pourra utiliser le dialogue pour ajouter un chatbot sur notre site!!” ou encore “Maintenant qu’on a notre chatbot, faire un voicebot sera si facile”. À première vue, il suffit d’ajouter ou d’enlever une couche de reconnaissance de la parole (speech-to-text, STT) et de [&#8230;]</p>
<p>The post <a href="https://www.nuecho.com/fr/du-chatbot-au-voicebot-plus-quun-peu-de-maquillage/">Du chatbot au voicebot: plus qu’un peu de maquillage</a> first appeared on <a href="https://www.nuecho.com/fr/">AI Virtual Voice Experts with Google Dialogflow CX - CCAI - Nu Echo</a>.</p>
<p>The post <a href="https://www.nuecho.com/fr/du-chatbot-au-voicebot-plus-quun-peu-de-maquillage/">Du chatbot au voicebot: plus qu’un peu de maquillage</a> appeared first on <a href="https://www.nuecho.com/fr/">AI Virtual Voice Experts with Google Dialogflow CX - CCAI - Nu Echo</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><span style="font-weight: 400;">Dans notre métier, on entend souvent “Après avoir fait l’assistant vocal, on pourra utiliser le dialogue pour ajouter un chatbot sur notre site!!” ou encore “Maintenant qu’on a notre chatbot, faire un voicebot sera si facile”. À première vue, il suffit d’ajouter ou d’enlever une couche de reconnaissance de la parole (</span><i><span style="font-weight: 400;">speech-to-text</span></i><span style="font-weight: 400;">, STT) et de synthèse de la parole (</span><i><span style="font-weight: 400;">text-to-speech</span></i><span style="font-weight: 400;">, TTS) à l’un pour obtenir l’autre. Pourtant, l’expérience nous a appris qu’il faudrait un coup de baguette magique pour que ce soit aussi simple, et à travers ce post, j’essaierai de le démontrer à l’aide de quelques exemples.</span></p>
<h2></h2>
<p>&nbsp;</p>
<h2><span style="font-weight: 400;">Génération de l’extrant</span></h2>
<h3><span style="font-weight: 400;">Présentation d’informations complexes</span></h3>
<p><span style="font-weight: 400;">Pour un chatbot, il est possible de complémenter le texte par des images, des hyperliens, des carrousels, etc. Certains cas d’utilisation, comme l’aide à la navigation, ou des suggestions d’achats, sont impensables sans ces outils.</span></p>
<p><span style="font-weight: 400;">Dans d’autres cas, plusieurs interactions vocales pourraient être nécessaires pour obtenir le même résultat qu’un seul extrant visuel complexe. Voici, par exemple, ma meilleure tentative de reproduction extrant pour extrant d’un bot de prise de rendez-vous:</span></p>
<p><span style="font-weight: 400;"><img decoding="async" class="wp-image-9517 size-full aligncenter" src="https://www.nuecho.com/wp-content/uploads/2022/09/rdv-c-fr.png" alt="" width="358" height="522" srcset="https://www.nuecho.com/wp-content/uploads/2022/09/rdv-c-fr.png 358w, https://www.nuecho.com/wp-content/uploads/2022/09/rdv-c-fr-206x300.png 206w" sizes="(max-width: 358px) 100vw, 358px" /></span><span style="font-weight: 400;"><img decoding="async" class="wp-image-9519 size-full aligncenter" src="https://www.nuecho.com/wp-content/uploads/2022/09/rdv-v-fr.png" alt="" width="358" height="368" srcset="https://www.nuecho.com/wp-content/uploads/2022/09/rdv-v-fr.png 358w, https://www.nuecho.com/wp-content/uploads/2022/09/rdv-v-fr-292x300.png 292w" sizes="(max-width: 358px) 100vw, 358px" /></span></p>
<h3></h3>
<p>&nbsp;</p>
<h3><span style="font-weight: 400;">Trac</span><span style="font-weight: 400;">es des interactions précédentes</span></h3>
<p><span style="font-weight: 400;">Que fait un chatbot si l’utilisateur est inattentif, a mauvaise mémoire, ou a oublié de mettre ses lunettes? Rien! L’extrant reste là pour que l’utilisateur le relise comme bon lui semble, ce qui rend certains cas nécessaires à l’oral très inutiles à supporter à l’écrit: </span></p>
<p><span style="font-weight: 400;"><img decoding="async" class="wp-image-9521 size-full aligncenter" src="https://www.nuecho.com/wp-content/uploads/2022/09/repeter-fr.png" alt="" width="358" height="440" srcset="https://www.nuecho.com/wp-content/uploads/2022/09/repeter-fr.png 358w, https://www.nuecho.com/wp-content/uploads/2022/09/repeter-fr-244x300.png 244w" sizes="(max-width: 358px) 100vw, 358px" /></span></p>
<h3></h3>
<h3></h3>
<h3><span style="font-weight: 400;">Persona et rendu</span></h3>
<p><span style="font-weight: 400;">La persona (caractéristiques démographiques, niveau de langue, personnalité) de l’agent virtuel, ainsi que sa cohérence, est importante dans les deux modes. Alors qu’en mode textuel il faut penser à la facture visuelle du chatbot, en mode vocal, il faut chercher une voix qui représente les caractéristiques désirées tout en étant naturelle, et cela peut restreindre nos options. Essayer de créer un agent vocal informel, par exemple, peut être quasi-impossible, surtout en utilisant le TTS au lieu d’une voix enregistrée (qui a aussi ses limitations).</span></p>
<audio class="wp-audio-shortcode" id="audio-9534-1" preload="none" style="width: 100%;" controls="controls"><source type="audio/wav" src="https://www.nuecho.com/wp-content/uploads/2022/09/voicebot_cool-en.wav?_=1" /><a href="https://www.nuecho.com/wp-content/uploads/2022/09/voicebot_cool-en.wav">https://www.nuecho.com/wp-content/uploads/2022/09/voicebot_cool-en.wav</a></audio>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3></h3>
<h3><span style="font-weight: 400;">Support de multiples canaux</span></h3>
<p><span style="font-weight: 400;">Finalement, même si nos cas d’utilisation sont indépendants du canal, notre persona très simple et notre agent très verbal, il est clair qu’il faut minimalement pouvoir jouer des messages différents selon le canal, ne serait-ce que pour inclure du SSML dans les messages audio. Malheureusement, certains engins de dialogue supportent difficilement plusieurs canaux et cela peut faire exploser la complexité d’implémenter un agent commun.</span></p>
<p><img decoding="async" class="wp-image-9523 size-full aligncenter" src="https://www.nuecho.com/wp-content/uploads/2022/09/ssml-fr.png" alt="" width="358" height="364" srcset="https://www.nuecho.com/wp-content/uploads/2022/09/ssml-fr.png 358w, https://www.nuecho.com/wp-content/uploads/2022/09/ssml-fr-295x300.png 295w" sizes="(max-width: 358px) 100vw, 358px" /></p>
<h2></h2>
<h2><span style="font-weight: 400;">Interprétation de l’intrant</span></h2>
<p><span style="font-weight: 400;">“Qu’en est-il de l’autre sens? L’utilisateur n’enverra pas d’images ou de carrousels au chatbot, sûrement traiter l’intrant ne peut pas être si différent”. Je répondrai à ceci par une dramatisation. Suivons Bob, qui essaie d’exprimer son besoin à un agent vocal:</span></p>
<p><img decoding="async" class="aligncenter wp-image-9525 size-full" src="https://www.nuecho.com/wp-content/uploads/2022/09/bob-fr.png" alt="" width="677" height="973" srcset="https://www.nuecho.com/wp-content/uploads/2022/09/bob-fr.png 677w, https://www.nuecho.com/wp-content/uploads/2022/09/bob-fr-480x690.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 677px, 100vw" /></p>
<p>&nbsp;</p>
<p><span style="font-weight: 400;">Bien entendu, Bob et sa malchance légendaire n’existent pas, mais les cas présentés sont tirés de la réalité. Même si certains modèles de STT peuvent maintenant ignorer les “euh”, les bruits et les voix secondaires, la transcription comportera toujours son lot d’erreurs.</span></p>
<h3></h3>
<h3></h3>
<h3><span style="font-weight: 400;">Incertitude</span></h3>
<p><span style="font-weight: 400;">Il existe des moyens de diminuer ces erreurs ou leurs impacts, que ce soit via la configuration de l’engin, des transformations systématiques sur la transcription, ou l’adaptation du modèle TALN aux phrases reçues. Il reste malgré tout une incertitude supplémentaire liée au STT dont il faut tenir compte dans le développement d’une application vocale.</span></p>
<h4></h4>
<p>&nbsp;</p>
<h4><span style="font-weight: 400;">Stratégies de gestion de l’incertitude</span></h4>
<p><span style="font-weight: 400;">Pour augmenter notre confiance en l’interprétation de l’intrant, on utilisera dans le dialogue d’un agent vocal plus de stratégies de gestion de l’incertitude que dans un agent textuel. On pense par exemple à:</span></p>
<ul>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Ajouter une étape de confirmation explicite ou implicite d’une intention ou entité</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Ajouter une étape de désambiguïsation de l’intrant pour des intentions trop similaires</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Supporter les changements/corrections</span></li>
</ul>
<p>&nbsp;</p>
<p><img decoding="async" class="wp-image-9527 size-full aligncenter" src="https://www.nuecho.com/wp-content/uploads/2022/09/confirm-fr.png" alt="" width="358" height="413" srcset="https://www.nuecho.com/wp-content/uploads/2022/09/confirm-fr.png 358w, https://www.nuecho.com/wp-content/uploads/2022/09/confirm-fr-260x300.png 260w" sizes="(max-width: 358px) 100vw, 358px" /></p>
<p>&nbsp;</p>
<h4><span style="font-weight: 400;">Choix des cas d’utilisation</span></h4>
<p><span style="font-weight: 400;">Les adresses, les courriels ou les noms de personnes sont des informations difficiles à transcrire correctement pour de multiples raisons, mais peu problématiques à l’écrit. Si certaines sont critiques pour un cas d’utilisation, il pourrait être très complexe, risqué, ou inadéquat pour l’expérience utilisateur de l’implémenter vocalement.</span></p>
<p><img decoding="async" class="wp-image-9529 size-full aligncenter" src="https://www.nuecho.com/wp-content/uploads/2022/09/courriel-fr.png" alt="" width="358" height="380" srcset="https://www.nuecho.com/wp-content/uploads/2022/09/courriel-fr.png 358w, https://www.nuecho.com/wp-content/uploads/2022/09/courriel-fr-283x300.png 283w" sizes="(max-width: 358px) 100vw, 358px" /></p>
<p>&nbsp;</p>
<h2><span style="font-weight: 400;">Gestion du temps réel</span></h2>
<p><span style="font-weight: 400;">La dernière grande différence entre les conversations vocales et textuelles est la gestion du temps. Une conversation textuelle est asynchrone: l’intrant est reçu en un bloc, et la réponse qui suit est envoyée en un bloc. L’audio, lui, est transmis en continu, le temps doit donc être géré en conséquence.</span></p>
<p>&nbsp;</p>
<h3><span style="font-weight: 400;">Réponse rapide et expérience utilisateur</span></h3>
<p><span style="font-weight: 400;">En discussion vocale, il est inhabituel de ne pas avoir de réponse en quelques dixièmes de seconde, alors qu’en mode texte, c’est tout à fait normal. Un trop long silence au bout du fil est malaisant, et même s’il est possible de jouer des sons ou de la musique pour les attentes, entre deux interactions régulières, les “&#8230;” sont irremplaçables. Il est donc beaucoup plus critique en mode voix de s’assurer que le système est rapide et d’avertir l’utilisateur en cas d’opération plus longue.</span></p>
<p>&nbsp;</p>
<h3><span style="font-weight: 400;">Interruptions</span></h3>
<p><span style="font-weight: 400;">Parce que l’extrant vocal a une durée, l’utilisateur peut essayer d’interrompre un agent vocal. Supporter les interruptions correctement implique une complexité technique additionnelle, mais aussi quelques impacts sur le dialogue. On voudra par exemple faire l’hypothèse que si l’utilisateur dit “oui” lorsqu’on présente plusieurs options, cela signifie qu’il choisit la première, et supporter ce cas.</span></p>
<p><img decoding="async" class="wp-image-9531 size-full aligncenter" src="https://www.nuecho.com/wp-content/uploads/2022/09/oui-fr.png" alt="" width="358" height="375" srcset="https://www.nuecho.com/wp-content/uploads/2022/09/oui-fr.png 358w, https://www.nuecho.com/wp-content/uploads/2022/09/oui-fr-286x300.png 286w" sizes="(max-width: 358px) 100vw, 358px" /></p>
<p>&nbsp;</p>
<h3><span style="font-weight: 400;">Le silence de l’utilisateur</span></h3>
<p><span style="font-weight: 400;">Quoiqu’un agent virtuel soit immunisé au malaise des silences, le traitement de ce qu’on appelle communément un </span><i><span style="font-weight: 400;">no-input</span></i><span style="font-weight: 400;"> diffère grandement selon le mode. En voix, quelques secondes de silence signifient généralement que l&rsquo;utilisateur hésite ou que le son de sa voix est trop bas; on jouera donc un message d’aide approprié. </span></p>
<p><span style="font-weight: 400;">En mode texte, il est inutile de harceler l’utilisateur de messages d’erreur car l’absence d’intrant est traité comme toute inaction sur un site web: après un temps déterminé, l’utilisateur sera déconnecté si nécessaire, et la conversation terminée.</span></p>
<p>&nbsp;</p>
<p><img decoding="async" class="wp-image-9533 size-full aligncenter" src="https://www.nuecho.com/wp-content/uploads/2022/09/no-input-fr.png" alt="" width="358" height="377" srcset="https://www.nuecho.com/wp-content/uploads/2022/09/no-input-fr.png 358w, https://www.nuecho.com/wp-content/uploads/2022/09/no-input-fr-285x300.png 285w" sizes="(max-width: 358px) 100vw, 358px" /></p>
<p>&nbsp;</p>
<h2><span style="font-weight: 400;">Alors, finalement…</span></h2>
<p><span style="font-weight: 400;">Que répond-on alors à la question: “Que peut-on réutiliser d’un agent vocal pour créer un chatbot ou vice-versa?” La réponse est très nuancée et un peu décevante. Passer d’un agent vocal à un chatbot permettra généralement plus de réutilisation car le premier est généralement plus contraignant: peut-être qu’il suffira d’adapter un peu les messages, d’ajouter ou d’enlever quelques chemins de dialogues.</span></p>
<p><span style="font-weight: 400;">Cependant, dans les deux cas, il sera important de prendre un pas de recul et de ré-évaluer nos cas d’utilisation et notre persona: sont-ils appropriés, faisables et réalistes sur ce nouveau canal? Pour ce qui survit à ce questionnement, les règles d’affaires et les flux haut-niveau du dialogue pourront probablement être réutilisés. Le modèle TALN (données textuelles, organisation des intentions et entités) et les messages de l’un pourront servir de base à l’autre, mais seront appelés à changer. </span><span style="font-weight: 400;">En effet, l’approche devra être adaptée aux résultats de tests utilisateurs et collectes de données, afin que l’expérience utilisateur ne souffre pas au profit de la simplicité du développement.</span></p><p>The post <a href="https://www.nuecho.com/fr/du-chatbot-au-voicebot-plus-quun-peu-de-maquillage/">Du chatbot au voicebot: plus qu’un peu de maquillage</a> first appeared on <a href="https://www.nuecho.com/fr/">AI Virtual Voice Experts with Google Dialogflow CX - CCAI - Nu Echo</a>.</p><p>The post <a href="https://www.nuecho.com/fr/du-chatbot-au-voicebot-plus-quun-peu-de-maquillage/">Du chatbot au voicebot: plus qu’un peu de maquillage</a> appeared first on <a href="https://www.nuecho.com/fr/">AI Virtual Voice Experts with Google Dialogflow CX - CCAI - Nu Echo</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Chloé: L’évolution, ou Développer un agent conversationnel pour la Covid-19 avec Rasa &#8211; Épisode 2</title>
		<link>https://www.nuecho.com/fr/chloe-levolution-ou-developper-un-agent-conversationnel-pour-la-covid-19-avec-rasa-episode-2/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=chloe-levolution-ou-developper-un-agent-conversationnel-pour-la-covid-19-avec-rasa-episode-2</link>
		
		<dc:creator><![CDATA[Karine Dery]]></dc:creator>
		<pubDate>Thu, 10 Sep 2020 14:46:16 +0000</pubDate>
				<category><![CDATA[Blogue]]></category>
		<guid isPermaLink="false">https://zux.zsm.mybluehost.me/majoctobre2019/chloe-levolution-ou-developper-un-chatbot-pour-la-covid-19-avec-rasa-episode-2/</guid>

					<description><![CDATA[<p>The post <a href="https://www.nuecho.com/fr/chloe-levolution-ou-developper-un-agent-conversationnel-pour-la-covid-19-avec-rasa-episode-2/">Chloé: L’évolution, ou Développer un agent conversationnel pour la Covid-19 avec Rasa &#8211; Épisode 2</a> appeared first on <a href="https://www.nuecho.com/fr/">AI Virtual Voice Experts with Google Dialogflow CX - CCAI - Nu Echo</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="et_pb_section et_pb_section_0 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_0">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_0  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_0  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h2>Retour sur l’épisode 1: TALN et gestion d’erreurs</h2>
<p><img decoding="async" class="wp-image-6934 size-full aligncenter" src="https://www.nuecho.com/wp-content/uploads/2020/09/avertissement.jpeg" alt="" width="1925" height="258" srcset="https://www.nuecho.com/wp-content/uploads/2020/09/avertissement.jpeg 1925w, https://www.nuecho.com/wp-content/uploads/2020/09/avertissement-1280x172.jpeg 1280w, https://www.nuecho.com/wp-content/uploads/2020/09/avertissement-980x131.jpeg 980w, https://www.nuecho.com/wp-content/uploads/2020/09/avertissement-480x64.jpeg 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) and (max-width: 1280px) 1280px, (min-width: 1281px) 1925px, 100vw" /></p>
<h3>Flashback &#8211; Scène 4: Répondre à des questions et suivre TED</h3>
<p>Comme je l’ai mentionné dans la première partie, l’objectif du module de question-réponse (Q&amp;R) était de permettre à l’utilisatrice² de poser une question au sujet de la Covid-19, pour laquelle nous afficherions la réponse retournée par l’API du modèle du Mila. Il y a eu plusieurs versions de cette portion de l’application, allant de très basique à plutôt complexe, et celle-ci a été incorporée à un nombre de plus en plus grand d’endroits dans le dialogue.</p>
<p>Dans la version initiale du flux de Q&amp;R, l’utilisatrice devait choisir l’option “J’ai des questions” du menu principal ou après une évaluation, après quoi l’application recueillait sa question. Nous avons prévu quatre résultats possibles provenant de l’appel à l’API (le quatrième n’était toujours pas disponible au moment où notre participation au projet a pris fin):</p>
<ul>
<li>Échec: l’appel à l’API a échoué</li>
<li>Succès: l’appel à l’API a réussi et le modèle a fourni une réponse</li>
<li>Hors distribution: l’appel à l’API a réussi mais n’a fourni aucune réponse</li>
<li>Requiert une évaluation: l’appel à l’API a réussi mais l’utilisatrice devrait évaluer ses symptômes pour obtenir une réponse à sa question</li>
</ul>
<p>Si le résultat était un succès, Chloé posait une question supplémentaire afin de savoir si la réponse avait été utile (<a href="https://github.com/botfront/rasa-webchat" target="_blank" rel="noopener">l’interface de clavardage</a> que nous devions utiliser ne fournissait pas de boutons de type “j’aime/je n’aime pas” (thumbs-up/thumbs-down) qui nous auraient permis de facilement sauter cette interaction). Si le résultat était hors distribution, alors on demandait à l’utilisatrice de reformuler sa question.</p>
<p>Recueillir la question, la reformulation de celle-ci et la rétroaction sur l’utilité de la réponse pouvaient tous être inclus dans un <em>formulaire</em>; cependant, l’implémentation des transitions vers les autres portions du dialogue était moins claire. Il y avait 6 transitions différentes à partir du flux de Q&amp;R selon le résultat et la présence de la case “self_assess_done” décrite précédemment. Nous avons vaguement considéré la possibilité de demander à l’usager ce qu’il voulait faire ensuite à l’intérieur du <em>formulaire</em>, afin de centraliser la logique du flux de Q&amp;R, mais cette idée a été mise de côté puisque nous n’avons pas trouvé de façon élégante d’implémenter cela. Pour cette raison, nous avons finalement eu recours aux <em>histoires</em> et à la politique TED pour prédire les transitions déterministes.</p>
<p>Nous étions aussi confrontés au problème découlant du fait que certaines de ces transitions étaient des questions de type “affirm/deny” (autrement dit une intention booléenne), “affirm” menant soit vers une évaluation ou vers une autre question. À ce point, nos <em>histoires</em> d’évaluation de base démarraient directement avec une intention “get_assessment” comme raccourci pour la mémoïsation, et démarrer une <em>histoire</em> avec “get_assessment OR affirm” aurait évidemment généré des correspondances indésirables. Nous avons remis cet enjeu à plus tard avec une solution qui fonctionnait seulement parce que nous contrôlions les réponses des utilisateurs par le biais de boutons. Comme ceci:</p>
<p><em>Un raccourci d’intentions avec des boutons </em></p>
<p><img decoding="async" class="aligncenter wp-image-7029 size-full" src="https://www.nuecho.com/wp-content/uploads/2020/09/1-1.bmp" alt="" width="467" height="173" srcset="https://www.nuecho.com/wp-content/uploads/2020/09/1-1.bmp 467w, https://www.nuecho.com/wp-content/uploads/2020/09/1-1-300x111.bmp 300w, https://www.nuecho.com/wp-content/uploads/2020/09/1-1-20x7.bmp 20w" sizes="(max-width: 467px) 100vw, 467px" /></p>
<p>Ainsi, nous n’avions pas besoin d’ajouter des histoires du module de question-réponse suivi d’une évaluation, mais avec le recul, nous aurions dû le faire d’entrée de jeu, puisque l’ajout d’histoires d’évaluations suivies de Q&amp;R fonctionnait (somme toute) bien, et nous avons dû le faire de toute façon lors de l’ajout du TALN.</p>
<h3>Scène 5.25: Détours de l’inscription au suivi quotidien</h3>
<p>Le design du flux d’inscription au suivi quotidien a été approfondi pour y inclure certains cas d’exceptions. Cela était nécessaire puisque le numéro de téléphone et le code de validation étaient recueillis auprès de l’utilisatrice directement sous forme de texte. Voici les cas plus problématiques que nous avons traités:</p>
<ul>
<li>Le numéro de téléphone n’est pas valide</li>
<li>L’utilisatrice dit qu’elle n’a pas de numéro de téléphone</li>
<li>Elle veut annuler l’inscription parce qu’elle ne veut pas fournir son numéro</li>
<li>Le code de validation est invalide</li>
<li>L’utilisatrice n’a pas reçu de code de validation et veut en recevoir un nouveau</li>
<li>Elle n’a pas reçu de code de validation et désire changer de numéro de téléphone</li>
</ul>
<p>Certains de ces cas se trouvent à mi-chemin entre une digression et de la gestion d’erreur, et nous avons pensé les implémenter comme des digressions “contrôlées”, de la même façon que nous l’avions fait pour l’explication des antécédents médicaux, qui va comme suit:</p>
<p><img decoding="async" class="aligncenter wp-image-7060 size-full" src="https://www.nuecho.com/wp-content/uploads/2020/09/digression-fr.gif" alt="" width="600" height="666" /></p>
<p>Mais puisque la plupart impliquaient le recours à des compteurs et messages d’erreurs de même qu’à d’autres éléments plus complexes, nous avons décidé de gérer tous ces cas à l’intérieur de <em>formulaires</em> plutôt que de distribuer la logique entre <em>formulaires</em>, <em>histoires</em> et correspondances (<em>mappings</em>) d’intentions. Cela a présenté des inconvénients (au-delà des centaines de lignes de code supplémentaires): une partie de la logique s’échelonnait sur plusieurs interactions et nous avons dû ajouter plusieurs cases pour disposer de compteurs et de drapeaux³ pour en suivre la progression (notre version finale du <em>formulaire</em> utilise une dizaine de telles cases).</p>
<h3>Flashback &#8211; 5.75: Pause &#8211; TED a besoin d’un cours d’appoint</h3>
<p>Après quelques essais, il a été porté à notre attention qu’il était possible pour une utilisatrice de se retrouver coincée dans une boucle infinie dans le Q&amp;R puisque la seule option offerte était de reformuler la question. Le design a été modifié afin de permettre à l’utilisatrice de soit réessayer, soit sortir du Q&amp;R, et nous avons ajouté 2 transitions pour ce cas.</p>
<p>En ajoutant ces transitions, nous avons frappé un petit noeud: la <a href="https://rasa.com/docs/rasa/core/policies/#ted-policy" target="_blank" rel="noopener">politique TED</a> n’apprenait pas le bon comportement après le Q&amp;R; elle confondait les impacts des cases “question_answering_status” et “symptoms”. La redistribution équilibrée dans nos <em>histoires</em> des exemples de Q&amp;R entre les évaluations sans symptômes, avec symptômes légers ou modérés, a représenté un travail de moine, mais cela a fonctionné. Au final, la <em>politique</em> prédisait le bon comportement pour les conversations qui n’étaient pas représentées dans nos histoires.</p>
<h3>Scène 6: L’implémentation de la recherche de cliniques de dépistage sur le pilote automatique</h3>
<p>La recherche de cliniques de dépistage, après avoir eu maille à partir avec les transitions du Q&amp;R et la gestion d’erreurs de l’inscription au suivi quotidien, n’a présenté aucun nouveau défi. Le dialogue comprenait trois étapes principales:</p>
<ol>
<li>Expliquer le fonctionnement et demander à l’utilisatrice si elle veut poursuivre</li>
<li>Si oui, collecter son code postal et en valider le format et l’existence, en annulant la tâche après trop d’erreurs</li>
<li>Afficher les résultats ou offrir un autre essai s’il n’y en avait aucun.</li>
</ol>
<p>Suivant la logique de nos implémentations précédentes, nous avons utilisé un <em>formulaire</em> pour le code postal et la gestion d’erreurs, les appels à l’API et pour offrir le deuxième essai; et des histoires pour afficher les explications et gérer les transitions vers les autres flux de dialogue. Les transitions, encore une fois, variaient en fonction du résultat de l’appel à l’API et de la valeur de la case “self_assess_done”.</p>
<h3>Scène 7: Explorer les chemins sinueux du TALN</h3>
<p>Après être passés à travers l’implémentation de toutes les fonctionnalités en mode boutons-seulement-sans-gestion-d’erreur, nous avons pu commencer à explorer l’intégration du TALN et à nous attaquer aux entrées imprévues. Nous avons commencé nos essais par la toute première question au menu principal. Toute réponse n’étant pas reconnue comme l’une des options serait envoyée à l’API du Q&amp;R; cependant, puisque le TALN n’est pas contextuel dans Rasa, et étant donné que nous nous attendions à une grande variété de questions pour le Q&amp;R, “toute réponse” pouvait être n’importe quelle intention, avec n’importe quel score. “Comment gérer toutes ces intentions?” n’était pas une question aussi anodine qu’elle puisse paraître.</p>
<h4>Option 1: Ajouter des exemples aux histoires</h4>
<p>La manière évidente de procéder était d’ajouter des <em>histoires</em> avec des intentions non supportées et le comportement d’erreur voulu (c’est-à-dire envoyer le texte au formulaire de Q&amp;R), mais de combien d’exemples aurions-nous besoin? La <em>politique</em> TED n’allait vraisemblablement pas pouvoir apprendre que le comportement des exemples était le comportement par défaut à utiliser aussi pour toute intention exclue des exemples. De plus, utiliser des OR pour inclure toutes les intentions non supportées aurait multiplié la durée de l’entraînement des modèles de façon exponentielle dès que nous aurions appliqué cette approche aux autres cas d’utilisation. Cette avenue était un cul-de-sac.</p>
<h4>Option 2: Action de repli</h4>
<p>En excluant complètement les intentions non supportées de nos <em>histoires</em>, la <em>politique</em> TED prédisait quand même quelque chose, mais nous pouvions espérer que le score de confiance soit bas et utiliser un seuil pour déclencher une action de repli (<a href="https://rasa.com/docs/rasa/core/fallback-actions/#id1" target="_blank" rel="noopener">fallback action</a>). Cette action remplacerait l’intention retournée par une intention “fallback” et nous pourrions gérer celle-ci dans nos <em>histoires</em>. Or, les comportements attendus n’avaient pas de très bons scores, certains n’étant pas beaucoup mieux que ce qu’une intention “affirm” mal placée pouvait obtenir, puisqu’elle était dans plusieurs <em>histoires</em>. En conséquence, nous n’avons pas voulu dépendre d’un seuil de confiance pour déclencher l’action de repli.</p>
<h4>La solution: La politique d’intention non supportée</h4>
<p>Nous avons finalement récupéré l’idée de l’intention “fallback”, mais à l’aide d’une <em>politique</em> déterministe. La <em>politique</em> prédisait l’action qui remplaçait l’intention reconnue par une intention “fallback” si la conversation respectait deux conditions: la dernière action pertinente avant l’entrée de l’utilisatrice était la question du menu principal, et l’intention reconnue n’était pas dans la liste des intentions supportées. Des <em>histoires</em> et la <em>politique</em> de mémoïsation ont été utilisées pour déclencher le formulaire de Q&amp;R et gérer les transitions particulières par la suite (l’échec de l’appel à l’API ainsi que le résultat hors distribution au menu principal étaient suivis d’un message d’erreur au lieu des messages habituels):</p>
<p><em>Utilisation du message déclencheur dans le formulaire de Q&amp;R<br />
</em></p>
<p><img decoding="async" class="aligncenter wp-image-7033 size-full" src="https://www.nuecho.com/wp-content/uploads/2020/09/3-1.bmp" alt="" width="571" height="446" srcset="https://www.nuecho.com/wp-content/uploads/2020/09/3-1.bmp 571w, https://www.nuecho.com/wp-content/uploads/2020/09/3-1-300x234.bmp 300w, https://www.nuecho.com/wp-content/uploads/2020/09/3-1-480x375.bmp 480w, https://www.nuecho.com/wp-content/uploads/2020/09/3-1-20x16.bmp 20w" sizes="(max-width: 571px) 100vw, 571px" /></p>
<h3>Scène 8: Explorations supplémentaires</h3>
<p>Dans un deuxième temps, nous avons ajouté le TALN dans les questions oui-non qui, selon le design, déclenchaient simplement, en cas d’erreur, une question reformulée avec des boutons et sans champ texte. La majorité d’entre elles étaient dans des <em>formulaires</em>, certaines avec des exceptions à la convention de message “utter_ask_{nom_de_la_case}”. Les exceptions s’appliquaient également aux messages d’erreurs, ce qui fait qu’une approche générique ne couvrant même pas tous les cas semblait trop complexe pour les bénéfices envisagés. Nous avons laissé cette idée de côté. Il semblait plus simple et plus rapide de simplement tout gérer dans des <em>formulaires</em>, comme ceci:</p>
<p><img decoding="async" class="aligncenter wp-image-7035 size-full" src="https://www.nuecho.com/wp-content/uploads/2020/09/4.bmp" alt="" width="576" height="633" srcset="https://www.nuecho.com/wp-content/uploads/2020/09/4.bmp 576w, https://www.nuecho.com/wp-content/uploads/2020/09/4-273x300.bmp 273w, https://www.nuecho.com/wp-content/uploads/2020/09/4-480x528.bmp 480w, https://www.nuecho.com/wp-content/uploads/2020/09/4-18x20.bmp 18w" sizes="(max-width: 576px) 100vw, 576px" /></p>
<p>Intermission: Laisser le fantôme de la rétroaction loin derrière</p>
<p>En ajoutant du TALN, et par le fait même de la flexibilité, nous nous sommes rappelé de l’interaction de rétroaction obligatoire et laborieuse qui nous hantait toujours, et avons décidé de la rendre plus flexible aussi. Nous n’avions toujours pas de “widget” pour la rétroaction ni le temps d’en implémenter un, donc nous avons conservé la question, mais adapté la réaction: si l’utilisatrice répondait quoi que ce soit d’autre que oui ou non, la réponse serait traitée comme s’il s’agissait de la réponse à la prochaine question, qui elle se trouvait à offrir de poser une autre question et pouvait mener aux autres fonctionnalités. Il a fallu quelques contorsions afin de sortir du <em>formulaire </em>de manière préventive et de “reproduire” l’entrée de l’utilisatrice:</p>
<p><img decoding="async" class="aligncenter wp-image-7037 size-full" src="https://www.nuecho.com/wp-content/uploads/2020/09/5.bmp" alt="" width="576" height="682" srcset="https://www.nuecho.com/wp-content/uploads/2020/09/5.bmp 576w, https://www.nuecho.com/wp-content/uploads/2020/09/5-253x300.bmp 253w, https://www.nuecho.com/wp-content/uploads/2020/09/5-480x568.bmp 480w, https://www.nuecho.com/wp-content/uploads/2020/09/5-17x20.bmp 17w" sizes="(max-width: 576px) 100vw, 576px" /></p>
<h3>Scène 9: Sprint final pour l’ajout du TALN</h3>
<p>Puisque nous avions déjà la <em>politique</em> pour remplacer des intentions par “fallback”, la gestion d’erreurs en dehors des formulaires consistait essentiellement en l’ajout d’entrées au dictionnaire des dernières intentions supportées par des actions, ainsi que l’ajout d’histoires pour réagir à l’intention “fallback”, soit en entrant dans le formulaire Q&amp;R ou en affichant un message d’erreur en fonction du design. À l’intérieur des formulaires, nous avons appliqué la même approche que pour les questions oui-non. Nous avons dû faire quelques changements collatéraux, comme l’ajout d’une entité pour la province ou l’ajout d’histoires (principalement sous forme de OR) pour gérer les transitions là où “affirm” ou “deny” étaient valides (maintenant que le raccourci via les boutons n’était plus disponible). Nous avons aussi dû revenir en arrière et modifier notre façon élégante de gérer la digression des antécédents médicaux puisque la solution simple utilisant la politique de correspondance (<a href="https://rasa.com/docs/rasa/core/policies/#mapping-policy" target="_blank" rel="noopener">mapping policy</a>) ne pouvait pas s’appliquer à la gestion d’erreurs. Nous avons donc décidé de gérer cette digression dans un <em>formulaire</em> comme les autres.</p>
<p style="text-align: center;"><strong>Fin</strong></p>
<p>Avec le recul, bien que nous ayons ajouté le TALN, nous avons l’impression d’avoir pris plusieurs raccourcis et approches plus-ou-moins-rasa-esques. Notre cas d’utilisation, qui était entièrement prévisible, sans navigation aléatoire mais rempli d’exceptions et de petites variations, ne correspondait pas à un cas d’utilisation typique pour Rasa. Nous avons frappé plusieurs obstacles qui surgissent naturellement lorsqu’on essaie d’implémenter un design de type diagramme de processus avec Rasa. Néanmoins, Rasa offre beaucoup de flexibilité par l’intermédiaire de code et d’ajouts possibles, et au final, nous avons souvent choisi d’utiliser du code pour représenter des patrons de dialogue car lorsque le temps est compté, le chemin qui nous est familier est le façon la plus sûre de se rendre à bon port.</p>
<p>Dans un futur épisode, nous irons plus loin dans l’exploration des différentes façons d’implémenter deux des principales fonctionnalités des designs de type diagramme de processus, soit les arbres de décision et les dialogues modulaires. Ces derniers sont difficiles à implémenter avec Rasa et nous allons explorer les différentes méthodes pour ce faire. Nous allons également évaluer si et comment Rasa 2.0, toujours au stade alpha au moment d’écrire ces lignes, pourra nous faciliter la tâche.</p>
<p><span style="font-weight: 400;"> ¹Je rappelle que nous avons librement choisi de traduire les concepts les plus importants comme suit: </span><i><span style="font-weight: 400;">story </span></i><span style="font-weight: 400;">=&gt; histoire, </span><i><span style="font-weight: 400;">form</span></i><span style="font-weight: 400;">=&gt; formulaire, </span><i><span style="font-weight: 400;">policy</span></i><span style="font-weight: 400;">=&gt; politique, </span><i><span style="font-weight: 400;">slot </span></i><span style="font-weight: 400;">=&gt; case, </span><i><span style="font-weight: 400;">featurized </span></i><span style="font-weight: 400;">=&gt; caractérisée. Ces choix n’engagent que nous.</span></p>
<p><span style="font-weight: 400;"> ²Le féminin est employé simplement pour alléger le texte</span></p>
<p><span style="font-weight: 400;"> ³Oui, </span><i><span style="font-weight: 400;">flag </span></i><span style="font-weight: 400;">dans ce contexte c&rsquo;est bien un </span><i><span style="font-weight: 400;">drapeau</span></i><span style="font-weight: 400;">, voir </span><a href="http://gdt.oqlf.gouv.qc.ca/index.aspx" target="_blank" rel="noopener"><span style="font-weight: 400;">Le grand dictionnaire terminologique</span></a><span style="font-weight: 400;"> de l’OQLF</span></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div><p>The post <a href="https://www.nuecho.com/fr/chloe-levolution-ou-developper-un-agent-conversationnel-pour-la-covid-19-avec-rasa-episode-2/">Chloé: L’évolution, ou Développer un agent conversationnel pour la Covid-19 avec Rasa – Épisode 2</a> first appeared on <a href="https://www.nuecho.com/fr/">AI Virtual Voice Experts with Google Dialogflow CX - CCAI - Nu Echo</a>.</p><p>The post <a href="https://www.nuecho.com/fr/chloe-levolution-ou-developper-un-agent-conversationnel-pour-la-covid-19-avec-rasa-episode-2/">Chloé: L’évolution, ou Développer un agent conversationnel pour la Covid-19 avec Rasa &#8211; Épisode 2</a> appeared first on <a href="https://www.nuecho.com/fr/">AI Virtual Voice Experts with Google Dialogflow CX - CCAI - Nu Echo</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Chloé: L’évolution, ou Développer un agent conversationnel pour la Covid-19 avec Rasa</title>
		<link>https://www.nuecho.com/fr/chloe-levolution-ou-developper-un-agent-conversationnel-pour-la-covid-19-avec-rasa/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=chloe-levolution-ou-developper-un-agent-conversationnel-pour-la-covid-19-avec-rasa</link>
		
		<dc:creator><![CDATA[Karine Dery]]></dc:creator>
		<pubDate>Thu, 03 Sep 2020 20:26:06 +0000</pubDate>
				<category><![CDATA[Blogue]]></category>
		<category><![CDATA[agent conversationnel]]></category>
		<guid isPermaLink="false">https://zux.zsm.mybluehost.me/majoctobre2019/chloe-levolution-ou-developper-un-chatbot-pour-la-covid-19-avec-rasa/</guid>

					<description><![CDATA[<p>The post <a href="https://www.nuecho.com/fr/chloe-levolution-ou-developper-un-agent-conversationnel-pour-la-covid-19-avec-rasa/">Chloé: L’évolution, ou Développer un agent conversationnel pour la Covid-19 avec Rasa</a> appeared first on <a href="https://www.nuecho.com/fr/">AI Virtual Voice Experts with Google Dialogflow CX - CCAI - Nu Echo</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="et_pb_section et_pb_section_1 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_1">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_1  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_1  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h2><span style="font-size: x-large; font-family: Abel; font-weight: normal;"><strong>​</strong></span>Contexte</h2>
<p>Au moment où les mesures de confinement ont été mises en place au Canada, nous avons été approchés par <a href="https://www.dialogue.co/fr/" target="_blank" rel="noopener">Dialogue</a>, une compagnie spécialisée en services de santé et télémédecine, pour les aider dans la migration de Chloé, leur agent conversationnel par règles pour la Covid-19, vers une solution plus conversationnelle en utilisant <a href="https://rasa.com/" target="_blank" rel="noopener">Rasa</a>. Nous avions aussi comme mandat d’y ajouter des fonctionnalités. Il s’agissait d’un projet itératif s’étalant sur 10 semaines, en mode agile.</p>
<p><span style="font-size: x-large;">Voici les principales fonctionnalités de Chloé, à haut niveau:</span></p>
<ul>
<li>Auto-évaluation: fournir des recommandations personnalisées en fonction des symptômes et en suivant les consignes des gouvernements fédéral et provinciaux</li>
<li>Questions-réponses (Q&amp;R): permettre à l’utilisatrice¹ de poser des questions au sujet de la Covid-19 en utilisant un <a href="https://github.com/dialoguemd/covidfaq" target="_blank" rel="noopener">modèle</a> développé par le <a href="https://mila.quebec/" target="_blank" rel="noopener">Mila</a>.</li>
<li>Suivi quotidien: aider les utilisateurs à suivre leurs symptômes au jour le jour. Lorsque l’utilisatrice s’inscrit au suivi quotidien, elle reçoit un lien par texto une fois par jour qui lui permet de joindre Chloé afin d’évaluer la progression de ses symptômes.</li>
<li>Recherche de cliniques de dépistage: à l’aide de son code postal, fournir à l’utilisatrice une liste de cliniques de dépistage près de chez elle grâce à l’<a href="https://clinia.com/en-ca/product/places/covid-places" target="_blank" rel="noopener">API de Clinia</a>.</li>
</ul>
<p>La conception de Chloé a été effectuée de manière itérative à mesure que nous ajoutions des fonctionnalités et a été ajustée pour tenir compte des commentaires de l’équipe médicale de Dialogue et des testeurs, évoluant constamment. L’implémentation suivait, pas très loin derrière. Il y a plusieurs façons de développer certains patrons de dialogue avec Rasa et compte tenu des modifications constantes au design, nos choix d’implémentation nous donnaient souvent l’impression d’errer dans un labyrinthe. Nous avons fini par en trouver la sortie, non sans avoir rebroussé chemin à quelques reprises pour éviter de frapper un mur ou de grimper une falaise. Étant donné que nous n’avions pas, d’entrée de jeu, une idée précise du design final, certains choix d’implémentation sont plus ou moins cohérents, et étant donné l’échéancier très serré, nous n’avons pas pu effectuer toute la refactorisation voulue. Cependant, ce contexte nous a aussi permis d’explorer des chemins que nous n’aurions pas parcourus avec Rasa si nous avions eu le temps de répertorier des patrons et de créer des composants génériques pour les réaliser.</p>
<p>Dans cet article et dans le prochain de cette courte série, je vais vous raconter l’histoire du développement de Chloé. Pour chaque étape de notre parcours, je vais décrire les principaux obstacles auxquels nous avons fait face ainsi que les décisions d’implémentation que nous avons prises, souvent dans le feu de l’action. Dans cette première partie, nous allons principalement nous attarder aux fonctionnalités d’auto-évaluation et de suivi quotidien.</p>
<h2></h2>
<h2>Épisode 1: Les dialogues d&rsquo;auto-évaluation</h2>
<p><img decoding="async" class="wp-image-6934 alignnone size-full" style="font-family: 'Roboto Slab', Georgia, 'Times New Roman', serif; font-size: 29px;" src="https://www.nuecho.com/wp-content/uploads/2020/09/avertissement.jpeg" alt="" width="1925" height="258" srcset="https://www.nuecho.com/wp-content/uploads/2020/09/avertissement.jpeg 1925w, https://www.nuecho.com/wp-content/uploads/2020/09/avertissement-1280x172.jpeg 1280w, https://www.nuecho.com/wp-content/uploads/2020/09/avertissement-980x131.jpeg 980w, https://www.nuecho.com/wp-content/uploads/2020/09/avertissement-480x64.jpeg 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) and (max-width: 1280px) 1280px, (min-width: 1281px) 1925px, 100vw" /></p>
<h3></h3>
<h3>Scène 1: Sprint vers la première démo de l&rsquo;auto-évaluation</h3>
<p>Très tôt dans le projet (c’est-à-dire au 8e jour), on nous a demandé si nous pouvions démontrer un dialogue d’auto-évaluation à la fin de la journée. Lorsque nous avons reçu la demande, la version initiale du design mijotait encore dans la tête de notre conceptrice; nous avions un projet Rasa fonctionnel, mais aucun dialogue n’avait été implémenté. Quoi qu’il en soit, nous avons retroussé nos manches et avons produit cette démo.</p>
<p>La démo initiale était un arbre de décision simple permettant d’évaluer la gravité des symptômes de l’utilisatrice et de proposer des recommandations adéquates. Nous avons pris le chemin le plus court: pour chaque flux possible, nous avons défini une <em>histoire</em> (<a href="https://rasa.com/docs/rasa/core/stories/" target="_blank" rel="noopener">story</a>²) et avons utilisé la <em>politique</em> de <a href="https://rasa.com/docs/rasa/core/policies/#augmented-memoization-policy" target="_blank" rel="noopener">mémoïsation</a>.</p>
<h3></h3>
<h3>Scène 2: Le chemin devient boueux à mesure que les flux d’auto-évaluation se multiplient</h3>
<p><span style="font-size: x-large;">Le prochain ajout majeur aux flux de dialogue a été la distinction, à l’entrée de l’auto-évaluation, entre trois situations:</span></p>
<ul>
<li>L’utilisatrice pense être malade et veut évaluer ses symptômes (cas initial)</li>
<li>Elle a reçu un résultat positif au test de dépistage et veut évaluer ses symptômes et obtenir des conseils</li>
<li>Elle a effectué l’auto-évaluation précédemment et revient pour réévaluer ses symptômes</li>
</ul>
<p>Cette distinction a créé un certain nombre de variations au flux de base, comme par exemple demander si les symptômes ont empiré dans le cas d’une réévaluation, ou encore démarrer le dialogue en recommandant à la personne de s’isoler si elle a reçu un résultat positif.</p>
<p>Nous avons suivi le même chemin, ajoutant des <em>histoires</em> pour l’implémentation de ces deux nouveaux flux de dialogue. Nous commencions toutefois à constater que le nombre <em>d’histoires</em> augmentait rapidement pour ces trois situations seulement (dont la complexité allait continuer à augmenter), et que certaines portions semblables se répétaient entre les <em>histoires</em>.</p>
<p><em>Deux histoires semblables pour une personne ayant des symptômes légers³<br />
</em></p>
<p><a href="https://www.nuecho.com/wp-content/uploads/2020/09/2.bmp" target="_blank" rel="noopener"><img decoding="async" class="wp-image-6894 size-full aligncenter" src="https://www.nuecho.com/wp-content/uploads/2020/09/2.bmp" alt="" width="576" height="401" /></a></p>
<p>&nbsp;</p>
<p>Ne voyant pas de solution simple à ceci dans les <em>histoires</em> &#8211; les <a href="https://rasa.com/docs/rasa/core/stories/#checkpoints-and-or-statements" target="_blank" rel="noopener">checkpoints et les instructions de type OR</a> ne nous aidaient pas car les sections similaires étaient prises en sandwich entre les différentes <em>intentions</em> (intents) et les variations qu’elles créent &#8211; nous n’avons pas fait de changements significatifs à l’implémentation à ce moment-là.</p>
<p>Pendant que nous développions ces trois flux de dialogue, nous avons dû effectuer un ajout qui s’appliquait aux trois: après que l’utilisatrice ait indiqué ne pas avoir de symptômes sévères, Chloé doit obtenir sa province de résidence et son âge afin de lui fournir des recommandations plus précises. Cette fois, la solution la plus simple a été de recourir à l’utilisation d’un <em>formulaire</em> (<a href="https://rasa.com/docs/rasa/core/forms/" target="_blank" rel="noopener">form</a>): l’information doit être conservée et le formulaire est facilement réutilisable dans toutes nos <em>histoires</em>.</p>
<h3></h3>
<h3></h3>
<h3>Scène 3: Voie rapide vers l’inscription au suivi quotidien</h3>
<p><span style="font-size: 18px;"><span style="font-size: large;"><span style="font-size: x-large;">Passons à la prochaine fonctionnalité: nous avons ensuite ajouté l’inscription au suivi quotidien. Si l’utilisatrice a des symptômes, alors Chloé lui offre le suivi quotidien. Si elle accepte, Chloé collecte son nom et son numéro de téléphone, note si elle a des antécédents médicaux ou des problèmes de santé qui pourraient augmenter ses risques de complications, etc. Ce flux de dialogue était aussi sans contredit un <em>formulaire</em>. Dans la première version, plus simple, bien que nous utilisions du texte libre pour collecter le prénom et le numéro de téléphone, il n’y avait pas vraiment de gestion d’erreur: nous utilisions la totalité du texte entré pour le prénom et tous les chiffres entrés pour le numéro de téléphone, en vérifiant seulement s’il y avait 10 ou 11 chiffres, sans quoi le numéro était demandé de nouveau.</span></span><br />
</span></p>
<h3></h3>
<h3></h3>
<h3>Scène 4: Répondre à des questions et suivre TED</h3>
<p>La fonctionnalité de questions et réponses (Q&amp;R) doit permettre à l’utilisatrice de poser toute question qu’elle a au sujet de la Covid-19, envoyer cette question au module développé par le Mila, recevoir la réponse et l’afficher dans la conversation. Nous voulions rendre cette fonctionnalité disponible dans tous les flux de dialogue, en permettant d’y accéder par plusieurs endroits, mais aussi de poursuivre le dialogue dans diverses directions en fonction du résultat (je décrirai les différents types de résultat, de même que les détails de cette fonctionnalité et son évolution, dans la prochaine partie de cet article).</p>
<p>Puisque Chloé ne devait pas offrir d’auto-évaluation si celle-ci avait déjà été effectuée au cours de la conversation, les transitions suivant le Q&amp;R dépendaient également de cela, ce qui a eu pour effet de multiplier les voies de sortie. La politique de mémoïsation n’aurait pas suffi pour apprendre cette différence puisqu’il est possible de repasser dans le module de Q&amp;R à plusieurs reprises. Par conséquent, nous avons ajouté une <em>case caractérisée</em> (<a href="https://rasa.com/docs/rasa/core/slots/#slot-types" target="_blank" rel="noopener">featurized slot</a>) nommée <em>self_assess_done</em>, combinée avec les histoires d’auto-évaluation et de Q&amp;R, et nous nous avons eu recours à la <em>politique <a href="https://rasa.com/docs/rasa/core/policies/#ted-policy" target="_blank" rel="noopener">TED</a></em> pour apprendre à partir de quelques exemples. Cela a fonctionné, mais notre fichier <em>d’histoires</em> a soudainement beaucoup enflé.</p>
<p>&nbsp;</p>
<h3><span style="font-family: 'Roboto Slab', Georgia, 'Times New Roman', serif; font-size: 29px;">Intermission: Volte-face vers les formulaires pour éviter une jungle d’histoires</span></h3>
<p>Entrevoyant la multiplication et l’allongement à venir de nos <em>histoires</em>, nous avons décidé de transférer la partie commune des évaluations dans un <em>formulaire</em> avant d’intégrer complètement le Q&amp;R. Cela nous permettrait de raccourcir et de simplifier les <em>histoires</em>, mais également de faciliter la collecte d’informations sous forme de cases (présence de toux ou de fièvre, qui étaient deux questions récemment ajoutées, ainsi que la gravité des symptômes), ces dernières étant nécessaires si l’utilisatrice s’inscrivait au suivi quotidien. Un <em>formulaire</em> permettait, oui, de réduire la redondance, mais nous forçait aussi à utiliser un ensemble de cases intermédiaires jetables afin de poser la série de questions nécessaires pour déterminer la valeur d’une case unique correspondant à la gravité des symptômes. Cette case unique était caractérisée pour personnaliser l’offre de suivi quotidien et les recommandations faisant suite au <em>formulaire</em> dans les <em>histoires</em>.</p>
<p>Cependant, ce <em>formulaire</em> unique d’évaluation n’a pas fait long feu; le design a changé dès que nous avons eu le dos tourné. Deux messages de recommandations, au sujet de l’isolement et de l’assistance à domicile, ont été remplacés par de petits flux de dialogue contenant chacun une question. La conception et l’implémentation de ceux-ci ont beaucoup changé. Au départ, les deux flux étaient des <em>formulaires</em> qui ont été insérés là où se trouvaient les messages correspondants. Ensuite, nous avons dû tripler le formulaire d’évaluation pour y insérer le flux d’isolement au début, au milieu ou à la fin selon la situation (évaluation régulière, test positif ou réévaluation). Plus tard, le flux d’isolement a été déplacé et modifié pour chaque situation, mais nous avons conservé trois versions distinctes du <em>formulaire</em> d’évaluation pour graduellement y inclure les questions spécifiques qui ne faisaient pas partie de la version commune. Nous avons conservé du code en commun, mais le “comment” a évolué avec le temps; nous élaborerons davantage sur ce sujet lorsque la question de la modularité sera traitée dans un futur article.</p>
<p><span style="font-size: x-large;">À cette étape du projet, notre modèle général utilise une combinaison <em>d’histoires</em>, de <em>formulaires</em> et <em>d’<a href="https://rasa.com/docs/rasa/core/actions/" target="_blank" rel="noopener">actions</a></em>; et peut être résumé ainsi:</span></p>
<ul>
<li><em>Histoires</em>: effectuer la transition entre les flux et sous-flux de dialogue, définir les séquences de formulaires, conditions et actions possibles pour chaque fonctionnalité et dialogue à haut niveau</li>
<li><em>Formulaires</em>: collecter des éléments d’information et définir des arbres de décision, gérer les sous-dialogues réutilisables incluant au moins une question, etc.</li>
<li><em>Actions</em>: utilisation variée lorsque la collecte d’information n’est pas requise, notamment l’affichage de plusieurs messages consécutifs</li>
</ul>
<p>Voici un exemple <em>d’histoire</em> illustrant le modèle à ce point-ci:</p>
<p><em>Flux d’auto-évaluation de base suivi d’une question</em></p>
<p>&nbsp;</p>
<p><a href="https://www.nuecho.com/wp-content/uploads/2020/09/3.bmp" target="_blank" rel="noopener"><img decoding="async" class="wp-image-6896 size-full aligncenter" src="https://www.nuecho.com/wp-content/uploads/2020/09/3.bmp" alt="" width="425" height="493" /></a></p>
<h3></h3>
<h3></h3>
<h3>Scène 5: Suivi quotidien; un autre type d’évaluation, un chemin connu</h3>
<p><span style="font-size: 18px;"><span style="font-size: large;"><span style="font-size: x-large;">Le but du suivi quotidien est de contacter l’utilisatrice (qui s’est préalablement inscrite) chaque jour pour évaluer ses symptômes et, entre autres choses, suivre leur progression. Une question initiale permet de déterminer laquelle de ces trois situations s’applique à l&rsquo;utilisatrice: elle se sent mieux que la veille, elle se sent plus mal, ou il n’y a pas de changement. Chaque situation a son propre arbre de décision, et chacun présente des variations en fonction des symptômes de la veille. Bien que certaines questions soient communes aux trois flux de dialogue, globalement, les similarités étaient insuffisantes pour pouvoir réutiliser des portions significatives du dialogue. Par conséquent, riches de notre expérience dans l’implémentation des flux d’auto-évaluation, nous savions que la meilleure façon d’implémenter les flux de suivi quotidien serait par le biais de trois</span> <em>formulaires</em> distincts.</span><br />
</span></p>
<h3></h3>
<h3>Scène 5.5: Jusqu’au bout du suivi quotidien</h3>
<p><span style="font-size: 18px;"><span style="font-size: large;"><span style="font-size: x-large;">Il y avait beaucoup plus que l’évaluation au suivi quotidien: un dialogue de “lien invalide” (l’identifiant de l’URL envoyé à l’utilisatrice pour accéder au suivi quotidien n’existe pas), la possibilité de se désinscrire en un clic avant l’évaluation, et une autre, selon les symptômes, après l’évaluation, ainsi qu’un ensemble de recommandations à la fin de la conversation. Le dialogue de lien invalide a été ajouté sous forme <em>d’histoires</em> puisqu’il faisait simplement le pont avec d’autres fonctionnalités. Les offres de désinscription ont été ajoutées comme <em>formulaires</em> puisque nous collections de l’information et devions interroger notre base de données. Les recommandations, quant à elles, ont d’abord fait partie d’une action constituant un flux indépendant, appelé si nécessaire comme <em>action subséquente</em> (<em><a href="https://rasa.com/docs/rasa/api/events/#force-a-followup-action" target="_blank" rel="noopener">followup action</a></em>) dans les <em>formulaires</em> de suivi quotidien ou de désinscription. Nous nous sommes toutefois rendu compte par la suite que les actions subséquentes devaient quand même faire partie des <em>histoires</em>, et lorsque nous avons ajouté les transitions vers d’autres fonctionnalités, il nous est apparu plus logique d’inclure les recommandations directement dans le formulaire.</span></span><br />
</span></p>
<h2></h2>
<h2></h2>
<h2>Dans le prochain épisode</h2>
<p>Dans cette première partie, j’ai décrit comment nous avons utilisé les <em>histoires</em> et les <em>formulaires</em> pour implémenter les multiples variantes des flux de dialogue d’auto-évaluation et de suivi quotidien. Quoique les <em>histoires</em> étaient adéquates au départ pour définir des arbres de décision simples contenant peu de branches, il est rapidement devenu évident qu’elles ne constituaient pas le meilleur outil pour implémenter des arbres de décision complexes, des branchements conditionnels ou encore des portions de flux réutilisables. Nous avons donc dû créer plusieurs <em>formulaires</em> qui ont été enchâssés dans des <em>histoires</em>, et recourir aux histoires pour gérer les flux à plus haut niveau.</p>
<p><span style="font-size: x-large;">Dans les phases suivantes du projet, nous avons ajouté aux fonctionnalités initiales les éléments suivants:</span></p>
<ul>
<li>Nous avons augmenté et amélioré les flux du Q&amp;R</li>
<li>Nous avons ajouté la recherche de cliniques de dépistage</li>
<li>Nous avons ajouté le support au langage naturel (NLU), d’abord dans certaines portions du dialogue, et au final partout</li>
</ul>
<p>Ces ajouts ont soulevé de nouveaux enjeux et présenté de nouveaux défis quant à la façon d’utiliser Rasa, non seulement dans la conception et le développement des dialogues, mais aussi pour s’assurer que la performance et la précision du traitement du langage naturel soient adéquates.</p>
<p>Nous nous attarderons à ces sujets dans la deuxième partie de cet article.</p>
<p>&nbsp;</p>
<p><em><span style="font-size: small; font-family: inherit; font-weight: normal;">¹Nous utilisons majoritairement le féminin afin d’alléger le texte</span></em></p>
<p><em><span style="font-size: small; font-family: inherit; font-weight: normal;">²Nous avons librement choisi de traduire les concepts les plus importants comme suit: story =&gt; histoire, form=&gt; formulaire, policy=&gt; politique, slot =&gt; case, featurized =&gt; caractérisée. Ces choix n’engagent que nous.</span></em></p>
<p><em><span style="font-size: small; font-family: inherit; font-weight: normal;">³Le code a été écrit en anglais; il s’agit de code en source libre pouvant être consulté par quiconque. Il n’a pas été traduit pour conserver la correspondance avec le projet réel.</span></em></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div><p>The post <a href="https://www.nuecho.com/fr/chloe-levolution-ou-developper-un-agent-conversationnel-pour-la-covid-19-avec-rasa/">Chloé: L’évolution, ou Développer un agent conversationnel pour la Covid-19 avec Rasa</a> first appeared on <a href="https://www.nuecho.com/fr/">AI Virtual Voice Experts with Google Dialogflow CX - CCAI - Nu Echo</a>.</p><p>The post <a href="https://www.nuecho.com/fr/chloe-levolution-ou-developper-un-agent-conversationnel-pour-la-covid-19-avec-rasa/">Chloé: L’évolution, ou Développer un agent conversationnel pour la Covid-19 avec Rasa</a> appeared first on <a href="https://www.nuecho.com/fr/">AI Virtual Voice Experts with Google Dialogflow CX - CCAI - Nu Echo</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Rasa Summit, Chatbot Conference, etc. : ce qu’il faut retenir (Article en anglais)</title>
		<link>https://www.nuecho.com/fr/rasa-summit-chatbot-conference-chatbots-voicebots-voice-assistants/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rasa-summit-chatbot-conference-chatbots-voicebots-voice-assistants</link>
		
		<dc:creator><![CDATA[Karine Dery]]></dc:creator>
		<pubDate>Tue, 29 Oct 2019 18:00:05 +0000</pubDate>
				<category><![CDATA[Blogue]]></category>
		<category><![CDATA[Content]]></category>
		<category><![CDATA[Event]]></category>
		<guid isPermaLink="false">https://zux.zsm.mybluehost.me/majoctobre2019/?p=5987</guid>

					<description><![CDATA[<p>A couple of weeks ago, I had the opportunity to attend Bot Week in San Francisco. In addition to the main events &#8211; Rasa Summit and Chatbot Conference &#8211; I attended every event of the week to make the most of my stay in this innovative city, and oh! it was worth it. Not only [&#8230;]</p>
<p>The post <a href="https://www.nuecho.com/fr/rasa-summit-chatbot-conference-chatbots-voicebots-voice-assistants/">Rasa Summit, Chatbot Conference, etc. : ce qu’il faut retenir (Article en anglais)</a> first appeared on <a href="https://www.nuecho.com/fr/">AI Virtual Voice Experts with Google Dialogflow CX - CCAI - Nu Echo</a>.</p>
<p>The post <a href="https://www.nuecho.com/fr/rasa-summit-chatbot-conference-chatbots-voicebots-voice-assistants/">Rasa Summit, Chatbot Conference, etc. : ce qu’il faut retenir (Article en anglais)</a> appeared first on <a href="https://www.nuecho.com/fr/">AI Virtual Voice Experts with Google Dialogflow CX - CCAI - Nu Echo</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>A couple of weeks ago, I had the opportunity to attend <a target="_blank" href="https://www.chatbotconference.com/bot-week" rel="noopener">Bot Week</a> in San Francisco. In addition to the main events &#8211; <a target="_blank" href="https://rasa.com/summit/" rel="noopener">Rasa Summit</a> and <a target="_blank" href="https://www.chatbotconference.com/" rel="noopener">Chatbot Conference</a> &#8211; I attended every event of the week to make the most of my stay in this innovative city, and oh! it was worth it. Not only did I learn a lot but I also met many interesting and interested people, important actors of the bots (voice and chat) ecosystem, and heard about exciting use cases and technologies. This full immersion gave me a renewed perspective on what has been done in this area and what is left to explore, and I will try, through this blogpost, to give you a glimpse of what I learned.</p>
<p>&nbsp;</p>
<h1>The Vision</h1>
<p>Like an evening star, leading innovators on the path to the new era of chatbots and voicebots, is a Vision, a Vision slowly leaving sci-fi movies to enter our reality: the omnipotent personal virtual assistant (OPVA). Imagine having your own OPVA. Or let’s call it Jarvis, like Iron Man’s. Imagine having your own Jarvis (iron suit sold separately). Jarvis is with you everywhere; Jarvis is your own personal vocal Google search; Jarvis starts your coffee pot 10 minutes before you wake up; Jarvis even reschedules your dentist appointment behind your back, because you unknowingly booked your camping trip the same week. This is the <em>Vision</em>.</p>
<p>Multiple speakers talked about the Vision, and/or the path to it. This path is generally represented as 5 levels of AI assistants. For more information, you can read Rasa’s CEO Alex Weidauer’s take on <a target="_blank" href="https://blog.rasa.com/conversational-ai-your-guide-to-five-levels-of-ai-assistants-in-enterprise/" rel="noopener">the 5 levels from an enterprise point of view</a>, or for a summary, these equivalences with some of Jarvis’s skills:</p>
<ol>
<li>Notification Assistant: Does not support user input, only sends messages<br /> <strong>Jarvis</strong>: The external temperature outside is 1,000 °C, this might become dangerous for your suit.</li>
<li>FAQ Assistant: One-step interactions, answers generic questions:<br /> <strong>Tony</strong>: What’s iron’s melting point?<br /> <strong>J</strong>: 1,538 °C</li>
<li>Contextual Assistant: Answers contextual questions if context is explicitly given:<br /> <strong>T</strong>: Can you send a message to Pepper?<br /> <strong>J</strong>: Sure. What is the message?<br /> <strong>T</strong>: “I will be late for dinner due to some complications, love you.”<br /> <strong>J</strong>: Got it.</li>
<li>Personalized Assistant: Knows the user, their preferences, has, or appears to have, some form of understanding of the user’s world:<br /> <strong>T</strong>: Can you notify my wife I might be late due to some complications?<br /> <strong>J</strong>: Sure, I will let Pepper know you will not be with her for dinner as expected.</li>
<li>Autonomously Organized Assistants: Services are interconnected and user does not need to intervene:<br /> <strong>J</strong>: Your blood pressure is dropping. May I suggest you head to the nearest hospital?<br /> <strong>T</strong>: I’m okay, I just need to&#8230;<br /> <strong>T</strong>: <em>Faints</em><br /> <strong>J</strong>: Sir? I didn’t understand. <em>(pause)</em> Your vital signs indicate you might have lost consciousness, I will bring you to the hospital if you do not explicitly cancel.<br /> <strong>J</strong>:<em> Starts auto-pilot to the nearest hospital, notifies Pepper and also notifies the hospital of the incoming patient</em>.</li>
</ol>
<h1></h1>
<p>&nbsp;</p>
<h1>Current Jarvis or Where Are Bots Now?</h1>
<p><img decoding="async" class="wp-image-4339 size-full aligncenter" src="https://www.nuecho.com/wp-content/uploads/2019/10/bot.jpg" alt="" width="797" height="558" /></p>
<p>I remember, a couple years ago, all these “Build a Bot in 10 Minutes” blogs and tutorials, and how every dialogue engine was sold as the easiest and fastest way to create a chatbot. Many were trying to sell their own cheap version of this fashionable new toy.</p>
<p>I was more than happy to find that no one sells this idea anymore. The ideal chatbot shifted from easy-built to personalized, efficient and conversational, as attested by the <a target="_blank" href="https://www.businesswire.com/news/home/20190528005646/en/Bank-America%E2%80%99s-Erica%C2%AE-Completes-50-Million-Client" rel="noopener">hype around Erica</a>, (which, as a Canadian, I did not really hear about before the conference). Bank of America’s (large) team spent months working on it, and are still tuning it and enriching its vocabulary and skills. Pretty far from one person building a chatbot while making a deposit&#8230; Not only is it accepted that a bot needs a significant amount of thought and work beforehand, but also that it needs attention afterwards, using analytics and new user data for continuous improvement. Thus, the market has evolved, and lots of new companies emerged in the last couple years, offering tools and expertise to facilitate this continuous work.</p>
<p>Here are those who stood out the most by their strong presence during the week:</p>
<ol>
<li>Design tools: <a target="_blank" href="https://botmock.com/" rel="noopener">BotMock</a> and <a target="_blank" href="https://botsociety.io/" rel="noopener">BotSociety</a></li>
<li>Area-specific building tools: <a target="_blank" href="https://smartloop.ai/" rel="noopener">Smartloop</a> for leads and sales</li>
</ol>
<p>N.B.: For a more exhaustive list, refer to the agendas of the events.</p>
<p>Special mention &#8211; <a target="_blank" href="https://robocopy.io/" rel="noopener">Robocopy</a>: The emergence of conversational bots in the last few years gave birth to the <em>Conversation Designer</em> job title. Many of those who wear this title are former UI designers, copywriters or linguists, and until now, the related knowledge was sparse in bot design tools guidelines or blog posts. I think Robocopy’s <a target="_blank" href="https://conversationalacademy.com/" rel="noopener">Conversational Academy</a> arrival marks a milestone in this field; it is becoming an area of expertise in itself, more and more defined every day. I can’t judge the quality of their courses based only on the fascinating talk of their co-founder, Hans Van Damm, but putting this knowledge together can only be a push in the right direction.</p>
<h3>On the Conversational Aspect</h3>
<p>But to create a bot, technology needs to support the design. According to Alex Weidauer, technology has allowed to create efficient question-answering bots (level 2) for a few years (still not a ten minutes job though, training the natural language understanding (NLU) model and handling exceptions seamlessly demands work), and now allows level 3 bots, i.e. contextual assistants/bots. The next step would be achieving level 4 (other special mention to <a target="_blank" href="https://aigo.ai/" rel="noopener">Aigo</a> who seem to have accomplished it for the daily tasks of a home assistant).</p>
<h1></h1>
<h1></h1>
<h1></h1>
<h1></h1>
<h1>Upcoming Jarvis or What’s Coming Up Next?</h1>
<h3></h3>
<h3></h3>
<h3>RCS</h3>
<p>The first talk at Chatbot Conference was Sean Badge from Google on Rich Communication Services (RCS), an overdue rich-content protocol that is slowly replacing SMS. It is a step towards integrated enterprise assistants, allowing them to connect with the user on one network, without forcing them to install separate apps.</p>
<h3></h3>
<h3>5G and Edge Computing</h3>
<p><em>At Mobile Monday’s Future of Voice and Smart Speakers</em>, discussions revolved around how cloud computing is slowing down assistants and preventing voicebot conversations to feel natural because of network latency. Imagine talking to one of your friends on the phone, and each time you stop talking, there’s a 1 second silence before they answer normally. You would wonder if your friend was one of the first victims of a robot takeover. In the same way, when virtual assistants do this, it only reminds us that it is not a human on the line.</p>
<p>Edge computing, i.e. distributed computing near where it is needed, is probably the solution to this annoying latency, and 5G, allowing to connect more devices together and being faster, makes it closer than it ever was. Voicebots could eventually be more like that friend who starts talking before the end of your sentence because they can predict the last words. The polite version.</p>
<h3></h3>
<h3>The Rasa Experience</h3>
<p><img decoding="async" class="wp-image-4341  alignright" src="https://www.nuecho.com/wp-content/uploads/2019/10/rasa.jpg" alt="" width="143" height="171" />As we are trying to make AI assistants more conversational and conversations more human-like, Rasa, as a dialogue engine, stands out as a promising technology for two reasons:</p>
<ol>
<li>The use of machine learning (ML) on the conversational level (and not only NLU)</li>
<li>Their open-source codebase</li>
</ol>
<p>We have been happily using Rasa for several months now, so the first advantage was already obvious to me: ML probably holds the key to machines acting like humans in a variety of contexts, since hard-coding every single reaction would be a colossal task, if not impossible. Consequently, Rasa being ML’s advocate in conversation management, it has an edge its competitors do not. But it is only by attending the Rasa Summit that I could appreciate the advantages of the second point. A self-evident one is that open source means easy customization. It also means on-premise deployment, which is a plus for organizations managing sensitive user data like banks, insurance or health care providers, three of the biggest owners of customer service chatbots (at least in the USA). And last but not least, a refreshing community feel exhales from Rasa events, because they put a significant emphasis on community and value their contributors. They can retain people and enterprises, make them contribute joyfully, bring new ideas and technology, while aligning their product vision/roadmap with community requirements.</p>
<h3></h3>
<h3>About Voice</h3>
<p><img decoding="async" class="wp-image-4343 size-full aligncenter" src="https://www.nuecho.com/wp-content/uploads/2019/10/wave.jpg" alt="" width="789" height="191" /></p>
<p>Working for a company that has been bringing « conversational » and IVR together for years, I could not ignore how voice channels were discussed at these conferences. They did have a significant, but not central, place in Bot Week, and it’s logic: how odd and inefficient would Jarvis be, if only available by chat? The more bots become conversational, the less we can ignore that language starts with voice, and that for this same reason, voice assistant usage rises.</p>
<p>It is generally accepted that designing a voicebot is different from designing a chatbot because of the limited content that can be sent back. However, I noticed that bot developers, me included, tend to forget something important, a fact expressed simply by Emily Lonetto from VoiceFlow at <em>Slack’s Building the Bots of the Future</em> event: voice might be the easiest, fastest and most portable channel to ask for things, but often not the good one to receive them. Indeed, for a single piece of information, you would expect Jarvis to answer verbally, but for a full report, you would expect a whole interactive 3D hologram (equivalent to an email or pile of paper from a real human assistant).</p>
<p>I think that this idea of a distinct output channel tends to be left behind for two reasons:</p>
<ol>
<li>In some voice channels or for some users who do not have the appropriate device (an Echo Show with Alexa for example), a visual output might be impossible.</li>
<li>The idea of designing one bot, with the same flow, the same NLU model for all channels, with only the need to adapt the response, is tempting. While most bot-building platforms are designed with this workflow in mind, this over-simplification limits the possibility to send an output on a second channel.</li>
</ol>
<p>Another cause of this simplification is probably that voice assistants’s Speech-to-text (STT) algorithms are unaware of the NLU model. Surprisingly, no one mentioned the problem of this approach, which seems unavoidable to me. I will illustrate it with a true example that happened to me a few months ago while testing a bot over voice with such system.</p>
<p>Context: I was testing a banking app, and was asked if I wanted to make a recurring or a one-time payment and answered “one time”. I could see the intermediary STT results of my audio stream, and here’s what I got:</p>
<ul>
<li style="text-align: left;"><em>One   </em>                    (I am not finished talking yet)</li>
<li style="text-align: left;"><em>One time </em>             (Cool it works)</li>
<li style="text-align: left;"><em>One time </em>             (It is waiting for me to say something else i guess&#8230;)</li>
<li style="text-align: left;"><em>Fun time</em>              (Final result. Wait what?)</li>
</ul>
<p>Obviously, my dialogue flow fell into error state. The correct hypothesis was not chosen (and even replaced!) because the speech recognition model was unaware of the kind of answer it should have been expecting. STT technology sure is getting better and better at eliminating noise, understanding accents and using the user’s history, his location or other contextual information, but user specific information is not always available, e.g. in a phone call. Moreover, in this situation, the sound quality can be far behind the quality a voice assistant can get because of many factors (low bandwidth, low resolution, microphone, etc.), which multiplies the risks of an incorrect transcription.</p>
<p>Maybe in an innovative town like San Francisco, people do not talk about an “aging” medium like telephony, but we work with IVR systems everyday, and know that large call centers are still a reality for many organizations, and will continue to be for years to come. With cell phones being so omnipresent, the phone remains the easiest means of communication for urgent situations such as calling the insurance company after a car crash.</p>
<p>It turns out that in this IVR universe, for the aforementioned reasons, technologies like VoiceXML did and still close the gap between speech recognition and NLU. They should not be overlooked as they can be used to bring the newer chatbot technology to legacy call center installations (as we did with Rasa and <a target="_blank" href="https://www.nuecho.com/news-events/developing-conversational-ivr-using-rasa-part-2-the-rivr-bridge/" rel="noopener">the Rivr Bridge</a>). Then one day, with technological advancements like Dialogflow’s <a target="_blank" href="https://cloud.google.com/dialogflow/docs/speech-adaptation" rel="noopener">Auto speech adaptation</a>, speech recognition, visual recognition, language understanding and conversation management will all work hand in hand in constant communication in Jarvis’s circuits, as it happens in our own brains.</p><p>The post <a href="https://www.nuecho.com/fr/rasa-summit-chatbot-conference-chatbots-voicebots-voice-assistants/">Rasa Summit, Chatbot Conference, etc. : ce qu’il faut retenir (Article en anglais)</a> first appeared on <a href="https://www.nuecho.com/fr/">AI Virtual Voice Experts with Google Dialogflow CX - CCAI - Nu Echo</a>.</p><p>The post <a href="https://www.nuecho.com/fr/rasa-summit-chatbot-conference-chatbots-voicebots-voice-assistants/">Rasa Summit, Chatbot Conference, etc. : ce qu’il faut retenir (Article en anglais)</a> appeared first on <a href="https://www.nuecho.com/fr/">AI Virtual Voice Experts with Google Dialogflow CX - CCAI - Nu Echo</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>La RVI conversationnelle avec Rasa – 2e partie : l’utilisation de Rivr (Article en anglais)</title>
		<link>https://www.nuecho.com/fr/developing-conversational-ivr-using-rasa-part-2-the-rivr-bridge-article-en-anglais/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=developing-conversational-ivr-using-rasa-part-2-the-rivr-bridge-article-en-anglais</link>
		
		<dc:creator><![CDATA[Karine Dery]]></dc:creator>
		<pubDate>Tue, 09 Jul 2019 18:00:12 +0000</pubDate>
				<category><![CDATA[Blogue]]></category>
		<category><![CDATA[RVI]]></category>
		<guid isPermaLink="false">https://zux.zsm.mybluehost.me/majoctobre2019/?p=5958</guid>

					<description><![CDATA[<p>On the Rivr Bridge&#8230; I know, there’s only one question on your mind right now: “What in the world is that name?”. First off, “Rivr” is because it uses Rivr, subtly mentioned in the first post, which is a Nu Echo created, open-sourced framework to write VoiceXML applications, entirely in Java. Then “Bridge” because it [&#8230;]</p>
<p>The post <a href="https://www.nuecho.com/fr/developing-conversational-ivr-using-rasa-part-2-the-rivr-bridge-article-en-anglais/">La RVI conversationnelle avec Rasa – 2e partie : l’utilisation de Rivr (Article en anglais)</a> first appeared on <a href="https://www.nuecho.com/fr/">AI Virtual Voice Experts with Google Dialogflow CX - CCAI - Nu Echo</a>.</p>
<p>The post <a href="https://www.nuecho.com/fr/developing-conversational-ivr-using-rasa-part-2-the-rivr-bridge-article-en-anglais/">La RVI conversationnelle avec Rasa – 2e partie : l’utilisation de Rivr (Article en anglais)</a> appeared first on <a href="https://www.nuecho.com/fr/">AI Virtual Voice Experts with Google Dialogflow CX - CCAI - Nu Echo</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>On the Rivr Bridge&#8230;</h1>
<p>I know, there’s only one question on your mind right now: “What in the world is that name?”. First off, “<a target="_blank" href="https://github.com/nuecho/rivr" rel="noopener">Rivr</a>” is because it uses Rivr, subtly mentioned in the first post, which is a <a target="_blank" href="https://www.nuecho.com/" rel="noopener">Nu Echo</a> created, open-sourced framework to write VoiceXML applications, entirely in Java. Then “Bridge” because it links a VoiceXML platform with the chosen dialogue engine. And yes, the pun was intended (but not by me).</p>
<p>But the real question is: “What does it do?”. As I said, Rivr is a framework to develop full-fledged applications, but the Rivr Bridge’s goal is only to translate what comes in and out of the VoiceXML platform and throw it to the Rasa side of the world in a digestible format. For instance, a classic Rivr application would programmatically process each user input and define the next dialogue steps, unlike the Rivr Bridge, which would query the chosen dialogue engine to decide the next dialogue steps. Adapting the model was simple, maybe even simpler than we thought. It roughly looks like this:</p>
<p><img decoding="async" class="wp-image-8939 size-full aligncenter" src="https://www.nuecho.com/wp-content/uploads/2019/07/1.jpg" alt="" width="1059" height="613" srcset="https://www.nuecho.com/wp-content/uploads/2019/07/1.jpg 1059w, https://www.nuecho.com/wp-content/uploads/2019/07/1-300x174.jpg 300w, https://www.nuecho.com/wp-content/uploads/2019/07/1-768x445.jpg 768w, https://www.nuecho.com/wp-content/uploads/2019/07/1-1024x593.jpg 1024w" sizes="(max-width: 1059px) 100vw, 1059px" /></p>
<p>The great advantage of using the Rivr Bridge is that it interprets the VoiceXML platform’s input and generates bulletproof VoiceXML. For reusability purposes, we decided to make the Bridge platform-agnostic and application-agnostic, and let an IVR channel on the Rasa side manage the Rasa-specific aspects, which would allow us to eventually plug in other dialogue engines.</p>
<p>Here is an artistic representation of our input pipeline:</p>
<p><img decoding="async" class="aligncenter wp-image-8940 size-full" src="https://www.nuecho.com/wp-content/uploads/2019/07/2.jpg" alt="" width="1046" height="386" srcset="https://www.nuecho.com/wp-content/uploads/2019/07/2.jpg 1046w, https://www.nuecho.com/wp-content/uploads/2019/07/2-300x111.jpg 300w, https://www.nuecho.com/wp-content/uploads/2019/07/2-768x283.jpg 768w, https://www.nuecho.com/wp-content/uploads/2019/07/2-1024x378.jpg 1024w" sizes="(max-width: 1046px) 100vw, 1046px" /></p>
<h1>… Through an IVR JSON Protocol&#8230;</h1>
<p>To better define the content of the requests and responses exchanged by the Rivr Bridge and the IVR channel, we designed a generic JSON protocol that could represent all necessary information for a conversational IVR application using VoiceXML. The protocol describes 5 types of input, namely: data (initialization data for example; caller’s phone number or any information the platform is set to return), user input (vocal or using the keypad) recognition/interpretation result, recording (of the user’s voice), transfer details (status, duration, etc.), event (hangup, noinput, nomatch…). Concerning outputs, we only designed support for interaction (the dialogue asks for a user input) and exit/hangup to cover our use cases.</p>
<p>As an example, to ask a question and wait for the answer, the dialogue could send this payload:</p>
<p><img decoding="async" class="wp-image-8946 size-full aligncenter" src="https://www.nuecho.com/wp-content/uploads/2019/07/Webp.net-resizeimage-1.jpg" alt="" width="811" height="896" srcset="https://www.nuecho.com/wp-content/uploads/2019/07/Webp.net-resizeimage-1.jpg 811w, https://www.nuecho.com/wp-content/uploads/2019/07/Webp.net-resizeimage-1-272x300.jpg 272w, https://www.nuecho.com/wp-content/uploads/2019/07/Webp.net-resizeimage-1-768x848.jpg 768w" sizes="(max-width: 811px) 100vw, 811px" /></p>
<p>And the result sent by the Bridge could be:</p>
<p><img decoding="async" class="aligncenter wp-image-8944 size-full" src="https://www.nuecho.com/wp-content/uploads/2019/07/Capture.jpg" alt="" width="811" height="652" srcset="https://www.nuecho.com/wp-content/uploads/2019/07/Capture.jpg 811w, https://www.nuecho.com/wp-content/uploads/2019/07/Capture-300x241.jpg 300w, https://www.nuecho.com/wp-content/uploads/2019/07/Capture-768x617.jpg 768w" sizes="(max-width: 811px) 100vw, 811px" /></p>
<h1>… To the IVR Channel</h1>
<p>Not a lot was then left for the IVR channel to do. Concerning inputs, each one would need some processing to be made accessible to the dialogue management. Specifically, inputs have to fit into Rasa’s NLU result format (namely, a string following the template: `intent@confidenceScore{“entityType”: entityValue, &#8230;}`). With well written <a target="_blank" href="https://en.wikipedia.org/wiki/Speech_Recognition_Grammar_Specification" rel="noopener">grammars</a>, this step’s implementation was rather simple for recognition results, but could have been tricky for input types with no intent nor entities (data, events), for which we still wanted to trigger a dialogue turn. To solve that problem, we could either create synthetic intents and entities representing the information we wanted to pass on, or insert it directly in the <a href="http://rasa.com/docs/rasa/user-guide/architecture/">tracker</a> and send a semantically empty input. We went for the first option, and created four synthetic intents to date:<br /> start_conversation (with a data entity containing initialization data as a JSON object)<br /> &#8211; noinput<br /> &#8211; nomatch<br /> &#8211; hangup</p>
<p>For the outputs, yet again some formatting was necessary, but since Rasa gives us full liberty on the output content through <a href="http://rasa.com/docs/rasa/core/domains/#custom-output-payloads">custom payloads</a>, this was pretty straightforward. The (tiny bit more) delicate work was to concatenate and validate outputs from different parts of the dialogue. Rivr supports playing messages alone (without a recognition or hangup step), and it could be a nice feature for our Rasa dialogues, but would have required a bit more gymnastics in both the channel and the Bridge, so we chose not to implement it for now.</p>
<p>Ok, presenting it like that, maybe the IVR channel had a lot to do even with the use of the Rivr Bridge. But it was still less than generating VoiceXML content would have been. Thanks Rivr! To discover the journey of those user inputs once they enter the Rasa ocean, read the yet-to-come rest of the series!</p><p>The post <a href="https://www.nuecho.com/fr/developing-conversational-ivr-using-rasa-part-2-the-rivr-bridge-article-en-anglais/">La RVI conversationnelle avec Rasa – 2e partie : l’utilisation de Rivr (Article en anglais)</a> first appeared on <a href="https://www.nuecho.com/fr/">AI Virtual Voice Experts with Google Dialogflow CX - CCAI - Nu Echo</a>.</p><p>The post <a href="https://www.nuecho.com/fr/developing-conversational-ivr-using-rasa-part-2-the-rivr-bridge-article-en-anglais/">La RVI conversationnelle avec Rasa – 2e partie : l’utilisation de Rivr (Article en anglais)</a> appeared first on <a href="https://www.nuecho.com/fr/">AI Virtual Voice Experts with Google Dialogflow CX - CCAI - Nu Echo</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
