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://xomino.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" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
  9. >
  10.  
  11. <channel>
  12. <title>Xomino</title>
  13. <atom:link href="https://xomino.com/feed/" rel="self" type="application/rss+xml" />
  14. <link>https://xomino.com</link>
  15. <description>Looking at emerging technology, mostly O365 right now</description>
  16. <lastBuildDate>Wed, 05 Jul 2017 11:45:34 +0000</lastBuildDate>
  17. <language>en</language>
  18. <sy:updatePeriod>hourly</sy:updatePeriod>
  19. <sy:updateFrequency>1</sy:updateFrequency>
  20. <generator>http://wordpress.com/</generator>
  21. <cloud domain='xomino.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
  22. <image>
  23. <url>https://secure.gravatar.com/blavatar/83b5bd662cf40eab40d96aa8eb752093?s=96&#038;d=https%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
  24. <title>Xomino</title>
  25. <link>https://xomino.com</link>
  26. </image>
  27. <atom:link rel="search" type="application/opensearchdescription+xml" href="https://xomino.com/osd.xml" title="Xomino" />
  28. <atom:link rel='hub' href='https://xomino.com/?pushpress=hub'/>
  29. <item>
  30. <title>Office Add-Ins: Working with Tables in Word. Part 1: Creation</title>
  31. <link>https://xomino.com/2017/05/30/office-add-ins-working-with-tables-in-word-part-1-creation/</link>
  32. <comments>https://xomino.com/2017/05/30/office-add-ins-working-with-tables-in-word-part-1-creation/#respond</comments>
  33. <pubDate>Tue, 30 May 2017 18:18:57 +0000</pubDate>
  34. <dc:creator><![CDATA[Marky Roden]]></dc:creator>
  35. <category><![CDATA[JavaScript]]></category>
  36. <category><![CDATA[Office 365]]></category>
  37. <category><![CDATA[Office Add-In]]></category>
  38. <category><![CDATA[Office 365 Add-In]]></category>
  39. <category><![CDATA[PSC]]></category>
  40.  
  41. <guid isPermaLink="false">http://xomino.com/?p=3851</guid>
  42. <description><![CDATA[In this article I will show how the Word JavaScript API can be utilized to add tables to your word document using an Office Add-In. This will be a multi part blog post as there are a lot of nuances and interesting ways in which you can play with tables in Word. Introduction In previous articles I &#8230; <a href="https://xomino.com/2017/05/30/office-add-ins-working-with-tables-in-word-part-1-creation/" class="more-link">Continue reading <span class="screen-reader-text">Office Add-Ins: Working with Tables in Word. Part 1:&#160;Creation</span></a><img alt="" border="0" src="https://pixel.wp.com/b.gif?host=xomino.com&#038;blog=31801104&#038;post=3851&#038;subd=xomino&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
  43. <content:encoded><![CDATA[<p>In this article I will show how the Word JavaScript API can be utilized to add tables to your word document using an Office Add-In. This will be a multi part blog post as there are a lot of nuances and interesting ways in which you can play with tables in Word.</p>
  44. <p><strong>Introduction</strong></p>
  45. <p>In previous articles I have written about how to interact with a Word document to <a href="https://xomino.com/2016/08/28/using-an-office-add-in-to-search-and-replace-data-in-a-word-document/" target="_blank" rel="noopener noreferrer">search and replace</a> and even save the word document to Salesforce. Going back to a more basic level we are going to look at how to build tables in word.</p>
  46. <p>We will be using the new <a href="https://www.microsoft.com/en-us/garage/project-details.aspx?project=script-lab" target="_blank" rel="noopener noreferrer">Script Lab </a> which is a new Playground Add-In which can be used for development and general tinkering with Add-Ins. This and other articles on the topic are for demonstration purposes and are not hardened for production use.</p>
  47. <p><strong>The reference</strong></p>
  48. <p>For more information on Tables and how what methods/properties are available check out the documentation page &#8211; <a href="https://dev.office.com/reference/add-ins/word/table" target="_blank" rel="noopener noreferrer">Table Object (JavaScript API for Word)</a></p>
  49. <p><strong>Creating a table </strong></p>
  50. <p>At the most basic level a table is created by instantiating the table object and adding values to it.</p>
  51. <p>insertTable(rowCount: number, columnCount: number, insertLocation: string, values: string[][])</p>
  52. <p>This can be done from a number of different parents:</p>
  53. <ul>
  54. <li>The body</li>
  55. <li>A range</li>
  56. <li>A contentControl</li>
  57. <li>A paragraph</li>
  58. </ul>
  59. <p>The method requires the following:</p>
  60. <ul>
  61. <li>rowCount &#8211; a number</li>
  62. <li>columnCount &#8211; a number</li>
  63. <li>insertLocation &#8211; Depends on parent &#8211; either (body: Start/End/Replace) or (range: Before/After)</li>
  64. <li>values: 2 dimentional Array &#8211; [[&#8220;This is&#8221;, &#8220;a table&#8221;], [&#8220;this is&#8221;, &#8220;a new row&#8221;]]</li>
  65. </ul>
  66. <p>Using these parameters we can create a table from within the Script lab using the following code:</p>
  67. <pre class="brush: jscript; title: ; notranslate">
  68. $(&quot;#run&quot;).click(run);
  69.  
  70. async function run() {
  71.    try {
  72.        await Word.run(async (context) =&gt; {
  73.  
  74.            var body = context.document.body;
  75.            var range = context.document.getSelection();
  76.            var myArray = [[&quot;a&quot;, &quot;b&quot;], [&quot;c&quot;, &quot;d&quot;]];
  77.            var table = range.insertTable(2, 2, &quot;Before&quot;, myArray);            
  78.  
  79.            // Synchronize the document state by executing the queued commands,
  80.            // and return a promise to indicate task completion.
  81.                await context.sync().then(function () {
  82.                    console.log('Table added before the start of the range.');
  83.                });;
  84.        });
  85.    }
  86.    catch (error) {
  87.        OfficeHelpers.UI.notify(error);
  88.        OfficeHelpers.Utilities.log(error);
  89.    }
  90. }
  91. </pre>
  92. <p>&nbsp;</p>
  93. <p><a href="https://xomino.com/2017/05/30/office-add-ins-working-with-tables-in-word-part-1-creation/t1-2/#main" rel="attachment wp-att-3853"><img data-attachment-id="3853" data-permalink="https://xomino.com/2017/05/30/office-add-ins-working-with-tables-in-word-part-1-creation/t1-2/#main" data-orig-file="https://xomino.files.wordpress.com/2017/05/t1.png?w=700&#038;h=409" data-orig-size="800,467" 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="t1" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/05/t1.png?w=700&#038;h=409?w=300" data-large-file="https://xomino.files.wordpress.com/2017/05/t1.png?w=700&#038;h=409?w=700" class="aligncenter size-full wp-image-3853" src="https://xomino.files.wordpress.com/2017/05/t1.png?w=700&#038;h=409" alt="" width="700" height="409" srcset="https://xomino.files.wordpress.com/2017/05/t1.png?w=700&amp;h=409 700w, https://xomino.files.wordpress.com/2017/05/t1.png?w=150&amp;h=88 150w, https://xomino.files.wordpress.com/2017/05/t1.png?w=300&amp;h=175 300w, https://xomino.files.wordpress.com/2017/05/t1.png?w=768&amp;h=448 768w, https://xomino.files.wordpress.com/2017/05/t1.png 800w" sizes="(max-width: 700px) 100vw, 700px" /></a></p>
  94. <p>&nbsp;</p>
  95. <p><strong>Conclusion</strong></p>
  96. <p>Using the Script Lab we have seen how we can easily insert a table into a Word document using the Office Add-In API. In future articles we will look at looking for the table we want to modify and then manipulating tables.</p>
  97. <p>&nbsp;</p>
  98. <p>&nbsp;</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/xomino.wordpress.com/3851/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/xomino.wordpress.com/3851/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=xomino.com&#038;blog=31801104&#038;post=3851&#038;subd=xomino&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
  99. <wfw:commentRss>https://xomino.com/2017/05/30/office-add-ins-working-with-tables-in-word-part-1-creation/feed/</wfw:commentRss>
  100. <slash:comments>0</slash:comments>
  101. <media:content url="http://0.gravatar.com/avatar/3857e0587f63bb943797213753361d37?s=96&#38;d=identicon&#38;r=G" medium="image">
  102. <media:title type="html">mdroden</media:title>
  103. </media:content>
  104.  
  105. <media:content url="http://xomino.files.wordpress.com/2017/05/t1.png" medium="image" />
  106. </item>
  107. <item>
  108. <title>Interesting new release &#8211; Istio service mesh microservices management</title>
  109. <link>https://xomino.com/2017/05/24/interesting-new-release-istio-service-mesh-microservices-management/</link>
  110. <comments>https://xomino.com/2017/05/24/interesting-new-release-istio-service-mesh-microservices-management/#respond</comments>
  111. <pubDate>Wed, 24 May 2017 15:37:13 +0000</pubDate>
  112. <dc:creator><![CDATA[Marky Roden]]></dc:creator>
  113. <category><![CDATA[Just Marky]]></category>
  114. <category><![CDATA[Google. IBM]]></category>
  115. <category><![CDATA[Istio]]></category>
  116. <category><![CDATA[PSC]]></category>
  117.  
  118. <guid isPermaLink="false">http://xomino.com/?p=3848</guid>
  119. <description><![CDATA[So this is something which I came across yesterday and was announced this morning &#8211; Istio. https://developer.ibm.com/dwblog/2017/istio/ &#8220;Istio is an open platform for providing a uniform way to integrate microservices, manage traffic flow across microservices, enforce policies and aggregate telemetry data. Istio&#8217;s control plane provides an abstraction layer over the underlying cluster management platform, such &#8230; <a href="https://xomino.com/2017/05/24/interesting-new-release-istio-service-mesh-microservices-management/" class="more-link">Continue reading <span class="screen-reader-text">Interesting new release &#8211; Istio service mesh microservices&#160;management</span></a><img alt="" border="0" src="https://pixel.wp.com/b.gif?host=xomino.com&#038;blog=31801104&#038;post=3848&#038;subd=xomino&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
  120. <content:encoded><![CDATA[<p>So this is something which I came across yesterday and was announced this morning &#8211; Istio.</p>
  121. <p><a href="https://developer.ibm.com/dwblog/2017/istio/" target="_blank" rel="noopener noreferrer">https://developer.ibm.com/dwblog/2017/istio/</a></p>
  122. <p><em>&#8220;Istio is an open platform for providing a uniform way to integrate microservices, manage traffic flow across microservices, enforce policies and aggregate telemetry data. Istio&#8217;s control plane provides an abstraction layer over the underlying cluster management platform, such as Kubernetes, Mesos, etc.&#8221; &#8211; (<a href="https://github.com/istio/istio" target="_blank" rel="noopener noreferrer">Istio on github</a>)</em></p>
  123. <p>So this new project from Google IBM and Lyft creating the ability to manage microservices across disparate data sources and clouds/networks.</p>
  124. <p>There are multiple options when it comes to API architecture like capabilities for data management and reporting, but they are generally based on the premise that you are routing your traffic through the gateway before it goes to the end user. In that manner you can control, monitor and report on all the traffic from one place.</p>
  125. <p>What Istio gives you the ability to do is to insert the tool and processes which you gain from an managed gateway but distribute it as a meshed network behind the microservice feed. So instead of feeding through one central point, you can distribute the gateway architecture at the source.</p>
  126. <p>Istio was created to be cloud neutral and although it has the backing of IBM and Google there should be no reason why it cannot be used with services created in AWS or Azure.</p>
  127. <p>For more information follow the new <a href="https://twitter.com/IstioMesh" target="_blank" rel="noopener noreferrer">@istiomesh</a> account on twitter.</p>
  128. <p>I am really curious about this one and will be watching with great anticipation.</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/xomino.wordpress.com/3848/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/xomino.wordpress.com/3848/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=xomino.com&#038;blog=31801104&#038;post=3848&#038;subd=xomino&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
  129. <wfw:commentRss>https://xomino.com/2017/05/24/interesting-new-release-istio-service-mesh-microservices-management/feed/</wfw:commentRss>
  130. <slash:comments>0</slash:comments>
  131. <media:content url="http://0.gravatar.com/avatar/3857e0587f63bb943797213753361d37?s=96&#38;d=identicon&#38;r=G" medium="image">
  132. <media:title type="html">mdroden</media:title>
  133. </media:content>
  134. </item>
  135. <item>
  136. <title>Office Add-Ins &#8211; JavaScript control over the Content Control lock in a Word document</title>
  137. <link>https://xomino.com/2017/03/29/office-add-ins-javascript-control-over-the-content-control-lock-in-a-word-document/</link>
  138. <comments>https://xomino.com/2017/03/29/office-add-ins-javascript-control-over-the-content-control-lock-in-a-word-document/#respond</comments>
  139. <pubDate>Thu, 30 Mar 2017 01:30:52 +0000</pubDate>
  140. <dc:creator><![CDATA[Marky Roden]]></dc:creator>
  141. <category><![CDATA[Office Add-In]]></category>
  142. <category><![CDATA[JavaScript]]></category>
  143. <category><![CDATA[PSC]]></category>
  144.  
  145. <guid isPermaLink="false">http://xomino.com/?p=3843</guid>
  146. <description><![CDATA[In this article I will show how easy it is to programmatically lock and release the lock on a content control in a word document. This is very helpful when you are populating regions of a document but do not want users to mess with the format of the contents. Introduction In the Word 1.3 release &#8230; <a href="https://xomino.com/2017/03/29/office-add-ins-javascript-control-over-the-content-control-lock-in-a-word-document/" class="more-link">Continue reading <span class="screen-reader-text">Office Add-Ins &#8211; JavaScript control over the Content Control lock in a Word&#160;document</span></a><img alt="" border="0" src="https://pixel.wp.com/b.gif?host=xomino.com&#038;blog=31801104&#038;post=3843&#038;subd=xomino&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
  147. <content:encoded><![CDATA[<p>In this article I will show how easy it is to programmatically lock and release the lock on a content control in a word document. This is very helpful when you are populating regions of a document but do not want users to mess with the format of the contents.</p>
  148. <p><strong>Introduction</strong></p>
  149. <p>In the Word 1.3 release of the office.js model, Microsoft release the new &#8220;cannotEdit&#8221; property of a content control. This is a get and settable property. More information on the properties available are found here in the documentation</p>
  150. <p><a href="https://github.com/OfficeDev/office-js-docs/blob/WordJs_1.3_Openspec/reference/word/contentcontrol.md" target="_blank">https://github.com/OfficeDev/office-js-docs/blob/WordJs_1.3_Openspec/reference/word/contentcontrol.md</a></p>
  151. <p><strong>Unlocking a content control for editing</strong></p>
  152. <p>Here is my locked content control called &#8220;Checklist&#8221;. I am going to use the code to get it by Tagname and then unlock it.</p>
  153. <p><a href="https://xomino.com/?attachment_id=3845#main" rel="attachment wp-att-3845"><img data-attachment-id="3845" data-permalink="https://xomino.com/2017/03/29/office-add-ins-javascript-control-over-the-content-control-lock-in-a-word-document/ch1-3/#main" data-orig-file="https://xomino.files.wordpress.com/2017/03/ch1.png?w=700&#038;h=513" data-orig-size="702,514" 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="ch1" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/03/ch1.png?w=700&#038;h=513?w=300" data-large-file="https://xomino.files.wordpress.com/2017/03/ch1.png?w=700&#038;h=513?w=700" class="aligncenter size-full wp-image-3845" src="https://xomino.files.wordpress.com/2017/03/ch1.png?w=700&#038;h=513" alt="" width="700" height="513" srcset="https://xomino.files.wordpress.com/2017/03/ch1.png?w=700&amp;h=513 700w, https://xomino.files.wordpress.com/2017/03/ch1.png?w=150&amp;h=110 150w, https://xomino.files.wordpress.com/2017/03/ch1.png?w=300&amp;h=220 300w, https://xomino.files.wordpress.com/2017/03/ch1.png 702w" sizes="(max-width: 700px) 100vw, 700px" /></a></p>
  154. <p>In your JavaScript code when you are about to update the control you need to execute the following as a minimum. It seems like a lot of code but it is due to the Promised based architecture used for the Office Add-In APIs.</p>
  155. <pre class="brush: jscript; title: ; notranslate">
  156.    Word.run(function (context) {
  157.  
  158.        var contentControlsWithTag = context.document.contentControls.getByTag('Checklist');
  159.        // Queue a command to load the tag property for all of content controls.
  160.        context.load(contentControlsWithTag, 'tag');
  161.  
  162.        // Synchronize the document state by executing the queued commands,
  163.        // and return a promise to indicate task completion.
  164.        return context.sync().then(function () {
  165.            if (contentControlsWithTag.items.length === 0) {
  166.                console.log('No content control found.');
  167.            }
  168.            else {
  169.                return context.sync()
  170.                    .then(function () {
  171.                        //the contentControlsWithTag is always returned as an array of items
  172.                        contentControlsWithTag.items[0].cannotEdit = false;
  173.                        contentControlsWithTag.items[0].insertHtml(&quot;&lt;b&gt;Hello World&lt;/b&gt;&quot;, 'Replace');
  174.                    });
  175.            }
  176.        });
  177.    })
  178.    .catch(function (error) {
  179.        console.log('Error: ' + JSON.stringify(error));
  180.        if (error instanceof OfficeExtension.Error) {
  181.            console.log('Debug info: ' + JSON.stringify(error.debugInfo));
  182.        }
  183.    });    
  184.  
  185. </pre>
  186. <p><a href="https://xomino.com/?attachment_id=3844#main" rel="attachment wp-att-3844"><img data-attachment-id="3844" data-permalink="https://xomino.com/2017/03/29/office-add-ins-javascript-control-over-the-content-control-lock-in-a-word-document/ch2-2/#main" data-orig-file="https://xomino.files.wordpress.com/2017/03/ch2.png?w=700" data-orig-size="613,475" 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="ch2" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/03/ch2.png?w=700?w=300" data-large-file="https://xomino.files.wordpress.com/2017/03/ch2.png?w=700?w=613" class="aligncenter size-full wp-image-3844" src="https://xomino.files.wordpress.com/2017/03/ch2.png?w=700" alt="" srcset="https://xomino.files.wordpress.com/2017/03/ch2.png 613w, https://xomino.files.wordpress.com/2017/03/ch2.png?w=150 150w, https://xomino.files.wordpress.com/2017/03/ch2.png?w=300 300w" sizes="(max-width: 613px) 100vw, 613px"   /></a></p>
  187. <p>Once you have unlocked the control your code can be inserted and the control is editable. In a real application you just have to make sure you lock averything again with</p>
  188. <pre class="brush: jscript; title: ; notranslate">
  189.   contentControlsWithTag.items[0].cannotEdit = false;
  190.   contentControlsWithTag.items[0].insertHtml(&quot;&lt;b&gt;Hello World&lt;/b&gt;&quot;, 'Replace');
  191.   contentControlsWithTag.items[0].cannotEdit = true
  192. </pre>
  193. <p><strong>Conclusion</strong></p>
  194. <p>Nice, simple to use locking control. Yes the users cant unlock this manually and mess with the document, but if they are going there, then it is their own fault. This way no changes can be made &#8220;by mistake&#8221;.</p>
  195. <p>&nbsp;</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/xomino.wordpress.com/3843/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/xomino.wordpress.com/3843/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=xomino.com&#038;blog=31801104&#038;post=3843&#038;subd=xomino&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
  196. <wfw:commentRss>https://xomino.com/2017/03/29/office-add-ins-javascript-control-over-the-content-control-lock-in-a-word-document/feed/</wfw:commentRss>
  197. <slash:comments>0</slash:comments>
  198. <media:content url="http://0.gravatar.com/avatar/3857e0587f63bb943797213753361d37?s=96&#38;d=identicon&#38;r=G" medium="image">
  199. <media:title type="html">mdroden</media:title>
  200. </media:content>
  201.  
  202. <media:content url="http://xomino.files.wordpress.com/2017/03/ch1.png" medium="image" />
  203.  
  204. <media:content url="http://xomino.files.wordpress.com/2017/03/ch2.png" medium="image" />
  205. </item>
  206. <item>
  207. <title>Calling an external service from your chat bot</title>
  208. <link>https://xomino.com/2017/03/19/calling-an-external-service-from-your-chat-bot/</link>
  209. <comments>https://xomino.com/2017/03/19/calling-an-external-service-from-your-chat-bot/#respond</comments>
  210. <pubDate>Mon, 20 Mar 2017 01:49:05 +0000</pubDate>
  211. <dc:creator><![CDATA[Marky Roden]]></dc:creator>
  212. <category><![CDATA[Azure]]></category>
  213. <category><![CDATA[Bot Framework]]></category>
  214. <category><![CDATA[PSC]]></category>
  215.  
  216. <guid isPermaLink="false">http://xomino.com/?p=3816</guid>
  217. <description><![CDATA[In this article I will show to how integrate simple commands (intents) into your bot to then integrate with an external service. Introduction In previous articles we have looked at how to create a sample Azure bot and in this article we will be looking into how &#8220;intents&#8221; work. The microsoft documentation on dialogIntents can be found here (for the &#8230; <a href="https://xomino.com/2017/03/19/calling-an-external-service-from-your-chat-bot/" class="more-link">Continue reading <span class="screen-reader-text">Calling an external service from your chat&#160;bot</span></a><img alt="" border="0" src="https://pixel.wp.com/b.gif?host=xomino.com&#038;blog=31801104&#038;post=3816&#038;subd=xomino&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
  218. <content:encoded><![CDATA[<p>In this article I will show to how integrate simple commands (intents) into your bot to then integrate with an external service.</p>
  219. <p><strong>Introduction</strong></p>
  220. <p>In previous articles we have looked at how to create a <a href="https://xomino.com/2017/02/22/how-to-create-a-sample-nodejs-bot-which-utilizes-azure-functions-in-15-minutes/" target="_blank">sample Azure bot </a>and in this article we will be looking into how &#8220;intents&#8221; work. The microsoft documentation on <a href="https://docs.botframework.com/en-us/node/builder/chat/IntentDialog/" target="_blank">dialogIntents can be found here</a> (for the node bot).</p>
  221. <p><strong>URL Shortener</strong></p>
  222. <p>In an effort to learn more about running a node service in Azure, Azure SQL and to help brand some of my tweets a little better I created my own little URL shortening service running at <a href="https://marky.co" target="_blank">https://marky.co</a>. The details are not so important for this article but I took the Coligo.io article on create a <a href="https://coligo.io/create-url-shortener-with-node-express-mongo/" target="_blank">node url shortner with Mongo</a> and modified it to work with Azure SQL instead of Mongo. The service is called very simply by POSTing the appropriate parameters at the appropriate service on my website. What is returned is a shortened URL. Simple process really.</p>
  223. <p><strong>IntentDialog</strong></p>
  224. <p>&#8220;<em>The <a href="https://docs.botframework.com/en-us/node/builder/chat-reference/classes/_botbuilder_d_.intentdialog.html">IntentDialog</a> class lets you listen for the user to say a specific keyword or phrase. We call this intent detection because you are attempting to determine what the user is intending to do. IntentDialogs are useful for building more open ended bots that support natural language style understanding.</em>&#8221;</p>
  225. <p>So in a sense I am looking at this as an opportunity to treat my bot as a CLI client for my own laziness. While the &#8220;intent&#8221; is to allow for natural language understanding I want to look at it as an opportunity to make my bot into a monkey butler of sorts. Do my work for me, I am lazy (or productive).</p>
  226. <p>I am not a fan of CLI in the programming world. Not being a historically Unix kinda guy, never had to and I prefer a point and click tooling approach to things like git and Azure CLI. That said, this is not programming &#8211; this is bots <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
  227. <p><strong>Setting up your dialogIntent to listen for -sh </strong></p>
  228. <p>The following code snippets is the basis for my simple bot connector &#8211; listen for the &#8220;-sh &#8221; command then take the following argument and process it.</p>
  229. <p>The http module is used for the communication with the shortener service. Once the response is returned from the service the shortened URL is sent back to the user. The process is simple and the intent of this is just to show an example of how to use a command in a bot to make it do something.</p>
  230. <pre class="brush: jscript; title: ; notranslate">
  231. &quot;use strict&quot;;
  232. var builder = require(&quot;botbuilder&quot;);
  233. var botbuilder_azure = require(&quot;botbuilder-azure&quot;);
  234. var azure = require('azure-storage');
  235.  
  236. var http = require('http');
  237.  
  238. var data = &quot;&quot;;
  239.  
  240. var options = {
  241. host: 'marky.co',
  242. port: '80',
  243. path: thepath,
  244. method: 'POST',
  245. headers: {
  246. 'secret': theSercretKeyWhichStopsBots,
  247. 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8'
  248. }
  249. };
  250.  
  251. var dotenv = require('dotenv').config();
  252.  
  253. var useEmulator = (process.env.NODE_ENV == 'development');
  254.  
  255. var connector = useEmulator ? new builder.ChatConnector({
  256. appId: process.env['MicrosoftAppId'],
  257. appPassword: process.env['MicrosoftAppPassword']
  258. }) : new botbuilder_azure.BotServiceConnector({
  259. appId: process.env['MicrosoftAppId'],
  260. appPassword: process.env['MicrosoftAppPassword'],
  261. stateEndpoint: process.env['BotStateEndpoint'],
  262. openIdMetadata: process.env['BotOpenIdMetadata']
  263. });
  264.  
  265. var bot = new builder.UniversalBot(connector);
  266.  
  267. var intents = new builder.IntentDialog();
  268. bot.dialog('/', intents);
  269.  
  270. intents.matches(/-sh /i, function (session, args) {
  271. var input = args.matched.input
  272. //input will be in the format &quot;-sh http://www.xomino.com&quot;
  273. //better validation would probably be appropriate at some point
  274.  
  275. //split the input into &quot;-sh&quot; and theURL
  276. data=&quot;url=&quot;+input.split(&quot; &quot;)[1];
  277. //match the POST length to the incoming URL
  278. options.headers['Content-Length'] = data.length
  279. session.sendTyping(); //...typing
  280.  
  281. var req = http.request(options, function(res) {
  282. res.setEncoding('utf8');
  283. res.on('data', function (chunk) {
  284. session.send('Your short URL is: '+JSON.parse(chunk).shortUrl);
  285. });
  286. });
  287.  
  288. req.on('error', function(e) {
  289. console.log('problem with request: ' + e.message);
  290. });
  291.  
  292. // write data to request body
  293. req.write(data);
  294. req.end();
  295. });
  296.  
  297. intents.onDefault(function (session, args, next) {
  298. session.send(&quot;I'm sorry &quot;+session.dialogData.name+&quot;. I didn't understand.&quot;);
  299. });
  300.  
  301. if (useEmulator) {
  302. var restify = require('restify');
  303. var server = restify.createServer();
  304. server.listen(3978, function() {
  305. console.log('test bot endpont at http://localhost:3978/api/messages');
  306. });
  307. server.post('/api/messages', connector.listen());    
  308. } else {
  309. module.exports = { default: connector.listen() }
  310. }
  311.  
  312. </pre>
  313. <p>&nbsp;</p>
  314. <p>Using this code I can start to use my bot as a URL shortener rather than having to go to my website and post the URL into a form.</p>
  315. <p><a href="https://xomino.com/2017/03/19/calling-an-external-service-from-your-chat-bot/b7-7/#main" rel="attachment wp-att-3817"><img data-attachment-id="3817" data-permalink="https://xomino.com/2017/03/19/calling-an-external-service-from-your-chat-bot/b7-7/#main" data-orig-file="https://xomino.files.wordpress.com/2017/03/b7.png?w=700&#038;h=427" data-orig-size="800,488" 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="b7" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/03/b7.png?w=700&#038;h=427?w=300" data-large-file="https://xomino.files.wordpress.com/2017/03/b7.png?w=700&#038;h=427?w=700" class="aligncenter size-full wp-image-3817" src="https://xomino.files.wordpress.com/2017/03/b7.png?w=700&#038;h=427" alt="" width="700" height="427" srcset="https://xomino.files.wordpress.com/2017/03/b7.png?w=700&amp;h=427 700w, https://xomino.files.wordpress.com/2017/03/b7.png?w=150&amp;h=92 150w, https://xomino.files.wordpress.com/2017/03/b7.png?w=300&amp;h=183 300w, https://xomino.files.wordpress.com/2017/03/b7.png?w=768&amp;h=468 768w, https://xomino.files.wordpress.com/2017/03/b7.png 800w" sizes="(max-width: 700px) 100vw, 700px" /></a></p>
  316. <p>Note &#8211; in case you were curious this does not work in the Skype client itself because a URL is automagically transformed into something else for preview. Ah well that&#8217;s not quite the point really <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
  317. <p><a href="https://xomino.com/2017/03/19/calling-an-external-service-from-your-chat-bot/b8-6/#main" rel="attachment wp-att-3818"><img data-attachment-id="3818" data-permalink="https://xomino.com/2017/03/19/calling-an-external-service-from-your-chat-bot/b8-6/#main" data-orig-file="https://xomino.files.wordpress.com/2017/03/b8.png?w=700" data-orig-size="608,274" 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="b8" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/03/b8.png?w=700?w=300" data-large-file="https://xomino.files.wordpress.com/2017/03/b8.png?w=700?w=608" class="aligncenter size-full wp-image-3818" src="https://xomino.files.wordpress.com/2017/03/b8.png?w=700" alt="" srcset="https://xomino.files.wordpress.com/2017/03/b8.png 608w, https://xomino.files.wordpress.com/2017/03/b8.png?w=150 150w, https://xomino.files.wordpress.com/2017/03/b8.png?w=300 300w" sizes="(max-width: 608px) 100vw, 608px"   /></a></p>
  318. <p><strong>Conclusion</strong></p>
  319. <p>In this article we have see that using the bot IntentDialog class we are able to listen for predetermined commands which will then allow it to take input, act on that input and return an answer. In this case a URL shortener is a simple application but it would be much more useful if I could securely look into my enterprise and extract information relating to my business&#8230;&#8230;</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/xomino.wordpress.com/3816/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/xomino.wordpress.com/3816/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=xomino.com&#038;blog=31801104&#038;post=3816&#038;subd=xomino&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
  320. <wfw:commentRss>https://xomino.com/2017/03/19/calling-an-external-service-from-your-chat-bot/feed/</wfw:commentRss>
  321. <slash:comments>0</slash:comments>
  322. <media:thumbnail url="https://xomino.files.wordpress.com/2017/03/b7.png" />
  323. <media:content url="http://xomino.files.wordpress.com/2017/03/b7.png" medium="image">
  324. <media:title type="html">b7</media:title>
  325. </media:content>
  326.  
  327. <media:content url="http://0.gravatar.com/avatar/3857e0587f63bb943797213753361d37?s=96&#38;d=identicon&#38;r=G" medium="image">
  328. <media:title type="html">mdroden</media:title>
  329. </media:content>
  330.  
  331. <media:content url="http://xomino.files.wordpress.com/2017/03/b7.png" medium="image" />
  332.  
  333. <media:content url="http://xomino.files.wordpress.com/2017/03/b8.png" medium="image" />
  334. </item>
  335. <item>
  336. <title>NWCJS Meetup: Creating Bots with JavaScript and the Microsoft Bot Framework</title>
  337. <link>https://xomino.com/2017/03/13/nwcjs-meetup-creating-bots-with-javascript-and-the-microsoft-bot-framework/</link>
  338. <comments>https://xomino.com/2017/03/13/nwcjs-meetup-creating-bots-with-javascript-and-the-microsoft-bot-framework/#respond</comments>
  339. <pubDate>Tue, 14 Mar 2017 01:33:50 +0000</pubDate>
  340. <dc:creator><![CDATA[Marky Roden]]></dc:creator>
  341. <category><![CDATA[Bot Framework]]></category>
  342. <category><![CDATA[NWCJS]]></category>
  343. <category><![CDATA[PSC]]></category>
  344.  
  345. <guid isPermaLink="false">http://xomino.com/?p=3823</guid>
  346. <description><![CDATA[Next week’s Northwest Chicago JavaScript meetup (23 March @PSCGroup) features our own Adam Lepley speaking about some of the work he has been doing on the Microsoft Bot Framework. https://www.meetup.com/Northwest-Chicago-JavaScript/events/236993059/ “Bots, they are invading our chat apps, now it’s time to learn to develop your own. Come learn how Microsoft’s Bot Framework enables you to leverage &#8230; <a href="https://xomino.com/2017/03/13/nwcjs-meetup-creating-bots-with-javascript-and-the-microsoft-bot-framework/" class="more-link">Continue reading <span class="screen-reader-text">NWCJS Meetup: Creating Bots with JavaScript and the Microsoft Bot&#160;Framework</span></a><img alt="" border="0" src="https://pixel.wp.com/b.gif?host=xomino.com&#038;blog=31801104&#038;post=3823&#038;subd=xomino&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
  347. <content:encoded><![CDATA[<p>Next week’s Northwest Chicago JavaScript meetup (23 March @PSCGroup) features our own Adam Lepley speaking about some of the work he has been doing on the Microsoft Bot Framework.</p>
  348. <p><a href="https://www.meetup.com/Northwest-Chicago-JavaScript/events/236993059/">https://www.meetup.com/Northwest-Chicago-JavaScript/events/236993059/</a></p>
  349. <p><em>“Bots, they are invading our chat apps, now it’s time to learn to develop your own. Come learn how Microsoft’s Bot Framework enables you to leverage your existing JavaScript skills to create a single bot which can be easily deployed to many channels including Skype, Slack, Facebook Messenger, SMS or embedded into your own site. I’ll also show you how to take it a step further to include natural language processing to elevate your bot’s intelligence. Walk away with tools to build a great bot that can connect with users, wherever they are.”</em></p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/xomino.wordpress.com/3823/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/xomino.wordpress.com/3823/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=xomino.com&#038;blog=31801104&#038;post=3823&#038;subd=xomino&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
  350. <wfw:commentRss>https://xomino.com/2017/03/13/nwcjs-meetup-creating-bots-with-javascript-and-the-microsoft-bot-framework/feed/</wfw:commentRss>
  351. <slash:comments>0</slash:comments>
  352. <media:content url="http://0.gravatar.com/avatar/3857e0587f63bb943797213753361d37?s=96&#38;d=identicon&#38;r=G" medium="image">
  353. <media:title type="html">mdroden</media:title>
  354. </media:content>
  355. </item>
  356. <item>
  357. <title>Setting up the sample Azure bot to work locally with the bot emulator</title>
  358. <link>https://xomino.com/2017/03/12/setting-up-the-sample-azure-bot-to-work-locally-with-the-bot-emulator/</link>
  359. <comments>https://xomino.com/2017/03/12/setting-up-the-sample-azure-bot-to-work-locally-with-the-bot-emulator/#respond</comments>
  360. <pubDate>Mon, 13 Mar 2017 02:27:14 +0000</pubDate>
  361. <dc:creator><![CDATA[Marky Roden]]></dc:creator>
  362. <category><![CDATA[Azure]]></category>
  363. <category><![CDATA[Bot Framework]]></category>
  364. <category><![CDATA[PSC]]></category>
  365.  
  366. <guid isPermaLink="false">http://xomino.com/?p=3808</guid>
  367. <description><![CDATA[In this article I will demonstrate how to configure your local development environment to work with the environmental variables set up within your Azure environment in the sample bot previously discussed, Introduction  In the previous article we looked at how to create a sample azure bot and then how to configure it in VSTS for continuous integration. If you &#8230; <a href="https://xomino.com/2017/03/12/setting-up-the-sample-azure-bot-to-work-locally-with-the-bot-emulator/" class="more-link">Continue reading <span class="screen-reader-text">Setting up the sample Azure bot to work locally with the bot&#160;emulator</span></a><img alt="" border="0" src="https://pixel.wp.com/b.gif?host=xomino.com&#038;blog=31801104&#038;post=3808&#038;subd=xomino&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
  368. <content:encoded><![CDATA[<p>In this article I will demonstrate how to configure your local development environment to work with the environmental variables set up within your Azure environment in the sample bot previously discussed,</p>
  369. <p><strong>Introduction </strong></p>
  370. <p>In the <a href="https://xomino.com/2017/02/22/how-to-create-a-sample-nodejs-bot-which-utilizes-azure-functions-in-15-minutes/" target="_blank">previous article</a> we looked at how to create a sample azure bot and then how to configure it in <a href="https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/" target="_blank">VSTS for continuous integration</a>. If you want to develop with this sample locally you will need to set it up to work with the local bot emulator. (<a href="https://docs.botframework.com/en-us/node/builder/overview/" target="_blank">What is Bot Builder for Node.js and why should I use it?</a>). To be able to do this you will have to configure your local development environment to use the process.env variables which are picked up within the azure runtime environment.</p>
  371. <p><strong>process.env</strong></p>
  372. <p>process.env is how environmental variables are passed into a node development environment. They are especially important when it comes to keeping secret keys secret. We have to make sure that they are not included in the git repository and are not available to the end user. You can learn more about <a href="https://nodejs.org/api/process.html#process_process_env" target="_blank">process.env in the nodejs documentation</a>.</p>
  373. <p><strong>Using dotenv</strong></p>
  374. <p>I like to use the <a href="https://github.com/motdotla/dotenv" target="_blank">dotenv nodejs package </a>to handle local env variables to just read my variables locally from a .env file. If you look at the package.json for the example project, turns out so does microsoft <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
  375. <pre class="brush: jscript; title: ; notranslate">
  376. ...
  377.  &quot;dependencies&quot;: {
  378.    &quot;azure-storage&quot;: &quot;^1.3.2&quot;,
  379.    &quot;botbuilder&quot;: &quot;^3.4.2&quot;,
  380.    &quot;botbuilder-azure&quot;: &quot;0.0.1&quot;,
  381.    &quot;dotenv&quot;: &quot;^4.0.0&quot;
  382.  },
  383. </pre>
  384. <p>When I clone the VSTS repo locally and run it &#8211; nothing seems to happen&#8230;..and that&#8217;s because I do not have any local env variables&#8230;.</p>
  385. <pre class="brush: jscript; title: ; notranslate">
  386.  
  387. var useEmulator = (process.env.NODE_ENV == 'development');
  388.  
  389. ......
  390. if (useEmulator) {
  391.    var restify = require('restify');
  392.    var server = restify.createServer();
  393.    server.listen(3978, function() {
  394.        console.log('test bot endpont at http://localhost:3978/api/messages');
  395.    });
  396.    server.post('/api/messages', connector.listen());    
  397. } else {
  398.    module.exports = { default: connector.listen() }
  399. }
  400.  
  401. </pre>
  402. <p>So we can use a .env file locally in the root of the project and then require it in my code. The .env file contains nothing more that NODE_ENV = &#8216;development&#8217; right now.</p>
  403. <p>NOTE: To make sure this is not pushed up to the repo &#8211; add *.env to your .gitignore file.</p>
  404. <p>We now have a web server running (nice typo MS <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> ).</p>
  405. <p><a href="https://xomino.com/2017/03/12/setting-up-the-sample-azure-bot-to-work-locally-with-the-bot-emulator/b1-15/#main" rel="attachment wp-att-3809"><img data-attachment-id="3809" data-permalink="https://xomino.com/2017/03/12/setting-up-the-sample-azure-bot-to-work-locally-with-the-bot-emulator/b1-15/#main" data-orig-file="https://xomino.files.wordpress.com/2017/03/b1.png?w=700&#038;h=144" data-orig-size="759,156" 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="b1" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/03/b1.png?w=700&#038;h=144?w=300" data-large-file="https://xomino.files.wordpress.com/2017/03/b1.png?w=700&#038;h=144?w=700" class="aligncenter size-full wp-image-3809" src="https://xomino.files.wordpress.com/2017/03/b1.png?w=700&#038;h=144" alt="" width="700" height="144" srcset="https://xomino.files.wordpress.com/2017/03/b1.png?w=700&amp;h=144 700w, https://xomino.files.wordpress.com/2017/03/b1.png?w=150&amp;h=31 150w, https://xomino.files.wordpress.com/2017/03/b1.png?w=300&amp;h=62 300w, https://xomino.files.wordpress.com/2017/03/b1.png 759w" sizes="(max-width: 700px) 100vw, 700px" /></a></p>
  406. <p><strong>Bot Emulator</strong></p>
  407. <p>Once you download and install the <a href="https://docs.botframework.com/en-us/node/builder/overview/" target="_blank">bot emulator you can configure it as per the instructions</a> to run a simple bot without issue. This does not work once you have a bot running in Azure. The sample I created uses multiple Azure services and you can see them being called as the environmental variables in the code.</p>
  408. <p>&nbsp;</p>
  409. <pre class="brush: jscript; title: ; notranslate">
  410. var connector = useEmulator ? new builder.ChatConnector() : new botbuilder_azure.BotServiceConnector({
  411.    appId: process.env['MicrosoftAppId'],
  412.    appPassword: process.env['MicrosoftAppPassword'],
  413.    stateEndpoint: process.env['BotStateEndpoint'],
  414.    openIdMetadata: process.env['BotOpenIdMetadata']
  415. });
  416. </pre>
  417. <p>Unfortunately when I load up the emulator &#8211; as you can see above &#8220;new builder.ChatConnector&#8221; does not pass in any environmental variables. I then get the following error in the console</p>
  418. <p><a href="https://xomino.com/2017/03/12/setting-up-the-sample-azure-bot-to-work-locally-with-the-bot-emulator/b2-12/#main" rel="attachment wp-att-3810"><img data-attachment-id="3810" data-permalink="https://xomino.com/2017/03/12/setting-up-the-sample-azure-bot-to-work-locally-with-the-bot-emulator/b2-12/#main" data-orig-file="https://xomino.files.wordpress.com/2017/03/b2.png?w=700&#038;h=175" data-orig-size="800,200" 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="b2" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/03/b2.png?w=700&#038;h=175?w=300" data-large-file="https://xomino.files.wordpress.com/2017/03/b2.png?w=700&#038;h=175?w=700" class="aligncenter size-full wp-image-3810" src="https://xomino.files.wordpress.com/2017/03/b2.png?w=700&#038;h=175" alt="" width="700" height="175" srcset="https://xomino.files.wordpress.com/2017/03/b2.png?w=700&amp;h=175 700w, https://xomino.files.wordpress.com/2017/03/b2.png?w=150&amp;h=38 150w, https://xomino.files.wordpress.com/2017/03/b2.png?w=300&amp;h=75 300w, https://xomino.files.wordpress.com/2017/03/b2.png?w=768&amp;h=192 768w, https://xomino.files.wordpress.com/2017/03/b2.png 800w" sizes="(max-width: 700px) 100vw, 700px" /></a></p>
  419. <p>The appId is undefined as it is not being passed into the application.</p>
  420. <p>The ApplicationId and secret key were given to you when you created the bot in the first place &#8211; if you didn&#8217;t write them down, you&#8217;re going to be regretting that decision right now&#8230;.</p>
  421. <p>We need to modify the ChatConnector request to pass in the necessary variables, and we also need to add those variables to the .env file.</p>
  422. <p>&nbsp;</p>
  423. <pre class="brush: jscript; title: ; notranslate">
  424. var connector = useEmulator ? new builder.ChatConnector({
  425.        appId: process.env['MicrosoftAppId'], //new param
  426.        appPassword: process.env['MicrosoftAppPassword']  //new param
  427.    }) : new botbuilder_azure.BotServiceConnector({
  428.    appId: process.env['MicrosoftAppId'],
  429.    appPassword: process.env['MicrosoftAppPassword'],
  430.    stateEndpoint: process.env['BotStateEndpoint'],
  431.    openIdMetadata: process.env['BotOpenIdMetadata']
  432. });
  433. </pre>
  434. <p>Refreshing the bot emulator, we start to get somewhere</p>
  435. <p><a href="https://xomino.com/2017/03/12/setting-up-the-sample-azure-bot-to-work-locally-with-the-bot-emulator/b3-10/#main" rel="attachment wp-att-3811"><img data-attachment-id="3811" data-permalink="https://xomino.com/2017/03/12/setting-up-the-sample-azure-bot-to-work-locally-with-the-bot-emulator/b3-10/#main" data-orig-file="https://xomino.files.wordpress.com/2017/03/b3.png?w=700&#038;h=114" data-orig-size="800,130" 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="b3" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/03/b3.png?w=700&#038;h=114?w=300" data-large-file="https://xomino.files.wordpress.com/2017/03/b3.png?w=700&#038;h=114?w=700" class="aligncenter size-full wp-image-3811" src="https://xomino.files.wordpress.com/2017/03/b3.png?w=700&#038;h=114" alt="" width="700" height="114" srcset="https://xomino.files.wordpress.com/2017/03/b3.png?w=700&amp;h=114 700w, https://xomino.files.wordpress.com/2017/03/b3.png?w=150&amp;h=24 150w, https://xomino.files.wordpress.com/2017/03/b3.png?w=300&amp;h=49 300w, https://xomino.files.wordpress.com/2017/03/b3.png?w=768&amp;h=125 768w, https://xomino.files.wordpress.com/2017/03/b3.png 800w" sizes="(max-width: 700px) 100vw, 700px" /></a></p>
  436. <p>and then it dies when we try and talk to it (doh)</p>
  437. <p><a href="https://xomino.com/2017/03/12/setting-up-the-sample-azure-bot-to-work-locally-with-the-bot-emulator/b4-9/#main" rel="attachment wp-att-3812"><img data-attachment-id="3812" data-permalink="https://xomino.com/2017/03/12/setting-up-the-sample-azure-bot-to-work-locally-with-the-bot-emulator/b4-9/#main" data-orig-file="https://xomino.files.wordpress.com/2017/03/b4.png?w=700&#038;h=342" data-orig-size="800,391" 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="b4" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/03/b4.png?w=700&#038;h=342?w=300" data-large-file="https://xomino.files.wordpress.com/2017/03/b4.png?w=700&#038;h=342?w=700" class="aligncenter size-full wp-image-3812" src="https://xomino.files.wordpress.com/2017/03/b4.png?w=700&#038;h=342" alt="" width="700" height="342" srcset="https://xomino.files.wordpress.com/2017/03/b4.png?w=700&amp;h=342 700w, https://xomino.files.wordpress.com/2017/03/b4.png?w=150&amp;h=73 150w, https://xomino.files.wordpress.com/2017/03/b4.png?w=300&amp;h=147 300w, https://xomino.files.wordpress.com/2017/03/b4.png?w=768&amp;h=375 768w, https://xomino.files.wordpress.com/2017/03/b4.png 800w" sizes="(max-width: 700px) 100vw, 700px" /></a></p>
  438. <p><strong>Azure Storage Credentials</strong></p>
  439. <p>The problem is that this chat example uses the Azure Storage Service (to make the Azure Function part of the example work). So we have to add the AzureWebJobsStorage environmental variable to our .env file.</p>
  440. <p>&nbsp;</p>
  441. <pre class="brush: jscript; title: ; notranslate">
  442. var queueSvc = azure.createQueueService(process.env.AzureWebJobsStorage);
  443. </pre>
  444. <p>You can find this connection key in your Azure portal &gt; Storage Service &gt; Access Keys</p>
  445. <p><a href="https://xomino.com/2017/03/12/setting-up-the-sample-azure-bot-to-work-locally-with-the-bot-emulator/b5-8/#main" rel="attachment wp-att-3813"><img data-attachment-id="3813" data-permalink="https://xomino.com/2017/03/12/setting-up-the-sample-azure-bot-to-work-locally-with-the-bot-emulator/b5-8/#main" data-orig-file="https://xomino.files.wordpress.com/2017/03/b5.png?w=700&#038;h=302" data-orig-size="800,345" 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="b5" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/03/b5.png?w=700&#038;h=302?w=300" data-large-file="https://xomino.files.wordpress.com/2017/03/b5.png?w=700&#038;h=302?w=700" class="aligncenter size-full wp-image-3813" src="https://xomino.files.wordpress.com/2017/03/b5.png?w=700&#038;h=302" alt="" width="700" height="302" srcset="https://xomino.files.wordpress.com/2017/03/b5.png?w=700&amp;h=302 700w, https://xomino.files.wordpress.com/2017/03/b5.png?w=150&amp;h=65 150w, https://xomino.files.wordpress.com/2017/03/b5.png?w=300&amp;h=129 300w, https://xomino.files.wordpress.com/2017/03/b5.png?w=768&amp;h=331 768w, https://xomino.files.wordpress.com/2017/03/b5.png 800w" sizes="(max-width: 700px) 100vw, 700px" /></a></p>
  446. <p>The format for the .env file entry  is as follows (<a href="https://blogs.msdn.microsoft.com/appserviceteam/2016/12/01/running-azure-functions-locally-with-the-cli/" target="_blank">Running Azure Functions Locally with the CLI and VS Code</a>): AzureWebJobsStorage=&#8217;DefaultEndpointsProtocol=https;AccountName=storagename;AccountKey=secretKey&#8217;</p>
  447. <p>Once that is in place &#8211; we have a bot running locally talking to the bot framework &#8211; unfortunately we do not get a response back from the Azure Function&#8230;.</p>
  448. <p><strong>Azure Function debugging&#8230;..</strong></p>
  449. <p>The problem quite simply is that the message sent to the azure function contains a serviceURL from which it should respond &#8211; and in this case it is &#8221; serviceUrl: &#8216;<a href="http://localhost:63136'/" target="_blank" rel="noopener">http://localhost:63136&#8242;</a>,&#8221; and of course it has no idea what that is.</p>
  450. <p>For the sake of this blog post that is ok &#8211; we are at least up and running with the &#8220;bot&#8221; part of this emulator working, although somewhat disappointing it can&#8217;t be fully developed in this environment.</p>
  451. <p><strong>Conclusion</strong></p>
  452. <p>As part of this process we have seen how to connect the local bot emulator to a service running in Azure and how to incorporate a connection to Azure Functions.</p>
  453. <p>&nbsp;</p>
  454. <p>&nbsp;</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/xomino.wordpress.com/3808/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/xomino.wordpress.com/3808/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=xomino.com&#038;blog=31801104&#038;post=3808&#038;subd=xomino&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
  455. <wfw:commentRss>https://xomino.com/2017/03/12/setting-up-the-sample-azure-bot-to-work-locally-with-the-bot-emulator/feed/</wfw:commentRss>
  456. <slash:comments>0</slash:comments>
  457. <media:content url="http://0.gravatar.com/avatar/3857e0587f63bb943797213753361d37?s=96&#38;d=identicon&#38;r=G" medium="image">
  458. <media:title type="html">mdroden</media:title>
  459. </media:content>
  460.  
  461. <media:content url="http://xomino.files.wordpress.com/2017/03/b1.png" medium="image" />
  462.  
  463. <media:content url="http://xomino.files.wordpress.com/2017/03/b2.png" medium="image" />
  464.  
  465. <media:content url="http://xomino.files.wordpress.com/2017/03/b3.png" medium="image" />
  466.  
  467. <media:content url="http://xomino.files.wordpress.com/2017/03/b4.png" medium="image" />
  468.  
  469. <media:content url="http://xomino.files.wordpress.com/2017/03/b5.png" medium="image" />
  470. </item>
  471. <item>
  472. <title>Adding your bot code to VSTS for source control and configuring continuous integration</title>
  473. <link>https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/</link>
  474. <comments>https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/#comments</comments>
  475. <pubDate>Mon, 06 Mar 2017 03:00:28 +0000</pubDate>
  476. <dc:creator><![CDATA[Marky Roden]]></dc:creator>
  477. <category><![CDATA[Azure]]></category>
  478. <category><![CDATA[Bot Framework]]></category>
  479. <category><![CDATA[PSC]]></category>
  480.  
  481. <guid isPermaLink="false">http://xomino.com/?p=3784</guid>
  482. <description><![CDATA[In this article I will walk through the steps to enable source control and continuous integration for your bot Introduction In previous articles we have seen how to create a sample bot and how to link it into Skype. In this article we are going to look at how to use Visual Services Team Studio (VSTS) &#8230; <a href="https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/" class="more-link">Continue reading <span class="screen-reader-text">Adding your bot code to VSTS for source control and configuring continuous&#160;integration</span></a><img alt="" border="0" src="https://pixel.wp.com/b.gif?host=xomino.com&#038;blog=31801104&#038;post=3784&#038;subd=xomino&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
  483. <content:encoded><![CDATA[<p>In this article I will walk through the steps to enable source control and continuous integration for your bot</p>
  484. <p><strong>Introduction</strong></p>
  485. <p>In previous articles we have seen how to <a href="https://xomino.com/2017/02/22/how-to-create-a-sample-nodejs-bot-which-utilizes-azure-functions-in-15-minutes/" target="_blank">create a sample bot </a>and how to <a href="https://xomino.com/2017/02/27/adding-your-azure-bot-framework-bot-into-skype/" target="_blank">link it into Skype</a>. In this article we are going to look at how to use Visual Services Team Studio (VSTS) to manage source control and eventually continuous integration. We are going to set up is an environment such that when you check your code into the repository a code deployment is triggered to the nodejs server (our bot in this case) which then finally restarts. In short: code checks in and everything refreshes automagically.</p>
  486. <p>What is going to happen is that we are taking the code out of the Azure sample development web based IDE environment and move it to something a little more robust.</p>
  487. <p><strong>Selecting your Source Control</strong></p>
  488. <p>From your bot interface select settings and scroll down to the continuous integration section.</p>
  489. <p><em>Note:</em> it is really important to read the instructions &#8211; if you do NOT download the zip file of your bot first you will end up with a blank look on your face and a need to rebuild your bot from scratch &#8211; take it from this idiot (facepalm).</p>
  490. <p><a href="https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/bot1-3/#main" rel="attachment wp-att-3788"><img data-attachment-id="3788" data-permalink="https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/bot1-3/#main" data-orig-file="https://xomino.files.wordpress.com/2017/03/bot1.png?w=700&#038;h=278" data-orig-size="800,318" 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="bot1" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/03/bot1.png?w=700&#038;h=278?w=300" data-large-file="https://xomino.files.wordpress.com/2017/03/bot1.png?w=700&#038;h=278?w=700" class="aligncenter size-full wp-image-3788" src="https://xomino.files.wordpress.com/2017/03/bot1.png?w=700&#038;h=278" alt="bot1" width="700" height="278" srcset="https://xomino.files.wordpress.com/2017/03/bot1.png?w=700&amp;h=278 700w, https://xomino.files.wordpress.com/2017/03/bot1.png?w=150&amp;h=60 150w, https://xomino.files.wordpress.com/2017/03/bot1.png?w=300&amp;h=119 300w, https://xomino.files.wordpress.com/2017/03/bot1.png?w=768&amp;h=305 768w, https://xomino.files.wordpress.com/2017/03/bot1.png 800w" sizes="(max-width: 700px) 100vw, 700px" /></a></p>
  491. <p>Download your zip file and then head over to your favorite source control repo and create one.</p>
  492. <p>In my case I used Visual Studio Team Services (VSTS) to set up a git repo.</p>
  493. <p><a href="https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/bot2-3/#main" rel="attachment wp-att-3789"><img data-attachment-id="3789" data-permalink="https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/bot2-3/#main" data-orig-file="https://xomino.files.wordpress.com/2017/03/bot2.png?w=700" data-orig-size="507,275" 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="bot2" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/03/bot2.png?w=700?w=300" data-large-file="https://xomino.files.wordpress.com/2017/03/bot2.png?w=700?w=507" class="aligncenter size-full wp-image-3789" src="https://xomino.files.wordpress.com/2017/03/bot2.png?w=700" alt="bot2" srcset="https://xomino.files.wordpress.com/2017/03/bot2.png 507w, https://xomino.files.wordpress.com/2017/03/bot2.png?w=150 150w, https://xomino.files.wordpress.com/2017/03/bot2.png?w=300 300w" sizes="(max-width: 507px) 100vw, 507px"   /></a>I unzipped the file locally and associated it with my new project in VSTS. I use JetBrains Webstorm as my JavaScript development environment but this would work just as well in Visual Studio or VS Code.</p>
  494. <p><a href="https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/bot3-3/#main" rel="attachment wp-att-3790"><img data-attachment-id="3790" data-permalink="https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/bot3-3/#main" data-orig-file="https://xomino.files.wordpress.com/2017/03/bot3.png?w=700" data-orig-size="555,404" 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="bot3" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/03/bot3.png?w=700?w=300" data-large-file="https://xomino.files.wordpress.com/2017/03/bot3.png?w=700?w=555" class="aligncenter size-full wp-image-3790" src="https://xomino.files.wordpress.com/2017/03/bot3.png?w=700" alt="bot3" srcset="https://xomino.files.wordpress.com/2017/03/bot3.png 555w, https://xomino.files.wordpress.com/2017/03/bot3.png?w=150 150w, https://xomino.files.wordpress.com/2017/03/bot3.png?w=300 300w" sizes="(max-width: 555px) 100vw, 555px"   /></a></p>
  495. <p>&nbsp;</p>
  496. <p><strong>Setting up continuous integration</strong></p>
  497. <p>Back within the Azure bot development website click the Continuous Integration button. This will then cause you to move through a number of screens configuring the CI. For this to work you have to have configured your Azure environment to be linked with your VSTS environment. Here&#8217;s a great blog post describing how to do just that (<a href="https://github.com/projectkudu/kudu/wiki/Setting-up-a-VSTS-account-so-it-can-deploy-to-a-Web-App" target="_blank">Linking your VSTS Account to Azure</a>)</p>
  498. <p>So &#8220;Setup&#8221;</p>
  499. <p><a href="https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/bot4-3/#main" rel="attachment wp-att-3797"><img data-attachment-id="3797" data-permalink="https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/bot4-3/#main" data-orig-file="https://xomino.files.wordpress.com/2017/03/bot4.png?w=700" data-orig-size="453,268" 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="bot4" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/03/bot4.png?w=700?w=300" data-large-file="https://xomino.files.wordpress.com/2017/03/bot4.png?w=700?w=453" class="aligncenter size-full wp-image-3797" src="https://xomino.files.wordpress.com/2017/03/bot4.png?w=700" alt="bot4" srcset="https://xomino.files.wordpress.com/2017/03/bot4.png 453w, https://xomino.files.wordpress.com/2017/03/bot4.png?w=150 150w, https://xomino.files.wordpress.com/2017/03/bot4.png?w=300 300w" sizes="(max-width: 453px) 100vw, 453px"   /></a>Select VSTS</p>
  500. <p><a href="https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/bot5-3/#main" rel="attachment wp-att-3796"><img data-attachment-id="3796" data-permalink="https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/bot5-3/#main" data-orig-file="https://xomino.files.wordpress.com/2017/03/bot5.png?w=700&#038;h=362" data-orig-size="779,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="bot5" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/03/bot5.png?w=700&#038;h=362?w=300" data-large-file="https://xomino.files.wordpress.com/2017/03/bot5.png?w=700&#038;h=362?w=700" class="aligncenter size-full wp-image-3796" src="https://xomino.files.wordpress.com/2017/03/bot5.png?w=700&#038;h=362" alt="bot5" width="700" height="362" srcset="https://xomino.files.wordpress.com/2017/03/bot5.png?w=700&amp;h=362 700w, https://xomino.files.wordpress.com/2017/03/bot5.png?w=150&amp;h=78 150w, https://xomino.files.wordpress.com/2017/03/bot5.png?w=300&amp;h=155 300w, https://xomino.files.wordpress.com/2017/03/bot5.png?w=768&amp;h=397 768w, https://xomino.files.wordpress.com/2017/03/bot5.png 779w" sizes="(max-width: 700px) 100vw, 700px" /></a></p>
  501. <p>and then your project within VSTS</p>
  502. <p><a href="https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/bot6-2/#main" rel="attachment wp-att-3795"><img data-attachment-id="3795" data-permalink="https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/bot6-2/#main" data-orig-file="https://xomino.files.wordpress.com/2017/03/bot6.png?w=700&#038;h=258" data-orig-size="801,295" 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="bot6" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/03/bot6.png?w=700&#038;h=258?w=300" data-large-file="https://xomino.files.wordpress.com/2017/03/bot6.png?w=700&#038;h=258?w=700" class="aligncenter size-full wp-image-3795" src="https://xomino.files.wordpress.com/2017/03/bot6.png?w=700&#038;h=258" alt="bot6" width="700" height="258" srcset="https://xomino.files.wordpress.com/2017/03/bot6.png?w=700&amp;h=258 700w, https://xomino.files.wordpress.com/2017/03/bot6.png?w=150&amp;h=55 150w, https://xomino.files.wordpress.com/2017/03/bot6.png?w=300&amp;h=110 300w, https://xomino.files.wordpress.com/2017/03/bot6.png?w=768&amp;h=283 768w, https://xomino.files.wordpress.com/2017/03/bot6.png 801w" sizes="(max-width: 700px) 100vw, 700px" /></a></p>
  503. <p>Which branch (master just to keep things simple for now)</p>
  504. <p><a href="https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/bot7-2/#main" rel="attachment wp-att-3794"><img data-attachment-id="3794" data-permalink="https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/bot7-2/#main" data-orig-file="https://xomino.files.wordpress.com/2017/03/bot7.png?w=700&#038;h=491" data-orig-size="771,541" 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="bot7" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/03/bot7.png?w=700&#038;h=491?w=300" data-large-file="https://xomino.files.wordpress.com/2017/03/bot7.png?w=700&#038;h=491?w=700" class="aligncenter size-full wp-image-3794" src="https://xomino.files.wordpress.com/2017/03/bot7.png?w=700&#038;h=491" alt="bot7" width="700" height="491" srcset="https://xomino.files.wordpress.com/2017/03/bot7.png?w=700&amp;h=491 700w, https://xomino.files.wordpress.com/2017/03/bot7.png?w=150&amp;h=105 150w, https://xomino.files.wordpress.com/2017/03/bot7.png?w=300&amp;h=211 300w, https://xomino.files.wordpress.com/2017/03/bot7.png?w=768&amp;h=539 768w, https://xomino.files.wordpress.com/2017/03/bot7.png 771w" sizes="(max-width: 700px) 100vw, 700px" /></a></p>
  505. <p>et voila</p>
  506. <p><a href="https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/bot8-2/#main" rel="attachment wp-att-3793"><img data-attachment-id="3793" data-permalink="https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/bot8-2/#main" data-orig-file="https://xomino.files.wordpress.com/2017/03/bot8.png?w=700" data-orig-size="506,256" 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="bot8" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/03/bot8.png?w=700?w=300" data-large-file="https://xomino.files.wordpress.com/2017/03/bot8.png?w=700?w=506" class="aligncenter size-full wp-image-3793" src="https://xomino.files.wordpress.com/2017/03/bot8.png?w=700" alt="bot8" srcset="https://xomino.files.wordpress.com/2017/03/bot8.png 506w, https://xomino.files.wordpress.com/2017/03/bot8.png?w=150 150w, https://xomino.files.wordpress.com/2017/03/bot8.png?w=300 300w" sizes="(max-width: 506px) 100vw, 506px"   /></a></p>
  507. <p><strong>Configuring a performance test</strong></p>
  508. <p>Following the prompts you can set up the perf test (for once the CI is complete)</p>
  509. <p><a href="https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/bot9-2/#main" rel="attachment wp-att-3792"><img data-attachment-id="3792" data-permalink="https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/bot9-2/#main" data-orig-file="https://xomino.files.wordpress.com/2017/03/bot9.png?w=700" data-orig-size="423,769" 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="bot9" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/03/bot9.png?w=700?w=165" data-large-file="https://xomino.files.wordpress.com/2017/03/bot9.png?w=700?w=423" class="aligncenter size-full wp-image-3792" src="https://xomino.files.wordpress.com/2017/03/bot9.png?w=700" alt="bot9" srcset="https://xomino.files.wordpress.com/2017/03/bot9.png 423w, https://xomino.files.wordpress.com/2017/03/bot9.png?w=83 83w, https://xomino.files.wordpress.com/2017/03/bot9.png?w=165 165w" sizes="(max-width: 423px) 100vw, 423px"   /></a></p>
  510. <p><a href="https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/bot10/#main" rel="attachment wp-att-3791"><img data-attachment-id="3791" data-permalink="https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/bot10/#main" data-orig-file="https://xomino.files.wordpress.com/2017/03/bot10.png?w=700" data-orig-size="504,190" 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="bot10" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/03/bot10.png?w=700?w=300" data-large-file="https://xomino.files.wordpress.com/2017/03/bot10.png?w=700?w=504" class="aligncenter size-full wp-image-3791" src="https://xomino.files.wordpress.com/2017/03/bot10.png?w=700" alt="bot10" srcset="https://xomino.files.wordpress.com/2017/03/bot10.png 504w, https://xomino.files.wordpress.com/2017/03/bot10.png?w=150 150w, https://xomino.files.wordpress.com/2017/03/bot10.png?w=300 300w" sizes="(max-width: 504px) 100vw, 504px"   /></a></p>
  511. <p>&nbsp;</p>
  512. <p>and we now have your Azure bot being deployed from code sitting within VSTS. Cool <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
  513. <p><strong>Example</strong></p>
  514. <p>I have my bot hooked up in Skype</p>
  515. <p><a href="https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/bot12/#main" rel="attachment wp-att-3801"><img data-attachment-id="3801" data-permalink="https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/bot12/#main" data-orig-file="https://xomino.files.wordpress.com/2017/03/bot12.png?w=700&#038;h=224" data-orig-size="759,243" 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="bot12" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/03/bot12.png?w=700&#038;h=224?w=300" data-large-file="https://xomino.files.wordpress.com/2017/03/bot12.png?w=700&#038;h=224?w=700" class="aligncenter size-full wp-image-3801" src="https://xomino.files.wordpress.com/2017/03/bot12.png?w=700&#038;h=224" alt="bot12" width="700" height="224" srcset="https://xomino.files.wordpress.com/2017/03/bot12.png?w=700&amp;h=224 700w, https://xomino.files.wordpress.com/2017/03/bot12.png?w=150&amp;h=48 150w, https://xomino.files.wordpress.com/2017/03/bot12.png?w=300&amp;h=96 300w, https://xomino.files.wordpress.com/2017/03/bot12.png 759w" sizes="(max-width: 700px) 100vw, 700px" /></a></p>
  516. <p>I make a quick change to the message in WebStorm (my JavaScript IDE)</p>
  517. <p><a href="https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/bot11/#main" rel="attachment wp-att-3802"><img data-attachment-id="3802" data-permalink="https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/bot11/#main" data-orig-file="https://xomino.files.wordpress.com/2017/03/bot11.png?w=700" data-orig-size="571,242" 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="bot11" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/03/bot11.png?w=700?w=300" data-large-file="https://xomino.files.wordpress.com/2017/03/bot11.png?w=700?w=571" class="aligncenter size-full wp-image-3802" src="https://xomino.files.wordpress.com/2017/03/bot11.png?w=700" alt="bot11" srcset="https://xomino.files.wordpress.com/2017/03/bot11.png 571w, https://xomino.files.wordpress.com/2017/03/bot11.png?w=150 150w, https://xomino.files.wordpress.com/2017/03/bot11.png?w=300 300w" sizes="(max-width: 571px) 100vw, 571px"   /></a></p>
  518. <p>Commit and push</p>
  519. <p><a href="https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/bot13/#main" rel="attachment wp-att-3800"><img data-attachment-id="3800" data-permalink="https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/bot13/#main" data-orig-file="https://xomino.files.wordpress.com/2017/03/bot13.png?w=700" data-orig-size="373,189" 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="bot13" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/03/bot13.png?w=700?w=300" data-large-file="https://xomino.files.wordpress.com/2017/03/bot13.png?w=700?w=373" class="aligncenter size-full wp-image-3800" src="https://xomino.files.wordpress.com/2017/03/bot13.png?w=700" alt="bot13" srcset="https://xomino.files.wordpress.com/2017/03/bot13.png 373w, https://xomino.files.wordpress.com/2017/03/bot13.png?w=150 150w, https://xomino.files.wordpress.com/2017/03/bot13.png?w=300 300w" sizes="(max-width: 373px) 100vw, 373px"   /></a></p>
  520. <p><a href="https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/bot14/#main" rel="attachment wp-att-3799"><img data-attachment-id="3799" data-permalink="https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/bot14/#main" data-orig-file="https://xomino.files.wordpress.com/2017/03/bot14.png?w=700" data-orig-size="528,187" 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="bot14" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/03/bot14.png?w=700?w=300" data-large-file="https://xomino.files.wordpress.com/2017/03/bot14.png?w=700?w=528" class="aligncenter size-full wp-image-3799" src="https://xomino.files.wordpress.com/2017/03/bot14.png?w=700" alt="bot14" srcset="https://xomino.files.wordpress.com/2017/03/bot14.png 528w, https://xomino.files.wordpress.com/2017/03/bot14.png?w=150 150w, https://xomino.files.wordpress.com/2017/03/bot14.png?w=300 300w" sizes="(max-width: 528px) 100vw, 528px"   /></a></p>
  521. <p>Head back to Skype and within about 60 seconds (it has to restart after all) we have a new message</p>
  522. <p><a href="https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/bot15/#main" rel="attachment wp-att-3798"><img data-attachment-id="3798" data-permalink="https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/bot15/#main" data-orig-file="https://xomino.files.wordpress.com/2017/03/bot15.png?w=700&#038;h=204" data-orig-size="747,218" 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="bot15" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/03/bot15.png?w=700&#038;h=204?w=300" data-large-file="https://xomino.files.wordpress.com/2017/03/bot15.png?w=700&#038;h=204?w=700" class="aligncenter size-full wp-image-3798" src="https://xomino.files.wordpress.com/2017/03/bot15.png?w=700&#038;h=204" alt="bot15" width="700" height="204" srcset="https://xomino.files.wordpress.com/2017/03/bot15.png?w=700&amp;h=204 700w, https://xomino.files.wordpress.com/2017/03/bot15.png?w=150&amp;h=44 150w, https://xomino.files.wordpress.com/2017/03/bot15.png?w=300&amp;h=88 300w, https://xomino.files.wordpress.com/2017/03/bot15.png 747w" sizes="(max-width: 700px) 100vw, 700px" /></a></p>
  523. <p>What&#8217;s really interesting though is that I started my conversation before the restart was ready &#8211; but the message was queued and when the server woke up it finally responded &#8211; that was very cool</p>
  524. <p><strong>Conclusion</strong></p>
  525. <p>In this article we have looked at how to set up a VSTS source control repo of our new test bot and then configured continuous integration through the bot framework. I check in my new code and within seconds the new functionality is posted out to the live bot.</p>
  526. <p>&nbsp;</p>
  527. <p>&nbsp;</p>
  528. <p>&nbsp;</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/xomino.wordpress.com/3784/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/xomino.wordpress.com/3784/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=xomino.com&#038;blog=31801104&#038;post=3784&#038;subd=xomino&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
  529. <wfw:commentRss>https://xomino.com/2017/03/05/adding-your-bot-code-to-vsts-for-source-control-and-configuring-continuous-integration/feed/</wfw:commentRss>
  530. <slash:comments>1</slash:comments>
  531. <media:content url="http://0.gravatar.com/avatar/3857e0587f63bb943797213753361d37?s=96&#38;d=identicon&#38;r=G" medium="image">
  532. <media:title type="html">mdroden</media:title>
  533. </media:content>
  534.  
  535. <media:content url="http://xomino.files.wordpress.com/2017/03/bot1.png" medium="image">
  536. <media:title type="html">bot1</media:title>
  537. </media:content>
  538.  
  539. <media:content url="http://xomino.files.wordpress.com/2017/03/bot2.png" medium="image">
  540. <media:title type="html">bot2</media:title>
  541. </media:content>
  542.  
  543. <media:content url="http://xomino.files.wordpress.com/2017/03/bot3.png" medium="image">
  544. <media:title type="html">bot3</media:title>
  545. </media:content>
  546.  
  547. <media:content url="http://xomino.files.wordpress.com/2017/03/bot4.png" medium="image">
  548. <media:title type="html">bot4</media:title>
  549. </media:content>
  550.  
  551. <media:content url="http://xomino.files.wordpress.com/2017/03/bot5.png" medium="image">
  552. <media:title type="html">bot5</media:title>
  553. </media:content>
  554.  
  555. <media:content url="http://xomino.files.wordpress.com/2017/03/bot6.png" medium="image">
  556. <media:title type="html">bot6</media:title>
  557. </media:content>
  558.  
  559. <media:content url="http://xomino.files.wordpress.com/2017/03/bot7.png" medium="image">
  560. <media:title type="html">bot7</media:title>
  561. </media:content>
  562.  
  563. <media:content url="http://xomino.files.wordpress.com/2017/03/bot8.png" medium="image">
  564. <media:title type="html">bot8</media:title>
  565. </media:content>
  566.  
  567. <media:content url="http://xomino.files.wordpress.com/2017/03/bot9.png" medium="image">
  568. <media:title type="html">bot9</media:title>
  569. </media:content>
  570.  
  571. <media:content url="http://xomino.files.wordpress.com/2017/03/bot10.png" medium="image">
  572. <media:title type="html">bot10</media:title>
  573. </media:content>
  574.  
  575. <media:content url="http://xomino.files.wordpress.com/2017/03/bot12.png" medium="image">
  576. <media:title type="html">bot12</media:title>
  577. </media:content>
  578.  
  579. <media:content url="http://xomino.files.wordpress.com/2017/03/bot11.png" medium="image">
  580. <media:title type="html">bot11</media:title>
  581. </media:content>
  582.  
  583. <media:content url="http://xomino.files.wordpress.com/2017/03/bot13.png" medium="image">
  584. <media:title type="html">bot13</media:title>
  585. </media:content>
  586.  
  587. <media:content url="http://xomino.files.wordpress.com/2017/03/bot14.png" medium="image">
  588. <media:title type="html">bot14</media:title>
  589. </media:content>
  590.  
  591. <media:content url="http://xomino.files.wordpress.com/2017/03/bot15.png" medium="image">
  592. <media:title type="html">bot15</media:title>
  593. </media:content>
  594. </item>
  595. <item>
  596. <title>Adding your Azure bot framework bot into Skype</title>
  597. <link>https://xomino.com/2017/02/27/adding-your-azure-bot-framework-bot-into-skype/</link>
  598. <comments>https://xomino.com/2017/02/27/adding-your-azure-bot-framework-bot-into-skype/#comments</comments>
  599. <pubDate>Tue, 28 Feb 2017 02:30:59 +0000</pubDate>
  600. <dc:creator><![CDATA[Marky Roden]]></dc:creator>
  601. <category><![CDATA[Azure]]></category>
  602. <category><![CDATA[Bot Framework]]></category>
  603. <category><![CDATA[PSC]]></category>
  604.  
  605. <guid isPermaLink="false">http://xomino.com/?p=3777</guid>
  606. <description><![CDATA[In this article I will show how simple it is to add your newly created bot into your Skype contacts. Introduction In the previous article we looked at how to create your first sample Azure bot which uses Azure Functions in the background. This article will continue from where that left off. Channels The bot framework &#8230; <a href="https://xomino.com/2017/02/27/adding-your-azure-bot-framework-bot-into-skype/" class="more-link">Continue reading <span class="screen-reader-text">Adding your Azure bot framework bot into&#160;Skype</span></a><img alt="" border="0" src="https://pixel.wp.com/b.gif?host=xomino.com&#038;blog=31801104&#038;post=3777&#038;subd=xomino&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
  607. <content:encoded><![CDATA[<p>In this article I will show how simple it is to add your newly created bot into your Skype contacts.</p>
  608. <p><strong>Introduction</strong></p>
  609. <p>In the previous article we looked at how to create your first sample <a href="https://xomino.com/2017/02/22/how-to-create-a-sample-nodejs-bot-which-utilizes-azure-functions-in-15-minutes/">Azure bot which uses Azure Functions</a> in the background. This article will continue from where that left off.</p>
  610. <p><strong>Channels</strong></p>
  611. <p>The bot framework has a number of pre-configured &#8220;Channels&#8221; which allow your bot to be easily added to other chat mediums.</p>
  612. <p>If you aren&#8217;t already there, go into your bot and select Channels. Conveniently there is an &#8220;Add to Skype&#8221; button right there&#8230;.(can&#8217;t imagine what that does)</p>
  613. <p><a href="https://xomino.com/2017/02/27/adding-your-azure-bot-framework-bot-into-skype/bot1-2/#main" rel="attachment wp-att-3782"><img data-attachment-id="3782" data-permalink="https://xomino.com/2017/02/27/adding-your-azure-bot-framework-bot-into-skype/bot1-2/#main" data-orig-file="https://xomino.files.wordpress.com/2017/02/bot11.png?w=700&#038;h=403" data-orig-size="800,461" 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="bot1" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/02/bot11.png?w=700&#038;h=403?w=300" data-large-file="https://xomino.files.wordpress.com/2017/02/bot11.png?w=700&#038;h=403?w=700" class="aligncenter size-full wp-image-3782" src="https://xomino.files.wordpress.com/2017/02/bot11.png?w=700&#038;h=403" alt="bot1" width="700" height="403" srcset="https://xomino.files.wordpress.com/2017/02/bot11.png?w=700&amp;h=403 700w, https://xomino.files.wordpress.com/2017/02/bot11.png?w=150&amp;h=86 150w, https://xomino.files.wordpress.com/2017/02/bot11.png?w=300&amp;h=173 300w, https://xomino.files.wordpress.com/2017/02/bot11.png?w=768&amp;h=443 768w, https://xomino.files.wordpress.com/2017/02/bot11.png 800w" sizes="(max-width: 700px) 100vw, 700px" /></a></p>
  614. <p><strong>Adding to Skype</strong></p>
  615. <p>You click on the link to Add to Contacts</p>
  616. <p><a href="https://xomino.com/2017/02/27/adding-your-azure-bot-framework-bot-into-skype/bot2-2/#main" rel="attachment wp-att-3781"><img data-attachment-id="3781" data-permalink="https://xomino.com/2017/02/27/adding-your-azure-bot-framework-bot-into-skype/bot2-2/#main" data-orig-file="https://xomino.files.wordpress.com/2017/02/bot21.png?w=700" data-orig-size="531,666" 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="bot2" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/02/bot21.png?w=700?w=239" data-large-file="https://xomino.files.wordpress.com/2017/02/bot21.png?w=700?w=531" class="aligncenter size-full wp-image-3781" src="https://xomino.files.wordpress.com/2017/02/bot21.png?w=700" alt="bot2" srcset="https://xomino.files.wordpress.com/2017/02/bot21.png 531w, https://xomino.files.wordpress.com/2017/02/bot21.png?w=120 120w, https://xomino.files.wordpress.com/2017/02/bot21.png?w=239 239w" sizes="(max-width: 531px) 100vw, 531px"   /></a></p>
  617. <p>you then &#8220;Add to contacts&#8221; &#8211; having to log in during the process (I need to get a better logo for my bot)</p>
  618. <p><a href="https://xomino.com/2017/02/27/adding-your-azure-bot-framework-bot-into-skype/bot3-2/#main" rel="attachment wp-att-3780"><img data-attachment-id="3780" data-permalink="https://xomino.com/2017/02/27/adding-your-azure-bot-framework-bot-into-skype/bot3-2/#main" data-orig-file="https://xomino.files.wordpress.com/2017/02/bot31.png?w=700" data-orig-size="496,523" 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="bot3" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/02/bot31.png?w=700?w=285" data-large-file="https://xomino.files.wordpress.com/2017/02/bot31.png?w=700?w=496" class="aligncenter size-full wp-image-3780" src="https://xomino.files.wordpress.com/2017/02/bot31.png?w=700" alt="bot3" srcset="https://xomino.files.wordpress.com/2017/02/bot31.png 496w, https://xomino.files.wordpress.com/2017/02/bot31.png?w=142 142w, https://xomino.files.wordpress.com/2017/02/bot31.png?w=285 285w" sizes="(max-width: 496px) 100vw, 496px"   /></a></p>
  619. <p>about 30 seconds later my bot appeared in my Skype client as a contact (bonus if you recognize the song lyrics)</p>
  620. <p><a href="https://xomino.com/2017/02/27/adding-your-azure-bot-framework-bot-into-skype/bot4-2/#main" rel="attachment wp-att-3779"><img data-attachment-id="3779" data-permalink="https://xomino.com/2017/02/27/adding-your-azure-bot-framework-bot-into-skype/bot4-2/#main" data-orig-file="https://xomino.files.wordpress.com/2017/02/bot41.png?w=700" data-orig-size="466,399" 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="bot4" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/02/bot41.png?w=700?w=300" data-large-file="https://xomino.files.wordpress.com/2017/02/bot41.png?w=700?w=466" class="aligncenter size-full wp-image-3779" src="https://xomino.files.wordpress.com/2017/02/bot41.png?w=700" alt="bot4" srcset="https://xomino.files.wordpress.com/2017/02/bot41.png 466w, https://xomino.files.wordpress.com/2017/02/bot41.png?w=150 150w, https://xomino.files.wordpress.com/2017/02/bot41.png?w=300 300w" sizes="(max-width: 466px) 100vw, 466px"   /></a></p>
  621. <p>Once it appeared in my contacts, I could talk to it &#8211; and while this is pretty simple stupid, this is VERY cool <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
  622. <p><a href="https://xomino.com/2017/02/27/adding-your-azure-bot-framework-bot-into-skype/bot5-2/#main" rel="attachment wp-att-3778"><img data-attachment-id="3778" data-permalink="https://xomino.com/2017/02/27/adding-your-azure-bot-framework-bot-into-skype/bot5-2/#main" data-orig-file="https://xomino.files.wordpress.com/2017/02/bot51.png?w=700&#038;h=698" data-orig-size="800,798" 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="bot5" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/02/bot51.png?w=700&#038;h=698?w=300" data-large-file="https://xomino.files.wordpress.com/2017/02/bot51.png?w=700&#038;h=698?w=700" class="aligncenter size-full wp-image-3778" src="https://xomino.files.wordpress.com/2017/02/bot51.png?w=700&#038;h=698" alt="bot5" width="700" height="698" srcset="https://xomino.files.wordpress.com/2017/02/bot51.png?w=700&amp;h=698 700w, https://xomino.files.wordpress.com/2017/02/bot51.png?w=150&amp;h=150 150w, https://xomino.files.wordpress.com/2017/02/bot51.png?w=300&amp;h=300 300w, https://xomino.files.wordpress.com/2017/02/bot51.png?w=768&amp;h=766 768w, https://xomino.files.wordpress.com/2017/02/bot51.png 800w" sizes="(max-width: 700px) 100vw, 700px" /></a></p>
  623. <p>I have to say though, the &#8220;response&#8221; from the Azure functions seems very slow for what should be a trivial task. I have no idea why or how it is even working right now &#8211; I&#8217;ll get to that <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
  624. <p><strong>Conclusion</strong></p>
  625. <p>Adding your bot to the pre-configured channels is as easy as following the instructions and we now have a bot running in Skype! It&#8217;s not quite getting me a beer from the fridge yet, but we&#8217;ll work on that <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
  626. <p><a href="https://xomino.com/2017/02/27/adding-your-azure-bot-framework-bot-into-skype/bot1-2/#main" rel="attachment wp-att-3782"><br />
  627. </a></p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/xomino.wordpress.com/3777/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/xomino.wordpress.com/3777/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=xomino.com&#038;blog=31801104&#038;post=3777&#038;subd=xomino&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
  628. <wfw:commentRss>https://xomino.com/2017/02/27/adding-your-azure-bot-framework-bot-into-skype/feed/</wfw:commentRss>
  629. <slash:comments>1</slash:comments>
  630. <media:thumbnail url="https://xomino.files.wordpress.com/2017/02/bot21.png" />
  631. <media:content url="http://xomino.files.wordpress.com/2017/02/bot21.png" medium="image">
  632. <media:title type="html">bot2</media:title>
  633. </media:content>
  634.  
  635. <media:content url="http://0.gravatar.com/avatar/3857e0587f63bb943797213753361d37?s=96&#38;d=identicon&#38;r=G" medium="image">
  636. <media:title type="html">mdroden</media:title>
  637. </media:content>
  638.  
  639. <media:content url="http://xomino.files.wordpress.com/2017/02/bot11.png" medium="image">
  640. <media:title type="html">bot1</media:title>
  641. </media:content>
  642.  
  643. <media:content url="http://xomino.files.wordpress.com/2017/02/bot21.png" medium="image">
  644. <media:title type="html">bot2</media:title>
  645. </media:content>
  646.  
  647. <media:content url="http://xomino.files.wordpress.com/2017/02/bot31.png" medium="image">
  648. <media:title type="html">bot3</media:title>
  649. </media:content>
  650.  
  651. <media:content url="http://xomino.files.wordpress.com/2017/02/bot41.png" medium="image">
  652. <media:title type="html">bot4</media:title>
  653. </media:content>
  654.  
  655. <media:content url="http://xomino.files.wordpress.com/2017/02/bot51.png" medium="image">
  656. <media:title type="html">bot5</media:title>
  657. </media:content>
  658. </item>
  659. <item>
  660. <title>How to create a sample nodejs bot which utilizes Azure Functions in 15 minutes</title>
  661. <link>https://xomino.com/2017/02/22/how-to-create-a-sample-nodejs-bot-which-utilizes-azure-functions-in-15-minutes/</link>
  662. <comments>https://xomino.com/2017/02/22/how-to-create-a-sample-nodejs-bot-which-utilizes-azure-functions-in-15-minutes/#comments</comments>
  663. <pubDate>Thu, 23 Feb 2017 01:30:57 +0000</pubDate>
  664. <dc:creator><![CDATA[Marky Roden]]></dc:creator>
  665. <category><![CDATA[Azure]]></category>
  666. <category><![CDATA[Bot Framework]]></category>
  667. <category><![CDATA[bot]]></category>
  668. <category><![CDATA[PSC]]></category>
  669.  
  670. <guid isPermaLink="false">http://xomino.com/?p=3761</guid>
  671. <description><![CDATA[In this article I will demonstrate how to create a nodejs bot hosted in Azure. The bot will be created from a sample provided from Microsoft. The example bot will use Azure Functions as the trigger for it&#8217;s communication. You will need a Microsoft Azure account to be able to follow this process for yourself. This is &#8230; <a href="https://xomino.com/2017/02/22/how-to-create-a-sample-nodejs-bot-which-utilizes-azure-functions-in-15-minutes/" class="more-link">Continue reading <span class="screen-reader-text">How to create a sample nodejs bot which utilizes Azure Functions in 15&#160;minutes</span></a><img alt="" border="0" src="https://pixel.wp.com/b.gif?host=xomino.com&#038;blog=31801104&#038;post=3761&#038;subd=xomino&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
  672. <content:encoded><![CDATA[<p>In this article I will demonstrate how to create a nodejs bot hosted in Azure. The bot will be created from a sample provided from Microsoft. The example bot will use Azure Functions as the trigger for it&#8217;s communication. You will need a Microsoft Azure account to be able to follow this process for yourself. This is only an introduction on how to get up and running, more steps in the process will come later.</p>
  673. <p><strong>Introduction </strong></p>
  674. <p>Looking at the documentation on how to create a test a nodejs bot within the Microsoft Bot Framework can be found in the Microsoft documentation (<a href="https://docs.botframework.com/en-us/node/builder/overview/" target="_blank">What is Bot Builder for Node.js and why should I use it?</a>).</p>
  675. <p>I found another more interesting (less CLI) way to do it through Azure portal. As I work my way through figuring out how all this works I expect there will be a number of blog posts as there is a lot to talk about. This post is focused on getting us up and running.</p>
  676. <p><em>As of February 2017 this Bot Service is in Preview and the process may change before it goes GA later in the year !</em></p>
  677. <p><strong>Creating a bot service in Azure</strong></p>
  678. <p>Within your <a href="https://portal.azure.com" target="_blank">Azure portal</a> create a new instance of a bot service from within Intelligence and Analytics.</p>
  679. <p><a href="https://xomino.com/?attachment_id=3763#main" rel="attachment wp-att-3763"><img data-attachment-id="3763" data-permalink="https://xomino.com/2017/02/22/how-to-create-a-sample-nodejs-bot-which-utilizes-azure-functions-in-15-minutes/bot1/#main" data-orig-file="https://xomino.files.wordpress.com/2017/02/bot1.png?w=700&#038;h=535" data-orig-size="800,611" 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="bot1" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/02/bot1.png?w=700&#038;h=535?w=300" data-large-file="https://xomino.files.wordpress.com/2017/02/bot1.png?w=700&#038;h=535?w=700" class="aligncenter size-full wp-image-3763" src="https://xomino.files.wordpress.com/2017/02/bot1.png?w=700&#038;h=535" alt="bot1" width="700" height="535" srcset="https://xomino.files.wordpress.com/2017/02/bot1.png?w=700&amp;h=535 700w, https://xomino.files.wordpress.com/2017/02/bot1.png?w=150&amp;h=115 150w, https://xomino.files.wordpress.com/2017/02/bot1.png?w=300&amp;h=229 300w, https://xomino.files.wordpress.com/2017/02/bot1.png?w=768&amp;h=587 768w, https://xomino.files.wordpress.com/2017/02/bot1.png 800w" sizes="(max-width: 700px) 100vw, 700px" /></a></p>
  680. <p>Give it a name and resource group</p>
  681. <p><a href="https://xomino.com/?attachment_id=3762#main" rel="attachment wp-att-3762"><img data-attachment-id="3762" data-permalink="https://xomino.com/2017/02/22/how-to-create-a-sample-nodejs-bot-which-utilizes-azure-functions-in-15-minutes/bot2/#main" data-orig-file="https://xomino.files.wordpress.com/2017/02/bot2.png?w=700" data-orig-size="472,487" 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="bot2" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/02/bot2.png?w=700?w=291" data-large-file="https://xomino.files.wordpress.com/2017/02/bot2.png?w=700?w=472" class="aligncenter size-full wp-image-3762" src="https://xomino.files.wordpress.com/2017/02/bot2.png?w=700" alt="bot2" srcset="https://xomino.files.wordpress.com/2017/02/bot2.png 472w, https://xomino.files.wordpress.com/2017/02/bot2.png?w=145 145w, https://xomino.files.wordpress.com/2017/02/bot2.png?w=291 291w" sizes="(max-width: 472px) 100vw, 472px"   /></a></p>
  682. <p>and create.</p>
  683. <p>Once created you will be able to access your bot from your portal resources pane.</p>
  684. <p><strong>Setting up your service</strong></p>
  685. <p>Opening your new service for the first time, you&#8217;ll be presented with the form to create an AppId and secret password for your bot. Follow the prompts and get back to the screen to create a sample bot.</p>
  686. <p><a href="https://xomino.com/?attachment_id=3766#main" rel="attachment wp-att-3766"><img data-attachment-id="3766" data-permalink="https://xomino.com/2017/02/22/how-to-create-a-sample-nodejs-bot-which-utilizes-azure-functions-in-15-minutes/bot3/#main" data-orig-file="https://xomino.files.wordpress.com/2017/02/bot3.png?w=700&#038;h=452" data-orig-size="800,517" 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="bot3" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/02/bot3.png?w=700&#038;h=452?w=300" data-large-file="https://xomino.files.wordpress.com/2017/02/bot3.png?w=700&#038;h=452?w=700" class="aligncenter size-full wp-image-3766" src="https://xomino.files.wordpress.com/2017/02/bot3.png?w=700&#038;h=452" alt="bot3" width="700" height="452" srcset="https://xomino.files.wordpress.com/2017/02/bot3.png?w=700&amp;h=452 700w, https://xomino.files.wordpress.com/2017/02/bot3.png?w=150&amp;h=97 150w, https://xomino.files.wordpress.com/2017/02/bot3.png?w=300&amp;h=194 300w, https://xomino.files.wordpress.com/2017/02/bot3.png?w=768&amp;h=496 768w, https://xomino.files.wordpress.com/2017/02/bot3.png 800w" sizes="(max-width: 700px) 100vw, 700px" /></a></p>
  687. <p>We are going to select NodeJS and create an azure function bot for the sake of demo</p>
  688. <p><a href="https://xomino.com/?attachment_id=3765#main" rel="attachment wp-att-3765"><img data-attachment-id="3765" data-permalink="https://xomino.com/2017/02/22/how-to-create-a-sample-nodejs-bot-which-utilizes-azure-functions-in-15-minutes/bot4/#main" data-orig-file="https://xomino.files.wordpress.com/2017/02/bot4.png?w=700&#038;h=356" data-orig-size="800,407" 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="bot4" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/02/bot4.png?w=700&#038;h=356?w=300" data-large-file="https://xomino.files.wordpress.com/2017/02/bot4.png?w=700&#038;h=356?w=700" class="aligncenter size-full wp-image-3765" src="https://xomino.files.wordpress.com/2017/02/bot4.png?w=700&#038;h=356" alt="bot4" width="700" height="356" srcset="https://xomino.files.wordpress.com/2017/02/bot4.png?w=700&amp;h=356 700w, https://xomino.files.wordpress.com/2017/02/bot4.png?w=150&amp;h=76 150w, https://xomino.files.wordpress.com/2017/02/bot4.png?w=300&amp;h=153 300w, https://xomino.files.wordpress.com/2017/02/bot4.png?w=768&amp;h=391 768w, https://xomino.files.wordpress.com/2017/02/bot4.png 800w" sizes="(max-width: 700px) 100vw, 700px" /></a></p>
  689. <p>and then we wait&#8230;&#8230;Ho hum, I wonder what&#8217;s going on in the background &#8211; probably magic&#8230;.</p>
  690. <p><a href="https://xomino.com/?attachment_id=3764#main" rel="attachment wp-att-3764"><img data-attachment-id="3764" data-permalink="https://xomino.com/2017/02/22/how-to-create-a-sample-nodejs-bot-which-utilizes-azure-functions-in-15-minutes/bot5/#main" data-orig-file="https://xomino.files.wordpress.com/2017/02/bot5.png?w=700" data-orig-size="591,323" 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="bot5" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/02/bot5.png?w=700?w=300" data-large-file="https://xomino.files.wordpress.com/2017/02/bot5.png?w=700?w=591" class="aligncenter size-full wp-image-3764" src="https://xomino.files.wordpress.com/2017/02/bot5.png?w=700" alt="bot5" srcset="https://xomino.files.wordpress.com/2017/02/bot5.png 591w, https://xomino.files.wordpress.com/2017/02/bot5.png?w=150 150w, https://xomino.files.wordpress.com/2017/02/bot5.png?w=300 300w" sizes="(max-width: 591px) 100vw, 591px"   /></a></p>
  691. <p><strong>Developer interface</strong></p>
  692. <p>Once the bot has been created you will be presented with a web based IDE showing you the node code and a chat window on the right.</p>
  693. <p><a href="https://xomino.com/?attachment_id=3769#main" rel="attachment wp-att-3769"><br />
  694. </a> <a href="https://xomino.com/?attachment_id=3770#main" rel="attachment wp-att-3770"><img data-attachment-id="3770" data-permalink="https://xomino.com/2017/02/22/how-to-create-a-sample-nodejs-bot-which-utilizes-azure-functions-in-15-minutes/bot6/#main" data-orig-file="https://xomino.files.wordpress.com/2017/02/bot6.png?w=700&#038;h=374" data-orig-size="800,427" 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="bot6" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/02/bot6.png?w=700&#038;h=374?w=300" data-large-file="https://xomino.files.wordpress.com/2017/02/bot6.png?w=700&#038;h=374?w=700" class="aligncenter size-full wp-image-3770" src="https://xomino.files.wordpress.com/2017/02/bot6.png?w=700&#038;h=374" alt="bot6" width="700" height="374" srcset="https://xomino.files.wordpress.com/2017/02/bot6.png?w=700&amp;h=374 700w, https://xomino.files.wordpress.com/2017/02/bot6.png?w=150&amp;h=80 150w, https://xomino.files.wordpress.com/2017/02/bot6.png?w=300&amp;h=160 300w, https://xomino.files.wordpress.com/2017/02/bot6.png?w=768&amp;h=410 768w, https://xomino.files.wordpress.com/2017/02/bot6.png 800w" sizes="(max-width: 700px) 100vw, 700px" /></a></p>
  695. <p>You can talk to yourself!! Something I like to do all the time&#8230;..apparently&#8230;.</p>
  696. <p><a href="https://xomino.com/?attachment_id=3773#main" rel="attachment wp-att-3773"><img data-attachment-id="3773" data-permalink="https://xomino.com/2017/02/22/how-to-create-a-sample-nodejs-bot-which-utilizes-azure-functions-in-15-minutes/bot9/#main" data-orig-file="https://xomino.files.wordpress.com/2017/02/bot9.png?w=700" data-orig-size="392,558" 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="bot9" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/02/bot9.png?w=700?w=211" data-large-file="https://xomino.files.wordpress.com/2017/02/bot9.png?w=700?w=392" class="aligncenter size-full wp-image-3773" src="https://xomino.files.wordpress.com/2017/02/bot9.png?w=700" alt="bot9" srcset="https://xomino.files.wordpress.com/2017/02/bot9.png 392w, https://xomino.files.wordpress.com/2017/02/bot9.png?w=105 105w, https://xomino.files.wordpress.com/2017/02/bot9.png?w=211 211w" sizes="(max-width: 392px) 100vw, 392px"   /></a></p>
  697. <p><strong>Back in Azure Portal</strong></p>
  698. <p>In setting up all this up, Azure auto-magically created a number of new services have been created in the Azure Portal to manage this functionality(which is why we had to wait for the background magic earlier). We can now see the following services making all this happen.</p>
  699. <p><a href="https://xomino.com/?attachment_id=3772#main" rel="attachment wp-att-3772"><img data-attachment-id="3772" data-permalink="https://xomino.com/2017/02/22/how-to-create-a-sample-nodejs-bot-which-utilizes-azure-functions-in-15-minutes/bot8/#main" data-orig-file="https://xomino.files.wordpress.com/2017/02/bot8.png?w=700&#038;h=219" data-orig-size="820,256" 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="bot8" data-image-description="" data-medium-file="https://xomino.files.wordpress.com/2017/02/bot8.png?w=700&#038;h=219?w=300" data-large-file="https://xomino.files.wordpress.com/2017/02/bot8.png?w=700&#038;h=219?w=700" class="aligncenter size-full wp-image-3772" src="https://xomino.files.wordpress.com/2017/02/bot8.png?w=700&#038;h=219" alt="bot8" width="700" height="219" srcset="https://xomino.files.wordpress.com/2017/02/bot8.png?w=700&amp;h=219 700w, https://xomino.files.wordpress.com/2017/02/bot8.png?w=150&amp;h=47 150w, https://xomino.files.wordpress.com/2017/02/bot8.png?w=300&amp;h=94 300w, https://xomino.files.wordpress.com/2017/02/bot8.png?w=768&amp;h=240 768w, https://xomino.files.wordpress.com/2017/02/bot8.png 820w" sizes="(max-width: 700px) 100vw, 700px" /></a></p>
  700. <p>How it works and how it is happening will come in future blog posts. For the moment we are up and running&#8230;&#8230;and this blog post is getting long enough already.</p>
  701. <p><strong>Conclusion</strong></p>
  702. <p>This entire process took no more than about 15 minutes to complete. There is a lot more to explore around the deployment of the bot and the further development thereof, but for the moment we are up and running with a bot and Azure Functions (at least in development).</p>
  703. <p><strong>PS</strong></p>
  704. <p>I now have a nagging feeling that this is cool and all, but I really should check and understand how much those new magic services are going to cost&#8230;&#8230;.</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/xomino.wordpress.com/3761/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/xomino.wordpress.com/3761/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=xomino.com&#038;blog=31801104&#038;post=3761&#038;subd=xomino&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
  705. <wfw:commentRss>https://xomino.com/2017/02/22/how-to-create-a-sample-nodejs-bot-which-utilizes-azure-functions-in-15-minutes/feed/</wfw:commentRss>
  706. <slash:comments>4</slash:comments>
  707. <media:thumbnail url="https://xomino.files.wordpress.com/2017/02/bot1.png" />
  708. <media:content url="http://xomino.files.wordpress.com/2017/02/bot1.png" medium="image">
  709. <media:title type="html">bot1</media:title>
  710. </media:content>
  711.  
  712. <media:content url="http://0.gravatar.com/avatar/3857e0587f63bb943797213753361d37?s=96&#38;d=identicon&#38;r=G" medium="image">
  713. <media:title type="html">mdroden</media:title>
  714. </media:content>
  715.  
  716. <media:content url="http://xomino.files.wordpress.com/2017/02/bot1.png" medium="image">
  717. <media:title type="html">bot1</media:title>
  718. </media:content>
  719.  
  720. <media:content url="http://xomino.files.wordpress.com/2017/02/bot2.png" medium="image">
  721. <media:title type="html">bot2</media:title>
  722. </media:content>
  723.  
  724. <media:content url="http://xomino.files.wordpress.com/2017/02/bot3.png" medium="image">
  725. <media:title type="html">bot3</media:title>
  726. </media:content>
  727.  
  728. <media:content url="http://xomino.files.wordpress.com/2017/02/bot4.png" medium="image">
  729. <media:title type="html">bot4</media:title>
  730. </media:content>
  731.  
  732. <media:content url="http://xomino.files.wordpress.com/2017/02/bot5.png" medium="image">
  733. <media:title type="html">bot5</media:title>
  734. </media:content>
  735.  
  736. <media:content url="http://xomino.files.wordpress.com/2017/02/bot6.png" medium="image">
  737. <media:title type="html">bot6</media:title>
  738. </media:content>
  739.  
  740. <media:content url="http://xomino.files.wordpress.com/2017/02/bot9.png" medium="image">
  741. <media:title type="html">bot9</media:title>
  742. </media:content>
  743.  
  744. <media:content url="http://xomino.files.wordpress.com/2017/02/bot8.png" medium="image">
  745. <media:title type="html">bot8</media:title>
  746. </media:content>
  747. </item>
  748. <item>
  749. <title>NWCJS meetup &#8211; Angular 2 for beginners</title>
  750. <link>https://xomino.com/2017/02/09/nwcjs-meetup-angular-2-for-beginners/</link>
  751. <comments>https://xomino.com/2017/02/09/nwcjs-meetup-angular-2-for-beginners/#respond</comments>
  752. <pubDate>Fri, 10 Feb 2017 01:24:22 +0000</pubDate>
  753. <dc:creator><![CDATA[Marky Roden]]></dc:creator>
  754. <category><![CDATA[NWCJS]]></category>
  755. <category><![CDATA[PSC]]></category>
  756.  
  757. <guid isPermaLink="false">http://xomino.com/?p=3758</guid>
  758. <description><![CDATA[Next week, PSC is hosting the 6th meeting of the Northwest Chicago JavaScript meetup group &#8211; seems very quickly that we have got to 6 months and we&#8217;re stall having fun and blowing some minds 🙂 This time around we are very honored to have David Giard, the regional Microsoft Technical Evangelist coming and talk &#8230; <a href="https://xomino.com/2017/02/09/nwcjs-meetup-angular-2-for-beginners/" class="more-link">Continue reading <span class="screen-reader-text">NWCJS meetup &#8211; Angular 2 for&#160;beginners</span></a><img alt="" border="0" src="https://pixel.wp.com/b.gif?host=xomino.com&#038;blog=31801104&#038;post=3758&#038;subd=xomino&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
  759. <content:encoded><![CDATA[<p>Next week, PSC is hosting the 6th meeting of the Northwest Chicago JavaScript meetup group &#8211; seems very quickly that we have got to 6 months and we&#8217;re stall having fun and blowing some minds <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
  760. <p>This time around we are very honored to have David Giard, the regional Microsoft Technical Evangelist coming and talk to us. TypeScript is being used by the Angular development team at Google and it is amazing to see collaboration between the two companies who in other ways are always competing against each other.</p>
  761. <p>Come and see what all the noise is about Angular 2 &#8211; Pizza and &#8220;refreshments&#8221; will be provided <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
  762. <p><a href="http://bit.ly/2kLMS1w" target="_blank">http://bit.ly/2kLMS1w</a></p>
  763. <p>&nbsp;</p>
  764. <p><b>Angular 2 for Beginners </b>by David Giard .</p>
  765. <p>Angular 2 is a JavaScript framework that helps you build rich, interactive Single Page Applications.</p>
  766. <p>This presentation will cover the basics of Angular 2 and the advantages of TypeScript &#8211; a language that adds features to JavaScript, including strong typing. You will learn about data binding, event binding, routing, and observables.</p>
  767. <p><i>David Giard is a Technical Evangelist at Microsoft .  </i></p>
  768. <p>&nbsp;</p>
  769. <p>&nbsp;</p>
  770. <p>&nbsp;</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/xomino.wordpress.com/3758/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/xomino.wordpress.com/3758/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=xomino.com&#038;blog=31801104&#038;post=3758&#038;subd=xomino&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
  771. <wfw:commentRss>https://xomino.com/2017/02/09/nwcjs-meetup-angular-2-for-beginners/feed/</wfw:commentRss>
  772. <slash:comments>0</slash:comments>
  773. <media:content url="http://0.gravatar.com/avatar/3857e0587f63bb943797213753361d37?s=96&#38;d=identicon&#38;r=G" medium="image">
  774. <media:title type="html">mdroden</media:title>
  775. </media:content>
  776. </item>
  777. </channel>
  778. </rss>
  779.  

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//xomino.com/feed

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