Congratulations!

[Valid RSS] This is a valid RSS feed.

Recommendations

This feed is valid, but interoperability with the widest range of feed readers could be improved by implementing the following recommendations.

Source: http://sodoherty.com/feed/

  1. <?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
  2. xmlns:content="http://purl.org/rss/1.0/modules/content/"
  3. xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  4. xmlns:dc="http://purl.org/dc/elements/1.1/"
  5. xmlns:atom="http://www.w3.org/2005/Atom"
  6. xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  7. xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  8. xmlns:georss="http://www.georss.org/georss"
  9. xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
  10. >
  11.  
  12. <channel>
  13. <title>Talk to me</title>
  14. <atom:link href="https://sodoherty.ai/feed/" rel="self" type="application/rss+xml" />
  15. <link>https://sodoherty.ai</link>
  16. <description>A blog about Chat bots (mainly Watson), and life in general.</description>
  17. <lastBuildDate>Mon, 08 Apr 2024 18:36:32 +0000</lastBuildDate>
  18. <language>en-US</language>
  19. <sy:updatePeriod>
  20. hourly </sy:updatePeriod>
  21. <sy:updateFrequency>
  22. 1 </sy:updateFrequency>
  23.  
  24. <image>
  25. <url>https://s0.wp.com/i/webclip.png</url>
  26. <title>Talk to me</title>
  27. <link>https://sodoherty.ai</link>
  28. <width>32</width>
  29. <height>32</height>
  30. </image>
  31. <site xmlns="com-wordpress:feed-additions:1">31007449</site> <item>
  32. <title>Making user journeys easy to create</title>
  33. <link>https://sodoherty.ai/2024/04/08/making-user-journeys-easy-to-create/</link>
  34. <comments>https://sodoherty.ai/2024/04/08/making-user-journeys-easy-to-create/#respond</comments>
  35. <dc:creator><![CDATA[sodoherty]]></dc:creator>
  36. <pubDate>Mon, 08 Apr 2024 18:36:32 +0000</pubDate>
  37. <category><![CDATA[watsonx-assistant]]></category>
  38. <guid isPermaLink="false">https://sodoherty.ai/?p=4318</guid>
  39.  
  40. <description><![CDATA[User journeys are a beta feature that allows you to walk your users through on solving their issue, rather than having to read static/GenAI text instructions. As it&#8217;s beta you need to paste in JSON which can be messy for content creators. In this video you can learn how to create your user journeys without [&#8230;]]]></description>
  41. <content:encoded><![CDATA[
  42. <p><a href="https://cloud.ibm.com/docs/watson-assistant?topic=watson-assistant-journeyshttps://cloud.ibm.com/docs/watson-assistant?topic=watson-assistant-journeys" data-type="link" data-id="https://cloud.ibm.com/docs/watson-assistant?topic=watson-assistant-journeyshttps://cloud.ibm.com/docs/watson-assistant?topic=watson-assistant-journeys">User journeys</a> are a beta feature that allows you to walk your users through on solving their issue, rather than having to read static/GenAI text instructions. As it&#8217;s beta you need to paste in JSON which can be messy for content creators.</p>
  43.  
  44.  
  45.  
  46. <p>In this video you can learn how to create your user journeys without having to touch the JSON.</p>
  47.  
  48.  
  49.  
  50. <figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
  51. <div class="jetpack-video-wrapper"><iframe class="youtube-player" width="809" height="456" src="https://www.youtube.com/embed/ngRAK26tfig?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=en-US&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe></div>
  52. </div></figure>
  53.  
  54.  
  55.  
  56. <p>Here is the sample assistant used in the video. </p>
  57.  
  58.  
  59.  
  60. <div class="wp-block-file"><a id="wp-block-file--media-079de4c3-e21c-4050-9338-3183f0c47fb4" href="https://sodoherty.ai/wp-content/uploads/2024/04/Action-to-User-Journey-action.zip">Action-to-User-Journey-action</a><a href="https://sodoherty.ai/wp-content/uploads/2024/04/Action-to-User-Journey-action.zip" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-079de4c3-e21c-4050-9338-3183f0c47fb4">Download</a></div>
  61. ]]></content:encoded>
  62. <wfw:commentRss>https://sodoherty.ai/2024/04/08/making-user-journeys-easy-to-create/feed/</wfw:commentRss>
  63. <slash:comments>0</slash:comments>
  64. <post-id xmlns="com-wordpress:feed-additions:1">4318</post-id> </item>
  65. <item>
  66. <title>Working with hex in watsonx assistant</title>
  67. <link>https://sodoherty.ai/2024/04/07/working-with-hex-in-watsonx-assistant/</link>
  68. <comments>https://sodoherty.ai/2024/04/07/working-with-hex-in-watsonx-assistant/#respond</comments>
  69. <dc:creator><![CDATA[sodoherty]]></dc:creator>
  70. <pubDate>Sun, 07 Apr 2024 11:30:05 +0000</pubDate>
  71. <category><![CDATA[watsonx-assistant]]></category>
  72. <guid isPermaLink="false">https://sodoherty.ai/?p=4310</guid>
  73.  
  74. <description><![CDATA[Converting to/from hex in watsonx Assistant is easy if you use an extension. If you don&#8217;t have that choice then you need to get creative in how to do it. In the video I am going to cover the following. Here is the sample assistant used in the video.]]></description>
  75. <content:encoded><![CDATA[
  76. <p>Converting to/from hex in watsonx Assistant is easy if you use an extension. If you don&#8217;t have that choice then you need to get creative in how to do it. In the video I am going to cover the following. </p>
  77.  
  78.  
  79.  
  80. <ul>
  81. <li>Converting Text/Integers to and from hex code. </li>
  82.  
  83.  
  84.  
  85. <li>Show how to create temporary variables within your action.</li>
  86.  
  87.  
  88.  
  89. <li>Sub-action notation to help your content creator fill out correctly.</li>
  90. </ul>
  91.  
  92.  
  93.  
  94. <figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
  95. <div class="jetpack-video-wrapper"><iframe class="youtube-player" width="809" height="456" src="https://www.youtube.com/embed/AteGOyExSl0?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=en-US&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe></div>
  96. </div></figure>
  97.  
  98.  
  99.  
  100. <p>Here is the sample assistant used in the video.</p>
  101.  
  102.  
  103.  
  104. <div class="wp-block-file"><a id="wp-block-file--media-72c4050d-c46c-4743-8df7-31659959de3b" href="https://sodoherty.ai/wp-content/uploads/2024/04/Working-with-HEX-action.zip">Working-with-HEX-action</a><a href="https://sodoherty.ai/wp-content/uploads/2024/04/Working-with-HEX-action.zip" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-72c4050d-c46c-4743-8df7-31659959de3b">Download</a></div>
  105. ]]></content:encoded>
  106. <wfw:commentRss>https://sodoherty.ai/2024/04/07/working-with-hex-in-watsonx-assistant/feed/</wfw:commentRss>
  107. <slash:comments>0</slash:comments>
  108. <post-id xmlns="com-wordpress:feed-additions:1">4310</post-id> </item>
  109. <item>
  110. <title>Connect to WML from watsonx Assistant</title>
  111. <link>https://sodoherty.ai/2023/12/12/connect-to-wml-from-watsonx-assistant/</link>
  112. <comments>https://sodoherty.ai/2023/12/12/connect-to-wml-from-watsonx-assistant/#respond</comments>
  113. <dc:creator><![CDATA[sodoherty]]></dc:creator>
  114. <pubDate>Tue, 12 Dec 2023 18:07:47 +0000</pubDate>
  115. <category><![CDATA[Uncategorized]]></category>
  116. <guid isPermaLink="false">https://sodoherty.ai/?p=4175</guid>
  117.  
  118. <description><![CDATA[This is a common question that comes up and there is no simple answer. So I have created this video to walk through how to do this. The video also covers a couple of topics. Here are the files related to the video.]]></description>
  119. <content:encoded><![CDATA[
  120. <p>This is a common question that comes up and there is no simple answer. So I have created this video to walk through how to do this. The video also covers a couple of topics. </p>
  121.  
  122.  
  123.  
  124. <ul>
  125. <li>How to modify an extension where anyOf, oneOf or allOf are used. </li>
  126.  
  127.  
  128.  
  129. <li>Creating an action variable for using in code.</li>
  130.  
  131.  
  132.  
  133. <li>Skip button to change your models input.  </li>
  134. </ul>
  135.  
  136.  
  137.  
  138. <p>Here are the files related to the video. </p>
  139.  
  140.  
  141.  
  142. <div class="wp-block-file"><a id="wp-block-file--media-a687fedc-bdf2-4bbc-b786-f259c29195bd" href="https://sodoherty.ai/wp-content/uploads/2023/12/WML2wxAssistant.zip">WML2wxAssistant</a><a href="https://sodoherty.ai/wp-content/uploads/2023/12/WML2wxAssistant.zip" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-a687fedc-bdf2-4bbc-b786-f259c29195bd">Download</a></div>
  143.  
  144.  
  145.  
  146. <figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
  147. <div class="jetpack-video-wrapper"><iframe class="youtube-player" width="809" height="456" src="https://www.youtube.com/embed/r4dbyJrm8_g?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=en-US&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe></div>
  148. </div></figure>
  149. ]]></content:encoded>
  150. <wfw:commentRss>https://sodoherty.ai/2023/12/12/connect-to-wml-from-watsonx-assistant/feed/</wfw:commentRss>
  151. <slash:comments>0</slash:comments>
  152. <post-id xmlns="com-wordpress:feed-additions:1">4175</post-id> </item>
  153. <item>
  154. <title>Converting flowcharts to Actions</title>
  155. <link>https://sodoherty.ai/2023/11/08/converting-flowcharts-to-actions/</link>
  156. <comments>https://sodoherty.ai/2023/11/08/converting-flowcharts-to-actions/#comments</comments>
  157. <dc:creator><![CDATA[sodoherty]]></dc:creator>
  158. <pubDate>Wed, 08 Nov 2023 19:39:22 +0000</pubDate>
  159. <category><![CDATA[Uncategorized]]></category>
  160. <guid isPermaLink="false">https://sodoherty.ai/?p=4147</guid>
  161.  
  162. <description><![CDATA[I&#8217;ve had to present this so often that I finally bit the bullet and created a generic how-to video. In this video I show how you can quickly create an action from a flowchart. With the following points. As always, I have supplied the sample files to the video. The flowchart software is Draw.io. Enjoy!]]></description>
  163. <content:encoded><![CDATA[
  164. <p>I&#8217;ve had to present this so often that I finally bit the bullet and created a generic how-to video. </p>
  165.  
  166.  
  167.  
  168. <p>In this video I show how you can quickly create an action from a flowchart. With the following points. </p>
  169.  
  170.  
  171.  
  172. <ul>
  173. <li>Showing a simple easy to follow flowchart structure. </li>
  174.  
  175.  
  176.  
  177. <li>The process of chunking which allows you to easily see the steps.</li>
  178.  
  179.  
  180.  
  181. <li>When to use conditions versus fall through to steps. </li>
  182.  
  183.  
  184.  
  185. <li>How to present the correct information across multiple steps without having to use session variables. </li>
  186. </ul>
  187.  
  188.  
  189.  
  190. <p>As always, I have supplied the sample files to the video. The flowchart software is <a href="https://www.drawio.com">Draw.io</a>.</p>
  191.  
  192.  
  193.  
  194. <div class="wp-block-file"><a id="wp-block-file--media-4e2d035d-8a9a-4d85-a8a1-05c0f15c4d3c" href="https://sodoherty.ai/wp-content/uploads/2023/11/ChunkingActions.zip">ChunkingActions</a><a href="https://sodoherty.ai/wp-content/uploads/2023/11/ChunkingActions.zip" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-4e2d035d-8a9a-4d85-a8a1-05c0f15c4d3c">Download</a></div>
  195.  
  196.  
  197.  
  198. <p>Enjoy! </p>
  199.  
  200.  
  201.  
  202. <figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
  203. <div class="jetpack-video-wrapper"><iframe loading="lazy" class="youtube-player" width="809" height="456" src="https://www.youtube.com/embed/y0GYiNgR5gA?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=en-US&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe></div>
  204. </div></figure>
  205. ]]></content:encoded>
  206. <wfw:commentRss>https://sodoherty.ai/2023/11/08/converting-flowcharts-to-actions/feed/</wfw:commentRss>
  207. <slash:comments>1</slash:comments>
  208. <post-id xmlns="com-wordpress:feed-additions:1">4147</post-id> </item>
  209. <item>
  210. <title>Building an Action handler</title>
  211. <link>https://sodoherty.ai/2023/10/19/building-an-action-handler/</link>
  212. <comments>https://sodoherty.ai/2023/10/19/building-an-action-handler/#respond</comments>
  213. <dc:creator><![CDATA[sodoherty]]></dc:creator>
  214. <pubDate>Thu, 19 Oct 2023 05:29:57 +0000</pubDate>
  215. <category><![CDATA[Uncategorized]]></category>
  216. <guid isPermaLink="false">https://sodoherty.ai/?p=4110</guid>
  217.  
  218. <description><![CDATA[Revisiting the earlier post on non-blocking options. One of the issues that comes up is that it can be messy to have multiple actions for a single function. The other issue is that user inputs can accidentally trigger such survey events. So you want to prevent that. So the first part is simple. You just [&#8230;]]]></description>
  219. <content:encoded><![CDATA[
  220. <p>Revisiting the <a rel="noreferrer noopener" href="https://sodoherty.ai/2022/10/10/non-blocking-option-buttons/" target="_blank">earlier post </a>on non-blocking options. One of the issues that comes up is that it can be messy to have multiple actions for a single function. The other issue is that user inputs can accidentally trigger such survey events. So you want to prevent that. </p>
  221.  
  222.  
  223.  
  224. <p>So the first part is simple. You just move them into one single action. You can even have the sub-action be the handler for the responses. </p>
  225.  
  226.  
  227.  
  228. <p>Within the json the label is what is shown to the end user. The text piece is what gets sent silently to Assistant. Swapping out the thumbs for <a href="https://www.uuidgenerator.net">UUIDs</a> allows you to create training data that can never be triggered by the end user. To make it easier I put a word tag on the end so I remember which is which like so: </p>
  229.  
  230.  
  231.  
  232. <figure class="wp-block-image size-full"><a href="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2023/10/Screenshot-2023-10-19-at-06.14.16.png?ssl=1"><img loading="lazy" decoding="async" width="776" height="403" data-attachment-id="4118" data-permalink="https://sodoherty.ai/2023/10/19/building-an-action-handler/screenshot-2023-10-19-at-06-14-16/" data-orig-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2023/10/Screenshot-2023-10-19-at-06.14.16.png?fit=776%2C403&amp;ssl=1" data-orig-size="776,403" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Screenshot-2023-10-19-at-06.14.16" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2023/10/Screenshot-2023-10-19-at-06.14.16.png?fit=300%2C156&amp;ssl=1" data-large-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2023/10/Screenshot-2023-10-19-at-06.14.16.png?fit=776%2C403&amp;ssl=1" src="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2023/10/Screenshot-2023-10-19-at-06.14.16.png?resize=776%2C403&#038;ssl=1" alt="" class="wp-image-4118" srcset="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2023/10/Screenshot-2023-10-19-at-06.14.16.png?w=776&amp;ssl=1 776w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2023/10/Screenshot-2023-10-19-at-06.14.16.png?resize=300%2C156&amp;ssl=1 300w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2023/10/Screenshot-2023-10-19-at-06.14.16.png?resize=768%2C399&amp;ssl=1 768w" sizes="(max-width: 776px) 100vw, 776px" data-recalc-dims="1" /></a></figure>
  233.  
  234.  
  235.  
  236. <p>Now in the training data of your sub-action you add the UUIDs you created. </p>
  237.  
  238.  
  239.  
  240. <figure class="wp-block-image size-full"><a href="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2023/10/Screenshot-2023-10-19-at-06.19.57.png?ssl=1"><img loading="lazy" decoding="async" width="724" height="403" data-attachment-id="4120" data-permalink="https://sodoherty.ai/2023/10/19/building-an-action-handler/screenshot-2023-10-19-at-06-19-57/" data-orig-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2023/10/Screenshot-2023-10-19-at-06.19.57.png?fit=724%2C403&amp;ssl=1" data-orig-size="724,403" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Screenshot-2023-10-19-at-06.19.57" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2023/10/Screenshot-2023-10-19-at-06.19.57.png?fit=300%2C167&amp;ssl=1" data-large-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2023/10/Screenshot-2023-10-19-at-06.19.57.png?fit=724%2C403&amp;ssl=1" src="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2023/10/Screenshot-2023-10-19-at-06.19.57.png?resize=724%2C403&#038;ssl=1" alt="" class="wp-image-4120" srcset="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2023/10/Screenshot-2023-10-19-at-06.19.57.png?w=724&amp;ssl=1 724w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2023/10/Screenshot-2023-10-19-at-06.19.57.png?resize=300%2C167&amp;ssl=1 300w" sizes="(max-width: 724px) 100vw, 724px" data-recalc-dims="1" /></a></figure>
  241.  
  242.  
  243.  
  244. <p>Lastly you want to have the steps to look for these in your first steps. Those steps should have a condition statement using the expression editor like so: </p>
  245.  
  246.  
  247.  
  248. <figure class="wp-block-image size-full"><a href="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2023/10/Screenshot-2023-10-19-at-06.29.07.png?ssl=1"><img loading="lazy" decoding="async" width="769" height="134" data-attachment-id="4124" data-permalink="https://sodoherty.ai/2023/10/19/building-an-action-handler/screenshot-2023-10-19-at-06-29-07/" data-orig-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2023/10/Screenshot-2023-10-19-at-06.29.07.png?fit=769%2C134&amp;ssl=1" data-orig-size="769,134" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Screenshot-2023-10-19-at-06.29.07" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2023/10/Screenshot-2023-10-19-at-06.29.07.png?fit=300%2C52&amp;ssl=1" data-large-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2023/10/Screenshot-2023-10-19-at-06.29.07.png?fit=769%2C134&amp;ssl=1" src="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2023/10/Screenshot-2023-10-19-at-06.29.07.png?resize=769%2C134&#038;ssl=1" alt="" class="wp-image-4124" srcset="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2023/10/Screenshot-2023-10-19-at-06.29.07.png?w=769&amp;ssl=1 769w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2023/10/Screenshot-2023-10-19-at-06.29.07.png?resize=300%2C52&amp;ssl=1 300w" sizes="(max-width: 769px) 100vw, 769px" data-recalc-dims="1" /></a></figure>
  249.  
  250.  
  251.  
  252. <p>Once captured, ensure you finish on that step. Lastly you want to switch off &#8220;Ask clarifying question&#8221; and &#8220;Change conversation topic&#8221;. </p>
  253.  
  254.  
  255.  
  256. <p>You now have a poor mans callback. <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> I&#8217;ve attached the sample skill for you to review. </p>
  257.  
  258.  
  259.  
  260. <div class="wp-block-file"><a id="wp-block-file--media-84ff6c61-565c-4c0f-9b7e-2216300fdb6f" href="https://sodoherty.ai/wp-content/uploads/2023/10/Action-Handler-Example.zip">Action-Handler-Example</a><a href="https://sodoherty.ai/wp-content/uploads/2023/10/Action-Handler-Example.zip" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-84ff6c61-565c-4c0f-9b7e-2216300fdb6f">Download</a></div>
  261. ]]></content:encoded>
  262. <wfw:commentRss>https://sodoherty.ai/2023/10/19/building-an-action-handler/feed/</wfw:commentRss>
  263. <slash:comments>0</slash:comments>
  264. <post-id xmlns="com-wordpress:feed-additions:1">4110</post-id> </item>
  265. <item>
  266. <title>Time for an update</title>
  267. <link>https://sodoherty.ai/2023/10/19/time-for-an-update/</link>
  268. <comments>https://sodoherty.ai/2023/10/19/time-for-an-update/#respond</comments>
  269. <dc:creator><![CDATA[sodoherty]]></dc:creator>
  270. <pubDate>Thu, 19 Oct 2023 04:56:59 +0000</pubDate>
  271. <category><![CDATA[Uncategorized]]></category>
  272. <guid isPermaLink="false">https://sodoherty.ai/?p=4103</guid>
  273.  
  274. <description><![CDATA[I keep meaning to get back to this blog but various things continue to block. So it&#8217;s 4am and I&#8217;ve nothing to do, so time to put in some updates. Blockers The main reasons to why I am so quiet. Highlights Earlier in the year I received the IBM Tech 2023 award. It&#8217;s awarded to [&#8230;]]]></description>
  275. <content:encoded><![CDATA[
  276. <p>I keep meaning to get back to this blog but various things continue to block. So it&#8217;s 4am and I&#8217;ve nothing to do, so time to put in some updates. </p>
  277.  
  278.  
  279.  
  280. <h2 class="wp-block-heading">Blockers</h2>
  281.  
  282.  
  283.  
  284. <p>The main reasons to why I am so quiet. </p>
  285.  
  286.  
  287.  
  288. <ul>
  289. <li>I am much closer to the magic of how watsonx Assistant is made. So it&#8217;s harder to find stuff to blog about that I know will end up as a feature later (case in point, my earlier blog post). </li>
  290. </ul>
  291.  
  292.  
  293.  
  294. <ul>
  295. <li>My current work carries more potential commercial value, adding another layer of complexity to what I can publicly share. </li>
  296. </ul>
  297.  
  298.  
  299.  
  300. <ul>
  301. <li>The latest version of watsonx Assistant is designed for non-technical people to do much cooler stuff easier than before. Trying to find anything useful rarely warrants a whole blog post. So I&#8217;ve been <a href="https://stackoverflow.com/users/1167890/simon-odoherty?tab=answers&amp;sort=newest" target="_blank" rel="noreferrer noopener">posting to Stackoverflow</a> as needed. </li>
  302. </ul>
  303.  
  304.  
  305.  
  306. <h2 class="wp-block-heading">Highlights</h2>
  307.  
  308.  
  309.  
  310. <p>Earlier in the year I received the IBM Tech 2023 award. It&#8217;s awarded to the top talent in IBM. I got a chance to go back to Dubai and meet many exceptional people in IBM across the world. That event really puts in perspective of how many moving parts there are in IBM and how there are numerous people excelling in those parts. </p>
  311.  
  312.  
  313.  
  314. <p>More recently I was humbled to receive the Culture Catalyst Award for my work on watsonx.ai and watsonx Assistant. Helping others to build solutions that matter. The award is given to culture leaders and role models who exemplify our purpose, values, and growth behaviours, working to activate our culture and drive growth.</p>
  315.  
  316.  
  317.  
  318. <p>I&#8217;ve also helped build a worldwide program focused on helping existing customers fix gaps in their Assistant and migrate easier to the latest version. Helping to oversee numerous experts in different Geos execute this for customers has been very rewarding.  </p>
  319.  
  320.  
  321.  
  322. <p>On the personal side I got to visit Japan for my son. A fantastic country, but I was more impressed with how fluently and relaxed my son was there. His self study of Japanese and culture paid off for his first visit. </p>
  323.  
  324.  
  325.  
  326. <h2 class="wp-block-heading">What now?</h2>
  327.  
  328.  
  329.  
  330. <p>I&#8217;ll try to add updates as I can. If there is something in particular you want let me know (or just post on Stackoverflow or <a rel="noreferrer noopener" href="https://community.ibm.com/community/user/home" target="_blank">TechExchange</a>. I can also be found on <a rel="noreferrer noopener" href="https://bsky.app/profile/sodoherty.bsky.social" target="_blank">Bluesky</a>. </p>
  331. ]]></content:encoded>
  332. <wfw:commentRss>https://sodoherty.ai/2023/10/19/time-for-an-update/feed/</wfw:commentRss>
  333. <slash:comments>0</slash:comments>
  334. <post-id xmlns="com-wordpress:feed-additions:1">4103</post-id> </item>
  335. <item>
  336. <title>Debugging your extension</title>
  337. <link>https://sodoherty.ai/2022/10/14/debugging-your-extension/</link>
  338. <comments>https://sodoherty.ai/2022/10/14/debugging-your-extension/#respond</comments>
  339. <dc:creator><![CDATA[sodoherty]]></dc:creator>
  340. <pubDate>Fri, 14 Oct 2022 04:40:27 +0000</pubDate>
  341. <category><![CDATA[Uncategorized]]></category>
  342. <guid isPermaLink="false">https://sodoherty.ai/?p=3888</guid>
  343.  
  344. <description><![CDATA[When working with extensions in Watson Assistant just using the standard UI can be cumbersome to do deep dive analysis on why your extension is not working as expected. You can use the browsers inspector to look at what is sent and received. You do this by going to the network tab, select &#8220;Response&#8221; then [&#8230;]]]></description>
  345. <content:encoded><![CDATA[
  346. <p>When working with extensions in Watson Assistant just using the standard UI can be cumbersome to do deep dive analysis on why your extension is not working as expected. </p>
  347.  
  348.  
  349.  
  350. <p>You can use the browsers inspector to look at what is sent and received. You do this by going to the network tab, select &#8220;Response&#8221; then filter by &#8220;callout&#8221;. Once you get to the line where callout is mentioned remove the filter and then you can see all the parts. </p>
  351.  
  352.  
  353.  
  354. <p>For the video demo below I created a sample extension that pulls jokes from &#8220;<a rel="noreferrer noopener" href="https://icanhazdadjoke.com" target="_blank">I Can Haz Dad Joke</a>&#8221; via their <a rel="noreferrer noopener" href="https://icanhazdadjoke.com/api" target="_blank">API</a>. The sample extension is attached.</p>
  355.  
  356.  
  357.  
  358. <div class="wp-block-file"><a id="wp-block-file--media-1abc84c1-2c40-401f-bb4a-3ac2632aed5a" href="https://sodoherty.ai/wp-content/uploads/2022/10/icanhazdadjoke.zip">icanhazdadjoke</a><a href="https://sodoherty.ai/wp-content/uploads/2022/10/icanhazdadjoke.zip" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-1abc84c1-2c40-401f-bb4a-3ac2632aed5a">Download</a></div>
  359.  
  360.  
  361.  
  362. <p></p>
  363.  
  364.  
  365.  
  366. <figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
  367. <div class="jetpack-video-wrapper"><iframe loading="lazy" class="youtube-player" width="809" height="456" src="https://www.youtube.com/embed/iq7H86taOsQ?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=en-US&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe></div>
  368. </div></figure>
  369. ]]></content:encoded>
  370. <wfw:commentRss>https://sodoherty.ai/2022/10/14/debugging-your-extension/feed/</wfw:commentRss>
  371. <slash:comments>0</slash:comments>
  372. <post-id xmlns="com-wordpress:feed-additions:1">3888</post-id> </item>
  373. <item>
  374. <title>Non-Blocking option buttons</title>
  375. <link>https://sodoherty.ai/2022/10/10/non-blocking-option-buttons/</link>
  376. <comments>https://sodoherty.ai/2022/10/10/non-blocking-option-buttons/#respond</comments>
  377. <dc:creator><![CDATA[sodoherty]]></dc:creator>
  378. <pubDate>Mon, 10 Oct 2022 07:16:45 +0000</pubDate>
  379. <category><![CDATA[Actions]]></category>
  380. <category><![CDATA[watson-assistant]]></category>
  381. <guid isPermaLink="false">https://sodoherty.ai/?p=3832</guid>
  382.  
  383. <description><![CDATA[This is a common request that comes up often with the new Watson Assistant. This is where you offer options at the end of an action which can link off to another action. Using normal options forces the user to respond to the buttons and prevents them leaving that action. Another use case is asking [&#8230;]]]></description>
  384. <content:encoded><![CDATA[
  385. <p>This is a common request that comes up often with the new Watson Assistant. </p>
  386.  
  387.  
  388.  
  389. <p>This is where you offer options at the end of an action which can link off to another action. Using normal options forces the user to respond to the buttons and prevents them leaving that action.</p>
  390.  
  391.  
  392.  
  393. <p>Another use case is asking the user if they were happy with the response. In this example I&#8217;m going to show how to do a thumbs up/down as a follow up. </p>
  394.  
  395.  
  396.  
  397. <p>First we need to create a Thumbs up and Thumbs down intent. Both are exactly the same. It is one training example, the emoticon <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f44d.png" alt="👍" class="wp-smiley" style="height: 1em; max-height: 1em;" /> or <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f44e.png" alt="👎" class="wp-smiley" style="height: 1em; max-height: 1em;" />. One step that says if they had a positive or negative response.</p>
  398.  
  399.  
  400.  
  401. <figure class="wp-block-image size-large"><a href="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.15.07.png?ssl=1"><img loading="lazy" decoding="async" width="809" height="298" data-attachment-id="3836" data-permalink="https://sodoherty.ai/2022/10/10/non-blocking-option-buttons/screenshot-2022-10-10-at-07-15-07/" data-orig-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.15.07.png?fit=2468%2C908&amp;ssl=1" data-orig-size="2468,908" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Screenshot-2022-10-10-at-07.15.07" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.15.07.png?fit=300%2C110&amp;ssl=1" data-large-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.15.07.png?fit=809%2C298&amp;ssl=1" src="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.15.07.png?resize=809%2C298&#038;ssl=1" alt="" class="wp-image-3836" srcset="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.15.07.png?resize=1024%2C377&amp;ssl=1 1024w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.15.07.png?resize=300%2C110&amp;ssl=1 300w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.15.07.png?resize=768%2C283&amp;ssl=1 768w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.15.07.png?resize=1536%2C565&amp;ssl=1 1536w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.15.07.png?resize=2048%2C753&amp;ssl=1 2048w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.15.07.png?resize=1100%2C405&amp;ssl=1 1100w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.15.07.png?w=1618&amp;ssl=1 1618w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.15.07.png?w=2427&amp;ssl=1 2427w" sizes="(max-width: 809px) 100vw, 809px" data-recalc-dims="1" /></a></figure>
  402.  
  403.  
  404.  
  405. <p>Next click the options on the action and make sure to switch off &#8220;Ask clarifying questions&#8221;.</p>
  406.  
  407.  
  408. <div class="wp-block-image">
  409. <figure class="aligncenter size-large is-resized"><a href="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.15.33.png?ssl=1"><img loading="lazy" decoding="async" data-attachment-id="3839" data-permalink="https://sodoherty.ai/2022/10/10/non-blocking-option-buttons/screenshot-2022-10-10-at-07-15-33/" data-orig-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.15.33.png?fit=1254%2C870&amp;ssl=1" data-orig-size="1254,870" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Screenshot-2022-10-10-at-07.15.33" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.15.33.png?fit=300%2C208&amp;ssl=1" data-large-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.15.33.png?fit=809%2C561&amp;ssl=1" src="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.15.33.png?resize=454%2C315&#038;ssl=1" alt="" class="wp-image-3839" width="454" height="315" srcset="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.15.33.png?resize=1024%2C710&amp;ssl=1 1024w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.15.33.png?resize=300%2C208&amp;ssl=1 300w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.15.33.png?resize=768%2C533&amp;ssl=1 768w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.15.33.png?resize=1100%2C763&amp;ssl=1 1100w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.15.33.png?w=1254&amp;ssl=1 1254w" sizes="(max-width: 454px) 100vw, 454px" data-recalc-dims="1" /></a><figcaption>Same for thumbs up/down and survey later.</figcaption></figure></div>
  410.  
  411.  
  412. <p>Once you have created those two actions. Next is the survey action. This should contain no training questions and the settings above switched off. This is to prevent it triggering except called from another action.</p>
  413.  
  414.  
  415.  
  416. <figure class="wp-block-image size-large"><a href="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.51.45.png?ssl=1"><img loading="lazy" decoding="async" width="809" height="265" data-attachment-id="3840" data-permalink="https://sodoherty.ai/2022/10/10/non-blocking-option-buttons/screenshot-2022-10-10-at-07-51-45/" data-orig-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.51.45.png?fit=2424%2C796&amp;ssl=1" data-orig-size="2424,796" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Screenshot-2022-10-10-at-07.51.45" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.51.45.png?fit=300%2C99&amp;ssl=1" data-large-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.51.45.png?fit=809%2C265&amp;ssl=1" src="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.51.45.png?resize=809%2C265&#038;ssl=1" alt="" class="wp-image-3840" srcset="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.51.45.png?resize=1024%2C336&amp;ssl=1 1024w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.51.45.png?resize=300%2C99&amp;ssl=1 300w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.51.45.png?resize=768%2C252&amp;ssl=1 768w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.51.45.png?resize=1536%2C504&amp;ssl=1 1536w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.51.45.png?resize=2048%2C673&amp;ssl=1 2048w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.51.45.png?resize=1100%2C361&amp;ssl=1 1100w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-07.51.45.png?w=1618&amp;ssl=1 1618w" sizes="(max-width: 809px) 100vw, 809px" data-recalc-dims="1" /></a></figure>
  417.  
  418.  
  419.  
  420. <p>The step you are going to select the <strong>&lt;/&gt;</strong> button to show the json and replace with the following: </p>
  421.  
  422.  
  423.  
  424. <pre class="wp-block-code has-small-font-size"><code>{
  425.  "generic": &#91;
  426.    {
  427.      "title": "How was my response?",
  428.      "options": &#91;
  429.        {
  430.          "label": "&#x1f44d;",
  431.          "value": {
  432.            "input": {
  433.              "text": "&#x1f44d;"
  434.            }
  435.          }
  436.        },
  437.        {
  438.          "label": "&#x1f44e;",
  439.          "value": {
  440.            "input": {
  441.              "text": "&#x1f44e;"
  442.            }
  443.          }
  444.        }
  445.      ],
  446.      "response_type": "option"
  447.    }
  448.  ]
  449. }</code></pre>
  450.  
  451.  
  452.  
  453. <p>This creates <a rel="noreferrer noopener" href="https://cloud.ibm.com/docs/watson-assistant?topic=watson-assistant-response-types-reference#option" data-type="URL" data-id="https://cloud.ibm.com/docs/watson-assistant?topic=watson-assistant-response-types-reference#option" target="_blank">custom option buttons</a> which are non-blocking. </p>
  454.  
  455.  
  456.  
  457. <p>Lastly in your action you want the response to trigger the survey. You can do this by calling the action as a sub-action. </p>
  458.  
  459.  
  460.  
  461. <figure class="wp-block-image size-large is-resized"><a href="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-06.57.51.png?ssl=1"><img loading="lazy" decoding="async" data-attachment-id="3845" data-permalink="https://sodoherty.ai/2022/10/10/non-blocking-option-buttons/screenshot-2022-10-10-at-06-57-51/" data-orig-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-06.57.51.png?fit=1590%2C568&amp;ssl=1" data-orig-size="1590,568" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Screenshot-2022-10-10-at-06.57.51" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-06.57.51.png?fit=300%2C107&amp;ssl=1" data-large-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-06.57.51.png?fit=809%2C289&amp;ssl=1" src="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-06.57.51.png?resize=654%2C234&#038;ssl=1" alt="" class="wp-image-3845" width="654" height="234" srcset="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-06.57.51.png?resize=1024%2C366&amp;ssl=1 1024w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-06.57.51.png?resize=300%2C107&amp;ssl=1 300w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-06.57.51.png?resize=768%2C274&amp;ssl=1 768w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-06.57.51.png?resize=1536%2C549&amp;ssl=1 1536w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-06.57.51.png?resize=1100%2C393&amp;ssl=1 1100w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-06.57.51.png?w=1590&amp;ssl=1 1590w" sizes="(max-width: 654px) 100vw, 654px" data-recalc-dims="1" /></a></figure>
  462.  
  463.  
  464.  
  465. <p>Now when you run it, you end up with something like below. </p>
  466.  
  467.  
  468.  
  469. <figure class="wp-block-image size-large is-resized"><a href="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-06.48.40.png?ssl=1"><img loading="lazy" decoding="async" data-attachment-id="3847" data-permalink="https://sodoherty.ai/2022/10/10/non-blocking-option-buttons/screenshot-2022-10-10-at-06-48-40/" data-orig-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-06.48.40.png?fit=698%2C1200&amp;ssl=1" data-orig-size="698,1200" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Screenshot-2022-10-10-at-06.48.40" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-06.48.40.png?fit=175%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-06.48.40.png?fit=596%2C1024&amp;ssl=1" src="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-06.48.40.png?resize=247%2C424&#038;ssl=1" alt="" class="wp-image-3847" width="247" height="424" srcset="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-06.48.40.png?resize=596%2C1024&amp;ssl=1 596w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-06.48.40.png?resize=175%2C300&amp;ssl=1 175w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2022/10/Screenshot-2022-10-10-at-06.48.40.png?w=698&amp;ssl=1 698w" sizes="(max-width: 247px) 100vw, 247px" data-recalc-dims="1" /></a></figure>
  470.  
  471.  
  472.  
  473. <p>As always, I&#8217;ve included the sample skill for you to try.</p>
  474.  
  475.  
  476.  
  477. <div class="wp-block-file"><a id="wp-block-file--media-f6b4222f-b4d8-4918-a75c-3ca35f8dbb01" href="https://sodoherty.ai/wp-content/uploads/2022/10/Thumbs-up-_-down-action.zip">Thumbs-up-_-down-action</a><a href="https://sodoherty.ai/wp-content/uploads/2022/10/Thumbs-up-_-down-action.zip" class="wp-block-file__button" download aria-describedby="wp-block-file--media-f6b4222f-b4d8-4918-a75c-3ca35f8dbb01">Download</a></div>
  478.  
  479.  
  480.  
  481. <p class="has-white-color has-bright-blue-background-color has-text-color has-background"><strong>Important:</strong> <br>In a real world production instance it is not good practise to have a thumbs/up down after every response. As this reduces the users confidence in the system. <br><br>Imagine having a customer support person asking for validation after every answer given. You wouldn&#8217;t trust their response either.  <br><br>The other part of it is that often end users will make their thumbs up/down from an emotional response, and not a logical one. <br><br>If you really need to do this, then I recommend to put a confidence level into survey. So it doesn&#8217;t trigger unless the confidence level is very low. A better option is to use the <a rel="noreferrer noopener" href="https://www.ibm.com/products/watson-assistant/demos/lendyr/demo.html?panel=index&amp;feature=chat-survey" data-type="URL" data-id="https://www.ibm.com/products/watson-assistant/demos/lendyr/demo.html?panel=index&amp;feature=chat-survey" target="_blank">custom survey</a> demonstrated in the Lendyr demo. </p>
  482.  
  483.  
  484.  
  485. <p></p>
  486. ]]></content:encoded>
  487. <wfw:commentRss>https://sodoherty.ai/2022/10/10/non-blocking-option-buttons/feed/</wfw:commentRss>
  488. <slash:comments>0</slash:comments>
  489. <post-id xmlns="com-wordpress:feed-additions:1">3832</post-id> </item>
  490. <item>
  491. <title>Visualising Coverage in Conversation Logs.</title>
  492. <link>https://sodoherty.ai/2021/10/02/visualising-coverage-in-conversation-logs/</link>
  493. <comments>https://sodoherty.ai/2021/10/02/visualising-coverage-in-conversation-logs/#respond</comments>
  494. <dc:creator><![CDATA[sodoherty]]></dc:creator>
  495. <pubDate>Sat, 02 Oct 2021 12:10:58 +0000</pubDate>
  496. <category><![CDATA[Python]]></category>
  497. <category><![CDATA[watson-assistant]]></category>
  498. <guid isPermaLink="false">https://sodoherty.ai/?p=3455</guid>
  499.  
  500. <description><![CDATA[This is a simple demo of showing how to visualise how customers are interacting with your system. ]]></description>
  501. <content:encoded><![CDATA[
  502. <p>One of the most important parts of a conversational system is to ensure that your end users are getting the most benefit out of it. To do this requires looking at patterns in your conversation logs. It can be time consuming. </p>
  503.  
  504.  
  505.  
  506. <p>A common approach is to put markers into your nodes then look for those entry/exit point markers. But a user question can hit multiple nodes + slots across multiple log lines. Making it tricker to see. Here is a couple of approaches to try and easily get information on your complex flows. </p>
  507.  
  508.  
  509.  
  510. <p>For this demo I am using the default demo skill in Watson Assistant to generate logs. I have created a number of simple conversations. A couple demonstrate a issue with how the user may interact. I have also supplied the <a href="https://github.com/sodoherty-ai/blog_scripts/raw/master/FlowCoverage.zip" data-type="URL" data-id="https://github.com/sodoherty-ai/blog_scripts/raw/master/FlowCoverage.zip">example notebook and files</a> for you to try out. </p>
  511.  
  512.  
  513.  
  514. <h2 class="wp-block-heading">Creating the graph.</h2>
  515.  
  516.  
  517.  
  518. <p>For generating I first need to convert the log to a<a href="https://networkx.org" data-type="URL" data-id="https://networkx.org"> graph format</a>. The easiest way to is look at the <code>nodes_visited </code>column in the logs.  Here is an example of a user making a reservation. </p>
  519.  
  520.  
  521.  
  522. <pre class="wp-block-preformatted"><code>['Opening']
  523. ['Reservation using slots', 'handler_104_1498132501942', 'slot_102_1498132501942', 'handler_103_1498132501942', 'handler_6_1509695999145', 'handler_104_1498132501942', 'slot_102_1498132501942', 'handler_103_1498132501942', 'handler_107_1498132552870', 'slot_105_1498132552870']
  524. ['slot_105_1498132552870', 'handler_106_1498132552870', 'handler_10_1509132875735', 'slot_8_1509132875735', 'handler_9_1509132875735', 'handler_17_1509135162089', 'handler_104_1498132501942', 'slot_102_1498132501942']
  525. ['slot_102_1498132501942', 'handler_103_1498132501942', 'handler_107_1498132552870', 'slot_105_1498132552870', 'handler_106_1498132552870', 'handler_10_1509132875735', 'slot_8_1509132875735']
  526. ['slot_8_1509132875735', 'handler_9_1509132875735', 'handler_14_1509133469904', 'handler_24_1522444583114', 'slot_22_1522444583114', 'handler_23_1522444583114', 'handler_22_1522598191131', 'node_3_1519173961259', 'Reservation using slots']
  527. </code></pre>
  528.  
  529.  
  530.  
  531. <p>Although each line is an interaction you can see that it is in fact a chain of events. When joining the chains you end up with. </p>
  532.  
  533.  
  534.  
  535. <pre class="wp-block-preformatted"><code>['Opening']</code> <code>['Reservation using slots', 'handler_104_1498132501942', 'slot_102_1498132501942', 'handler_103_1498132501942', 'handler_6_1509695999145', 'handler_104_1498132501942', 'slot_102_1498132501942', 'handler_103_1498132501942', 'handler_107_1498132552870', 'slot_105_1498132552870', 'handler_106_1498132552870', 'handler_10_1509132875735', 'slot_8_1509132875735', 'handler_9_1509132875735', 'handler_17_1509135162089', 'handler_104_1498132501942', 'slot_102_1498132501942', 'handler_103_1498132501942', 'handler_107_1498132552870', 'slot_105_1498132552870', 'handler_106_1498132552870', 'handler_10_1509132875735', 'slot_8_1509132875735', 'handler_9_1509132875735', 'handler_14_1509133469904', 'handler_24_1522444583114', 'slot_22_1522444583114', 'handler_23_1522444583114', 'handler_22_1522598191131', 'node_3_1519173961259', 'Reservation using slots']</code></pre>
  536.  
  537.  
  538.  
  539. <p>The second part is the whole interaction the user had in trying to book an appointment. It&#8217;s still not that readable. So I converted these over to make a little more readable. </p>
  540.  
  541.  
  542.  
  543. <ul><li>slot_ = Take the variable that the slot object depends on. </li><li>node_ = Take the condition for the node in the skill. </li><li>frame = Top level slot node (not shown above, it&#8217;s part of the skill node attributes). Took the condition of the node.</li><li>response = This is the node that responds to the end user, or part of the slot. Added &#8220;response to: &lt;parent node name&gt;&#8221;</li><li>handler = Left the same.</li></ul>
  544.  
  545.  
  546.  
  547. <p>Once this is done I started by converting the chain to Graph nodes and edges. For each time an edge is repeated a count is incremented to the edge object. You end up with this.</p>
  548.  
  549.  
  550.  
  551. <figure class="wp-block-image size-large"><a href="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/FlowCoverage.png?ssl=1"><img loading="lazy" decoding="async" width="809" height="771" data-attachment-id="3463" data-permalink="https://sodoherty.ai/2021/10/02/visualising-coverage-in-conversation-logs/flowcoverage/" data-orig-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/FlowCoverage.png?fit=1754%2C1672&amp;ssl=1" data-orig-size="1754,1672" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="FlowCoverage" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/FlowCoverage.png?fit=300%2C286&amp;ssl=1" data-large-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/FlowCoverage.png?fit=809%2C771&amp;ssl=1" src="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/FlowCoverage.png?resize=809%2C771&#038;ssl=1" alt="" class="wp-image-3463" srcset="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/FlowCoverage.png?resize=1024%2C976&amp;ssl=1 1024w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/FlowCoverage.png?resize=300%2C286&amp;ssl=1 300w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/FlowCoverage.png?resize=768%2C732&amp;ssl=1 768w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/FlowCoverage.png?resize=1536%2C1464&amp;ssl=1 1536w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/FlowCoverage.png?resize=842%2C803&amp;ssl=1 842w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/FlowCoverage.png?w=1754&amp;ssl=1 1754w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/FlowCoverage.png?w=1618&amp;ssl=1 1618w" sizes="(max-width: 809px) 100vw, 809px" data-recalc-dims="1" /></a></figure>
  552.  
  553.  
  554.  
  555. <p>Red nodes are entry points to a single flow. Orange is a flow which could have been entered though other parts of the conversation. Blue are the slot values. Pink is a final response to the user from the flow. </p>
  556.  
  557.  
  558.  
  559. <p>As you can see it&#8217;s still a mess! </p>
  560.  
  561.  
  562.  
  563. <p>By selecting the entry point node you can delete all other nodes that do not have a path to it. In this case I selected &#8220;frame: #Customer_Care_Appointments&#8221;. This was generated. </p>
  564.  
  565.  
  566.  
  567. <figure class="wp-block-image size-large"><a href="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/Screenshot-2021-10-02-at-11.46.46.png?ssl=1"><img loading="lazy" decoding="async" width="809" height="785" data-attachment-id="3466" data-permalink="https://sodoherty.ai/2021/10/02/visualising-coverage-in-conversation-logs/screenshot-2021-10-02-at-11-46-46/" data-orig-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/Screenshot-2021-10-02-at-11.46.46.png?fit=1722%2C1672&amp;ssl=1" data-orig-size="1722,1672" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Screenshot-2021-10-02-at-11.46.46" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/Screenshot-2021-10-02-at-11.46.46.png?fit=300%2C291&amp;ssl=1" data-large-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/Screenshot-2021-10-02-at-11.46.46.png?fit=809%2C785&amp;ssl=1" src="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/Screenshot-2021-10-02-at-11.46.46.png?resize=809%2C785&#038;ssl=1" alt="" class="wp-image-3466" srcset="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/Screenshot-2021-10-02-at-11.46.46.png?resize=1024%2C994&amp;ssl=1 1024w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/Screenshot-2021-10-02-at-11.46.46.png?resize=300%2C291&amp;ssl=1 300w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/Screenshot-2021-10-02-at-11.46.46.png?resize=768%2C746&amp;ssl=1 768w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/Screenshot-2021-10-02-at-11.46.46.png?resize=1536%2C1491&amp;ssl=1 1536w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/Screenshot-2021-10-02-at-11.46.46.png?resize=842%2C818&amp;ssl=1 842w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/Screenshot-2021-10-02-at-11.46.46.png?w=1722&amp;ssl=1 1722w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/Screenshot-2021-10-02-at-11.46.46.png?w=1618&amp;ssl=1 1618w" sizes="(max-width: 809px) 100vw, 809px" data-recalc-dims="1" /></a><figcaption>Still a bit of a mess and not easy to see how the paths are flowing through the booking appointment. NetworkX was designed more for analysing graphs than visualising them. </figcaption></figure>
  568.  
  569.  
  570.  
  571. <h2 class="wp-block-heading">Graph to Sankey</h2>
  572.  
  573.  
  574.  
  575. <p>So using the generated graph data I moved it over to a <a rel="noreferrer noopener" href="https://plotly.com/python/sankey-diagram/" data-type="URL" data-id="https://plotly.com/python/sankey-diagram/" target="_blank">Sankey</a>. The nice thing with plotly is you can easily move the flows to see what is going on. Here is what is generated using the graph information from the last image. </p>
  576.  
  577.  
  578.  
  579. <figure class="wp-block-image size-large"><a href="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/sankey-1.png?ssl=1"><img loading="lazy" decoding="async" width="809" height="383" data-attachment-id="3470" data-permalink="https://sodoherty.ai/2021/10/02/visualising-coverage-in-conversation-logs/sankey-1/" data-orig-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/sankey-1.png?fit=2744%2C1300&amp;ssl=1" data-orig-size="2744,1300" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="sankey-1" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/sankey-1.png?fit=300%2C142&amp;ssl=1" data-large-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/sankey-1.png?fit=809%2C383&amp;ssl=1" src="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/sankey-1.png?resize=809%2C383&#038;ssl=1" alt="" class="wp-image-3470" srcset="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/sankey-1.png?resize=1024%2C485&amp;ssl=1 1024w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/sankey-1.png?resize=300%2C142&amp;ssl=1 300w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/sankey-1.png?resize=768%2C364&amp;ssl=1 768w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/sankey-1.png?resize=1536%2C728&amp;ssl=1 1536w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/sankey-1.png?resize=2048%2C970&amp;ssl=1 2048w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/sankey-1.png?resize=842%2C399&amp;ssl=1 842w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/sankey-1.png?w=1618&amp;ssl=1 1618w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/sankey-1.png?w=2427&amp;ssl=1 2427w" sizes="(max-width: 809px) 100vw, 809px" data-recalc-dims="1" /></a><figcaption>Edge colors are red where there is more output from a node than there is input. In a normal conversational flow it should be fairly static if well trained. Not all red is an issue though. Taking the two biggest we can use these to drill down to a root cause. </figcaption></figure>
  580.  
  581.  
  582.  
  583. <p class="has-medium-font-size"><strong>#1</strong> </p>
  584.  
  585.  
  586.  
  587. <p>This is showing a lot of users are not progressing through the phone section of the flow and are going into a loop. As the second part is much smaller it would suggest that people are giving up on the flow. Looking through the logs shows the following pattern.</p>
  588.  
  589.  
  590.  
  591. <figure class="wp-block-image size-large"><a href="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/examplefail.png?ssl=1"><img loading="lazy" decoding="async" width="809" height="129" data-attachment-id="3473" data-permalink="https://sodoherty.ai/2021/10/02/visualising-coverage-in-conversation-logs/examplefail/" data-orig-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/examplefail.png?fit=2318%2C370&amp;ssl=1" data-orig-size="2318,370" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="examplefail" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/examplefail.png?fit=300%2C48&amp;ssl=1" data-large-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/examplefail.png?fit=809%2C129&amp;ssl=1" src="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/examplefail.png?resize=809%2C129&#038;ssl=1" alt="" class="wp-image-3473" srcset="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/examplefail.png?resize=1024%2C163&amp;ssl=1 1024w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/examplefail.png?resize=300%2C48&amp;ssl=1 300w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/examplefail.png?resize=768%2C123&amp;ssl=1 768w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/examplefail.png?resize=1536%2C245&amp;ssl=1 1536w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/examplefail.png?resize=2048%2C327&amp;ssl=1 2048w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/examplefail.png?resize=842%2C134&amp;ssl=1 842w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/10/examplefail.png?w=1618&amp;ssl=1 1618w" sizes="(max-width: 809px) 100vw, 809px" data-recalc-dims="1" /></a></figure>
  592.  
  593.  
  594.  
  595. <p>Clearly the end users are having problems trying to enter in a valid phone number. So this is something that should be looked at in resolving. </p>
  596.  
  597.  
  598.  
  599. <p class="has-medium-font-size">#2</p>
  600.  
  601.  
  602.  
  603. <p>You can see three inputs into the handler before it passes over to the &#8220;Ask for date&#8221; slot. This isn&#8217;t an issue as there are three conditions this could happen. </p>
  604.  
  605.  
  606.  
  607. <ul><li>User supplies a date when asking for the appointment. </li><li>System asks the user for the date. </li><li>User asks to redo the appointment at final confirmation. </li></ul>
  608.  
  609.  
  610.  
  611. <p>The handler is doing what it should be doing. </p>
  612.  
  613.  
  614.  
  615. <h2 class="wp-block-heading">Conclusion</h2>
  616.  
  617.  
  618.  
  619. <p>So this <a href="https://github.com/sodoherty-ai/blog_scripts/raw/master/FlowCoverage.zip" data-type="URL" data-id="https://github.com/sodoherty-ai/blog_scripts/raw/master/FlowCoverage.zip">example</a> is showing just one way to approach this problem. I&#8217;d be interested to hear how others are dealing with this. </p>
  620. ]]></content:encoded>
  621. <wfw:commentRss>https://sodoherty.ai/2021/10/02/visualising-coverage-in-conversation-logs/feed/</wfw:commentRss>
  622. <slash:comments>0</slash:comments>
  623. <post-id xmlns="com-wordpress:feed-additions:1">3455</post-id> </item>
  624. <item>
  625. <title>Creating a Quantum Computer Chatbot.</title>
  626. <link>https://sodoherty.ai/2021/03/09/creating-a-quantum-computer-chatbot/</link>
  627. <comments>https://sodoherty.ai/2021/03/09/creating-a-quantum-computer-chatbot/#comments</comments>
  628. <dc:creator><![CDATA[sodoherty]]></dc:creator>
  629. <pubDate>Tue, 09 Mar 2021 07:50:46 +0000</pubDate>
  630. <category><![CDATA[Uncategorized]]></category>
  631. <guid isPermaLink="false">https://sodoherty.ai/?p=3390</guid>
  632.  
  633. <description><![CDATA[I normally do up these small and quick projects to help practice technologies I work with. Also to keep me a bit sane. For this fun little project I thought about creating a chatbot that can translate a simple conversation into a format that can be understood by a quantum computer. The plan is to [&#8230;]]]></description>
  634. <content:encoded><![CDATA[
  635. <p>I normally do up these small and quick projects to help practice technologies I work with. Also to keep me a bit sane.</p>
  636.  
  637.  
  638.  
  639. <p>For this fun little project I thought about creating a chatbot that can translate a simple conversation into a format that can be understood by a quantum computer. </p>
  640.  
  641.  
  642.  
  643. <p>The plan is to build a <a rel="noreferrer noopener" href="https://en.wikipedia.org/wiki/Grover%27s_algorithm" data-type="URL" data-id="https://en.wikipedia.org/wiki/Grover%27s_algorithm" target="_blank">Grover Algorithm </a> circuit that will determine the best combination of people who like/dislike each other.</p>
  644.  
  645.  
  646.  
  647. <p>The architecture is as follows:</p>
  648.  
  649.  
  650.  
  651. <figure class="wp-block-image size-large"><a href="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/03/QisBotArchitecture.png?ssl=1"><img loading="lazy" decoding="async" width="722" height="211" data-attachment-id="3393" data-permalink="https://sodoherty.ai/2021/03/09/creating-a-quantum-computer-chatbot/qisbotarchitecture/" data-orig-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/03/QisBotArchitecture.png?fit=722%2C211&amp;ssl=1" data-orig-size="722,211" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="QisBotArchitecture" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/03/QisBotArchitecture.png?fit=300%2C88&amp;ssl=1" data-large-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/03/QisBotArchitecture.png?fit=722%2C211&amp;ssl=1" src="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/03/QisBotArchitecture.png?resize=722%2C211&#038;ssl=1" alt="" class="wp-image-3393" srcset="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/03/QisBotArchitecture.png?w=722&amp;ssl=1 722w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/03/QisBotArchitecture.png?resize=300%2C88&amp;ssl=1 300w" sizes="(max-width: 722px) 100vw, 722px" data-recalc-dims="1" /></a></figure>
  652.  
  653.  
  654.  
  655. <p>Breaking down each component. </p>
  656.  
  657.  
  658.  
  659. <ul><li><strong>IPad App (Swift)</strong>: Why? Because Javascript annoys me. <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Actually creating apps is very easy and swift is a lovely language. If you haven&#8217;t coded in it and want to, I recommend the <a rel="noreferrer noopener" href="https://www.appbrewery.co/p/ios13-app-development-lessons" data-type="URL" data-id="https://www.appbrewery.co/p/ios13-app-development-lessons" target="_blank">App Brewery</a> training.</li><li><strong>Orchestration Layer (Python/Flask)</strong>:  My focus was on speed and python has all the modules to easily interact with everything else. Perfect for backend demo.</li><li><strong>Watson Assistant</strong>: This is to handle the human interaction. Also to pull out the logical components and actors mentioned in the conversation. </li><li><strong>Equation Generator</strong>: When the user asks to solve the problem, it translates the Watson Assistant results to an equation that <a rel="noreferrer noopener" href="https://qiskit.org" data-type="URL" data-id="https://qiskit.org" target="_blank">Qiskit</a> can run on.</li><li><strong>Quantum Engine</strong>: This is just a helper class I created to build and run the quantum circuit, and then hand the results off to the reporting NLP. Of course what comes back is all 1&#8217;s and 0&#8217;s. </li><li><strong>Reporting NLP</strong>: This takes the result of the quantum computer and converts it into meaningful report to the human.  This is then handed back to the iPad App to render. </li></ul>
  660.  
  661.  
  662.  
  663. <p>All this was built and running in a day. It&#8217;s not because I&#8217;m awesome <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> but that the technology has moved forward so much that much of the heavy lifting is handled for you. </p>
  664.  
  665.  
  666.  
  667. <p>I&#8217;m not going to release the code (if you want some code, why not try <a rel="noreferrer noopener" href="https://github.com/sodoherty-ai/macpong" data-type="URL" data-id="https://github.com/sodoherty-ai/macpong" target="_blank">pong</a>?  I wrote over the weekend). I will go over some of the annoyances that might help others. But first a demo. </p>
  668.  
  669.  
  670.  
  671. <figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
  672. <div class="jetpack-video-wrapper"><iframe loading="lazy" class="youtube-player" width="809" height="456" src="https://www.youtube.com/embed/5HjsQR2deD8?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=en-US&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe></div>
  673. </div><figcaption>This is a live demo. Nothing is simulated.</figcaption></figure>
  674.  
  675.  
  676.  
  677. <h2 class="wp-block-heading">Watson Assistant</h2>
  678.  
  679.  
  680.  
  681. <p>This was the easiest and most trivial to set up. Just three intents and one entity. The intents detect if two people should be considered friendly or unfriendly. The names of the two people is picked up by the entities. The last intent just triggers the solve process.</p>
  682.  
  683.  
  684.  
  685. <figure class="wp-block-image size-large"><a href="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/03/intents.png?ssl=1"><img loading="lazy" decoding="async" width="809" height="276" data-attachment-id="3402" data-permalink="https://sodoherty.ai/2021/03/09/creating-a-quantum-computer-chatbot/intents/" data-orig-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/03/intents.png?fit=1150%2C392&amp;ssl=1" data-orig-size="1150,392" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="intents" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/03/intents.png?fit=300%2C102&amp;ssl=1" data-large-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/03/intents.png?fit=809%2C276&amp;ssl=1" src="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/03/intents.png?resize=809%2C276&#038;ssl=1" alt="" class="wp-image-3402" srcset="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/03/intents.png?resize=1024%2C349&amp;ssl=1 1024w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/03/intents.png?resize=300%2C102&amp;ssl=1 300w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/03/intents.png?resize=768%2C262&amp;ssl=1 768w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/03/intents.png?resize=842%2C287&amp;ssl=1 842w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/03/intents.png?w=1150&amp;ssl=1 1150w" sizes="(max-width: 809px) 100vw, 809px" data-recalc-dims="1" /></a></figure>
  686.  
  687.  
  688.  
  689. <h2 class="wp-block-heading">Equation Generator</h2>
  690.  
  691.  
  692.  
  693. <p>This is a lot less exciting than it sounds. When sending a formula to qiskit it needs to take it in a format like so:</p>
  694.  
  695.  
  696.  
  697. <pre class="wp-block-code"><code>((A ^ B) &amp; (C &amp; D) &amp; ~(D &amp; A))</code></pre>
  698.  
  699.  
  700.  
  701. <p>Which is something like <em>&#8220;Bob hates Jane, Mike likes Anna, Mike and Bob don&#8217;t get on&#8221;</em> in normal human speech. </p>
  702.  
  703.  
  704.  
  705. <p>Each single letter has to equate to each person mentioned. So those have to be kept track of as well as the relationships to build this.</p>
  706.  
  707.  
  708.  
  709. <h2 class="wp-block-heading">Quantum Computing</h2>
  710.  
  711.  
  712.  
  713. <p>So Qiskit literally holds your hand for most of this. It&#8217;s a fun API. If you want to start off learning Quantum Computing I strongly recommend &#8220;<a rel="noreferrer noopener" href="https://learning.oreilly.com/library/view/learn-quantum-computing/9781838981006/" data-type="URL" data-id="https://learning.oreilly.com/library/view/learn-quantum-computing/9781838981006/" target="_blank">Learn Quantum Computing with Python and IBM Quantum Experience</a>&#8220;. It focuses from a developer perspective, making it easier to start working through the math later. </p>
  714.  
  715.  
  716.  
  717. <p>To show how simple it is, Qiskit has a helper class called an <a rel="noreferrer noopener" href="https://qiskit.org/textbook/ch-algorithms/grover.html" data-type="URL" data-id="https://qiskit.org/textbook/ch-algorithms/grover.html" target="_blank">Oracle</a>. This is literally all the code to build and run the circuit. </p>
  718.  
  719.  
  720.  
  721. <pre class="wp-block-code"><code># example expression
  722. expression = '((A ^ B) &amp; (C &amp; D) &amp; ~(D &amp; C))'
  723.  
  724. oracle = LogicalExpressionOracle(expression)
  725. quantum_circuit = oracle.construct_circuit()
  726.  
  727. quantum_instance = QuantumInstance(BasicAer.get_backend(quantum_computer), shots=2048)
  728.  
  729. grover = Grover(oracle)
  730. result = grover.run(quantum_instance)</code></pre>
  731.  
  732.  
  733.  
  734. <p>What you get back is mostly 1&#8217;s and 0&#8217;s. You can also generate graphs from the helper class, but they tend to be more for the Quantum Engineer. </p>
  735.  
  736.  
  737.  
  738. <h2 class="wp-block-heading">Reporting</h2>
  739.  
  740.  
  741.  
  742. <p>I used the report generated by Qiskit. But as the results are all 0/1 and backwards. I translate them out to the ABCD&#8230; and then added a legend to the report. That was all straight forward.</p>
  743.  
  744.  
  745.  
  746. <figure class="wp-block-image size-large"><a href="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/03/Screen-Shot-2021-03-09-at-12.11.44.png?ssl=1"><img loading="lazy" decoding="async" width="809" height="586" data-attachment-id="3420" data-permalink="https://sodoherty.ai/2021/03/09/creating-a-quantum-computer-chatbot/screen-shot-2021-03-09-at-12-11-44/" data-orig-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/03/Screen-Shot-2021-03-09-at-12.11.44.png?fit=1076%2C780&amp;ssl=1" data-orig-size="1076,780" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Screen-Shot-2021-03-09-at-12.11.44" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/03/Screen-Shot-2021-03-09-at-12.11.44.png?fit=300%2C217&amp;ssl=1" data-large-file="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/03/Screen-Shot-2021-03-09-at-12.11.44.png?fit=809%2C586&amp;ssl=1" src="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/03/Screen-Shot-2021-03-09-at-12.11.44.png?resize=809%2C586&#038;ssl=1" alt="" class="wp-image-3420" srcset="https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/03/Screen-Shot-2021-03-09-at-12.11.44.png?resize=1024%2C742&amp;ssl=1 1024w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/03/Screen-Shot-2021-03-09-at-12.11.44.png?resize=300%2C217&amp;ssl=1 300w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/03/Screen-Shot-2021-03-09-at-12.11.44.png?resize=768%2C557&amp;ssl=1 768w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/03/Screen-Shot-2021-03-09-at-12.11.44.png?resize=842%2C610&amp;ssl=1 842w, https://i0.wp.com/sodoherty.ai/wp-content/uploads/2021/03/Screen-Shot-2021-03-09-at-12.11.44.png?w=1076&amp;ssl=1 1076w" sizes="(max-width: 809px) 100vw, 809px" data-recalc-dims="1" /></a></figure>
  747.  
  748.  
  749.  
  750. <p>The tricky bit came in sending the image back to the iPad app. To do this I converted the image to base64 like so (Using OpenCV):</p>
  751.  
  752.  
  753.  
  754. <pre class="wp-block-code"><code>def imageToBase64(img):
  755.    b = base64.b64encode(cv2.imencode('.png', img)&#91;1]).decode()
  756.    return f'{b}'</code></pre>
  757.  
  758.  
  759.  
  760. <p>On the Swift side of things you can convert the base64 string back to an image like so. </p>
  761.  
  762.  
  763.  
  764. <pre class="wp-block-code"><code>func base64ToImage(_ base64Text: String) -&gt; UIImage {
  765.    let imageData = Data(base64Encoded: base64Text)
  766.    let image = UIImage(data: imageData!)
  767.    return image!
  768. }</code></pre>
  769.  
  770.  
  771.  
  772. <p>Getting it to render the image in a UIViewTable was messy. I ended up creating a custom UIViewTableCell. This also allowed to make it feel more chat-botty. </p>
  773.  
  774.  
  775.  
  776. <p>When I get around to cleaning up the code I&#8217;ll release and link here.</p>
  777.  
  778.  
  779.  
  780. <h2 class="wp-block-heading">In closing&#8230; </h2>
  781.  
  782.  
  783.  
  784. <p>While this was a fun distraction, it&#8217;s unlikely to be anything beyond a simple demo. There already exists <a rel="noreferrer noopener" href="https://www.ibm.com/cloud/decision-optimization-for-watson-studio" data-type="URL" data-id="https://www.ibm.com/cloud/decision-optimization-for-watson-studio" target="_blank">complex decision optimization</a> that can handle human interaction quite well. </p>
  785.  
  786.  
  787.  
  788. <p>But the field of quantum computing is changing rapidly. So it&#8217;s good to get on it early. <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </p>
  789. ]]></content:encoded>
  790. <wfw:commentRss>https://sodoherty.ai/2021/03/09/creating-a-quantum-computer-chatbot/feed/</wfw:commentRss>
  791. <slash:comments>1</slash:comments>
  792. <post-id xmlns="com-wordpress:feed-additions:1">3390</post-id> </item>
  793. </channel>
  794. </rss>
  795.  

If you would like to create a banner that links to this page (i.e. this validation result), do the following:

  1. Download the "valid RSS" banner.

  2. Upload the image to your own server. (This step is important. Please do not link directly to the image on this server.)

  3. Add this HTML to your page (change the image src attribute if necessary):

If you would like to create a text link instead, here is the URL you can use:

http://www.feedvalidator.org/check.cgi?url=http%3A//sodoherty.com/feed/

Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda