<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Chloe Condon 🎀</title>
    <description>The latest articles on DEV Community by Chloe Condon 🎀 (@chloecondon).</description>
    <link>https://dev.to/chloecondon</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F23705%2Fb1151726-db13-4a71-8c0f-39fcee6f0ad5.jpg</url>
      <title>DEV Community: Chloe Condon 🎀</title>
      <link>https://dev.to/chloecondon</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/chloecondon"/>
    <language>en</language>
    <item>
      <title>Using the Gemini API on Cloud Run to Build a Chat Application</title>
      <dc:creator>Chloe Condon 🎀</dc:creator>
      <pubDate>Mon, 31 Mar 2025 14:40:26 +0000</pubDate>
      <link>https://dev.to/chloecondon/using-the-gemini-api-on-cloud-run-to-build-a-chat-application-4673</link>
      <guid>https://dev.to/chloecondon/using-the-gemini-api-on-cloud-run-to-build-a-chat-application-4673</guid>
      <description>&lt;p&gt;(🎨 cover image created with &lt;a href="https://ai.google.dev/gemini-api/docs/image-generation" rel="noopener noreferrer"&gt;Imagen 3&lt;/a&gt; in &lt;a href="https://gemini.google.com/" rel="noopener noreferrer"&gt;Gemini&lt;/a&gt;!)&lt;/p&gt;

&lt;p&gt;Welcome to my blog series on building with Google AI tools! In this post, we'll create a simple chat application powered by &lt;a href="https://ai.google.dev/gemini-api/docs" rel="noopener noreferrer"&gt;Gemini&lt;/a&gt; and hosted on Cloud Run. If you're experimenting with LLMs or are looking to integrate AI into your web apps- then you're in the right place. So, let's starting learning!&lt;/p&gt;

&lt;h2&gt;
  
  
  👩‍🏫 What are we building?
&lt;/h2&gt;

&lt;p&gt;We'll build a web-based chat interface that connects to the Gemini API and returns conversational responses. Our app will run on CLoud Run, and we'll use Cloud Build and Artifact Registry to containerize and deploy it.&lt;/p&gt;

&lt;p&gt;By the end of this tutorial, you'll:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set up a Python web app that talks to the gemini API&lt;/li&gt;
&lt;li&gt;Containerize your app using Docker&lt;/li&gt;
&lt;li&gt;Deploy the app to Cloud Run using Google Cloud tools&lt;/li&gt;
&lt;li&gt;Start thinking about how to integrate LLMs into your own projects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, think less &lt;a href="https://en.wikipedia.org/wiki/HAL_9000" rel="noopener noreferrer"&gt;HAL&lt;/a&gt;, more &lt;a href="https://en.wikipedia.org/wiki/SmarterChild" rel="noopener noreferrer"&gt;SmarterChild&lt;/a&gt;. 🤖💬 Let's dive in!&lt;/p&gt;

&lt;h2&gt;
  
  
  📝 Prerequisites
&lt;/h2&gt;

&lt;p&gt;To get started, you'll need to make sure you have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A Google Cloud project&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;gcloud&lt;/code&gt; CLI installed and authenticated&lt;/li&gt;
&lt;li&gt;Docker installed&lt;/li&gt;
&lt;li&gt;Vertex AI API enabled on your project&lt;/li&gt;
&lt;li&gt;💻 &lt;em&gt;Optional: Use &lt;a href="https://shell.cloud.google.com" rel="noopener noreferrer"&gt;Cloud Shell&lt;/a&gt; for a fully configured environment&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ⚙️ Step 1: Clone the Chat App Template
&lt;/h2&gt;

&lt;p&gt;To get started, let's pull down a prebuilt Python Flask app:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/ChloeCodesThings/chat-app-demo
cd chat-app-demo

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You'll see our app has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;app.py&lt;/code&gt; - Flask routes and Gemini API logic&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;index.html&lt;/code&gt; - A basic chat UI&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Dockerfile&lt;/code&gt; - Instructions for how to build container&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🐳📁 Step 2: Build the Docker Image with Cloud Build
&lt;/h2&gt;

&lt;p&gt;First, you'll need to set some environment variables:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export PROJECT_ID=$(gcloud config get-value project)
export REGION=us-central1
export AR_REPO=chat-app-repo
export SERVICE_NAME=chat-gemini-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create the Artifact Registry repo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gcloud artifacts repositories create $AR_REPO \
--repository-format=docker \
--location=$REGION
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then build and push the image:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gcloud builds submit --tag $REGION-docker.pkg.dev/$PROJECT_ID/$AR_REPO/$SERVICE_NAME
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🚀 Step 3: Deploy to Cloud Run
&lt;/h2&gt;

&lt;p&gt;Now deploy the app:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gcloud run deploy $SERVICE_NAME \
  --image=$REGION-docker.pkg.dev/$PROJECT_ID/$AR_REPO/$SERVICE_NAME \
  --platform=managed \
  --region=$REGION \
  --allow-unauthenticated \
  --set-env-vars=GCP_PROJECT=$PROJECT_ID,GCP_REGION=$REGION
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You’ll get a URL like &lt;a href="https://chat-gemini-app-xxxxxx.run.app" rel="noopener noreferrer"&gt;https://chat-gemini-app-xxxxxx.run.app&lt;/a&gt;. Open it to chat with Gemini!&lt;/p&gt;

&lt;h2&gt;
  
  
  🔎✨ Step 4: How the Gemini Integration Works
&lt;/h2&gt;

&lt;p&gt;Let’s peek at the backend logic. In app.py, this is where the magic happens:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from vertexai.preview.language_models import ChatModel

def create_session():
    chat_model = ChatModel.from_pretrained("gemini-2.0-flash")
    chat = chat_model.start_chat()
    return chat

def response(chat, message):
    result = chat.send_message(message)
    return result.text
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So, each time the user submits a message, our app will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Start a new chat session&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Send the message to the Gemini model&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Return the response as JSON&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🤸‍♀️ Ok, let's try it out!
&lt;/h2&gt;

&lt;p&gt;Enter a question like:&lt;/p&gt;

&lt;p&gt;"What is Google Cloud Platform?"&lt;/p&gt;

&lt;p&gt;…and you’ll get a contextual, LLM-generated response.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎯 What’s Next?
&lt;/h2&gt;

&lt;p&gt;Yay- we did it! 🥳 This is just the beginning! In future posts, we’ll cover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Enhancing the chat UI&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keeping sessions persistent&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Using system prompts to shape Gemini’s responses&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Securing your endpoints with Firebase Auth or API Gateway&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🎊 Give yourself a high-five!&lt;br&gt;
In this post, you learned how to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Build and deploy a simple Flask chat app using Gemini&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Containerize it with Docker and push to Artifact Registry&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Deploy to Cloud Run with minimal config&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Want to learn more? Here's a tutorial you can check out&lt;/p&gt;

&lt;p&gt;Until next time, folks! -Chloe&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>cloud</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Got Bots? 4: Making Bots with the Azure Portal</title>
      <dc:creator>Chloe Condon 🎀</dc:creator>
      <pubDate>Thu, 29 Jul 2021 21:42:49 +0000</pubDate>
      <link>https://dev.to/azure/got-bots-4-making-bots-with-the-azure-portal-23jn</link>
      <guid>https://dev.to/azure/got-bots-4-making-bots-with-the-azure-portal-23jn</guid>
      <description>&lt;p&gt;Thanks to everyone who joined me live for my 4th episode of &lt;a href="https://dev.to/azure/got-bots-a-weekly-bots-series-with-the-microsoft-reactor-2b2h"&gt;Got Bots?&lt;/a&gt; with the Microsoft Reactor last week. It was such a joy to have y'all give your bot suggestions for our Clippy bot, and taking your questions on bots!&lt;/p&gt;

&lt;p&gt;If you missed the fun live, don't worry- you can watch the replay &lt;a href="https://youtu.be/2oAsXTS92LM" rel="noopener noreferrer"&gt;here&lt;/a&gt;, and in the embedded video below! 🤖⤵️&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/2oAsXTS92LM"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Pssst! 🙋‍♀️ If you've missed any previous episode, check out my &lt;strong&gt;Got Bots?&lt;/strong&gt; &lt;a href="https://dev.to/azure/got-bots-a-weekly-bots-series-with-the-microsoft-reactor-2b2h"&gt;series summary dev.to post&lt;/a&gt; to get caught up!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On this episode we cover:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/2oAsXTS92LM?t=235" rel="noopener noreferrer"&gt;3:55&lt;/a&gt; Previously on... &lt;em&gt;Got Bots?&lt;/em&gt; (a short recap)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/2oAsXTS92LM?t=580" rel="noopener noreferrer"&gt;9:40&lt;/a&gt; A review of &lt;a href="https://docs.microsoft.com/en-us/learn/modules/build-qna-solution-qna-maker/?WT.mc_id=academic-33454-chcondon" rel="noopener noreferrer"&gt;QnA Maker&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/2oAsXTS92LM?t=646" rel="noopener noreferrer"&gt;10:46&lt;/a&gt; &lt;a href="https://twitter.com/learnwdaniel" rel="noopener noreferrer"&gt;Daniel&lt;/a&gt; joins the stream for a brief cameo!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/2oAsXTS92LM?t=1240" rel="noopener noreferrer"&gt;20:40&lt;/a&gt; We talk about my &lt;a href="https://dev.to/azure/building-an-animal-crossing-turnip-timer-video-2dni"&gt;Azure Functions Turnip Timer&lt;/a&gt;!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/2oAsXTS92LM?t=1513" rel="noopener noreferrer"&gt;25:13&lt;/a&gt; Testing and training out QnA Maker bot&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/2oAsXTS92LM?t=1579" rel="noopener noreferrer"&gt;26:19&lt;/a&gt; Selecting &lt;a href="https://docs.microsoft.com/en-us/azure/cognitive-services/qnamaker/how-to/chit-chat-knowledge-base/?WT.mc_id=academic-33454-chcondon" rel="noopener noreferrer"&gt;chit-chat&lt;/a&gt; for your bot&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/2oAsXTS92LM?t=2799" rel="noopener noreferrer"&gt;46:39&lt;/a&gt; Follow-up prompts with &lt;a href="https://docs.microsoft.com/en-us/learn/modules/build-qna-solution-qna-maker/?WT.mc_id=academic-33454-chcondon" rel="noopener noreferrer"&gt;QnA Maker&lt;/a&gt;!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Did you have fun? Thanks for joining me this month for &lt;a href="//aka.ms/gotbotslinks"&gt;Got Bots&lt;/a&gt;! Join me next month for Beep Boop: an AI/ML series (more details coming soon!)&lt;/em&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>codenewbie</category>
      <category>webdev</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Got Bots? 3: Making Bots with QnA Maker + Azure Bot Service</title>
      <dc:creator>Chloe Condon 🎀</dc:creator>
      <pubDate>Mon, 19 Jul 2021 23:40:06 +0000</pubDate>
      <link>https://dev.to/azure/got-bots-3-making-bots-with-qna-maker-azure-bot-service-1h3</link>
      <guid>https://dev.to/azure/got-bots-3-making-bots-with-qna-maker-azure-bot-service-1h3</guid>
      <description>&lt;p&gt;Thanks to everyone who joined me live for my 3rd episode of &lt;a href="https://dev.to/azure/got-bots-a-weekly-bots-series-with-the-microsoft-reactor-2b2h"&gt;Got Bots?&lt;/a&gt; with the Microsoft Reactor last week. Appreciate all of the folks who joined me live to build a Clippy QnA bot! 💛📎&lt;/p&gt;

&lt;p&gt;If you missed the fun live, don't worry- you can watch the replay &lt;a href="https://youtu.be/foFsP9zN7ZA" rel="noopener noreferrer"&gt;here&lt;/a&gt;, and in the embedded video below! 🤖⤵️&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/foFsP9zN7ZA"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Pssst! 🙋‍♀️ If you've missed any previous episode, check out my &lt;strong&gt;Got Bots?&lt;/strong&gt; &lt;a href="https://dev.to/azure/got-bots-a-weekly-bots-series-with-the-microsoft-reactor-2b2h"&gt;series summary dev.to post&lt;/a&gt; to get caught up!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On this episode we cover:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/foFsP9zN7ZA?t=173" rel="noopener noreferrer"&gt;2:53&lt;/a&gt; Previously on... &lt;em&gt;Got Bots?&lt;/em&gt; (a short recap)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/foFsP9zN7ZA?t=551" rel="noopener noreferrer"&gt;9:11&lt;/a&gt; What is QnA Maker, and who am I/why do I build bots?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/foFsP9zN7ZA?t=1064" rel="noopener noreferrer"&gt;17:44&lt;/a&gt; Why built in chit-chat is important/useful when building bots!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/foFsP9zN7ZA?t=1485" rel="noopener noreferrer"&gt;24:45&lt;/a&gt; How to get started building a bot with &lt;a href="https://docs.microsoft.com/en-us/learn/modules/build-faq-chatbot-qna-maker-azure-bot-service/?WT.mc_id=academic-33453-chcondon" rel="noopener noreferrer"&gt;Azure QnA Maker&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/foFsP9zN7ZA?t=1866" rel="noopener noreferrer"&gt;31:06&lt;/a&gt; Populate our database with a PDF/Word Doc (&lt;a href="https://docs.microsoft.com/en-us/azure/cognitive-services/qnamaker/concepts/data-sources-and-content/?WT.mc_id=academic-33453-chcondon" rel="noopener noreferrer"&gt;try out these examples in our docs!&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/foFsP9zN7ZA?t=2099" rel="noopener noreferrer"&gt;34:59&lt;/a&gt; I chit-chat about how great the &lt;a href="https://docs.microsoft.com/en-us/azure/cognitive-services/qnamaker/how-to/chit-chat-knowledge-base/?WT.mc_id=academic-33453-chcondon" rel="noopener noreferrer"&gt;Chit-Chat feature&lt;/a&gt; is. 🗣&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/foFsP9zN7ZA?t=2786" rel="noopener noreferrer"&gt;46:26&lt;/a&gt; I upload our PDF and ✨magically✨ create our knowledge base!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/foFsP9zN7ZA?t=2930" rel="noopener noreferrer"&gt;48:50&lt;/a&gt; Testing our QnA bot and training the knowledge base.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1415370520888061955-483" src="https://platform.twitter.com/embed/Tweet.html?id=1415370520888061955"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1415370520888061955-483');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1415370520888061955&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Did you have fun? check out &lt;a href="https://dev.to/azure/got-bots-4-making-bots-with-the-azure-portal-23jn"&gt;Got Bots? 4&lt;/a&gt; where I continue to work on our &lt;a href="https://docs.microsoft.com/en-us/learn/modules/build-faq-chatbot-qna-maker-azure-bot-service/?WT.mc_id=academic-33453-chcondon" rel="noopener noreferrer"&gt;QnA Maker&lt;/a&gt; Clippy bot, and continue to test and add more to our knowledge base!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>codenewbie</category>
      <category>webdev</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Got Bots?: A Weekly Bots Series with the Microsoft Reactor</title>
      <dc:creator>Chloe Condon 🎀</dc:creator>
      <pubDate>Thu, 15 Jul 2021 21:15:48 +0000</pubDate>
      <link>https://dev.to/azure/got-bots-a-weekly-bots-series-with-the-microsoft-reactor-2b2h</link>
      <guid>https://dev.to/azure/got-bots-a-weekly-bots-series-with-the-microsoft-reactor-2b2h</guid>
      <description>&lt;p&gt;Have you ever wanted to learn about bots, but don't know where to start? 🤖 If you're looking for a fun, safe environment to ask questions and work through various projects, demos, examples, and free Microsoft resources- this show is for you!&lt;/p&gt;

&lt;h3&gt;
  
  
  Check out this series page, with links to summaries/timestamps, resources, and more! ⤵️
&lt;/h3&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://dev.to/chloecondon/series/13937"&gt;Got Bots Series Page!🤖💬&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F318mwhutlowryqiw0jay.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F318mwhutlowryqiw0jay.png" alt="image promoting got bots series" width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Join me, &lt;a href="https://twitter.com/ChloeCondon" rel="noopener noreferrer"&gt;Chloe Condon&lt;/a&gt; (Senior Cloud Advocate on the Next Generation Experiences Team @ Microsoft) as I walk you through some of my favorite beginner projects to get started with building your own Twitter bots, chat bots, and more! This series will also cover beset practices when designing bots, and discuss the ethical choices you should consider while creating them.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>codenewbie</category>
      <category>webdev</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Got Bots? 2: Making Bots with Azure Logic Apps</title>
      <dc:creator>Chloe Condon 🎀</dc:creator>
      <pubDate>Thu, 15 Jul 2021 00:43:11 +0000</pubDate>
      <link>https://dev.to/azure/got-bots-2-making-bots-with-azure-logic-apps-47nm</link>
      <guid>https://dev.to/azure/got-bots-2-making-bots-with-azure-logic-apps-47nm</guid>
      <description>&lt;p&gt;Thanks to everyone who joined me live for our 2nd episode of &lt;a href="//aka.ms/gotbots"&gt;Got Bots? with the Microsoft Reactor&lt;/a&gt;- I had a great time talking with y'all about Twitter bots, &lt;a href="https://docs.microsoft.com/en-us/learn/modules/intro-to-logic-apps/?WT.mc_id=academic-33452-chcondon" rel="noopener noreferrer"&gt;Azure Logic Apps&lt;/a&gt;, and discussing all the different ways to build a bot. 🤖 I'm so pleased with our final outcome: Bon Jovi Bot!&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1413275719459688451-474" src="https://platform.twitter.com/embed/Tweet.html?id=1413275719459688451"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1413275719459688451-474');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1413275719459688451&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;If you missed the fun live, don't worry- you can watch the replay &lt;a href="https://youtu.be/TzJ7g31AXH4" rel="noopener noreferrer"&gt;here&lt;/a&gt;, and in the embedded video below!&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/TzJ7g31AXH4"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On this episode we cover:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/TzJ7g31AXH4?t=135" rel="noopener noreferrer"&gt;2:15&lt;/a&gt; Clippy Teams/desktop &lt;a href="https://www.microsoft.com/en-us/microsoft-365/blog/2021/07/08/get-nostalgic-with-new-microsoft-teams-backgrounds/?WT.mc_id=academic-33452-chcondon" rel="noopener noreferrer"&gt;background&lt;/a&gt;! 📎&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/TzJ7g31AXH4?t=411" rel="noopener noreferrer"&gt;6:51&lt;/a&gt; A quick recap on what we covered on &lt;a href="https://dev.to/azure/got-bots-1-intro-to-bots-ethical-bot-creation-2m17"&gt;episode 1 of Got Bots&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/TzJ7g31AXH4?t=730" rel="noopener noreferrer"&gt;12:10&lt;/a&gt; I reference &lt;a class="mentioned-user" href="https://dev.to/jaydestro"&gt;@jaydestro&lt;/a&gt; and how I originally learned about &lt;a href="https://docs.microsoft.com/en-us/learn/modules/intro-to-logic-apps/?WT.mc_id=academic-33452-chcondon" rel="noopener noreferrer"&gt;Azure Logic Apps&lt;/a&gt; on his show &lt;a class="mentioned-user" href="https://dev.to/azurefunbytes"&gt;@azurefunbytes&lt;/a&gt; 📺 &lt;em&gt;You can check out the &lt;a href="https://dev.to/azure/azurefunbytes-episode-9-azure-containers-with-chloecondon-reminder-thursday-8-6-2020-2pm-edt-1ngh"&gt;original episode here&lt;/a&gt;, and check out the birth of the &lt;a href="https://twitter.com/TheBottFatherr" rel="noopener noreferrer"&gt;@TheBottFatherr&lt;/a&gt; LIVE!&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/TzJ7g31AXH4?t=765" rel="noopener noreferrer"&gt;12:45&lt;/a&gt; Why I hate &lt;a href="https://twitter.com/ChloeCondon/status/1349845704160673795" rel="noopener noreferrer"&gt;shirt bots&lt;/a&gt;, and why you should make sure your bots are ethical, kind, fair, and do not harass people.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/TzJ7g31AXH4?t=1005" rel="noopener noreferrer"&gt;16:45&lt;/a&gt; I show a couple of my favorite bots that I originally built with &lt;a href="https://docs.microsoft.com/en-us/learn/modules/intro-to-logic-apps/?WT.mc_id=academic-33452-chcondon" rel="noopener noreferrer"&gt;Azure Logic Apps&lt;/a&gt; including &lt;a href="https://twitter.com/itsbritneybott" rel="noopener noreferrer"&gt;Britney Bot&lt;/a&gt; and &lt;a href="https://twitter.com/bot_shania" rel="noopener noreferrer"&gt;Shania Bot&lt;/a&gt;, &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/TzJ7g31AXH4?t=1260" rel="noopener noreferrer"&gt;21:00&lt;/a&gt; As promised, here are some Shania Twain bops: &lt;a href="https://youtu.be/ZJL4UGSbeFg" rel="noopener noreferrer"&gt;Man! I Feel Like a Woman&lt;/a&gt; (AKA "let's go girls), &lt;a href="https://youtu.be/mqFLXayD6e8" rel="noopener noreferrer"&gt;That Don't Impress Me Much&lt;/a&gt;, &lt;a href="https://youtu.be/KNZH-emehxA" rel="noopener noreferrer"&gt;You're Still the One&lt;/a&gt; 🎶🤠🎸&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/TzJ7g31AXH4?t=1525" rel="noopener noreferrer"&gt;25:25&lt;/a&gt; I start building a Bon Jovi bot using &lt;a href="https://docs.microsoft.com/en-us/learn/modules/intro-to-logic-apps/?WT.mc_id=academic-33452-chcondon" rel="noopener noreferrer"&gt;Azure Logic Apps&lt;/a&gt;!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/TzJ7g31AXH4?t=1703" rel="noopener noreferrer"&gt;28:23&lt;/a&gt; A sneak peek of how &lt;a href="https://twitter.com/itsbritneybott" rel="noopener noreferrer"&gt;Britney Bot&lt;/a&gt; was made behind-the-scenes in the &lt;a href="https://azure.microsoft.com/en-us/features/azure-portal/?WT.mc_id=academic-33452-chcondon" rel="noopener noreferrer"&gt;Azure portal&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/TzJ7g31AXH4?t=1871" rel="noopener noreferrer"&gt;31:11&lt;/a&gt; I mention a talk that I gave called at POWERful Devs conf called &lt;a href="https://channel9.msdn.com/Shows/POWERful-Devs/How-to-Make-AI-Feel-Less-Like-Sci-Fi-with-AI-Builder" rel="noopener noreferrer"&gt;How to Make AI Feel Less Like Sci-Fi with AI Builder&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/TzJ7g31AXH4?t=2674" rel="noopener noreferrer"&gt;44:34&lt;/a&gt; Spin up a &lt;a href="https://docs.microsoft.com/en-us/learn/modules/intro-to-logic-apps/?WT.mc_id=academic-33452-chcondon" rel="noopener noreferrer"&gt;Logic App&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/TzJ7g31AXH4?t=4446" rel="noopener noreferrer"&gt;1:14:06&lt;/a&gt; It's alive!! 🥳  &lt;a href="https://twitter.com/bonjovibott/status/1413275719459688451" rel="noopener noreferrer"&gt;@bonjovibott&lt;/a&gt; tweets live using our &lt;a href="https://docs.microsoft.com/en-us/learn/modules/intro-to-logic-apps/?WT.mc_id=academic-33452-chcondon" rel="noopener noreferrer"&gt;Azure Logic App&lt;/a&gt;!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1413275719459688451-77" src="https://platform.twitter.com/embed/Tweet.html?id=1413275719459688451"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1413275719459688451-77');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1413275719459688451&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Did you have fun? Check out &lt;a href="https://dev.to/azure/got-bots-3-making-bots-with-qna-maker-azure-bot-service-1h3"&gt;Got Bots? 3: Making Bots with Logic Apps&lt;/a&gt; where I make a bot with &lt;a href="https://docs.microsoft.com/en-us/learn/modules/build-faq-chatbot-qna-maker-azure-bot-service/?WT.mc_id=academic-33452-chcondon" rel="noopener noreferrer"&gt;QnA Maker&lt;/a&gt;!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>codenewbie</category>
      <category>webdev</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Got Bots? 1: Intro to Bots &amp; Ethical Bot Creation</title>
      <dc:creator>Chloe Condon 🎀</dc:creator>
      <pubDate>Thu, 08 Jul 2021 21:24:15 +0000</pubDate>
      <link>https://dev.to/azure/got-bots-1-intro-to-bots-ethical-bot-creation-2m17</link>
      <guid>https://dev.to/azure/got-bots-1-intro-to-bots-ethical-bot-creation-2m17</guid>
      <description>&lt;p&gt;Thanks to everyone who joined me live for our 1st episode of &lt;a href="//aka.ms/gotbots"&gt;Got Bots? with the Microsoft Reactor&lt;/a&gt;- it was so much fun to chat with y'all, share bot knowledge, and swap stories of the early days of AOL bots. 🤖&lt;/p&gt;

&lt;p&gt;If you missed the fun live, don't worry- you can watch the replay &lt;a href="https://youtu.be/egozxtthkV4" rel="noopener noreferrer"&gt;here&lt;/a&gt;, and in the embedded video below!&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/egozxtthkV4"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On this episode we cover:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/egozxtthkV4?t=330" rel="noopener noreferrer"&gt;5:35&lt;/a&gt; How I got started with bots (the birth of &lt;a href="https://twitter.com/bot_shania" rel="noopener noreferrer"&gt;Shania Bot&lt;/a&gt; 🤠🎶)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/egozxtthkV4?t=569" rel="noopener noreferrer"&gt;9:26&lt;/a&gt; Special guest, and co-creator of the Diva Bots &lt;a href="https://twitter.com/MetzinAround" rel="noopener noreferrer"&gt;Pj Metz&lt;/a&gt; joins the show! We chat about &lt;a href="https://docs.microsoft.com/en-us/learn/modules/intro-to-logic-apps/?WT.mc_id=academic-33451-chcondon" rel="noopener noreferrer"&gt;Azure Logic Apps&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/egozxtthkV4?t=875" rel="noopener noreferrer"&gt;14:35&lt;/a&gt; We touch briefly on &lt;a href="https://docs.microsoft.com/en-us/learn/modules/build-faq-chatbot-qna-maker-azure-bot-service/?WT.mc_id=academic-33451-chcondon" rel="noopener noreferrer"&gt;Azure QnA maker&lt;/a&gt;, as well as my &lt;a href="https://dev.to/azure/wine-not-build-a-bot-32fk"&gt;Wine Bot&lt;/a&gt; post on Dev.to 🍷&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/egozxtthkV4?t=1035" rel="noopener noreferrer"&gt;17:15&lt;/a&gt; Pj and I chat about &lt;a href="https://twitter.com/bot_shania" rel="noopener noreferrer"&gt;Shania Bot&lt;/a&gt;, &lt;a href="https://twitter.com/BotianaGrande" rel="noopener noreferrer"&gt;BotianaGrande&lt;/a&gt;, &lt;a href="https://twitter.com/MechanicalCarey" rel="noopener noreferrer"&gt;Mechanical Carey&lt;/a&gt;, &lt;a href="https://twitter.com/JustBotPaid" rel="noopener noreferrer"&gt;JustBotPaid&lt;/a&gt;, &lt;a href="https://twitter.com/itsbritneybott" rel="noopener noreferrer"&gt;Britney Bot&lt;/a&gt;, and more of our favs! 🎶&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/egozxtthkV4?t=1461" rel="noopener noreferrer"&gt;24:21&lt;/a&gt; We throw it back to the OG bot: &lt;a href="https://www.vice.com/en/article/jpgpey/a-history-of-smarterchild" rel="noopener noreferrer"&gt;SmarterChild&lt;/a&gt;!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/egozxtthkV4?t=1740" rel="noopener noreferrer"&gt;29:00&lt;/a&gt; I mention my pal &lt;a href="https://twitter.com/benparr" rel="noopener noreferrer"&gt;Ben Parr&lt;/a&gt; and his company &lt;a href="https://www.octaneai.com/" rel="noopener noreferrer"&gt;Octane AI&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/egozxtthkV4?t=1780" rel="noopener noreferrer"&gt;29:40&lt;/a&gt; Virtual &lt;a href="https://www.instagram.com/p/CN5olSVplT4/" rel="noopener noreferrer"&gt;Tinkerbell&lt;/a&gt; meet &amp;amp; greet?! 🧚🏼😱&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/egozxtthkV4?t=2160" rel="noopener noreferrer"&gt;36:00&lt;/a&gt; I mention The Bot Father himself, &lt;a class="mentioned-user" href="https://dev.to/jaydestro"&gt;@jaydestro&lt;/a&gt;! &lt;a href="https://dev.to/azure/azurefunbytes-episode-47-azure-logic-apps-with-chloecondon-511"&gt;Check out our episode&lt;/a&gt; where we chat all about Azure Logic Apps and build THE Bot Father!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/egozxtthkV4?t=2466" rel="noopener noreferrer"&gt;41:06&lt;/a&gt; A personal story about ethical bot creation (and shirt bots- ugh 😒😒😒)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Did you have fun? Check out &lt;a href="https://dev.to/azure/got-bots-2-making-bots-with-azure-logic-apps-47nm"&gt;Got Bots? 2: Making Bots with Logic Apps&lt;/a&gt; where I take your questions and spin up some fun bots with &lt;a href="https://docs.microsoft.com/en-us/learn/modules/intro-to-logic-apps/?WT.mc_id=academic-33451-chcondon" rel="noopener noreferrer"&gt;Azure Logic Apps&lt;/a&gt;- see ya then, and happy botting!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>codenewbie</category>
      <category>webdev</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Using the Microsoft Face API, Spotify, and Azure Functions to get *emotional*</title>
      <dc:creator>Chloe Condon 🎀</dc:creator>
      <pubDate>Thu, 26 Nov 2020 01:22:37 +0000</pubDate>
      <link>https://dev.to/azure/using-the-microsoft-face-api-spotify-and-azure-functions-to-get-emotional-14o2</link>
      <guid>https://dev.to/azure/using-the-microsoft-face-api-spotify-and-azure-functions-to-get-emotional-14o2</guid>
      <description>&lt;p&gt;Hey pals! This blog post was written in collaboration with &lt;a href="https://www.linkedin.com/in/natalie-huang-09bba6178/" rel="noopener noreferrer"&gt;Natalie Huang&lt;/a&gt;, a student in our 1st Azure Functions cohort of &lt;a href="https://www.bitproject.org/" rel="noopener noreferrer"&gt;Bit Project&lt;/a&gt;'s BitCamp. Below is the blog post tutorial she created showcasing the &lt;em&gt;amazing&lt;/em&gt; new Azure Functions skills she used during the program. Natalie now works as an instructor for incoming &lt;a href="https://www.bitproject.org/" rel="noopener noreferrer"&gt;Bit Project&lt;/a&gt; cohorts (while attending college- you can &lt;a href="https://youtu.be/2T1V_jTxVCg" rel="noopener noreferrer"&gt;check out one of our lectures together here&lt;/a&gt; 🤩), and I could not be more proud of the work they has done this year! Enjoy Natalie's tutorial below!&lt;/p&gt;

&lt;p&gt;You can get started with some free Microsoft Learn tutorials and follow along with Natalie at &lt;a href="http://aka.ms/bitcampfunctionsnatalie" rel="noopener noreferrer"&gt;http://aka.ms/bitcampfunctionsnatalie&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💕 -Chloe&lt;/p&gt;

&lt;p&gt;Ever looked at your face and wondered how you were feeling? No? Neither have I, but lucky for the both of us, the Microsoft &lt;a href="https://docs.microsoft.com/en-us/learn/modules/identify-faces-with-computer-vision/?WT.mc_id=academic-11214-chcondon" rel="noopener noreferrer"&gt;Face API&lt;/a&gt; can do exactly this. In this series, I’ll be outlining the process of building an app that recommends songs based on a picture(tagline: Upload a selfie. We choose the songs). The user will login to Spotify, upload a picture of themselves, and receive a customized playlist that (hopefully) matches their current mood. Here's a basic flowchart of our final project:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fcbpvqaltlkjxz8o4ocgh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fcbpvqaltlkjxz8o4ocgh.png" alt="Alt Text" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In Part 1, we’ll be focusing on the centerpiece: deciphering the user’s face.&lt;/p&gt;

&lt;p&gt;We'll be using &lt;a href="https://docs.microsoft.com/en-us/learn/modules/create-serverless-logic-with-azure-functions/?WT.mc_id=academic-11214-chcondon" rel="noopener noreferrer"&gt;Azure Functions&lt;/a&gt; in this project. If you're unfamiliar, Azure Functions allows you to write and deploy serverless code without having to manage infrastructure. It incorporates a variety of triggers that allows your function to run on-demand in response to a variety of events. Here are a couple common triggers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTTP Trigger (today's star &amp;lt;3)&lt;/li&gt;
&lt;li&gt;Timers Trigger(runs on a timed bases: daily, weekly, etc)&lt;/li&gt;
&lt;li&gt;Blob Trigger(when a file is added to Azure Blob storage)&lt;/li&gt;
&lt;li&gt;Cosmos DB Trigger(when data is added to Azure Cosmos DB)&lt;/li&gt;
&lt;li&gt;Storage queue Trigger(when a message is submitted to the storage queue)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To familiarze yourself with the different types, I'd recommend trying out &lt;a href="https://docs.microsoft.com/en-us/learn/modules/execute-azure-function-with-triggers/?WT.mc_id=academic-11214-chcondon" rel="noopener noreferrer"&gt;this Microsoft module&lt;/a&gt;, which runs you through some basic examples.&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating a Face API Subscription
&lt;/h3&gt;

&lt;p&gt;We'll be using the Microsoft API to extract data on a person's emotions from a picture. The &lt;a href="https://docs.microsoft.com/en-us/learn/modules/identify-faces-with-computer-vision/?WT.mc_id=academic-11214-chcondon" rel="noopener noreferrer"&gt;Face API&lt;/a&gt; is a cognitive service that provides algorithms for identifying/detecting faces and analyzing attributes of faces in images. For more information, check out the API documentation and tutorials &lt;a href="https://docs.microsoft.com/en-us/azure/cognitive-services/face/?WT.mc_id=academic-11214-chcondon" rel="noopener noreferrer"&gt;here&lt;/a&gt;. First step is to get an actual Face API endpoint. This can be done easily in the &lt;a href="https://portal.azure.com/?WT.mc_id=academic-11214-chcondon" rel="noopener noreferrer"&gt;Azure Portal&lt;/a&gt;: Go to &lt;strong&gt;Create a Resource&lt;/strong&gt;, press the &lt;strong&gt;AI + Machine Learning&lt;/strong&gt; tab on the left, and select &lt;strong&gt;Face&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Foq4kieer4sdmico7t3xw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Foq4kieer4sdmico7t3xw.png" alt="Alt Text" width="800" height="948"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Deploy your resource, and save your endpoint!&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating an Azure Function
&lt;/h3&gt;

&lt;p&gt;It's time to create our &lt;a href="https://docs.microsoft.com/en-us/learn/modules/create-serverless-logic-with-azure-functions/?WT.mc_id=academic-11214-chcondon" rel="noopener noreferrer"&gt;Azure Function&lt;/a&gt;- I'm just using the &lt;a href="https://portal.azure.com/?WT.mc_id=academic-11214-chcondon" rel="noopener noreferrer"&gt;Azure Portal&lt;/a&gt;, but those who prefer Visual Studio Code can refer &lt;a href="https://docs.microsoft.com/en-us/azure/azure-functions/functions-create-first-function-vs-code?pivots=programming-language-javascript/?WT.mc_id=academic-11214-chcondon" rel="noopener noreferrer"&gt;here.&lt;/a&gt; In the portal, select &lt;strong&gt;Create a Resource **and then press **Function App&lt;/strong&gt;. Select a Resource Group(mine uses the same one as the Face API resource) and give the app a unique name. For runtime stack, select Node.js and Version 12. For region, choose one near you.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzc89fl0laclig8jqh84n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzc89fl0laclig8jqh84n.png" alt="Alt Text" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Go to &lt;strong&gt;Hosting&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Select or create a new storage account to be linked to this function app. Select your operating system and the consumption plan. &lt;/p&gt;

&lt;p&gt;Go to &lt;strong&gt;Monitoring&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Enable Application Insights. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Review + create&lt;/strong&gt; your app! Once it's deployed, return to the Portal homepage and click into your newly deployed Function App. In the app service, click the &lt;strong&gt;Functions&lt;/strong&gt; in the left tab(has the little fx symbol).&lt;/p&gt;

&lt;p&gt;Now that our Function App exists, we can create an actual function. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fiap3rlolotn2xkw687y2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fiap3rlolotn2xkw687y2.png" alt="Alt Text" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Your functions page should look something like this, but empty. To create a function, click the &lt;strong&gt;+Add&lt;/strong&gt; button and select HTTP trigger. Set your authorization level to function if you want to force the caller to provide a key, and anonymous if not. (Mine is currently anonymous).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F06lb0y7ateaa0g1qyg6y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F06lb0y7ateaa0g1qyg6y.png" alt="Alt Text" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Wait for the function to deploy, then click into the &lt;strong&gt;Code + Test&lt;/strong&gt; tab and go to your index.js file.&lt;/p&gt;

&lt;p&gt;Replace the code with this: &lt;/p&gt;

&lt;p&gt;This code is triggered by an HTTP request and parses HTML multipart data(our image!) with the help of the extremely helpful &lt;a href="https://www.npmjs.com/package/parse-multipart" rel="noopener noreferrer"&gt;parse-multipart&lt;/a&gt; library. We're then calling the Face API in the function &lt;strong&gt;analyzeImage&lt;/strong&gt; using the subscription key and endpoint from earlier, passing in our parsed image. This uses the &lt;a href="https://www.npmjs.com/package/request-promise" rel="noopener noreferrer"&gt;request-promise&lt;/a&gt; library, which is basically request but with Promise support, which we require in our async &lt;strong&gt;analyzeImage&lt;/strong&gt; function. Using &lt;code&gt;JSON.parse()&lt;/code&gt;, we return the body in a JSON format.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;multipart&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;parse-multipart&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;request-promise&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;util&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;util&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;JavaScript HTTP trigger function processed a request.&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
    &lt;span class="c1"&gt;// encode body to base64 string&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;bodyBuffer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;Buffer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;boundary&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;multipart&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getBoundary&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;content-type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
    &lt;span class="c1"&gt;// parse the body with parse-multipart&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;parts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;multipart&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;bodyBuffer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;boundary&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;//calls a function that calls the Face API&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;analyzeImage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;parts&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;//stick the data returned into our http response!&lt;/span&gt;
    &lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nx"&gt;result&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
    &lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;done&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;  
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;analyzeImage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;byteArray&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;subscriptionKey&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;YOUR KEY&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;uriBase&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;YOUR ENDPOINT&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/face/v1.0/detect&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="c1"&gt;//Face API params&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;returnFaceId&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;true&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;returnFaceAttributes&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;emotion&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;uri&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;uriBase&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;qs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;byteArray&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;application/octet-stream&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Ocp-Apim-Subscription-Key&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;subscriptionKey&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;jsonResponse&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
            &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Error: &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="nx"&gt;jsonResponse&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;   
    &lt;span class="p"&gt;});&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;jsonResponse&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here's an example of the JSON response returned for this image:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"result"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"faceId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"89afb8d2-500f-4f02-8863-8278fe5f47a2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"faceRectangle"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"top"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;268&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"left"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;338&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"width"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;270&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"height"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;270&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"faceAttributes"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"emotion"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"anger"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"contempt"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"disgust"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"fear"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"happiness"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"neutral"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"sadness"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"surprise"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Apparently I'm 100% happy. yay.&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating a Test HTML Webpage
&lt;/h3&gt;

&lt;p&gt;Yay! We pretty much have everything we need to detect emotion in a face! We're going to test this out with a simple HTML webpage, though the actual frontend of our project will be a React App that we make later. &lt;/p&gt;

&lt;p&gt;Here's the sample HTML webage with a HTML form(ft absolutely nonexistent styling)...&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"utf-8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;http-equiv=&lt;/span&gt;&lt;span class="s"&gt;"X-UA-Compatible"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"IE=edge"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"viewport"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"width=device-width, initial-scale=1"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"description"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"author"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;Azure App Service - Sample Static HTML Site&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"navbar-wrapper"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Test your Function!&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
          &lt;span class="nt"&gt;&amp;lt;hr/&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

    &lt;span class="c"&gt;&amp;lt;!-- Wrap the rest of the page in another container to center all the content. --&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
      &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;loadFile&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;image&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;output&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;src&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;URL&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createObjectURL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;files&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
      &lt;span class="p"&gt;};&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;form&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"myform"&lt;/span&gt; &lt;span class="na"&gt;onsubmit=&lt;/span&gt;&lt;span class="s"&gt;"event.preventDefault(); handle(event);"&lt;/span&gt; &lt;span class="na"&gt;enctype=&lt;/span&gt;&lt;span class="s"&gt;"multipart/form-data"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"form-group"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="nt"&gt;&amp;lt;label&lt;/span&gt; &lt;span class="na"&gt;for=&lt;/span&gt;&lt;span class="s"&gt;"file"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt; Upload a Face Image File:&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
          &lt;span class="c"&gt;&amp;lt;!--&amp;lt;input type="file" name="file" id="file" class="form-control-file" /&amp;gt; --&amp;gt;&lt;/span&gt;
          &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"file"&lt;/span&gt;  &lt;span class="na"&gt;accept=&lt;/span&gt;&lt;span class="s"&gt;"image/*"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"image"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"file"&lt;/span&gt; &lt;span class="na"&gt;onchange=&lt;/span&gt;&lt;span class="s"&gt;"loadFile(event)"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
          &lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"output"&lt;/span&gt; &lt;span class="na"&gt;width=&lt;/span&gt;&lt;span class="s"&gt;"200"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

        &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"submit"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"btn btn-secondary btn-sm"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Submit&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt; 
        &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"btn btn-secondary btn-sm"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"clear"&lt;/span&gt; &lt;span class="na"&gt;onclick=&lt;/span&gt;&lt;span class="s"&gt;"event.preventDefault();clearForm()"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Clear&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/form&amp;gt;&lt;/span&gt;

      &lt;span class="nt"&gt;&amp;lt;hr/&amp;gt;&lt;/span&gt;

      &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"emotion"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

    &lt;span class="c"&gt;&amp;lt;!-- Bootstrap core JavaScript
    ================================================== --&amp;gt;&lt;/span&gt;
    &lt;span class="c"&gt;&amp;lt;!-- Placed at the end of the document so the pages load faster --&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;jQuery&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;&amp;lt;script src="../../assets/js/vendor/jquery.min.js"&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="s1"&gt;/script&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
    &lt;span class="c"&gt;&amp;lt;!-- &amp;lt;script src="js/bootstrap.min.js"&amp;gt;&amp;lt;/script&amp;gt; --&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"app.js"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text/javascript"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;



&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;...and the corresponding js file(called app.js).&lt;br&gt;
Inside the app.js file, the &lt;code&gt;handle(event)&lt;/code&gt;function is called upon form submission, and makes an http post call to your Azure Function with the submitted image in the body. Make sure you replace the url with your own Function url, and the key with your Function key.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;handle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;

    &lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stopPropagation&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;preventDefault&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;---- handle ---&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;myform&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;myform&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;---- myform ---&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nx"&gt;myform&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;FormData&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;myform&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;---- handle completed---&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ajax&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;YOUR FUNCTION URL HERE&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;crossDomain&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;contentType&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;processData&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;

        &lt;span class="c1"&gt;//INCLUDE THIS HEADER IS YOUR FUNCTION IS NOT AUTH-LEVEL: ANONYMOUS, AND STICK YOUR FUNCTION KEY INSIDE&lt;/span&gt;
        &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;x-functions-key&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;YOUR FUNCTION KEY&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;

        &lt;span class="na"&gt;success&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

            &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
            &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;emotion&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;faceAttributes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;emotion&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

            &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;resultString&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`

            &amp;lt;h3&amp;gt;Emotions in the image:&amp;lt;/h3&amp;gt;&amp;lt;br /&amp;gt;
            &amp;lt;p&amp;gt;anger: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;emotion&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;anger&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;/p&amp;gt;
            &amp;lt;p&amp;gt;contempt: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;emotion&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;contempt&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;/p&amp;gt;
            &amp;lt;p&amp;gt;disgust: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;emotion&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;disgust&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;/p&amp;gt;
            &amp;lt;p&amp;gt;fear: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;emotion&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;fear&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;/p&amp;gt;
            &amp;lt;p&amp;gt;happiness: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;emotion&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;happiness&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;/p&amp;gt;
            &amp;lt;p&amp;gt;neutral: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;emotion&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;neutral&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;/p&amp;gt;
            &amp;lt;p&amp;gt;sadness: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;emotion&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sadness&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;/p&amp;gt;
            &amp;lt;p&amp;gt;surprise: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;emotion&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;surprise&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;/p&amp;gt;
            `&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

            &lt;span class="nf"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#emotion&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;html&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;resultString&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;

        &lt;span class="na"&gt;error&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;---ERROR: &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;clearForm&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
    &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;myform&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;reset&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;emotion&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;innerHTML&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can deploy this html page however you like- I'm just doing it with the &lt;strong&gt;live server extension&lt;/strong&gt; in &lt;a href="https://docs.microsoft.com/en-us/azure/azure-functions/functions-create-first-function-vs-code?pivots=programming-language-javascript/?WT.mc_id=academic-11214-chcondon" rel="noopener noreferrer"&gt;Visual Studio Code&lt;/a&gt; like so:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6qk60c4h6m1wgrhxh2me.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6qk60c4h6m1wgrhxh2me.png" alt="Alt Text" width="738" height="1030"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The final step for this test to work is to allow this HTML page to interact with your function through CORS. CORS, aka Cross-origin resource sharing, allows whatever domains our web application will be hosted on to access resources from another domain (in this case, we need access to our Azure Function). Go to your App Service resource(not the individual function) and click the CORS tab on the left side. Add your http: url to the allowed origins (this works with local hosts and live servers).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2my8urue4kuuxs0u393q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2my8urue4kuuxs0u393q.png" alt="Alt Text" width="800" height="541"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Run your HTML page, upload a file, and have fun seeing the results!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fi3erssscbzjz28q5wo73.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fi3erssscbzjz28q5wo73.png" alt="Alt Text" width="800" height="673"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check out the range in her face!! &lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Building a Heart Rate Monitor with Azure IoT Hub</title>
      <dc:creator>Chloe Condon 🎀</dc:creator>
      <pubDate>Mon, 31 Aug 2020 17:31:52 +0000</pubDate>
      <link>https://dev.to/azure/building-a-heart-rate-monitor-with-azure-iot-hub-gn</link>
      <guid>https://dev.to/azure/building-a-heart-rate-monitor-with-azure-iot-hub-gn</guid>
      <description>&lt;p&gt;If you've ever built an IoT project from scratch, then you know how difficult it can be to start. From acquiring the right hardware, to choosing the right tools, to testing out compatible APIs- getting started with IoT can sometimes make you want to throw your computer across the room... 😖&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foam3rlzqd7fg9frahd3p.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foam3rlzqd7fg9frahd3p.gif" alt="snl computer smash gif" width="471" height="265"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lucky for you- &lt;a href="https://github.com/bahburs" rel="noopener noreferrer"&gt;Beau Hayes-Pollard&lt;/a&gt; (Brookline High School, Class of 2022 🎓) has gone through all that for you and has created this amazing tutorial for his HeartRate Monitor with &lt;a href="https://docs.microsoft.com/en-us/learn/modules/introduction-to-iot-hub/?WT.mc_id=bitprojectbeau-devto-chcondon" rel="noopener noreferrer"&gt;Azure IoT Hub&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmmzt9evh501kpyrmxpnb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmmzt9evh501kpyrmxpnb.png" alt="screenshot of beau demoing project" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While working as a mentor with the most recent cohort of students in &lt;a href="https://www.bitproject.org/bitcamp" rel="noopener noreferrer"&gt;BitCamp&lt;/a&gt;, I had the pleasure of watching Beau go through the high-highs and low-lows of debugging + troubleshooting how to make his very first IoT hardware project. 🤩 This project uses &lt;a href="https://docs.microsoft.com/en-us/learn/modules/introduction-to-iot-hub/?WT.mc_id=bitprojectbeau-devto-chcondon" rel="noopener noreferrer"&gt;Azure IoT Hub&lt;/a&gt; to trigger an &lt;a href="https://docs.microsoft.com/en-us/learn/modules/create-serverless-logic-with-azure-functions/?WT.mc_id=bitprojectbeau-devto-chcondon" rel="noopener noreferrer"&gt;Azure Function&lt;/a&gt; when a resting heart rate above 100 bpm is detected. The function uses the &lt;a href="https://docs.microsoft.com/en-us/learn/modules/send-location-over-sms-using-azure-functions-twilio/?WT.mc_id=bitprojectbeau-devto-chcondon" rel="noopener noreferrer"&gt;Twilio API&lt;/a&gt; to send a warning message to the user's inputted contacts, ensuring that appropriate actions can be taken quickly. Beau got a chance to learn about technology and build his own ingenious, cheap, and easy-to-use health monitoring tool through the BitCamp program.&lt;/p&gt;

&lt;p&gt;Lucky for you- Beau made a tutorial, so you don't have to start from scratch to build this project on your own! So, get that heart rate up, and enjoy building and testing this fabulous IoT Heart Rate Monitor tutorial- happy coding y'all! 💙:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fl7vdzdeavztptmcfo7xh.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fl7vdzdeavztptmcfo7xh.gif" alt="Alt Text" width="400" height="254"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  IoT Heartrate Monitor using Azure Applications (with ESP8266 and HR Sensor)
&lt;/h2&gt;

&lt;p&gt;For this project, I wanted to create an easy-to-use, efficient, and cheap solution to an expensive Hospital Quality HR Monitor. This device would be so unbelievably simple, even your grandma and grandpa could use it. However, the setup process is a bit more rigorous so make sure you have enough snacks. This tutorial will be split into a few different parts: #1 The hardware: connecting wires, plugging in cables, and debugging. #2 The software: setting the hardware up using the &lt;a href="http://https://www.arduino.cc/en/Main/Software/" rel="noopener noreferrer"&gt;Arduino IDE&lt;/a&gt; and programming the ESP8266 (a Wi-Fi microchip) to connect to the Azure IoT Hub. Lastly, #3 Azure: connecting the Azure Applications to each other (i.e. IoT Hub → Event Grid → Event Subscription → Logic App (basically an Azure Function) → Twilio API).&lt;/p&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;p&gt;Before we get started, make sure you have the following: an &lt;a href="https://azure.microsoft.com/en-us/free/?WT.mc_id=bitprojectbeau-devto-chcondon" rel="noopener noreferrer"&gt;azure subscription&lt;/a&gt;, you can make one for free. This will allow us to use server-less applications and run our program in the cloud. Secondly, make sure you have the following hardware: &lt;a href="https://www.amazon.com/Adafruit-Assembled-Feather-ESP8266-Stacking/dp/B074XMF9W7/ref=sr_1_5?dchild=1&amp;amp;keywords=adafruit+huzzah+feather&amp;amp;qid=1595900676&amp;amp;sr=8-5" rel="noopener noreferrer"&gt;Adafruit Huzzah Feather (ESP8266)&lt;/a&gt;, &lt;a href="https://www.amazon.com/EDGELEC-Breadboard-Optional-Assorted-Multicolored/dp/B07GD2BWPY/ref=sr_1_3?dchild=1&amp;amp;keywords=breadboard+cables&amp;amp;qid=1595900807&amp;amp;sr=8-3" rel="noopener noreferrer"&gt;Breadboard Cables&lt;/a&gt;, and a &lt;a href="https://www.dfrobot.com/product-1540.html" rel="noopener noreferrer"&gt;DFRobot HR Sensor&lt;/a&gt;. Although you don't need to have the exact replicas, make sure your hardware is somewhat similar. Lastly, make sure you download the &lt;a href="http://https://www.arduino.cc/en/Main/Software/" rel="noopener noreferrer"&gt;Arduino IDE&lt;/a&gt; and this &lt;a href="https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers" rel="noopener noreferrer"&gt;ESP8266 Driver&lt;/a&gt; (your Huzzah/ESP8266 won't connect without it &lt;a href="https://www.youtube.com/watch?v=dQw4w9WgXcQ" rel="noopener noreferrer"&gt;🤗&lt;/a&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  Connecting the Hardware
&lt;/h3&gt;

&lt;p&gt;After you have unboxed all your packages and remembered to pop the bubble wrap, you will need to connect the DFRobot HR Sensor to the Huzzah. You will then have to connect the Huzzah to a power source (in this case, a computer so we can flash code onto it!) To do this, you will want to connect the three-prong cable (included with the HR Sensor) to 3 different breadboard cables. Then attach those breadboard cables to specific ports on the Huzzah. The three-prong cable is universal so it doesn't matter which breadboard cable you plug into which socket!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fsfnd0i2ntbfdhzln4e2l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fsfnd0i2ntbfdhzln4e2l.png" alt="Alt Text" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The names of the ports are the &lt;strong&gt;3v3&lt;/strong&gt;, &lt;strong&gt;GND&lt;/strong&gt;, and &lt;strong&gt;A0/ADC&lt;/strong&gt;. If you are having trouble finding them, I have attached a image of the Huzzah wiring &lt;a href="https://learn.adafruit.com/assets/46249" rel="noopener noreferrer"&gt;here&lt;/a&gt;. If you are having issues, think of it as the 2nd, 4th, and 5th port on the reset button side of the Adafruit Huzzah Feather. Once your HR Sensor and Huzzah are connected, simply plug in your Huzzah to your computer with a micro USB cable. When everything is done, open up the Arduino IDE and make sure you install the driver (&lt;a href="https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers" rel="noopener noreferrer"&gt;ESP8266 Driver&lt;/a&gt;) for compatibility between devices!&lt;/p&gt;

&lt;h3&gt;
  
  
  Coding the Software
&lt;/h3&gt;

&lt;p&gt;You should already have the ESP8266 driver installed (link above) and Arduino IDE (also linked above) ready to go. The first thing you need to do is open up the Arduino IDE and open up the files linked in the GitHub. Once the files have been opened, you should see a file called &lt;a href="https://github.com/Bahburs/iot-heartrate-monitor-with-azure-applications/blob/master/src/config.h" rel="noopener noreferrer"&gt;config.h&lt;/a&gt;. In there, you should change the following: your &lt;strong&gt;WIFI SSID&lt;/strong&gt;, &lt;strong&gt;WIFI PASS&lt;/strong&gt;, and &lt;strong&gt;CONNECTION STRING&lt;/strong&gt;. Your SSID and PASS are just the username and password for your home Wi-Fi. Make sure your internet doesn't have any extra steps (e.g. account login, redirect) To find your connection string, you must create an &lt;a href="https://azure.microsoft.com/en-us/services/iot-hub/?WT.mc_id=bitprojectbeau-devto-chcondon" rel="noopener noreferrer"&gt;Azure IoT Hub&lt;/a&gt;. If you have trouble, check out this helpful &lt;a href="https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-create-through-portal/?WT.mc_id=bitprojectbeau-devto-chcondon" rel="noopener noreferrer"&gt;article&lt;/a&gt;. Once you have created an IoT Hub, follow these steps to find your connection string. Go to the &lt;code&gt;Azure Portal&lt;/code&gt; and find your &lt;code&gt;IoT Hub&lt;/code&gt;. On the left side, you should see &lt;code&gt;Shared Access Policies&lt;/code&gt;. Then click on &lt;code&gt;Service&lt;/code&gt; and you will see four strings. The string titled &lt;code&gt;Connection String -- Primary Key&lt;/code&gt; is the one you will want to copy and paste. Make sure you &lt;strong&gt;don't&lt;/strong&gt; share your connection string, it is &lt;strong&gt;super&lt;/strong&gt; important!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkejcrkod4nfz8ggdgkeu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkejcrkod4nfz8ggdgkeu.png" alt="Alt Text" width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After you have finished configuring your &lt;a href="https://github.com/Bahburs/iot-heartrate-monitor-with-azure-applications/blob/master/src/config.h" rel="noopener noreferrer"&gt;config.h&lt;/a&gt;, you should have four different files named &lt;code&gt;config.h&lt;/code&gt;, &lt;code&gt;iothubClient.ino&lt;/code&gt;, &lt;code&gt;main.ino&lt;/code&gt;, and &lt;code&gt;message.ino&lt;/code&gt; opened. To flash your program to the ESP8266/Huzzah, verify your code and press the &lt;strong&gt;upload&lt;/strong&gt; button in the top left corner. Before we do this, lets set up the rest of our Azure Applications! Below is an appropriate state of the system moving forward:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;



&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h3&gt;
  
  
  Finalizing Azure Applications
&lt;/h3&gt;

&lt;p&gt;You're on the final stretch! There are only a few more things we need to do. We are gonna start off by creating a Logic App. Azure Logic Apps allow us to use triggers to call actions like reading an email, interacting with a database, and sending a text message. The first step is to create our own logic app. Follow this &lt;a href="https://docs.microsoft.com/en-us/azure/logic-apps/quickstart-create-first-logic-app-workflow/?WT.mc_id=bitprojectbeau-devto-chcondon" rel="noopener noreferrer"&gt;tutorial&lt;/a&gt; until you have to set a trigger. For our project, we will be using HTTP Requests. An HTTP request is just a format for requests and responses between a client and a server, passing data across components.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvlfhfyt4lszmsjigaavv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvlfhfyt4lszmsjigaavv.png" alt="Alt Text" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once your logic app is setup, go to the &lt;code&gt;logic app designer&lt;/code&gt; and create a &lt;code&gt;new trigger&lt;/code&gt;. You should see the trigger &lt;code&gt;When a HTTP request is received&lt;/code&gt;. After selecting it, you will see a box for &lt;code&gt;Request Body JSON Schema&lt;/code&gt;. In the GitHub repo, you should see a folder called JSON. Open up the file called &lt;code&gt;package.json&lt;/code&gt; and copy the code. Then click the blue text called &lt;code&gt;use sample payload to generate schema&lt;/code&gt;. Paste the code and press &lt;code&gt;done&lt;/code&gt;. If you get an error, try using the &lt;code&gt;backup.json&lt;/code&gt; file. Next, create an action for your trigger. For this project, we need to use the Twilio API. Twilio is a messaging API that allows us to send SMS messages when our HTTP request is triggered. If you have any trouble making an account and linking your ID and TOKEN, follow this &lt;a href="https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-create-through-portal/?WT.mc_id=bitprojectbeau-devto-chcondon" rel="noopener noreferrer"&gt;tutorial&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0230xh6ypon0x1qqipsd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0230xh6ypon0x1qqipsd.png" alt="Alt Text" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If everything went smoothly, you should now have a fully functional Azure Logic App that sends an SMS when an HTTP request is triggered! Lastly, we need to create an event subscription in our IoT Hub. This basically monitors incoming data and reacts to it. In this case, we want it to trigger the HTTP request using a webhook. Before we setup the event subscription, we need the HTTP Post URL. You can find this by opening your &lt;code&gt;Logic App Designer&lt;/code&gt; and clicking on your trigger. Copy the link at the top and save it for later! Return to the &lt;code&gt;Azure Portal&lt;/code&gt; and locate your &lt;code&gt;IoT Hub&lt;/code&gt;. Once you're in your &lt;code&gt;IoT Hub&lt;/code&gt;, go to &lt;code&gt;Events&lt;/code&gt; and click &lt;code&gt;New Subscription&lt;/code&gt;. Create a name, make sure the Event Schema is set to &lt;code&gt;Event Grid Schema&lt;/code&gt;, and the filter is set to &lt;code&gt;Device Telemetry&lt;/code&gt;. For the final step, set the Endpoint Type to &lt;code&gt;Webhook&lt;/code&gt; and paste in the link you copied earlier. When you are finished, press &lt;code&gt;Create&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Congratulations, you finished. Flash your Huzzah, do some jumping jacks, and give yourself a huge pat on the back! 🥳&lt;/p&gt;

</description>
      <category>azure</category>
      <category>iot</category>
      <category>tutorial</category>
      <category>twilio</category>
    </item>
    <item>
      <title>Get Inspired By These BitCamp Final Projects by High School Students!</title>
      <dc:creator>Chloe Condon 🎀</dc:creator>
      <pubDate>Thu, 13 Aug 2020 04:11:16 +0000</pubDate>
      <link>https://dev.to/azure/get-inspired-by-these-bitcamp-final-projects-by-high-school-students-5c30</link>
      <guid>https://dev.to/azure/get-inspired-by-these-bitcamp-final-projects-by-high-school-students-5c30</guid>
      <description>&lt;p&gt;This Summer, &lt;a href="https://www.bitproject.org/" rel="noopener noreferrer"&gt;BitProject&lt;/a&gt; launched their very first &lt;a href="https://www.bitproject.org/bitcamp" rel="noopener noreferrer"&gt;BitCamp&lt;/a&gt; with 8 talented high school students from across the United States. BitCamps are 5-8 week software engineering bootcamps for high school and college students who want to explore various careers in tech. Students work with mentors from prestigious institutions and seasoned engineers from the industry to learn about cutting edge technology, and I had the pleasure to help support this most recent BitCamp with their &lt;a href="https://docs.microsoft.com/en-us/learn/modules/create-serverless-logic-with-azure-functions/?WT.mc_id=bitproject-devto-chcondon" rel="noopener noreferrer"&gt;Azure Functions&lt;/a&gt; projects thanks to a partnership with Microsoft!&lt;/p&gt;

&lt;p&gt;From Heartbeat Monitors using &lt;a href="https://docs.microsoft.com/en-us/learn/modules/introduction-to-iot-hub/?WT.mc_id=bitproject-devto-chcondon" rel="noopener noreferrer"&gt;Azure IoT Hub&lt;/a&gt;, to Song Recommendation Engines using Azure Cognitive Services, each student has published a step by step tutorial that you can walk through yourself.&lt;/p&gt;

&lt;p&gt;I could not be prouder of our BitCamp students- and I'm so excited to see such creative projects and tutorials using &lt;a href="https://docs.microsoft.com/en-us/learn/modules/create-serverless-logic-with-azure-functions/?WT.mc_id=bitproject-devto-chcondon" rel="noopener noreferrer"&gt;Azure Functions&lt;/a&gt; and other &lt;a href="https://docs.microsoft.com/?WT.mc_id=bitproject-devto-chcondon" rel="noopener noreferrer"&gt;Microsoft technologies&lt;/a&gt;- way to go team! 🥳 It's been incredible to watch these students from all over the United States learn together remotely. It's been such a pleasure to what them grow their computer science skills in just a couple weeks!&lt;/p&gt;

&lt;h4&gt;
  
  
  Wanna check out their presentations, LIVE? Check out the recording &lt;a href="https://youtu.be/Op0AbMwhTDk" rel="noopener noreferrer"&gt;here&lt;/a&gt;
&lt;/h4&gt;

&lt;h2&gt;
  
  
  HeartRate Monitor with Azure IoT Hub
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F514tm57ce0tlkzdf2kbb.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F514tm57ce0tlkzdf2kbb.jpeg" alt="Alt Text" width="480" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Beau Hayes-Pollard
&lt;/h3&gt;

&lt;p&gt;Brookline High School, Class of 2022&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fukvv28y44fouyvfit9do.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fukvv28y44fouyvfit9do.jpg" alt="Alt Text" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As Beau loves to demonstrate, you can get your heart rate up in a hurry with just a few jumping jacks. Keeping track of this is exceptionally helpful to those working out or going about their day, as is demonstrated by the rise of FitBits and other tools in the space.&lt;/p&gt;

&lt;p&gt;This project uses &lt;a href="https://docs.microsoft.com/en-us/learn/modules/introduction-to-iot-hub/?WT.mc_id=bitproject-devto-chcondon" rel="noopener noreferrer"&gt;Azure IoT Hub&lt;/a&gt; to trigger an &lt;a href="https://docs.microsoft.com/en-us/learn/modules/create-serverless-logic-with-azure-functions/?WT.mc_id=bitproject-devto-chcondon" rel="noopener noreferrer"&gt;Azure Function&lt;/a&gt; when a resting heart rate above 100 bpm is detected. The function uses the &lt;a href="https://docs.microsoft.com/en-us/learn/modules/send-location-over-sms-using-azure-functions-twilio/?WT.mc_id=bitproject-devto-chcondon" rel="noopener noreferrer"&gt;Twilio API&lt;/a&gt; to send a warning message to the user's inputted contacts, ensuring that appropriate actions can be taken quickly. Beau got a chance to learn about technology and build his own ingenious, cheap, and easy-to-use health monitoring tool through the Bit Heroes program.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fpy8dx0isl055q07eleu2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fpy8dx0isl055q07eleu2.png" alt="Alt Text" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3xscww1q99k5tfli9ts5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3xscww1q99k5tfli9ts5.png" alt="Alt Text" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Upload Your Face. We pick the songs.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fctbg9vxsxa0p0xta3uqn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fctbg9vxsxa0p0xta3uqn.png" alt="Alt Text" width="580" height="595"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Natalie Huang
&lt;/h3&gt;

&lt;p&gt;Los Altos High School, Class of 2020&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9enl05tnmd1a1w89qej4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9enl05tnmd1a1w89qej4.png" alt="Alt Text" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you've ever considered how a mood can change your music tastes, we wanted to use that to create an exciting software development experience. Natalie built an app that recommends songs based on a picture (tagline: Upload a selfie. We choose the songs).&lt;/p&gt;

&lt;p&gt;This app allows users to submit a picture of their face and analyze their current mood. Based on their mood, it will recommend 10 personalized songs, and optionally create a playlist in the user’s Spotify account. Taking advantage of both the &lt;a href="https://docs.microsoft.com/en-us/learn/modules/identify-faces-with-computer-vision/?WT.mc_id=bitproject-devto-chcondon" rel="noopener noreferrer"&gt;Microsoft Face API&lt;/a&gt; and the Spotify API, this was a truly impressive project!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Funfw34y15t038oobdevf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Funfw34y15t038oobdevf.png" alt="Alt Text" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fypjkc4od9y52x77b4yig.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fypjkc4od9y52x77b4yig.png" alt="Alt Text" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Taking Control of Information Accountability with Azure Functions
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0hceiq588ae2d64jboop.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0hceiq588ae2d64jboop.jpg" alt="Alt Text" width="480" height="640"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Jesse Lee
&lt;/h3&gt;

&lt;p&gt;Dougherty Valley High School, Class of 2022&lt;/p&gt;

&lt;p&gt;In scrolling through social media feeds, online news articles, and an occasional high-quality technical blog post, you might ask yourself many questions about the quality and source of the material you're consuming. What is biased and how can I know what I'm reading is fair? &lt;/p&gt;

&lt;p&gt;Jesse created a Chrome Extension that analyzes the sentiment, difficulty of reading, and political bias of an article using &lt;a href="https://docs.microsoft.com/en-us/learn/modules/create-serverless-logic-with-azure-functions/?WT.mc_id=bitproject-devto-chcondon" rel="noopener noreferrer"&gt;Azure Functions&lt;/a&gt; and the &lt;a href="https://docs.microsoft.com/en-us/learn/modules/analyze-text-with-text-analytics-service/?WT.mc_id=bitproject-devto-chcondon" rel="noopener noreferrer"&gt;Microsoft Text Analytics API&lt;/a&gt;. Additional features include the option to find related articles, and a graphical display of the left/right bias throughout the  articles.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fajtygqte19f1xt5fck2q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fajtygqte19f1xt5fck2q.png" alt="Alt Text" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2a1en9kw7u61qtv4olbh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2a1en9kw7u61qtv4olbh.png" alt="Alt Text" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Scheduling Bot
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkf7gid1r9hkzzzi2ngv4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkf7gid1r9hkzzzi2ngv4.png" alt="Alt Text" width="512" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Meghna
&lt;/h3&gt;

&lt;p&gt;Maine West High School, Class of 2021&lt;/p&gt;

&lt;p&gt;The Scheduling Bot Meghna created doubles as a great conversationalist and organizer, allowing you to monitor daily events and appointments with ease. The Bot will ask you routine questions to demonstrate its interest in your life while keeping track of relevant events, reminders, and happenings behind the scenes. In the days/hours leading up to your scheduled events, the Bot will send you text reminders.&lt;/p&gt;

&lt;p&gt;There are three components when creating this Bot - the actual Bot itself, a Web App, and the &lt;a href="https://docs.microsoft.com/en-us/learn/modules/execute-azure-function-with-triggers/?WT.mc_id=bitproject-devto-chcondon" rel="noopener noreferrer"&gt;Azure Function&lt;/a&gt; that supports it. The &lt;a href="https://docs.microsoft.com/en-us/learn/paths/create-bots-with-the-azure-bot-service/?WT.mc_id=bitproject-devto-chcondon" rel="noopener noreferrer"&gt;Azure Bot&lt;/a&gt; has the key questions which it will ask the user when prompted, and being a web app allows it to store the information in a database. The API's three parts allow it so save, retrieve, and mark data as completed when appropriate. Lastly, the &lt;a href="https://docs.microsoft.com/en-us/learn/modules/execute-azure-function-with-triggers/?WT.mc_id=bitproject-devto-chcondon" rel="noopener noreferrer"&gt;Azure Function&lt;/a&gt; periodically runs through the database to see if a reminder needs to be sent out to a user.&lt;/p&gt;

&lt;p&gt;Overall, the Bot increases efficiency and productivity for the better, and makes planning your day effortless.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Flzfu7wty3gq8rv5jgzgy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Flzfu7wty3gq8rv5jgzgy.png" alt="Alt Text" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgh86t9e34fz2gbyktna1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgh86t9e34fz2gbyktna1.png" alt="Alt Text" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Emotional Analysis with Azure Functions
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fj1httaepq3l2nztz192c.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fj1httaepq3l2nztz192c.jpg" alt="Alt Text" width="598" height="798"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Lisa Leung
&lt;/h3&gt;

&lt;p&gt;Monta Vista High School, Class of 2021&lt;/p&gt;

&lt;p&gt;The Emotion Analyzer Tool is a Chrome extension that allows a user to upload an image of a person and receive a general summary of the person’s emotion. After a photo is uploaded through the extension, an HTTP request triggers an Azure Function that utilizes the Microsoft Face API to analyze the age, gender, and smile intensity of the person in the photo. &lt;/p&gt;

&lt;p&gt;Lisa leveraged the full power of the &lt;a href="https://docs.microsoft.com/en-us/learn/modules/identify-faces-with-computer-vision/?WT.mc_id=bitproject-devto-chcondon" rel="noopener noreferrer"&gt;Microsoft Face API&lt;/a&gt; with this amazing and convenient extension, and now you'll be able to find the perfect pictures to post!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F7m79jxjblaiz0s4qaqv6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F7m79jxjblaiz0s4qaqv6.png" alt="Alt Text" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Azure Saves the Day for Bit Heroes Call Center
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhhq8wfkrn166ht3h8c1w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhhq8wfkrn166ht3h8c1w.png" alt="Alt Text" width="396" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Shreyan Mayukh Mitra
&lt;/h3&gt;

&lt;p&gt;Adrian C. Wilcox High School, Class of 2023&lt;/p&gt;

&lt;p&gt;Handling logistics in any context can be challenging, but Shreyan wanted to bring order to the chaos of call centers.&lt;/p&gt;

&lt;p&gt;This app uses a web form to simulate data from a call center and &lt;a href="https://docs.microsoft.com/en-us/learn/modules/create-serverless-logic-with-azure-functions/?WT.mc_id=bitproject-devto-chcondon" rel="noopener noreferrer"&gt;trigger HTTP requests to Azure&lt;/a&gt;. &lt;a href="https://docs.microsoft.com/en-us/learn/modules/intro-to-logic-apps/?WT.mc_id=bitproject-devto-chcondon" rel="noopener noreferrer"&gt;Azure Logic Apps&lt;/a&gt; and &lt;a href="https://docs.microsoft.com/en-us/learn/modules/store-app-data-with-azure-blob-storage/?WT.mc_id=bitproject-devto-chcondon" rel="noopener noreferrer"&gt;Azure Blob Storage&lt;/a&gt; then send an email with all the relevant information and attachments. The webform can hold many different statistics and data about a specific call center, depending on the parameters set by the user, and is flexible too many environments.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F40b64y03pi7e13xbqb5b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F40b64y03pi7e13xbqb5b.png" alt="Alt Text" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgn93qtsqqjoyumi87j4v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgn93qtsqqjoyumi87j4v.png" alt="Alt Text" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Wanna check out their presentations, LIVE? We'll be hosting their presentations with the world on 8/13 in a livestream on Twitch and YouTube- JOIN US and RSVP here! 👉 &lt;a href="http://tinyurl.com/bitazure" rel="noopener noreferrer"&gt;http://tinyurl.com/bitazure&lt;/a&gt;
&lt;/h4&gt;

</description>
      <category>azure</category>
      <category>functions</category>
      <category>microsoft</category>
      <category>iot</category>
    </item>
    <item>
      <title>Using Cognitive Services and Mario Kart to Create "Astrology" with Chloe Condon</title>
      <dc:creator>Chloe Condon 🎀</dc:creator>
      <pubDate>Thu, 23 Jul 2020 11:57:52 +0000</pubDate>
      <link>https://dev.to/chloecondon/using-cognitive-services-and-mario-kart-to-create-astrology-with-chloe-condon-3ek1</link>
      <guid>https://dev.to/chloecondon/using-cognitive-services-and-mario-kart-to-create-astrology-with-chloe-condon-3ek1</guid>
      <description>&lt;p&gt;Chloe Condon is a Cloud Advocate at Microsoft. Before attending Hackbright Academy and making the career switch into tech, she spent her nights and weekends on-stage as a musical theatre actress. She is passionate about bringing folks with non-traditional and creative backgrounds into technical spaces, and loves to find ways to teach and demo technical examples in quirky and humorous ways.&lt;/p&gt;

&lt;p&gt;Have you ever wanted to learn more about cognitive services, but don’t know where to start? Then this is the talk for you! I’ll walk you through how to make your own “astrology” using images of cosplay characters, and share my story of how I created my own horoscopes with Mario Kart players- watch out for any stray banana peels! 🏁🍄⭐️🐢🍌&lt;/p&gt;

&lt;p&gt;&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/5oluT3syLA19Lg" alt="5oluT3syLA19Lg on slideshare.net" width="100%" height="487"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://drive.google.com/file/d/1pmxPc9pz07ER-ecaSrd_fhTYyLx3vMmn/view?usp=sharing" rel="noopener noreferrer"&gt;Here is a download link to the talk slides (PDF)&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This talk will be presented as part of &lt;a href="https://codelandconf.com" rel="noopener noreferrer"&gt;CodeLand:Distributed&lt;/a&gt; on &lt;strong&gt;July 23&lt;/strong&gt;.  After the talk is streamed as part of the conference, it will be added to this post as a recorded video.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>codeland</category>
    </item>
    <item>
      <title>Building an Animal Crossing Turnip Timer! [video]</title>
      <dc:creator>Chloe Condon 🎀</dc:creator>
      <pubDate>Tue, 21 Jul 2020 20:53:47 +0000</pubDate>
      <link>https://dev.to/azure/building-an-animal-crossing-turnip-timer-video-2dni</link>
      <guid>https://dev.to/azure/building-an-animal-crossing-turnip-timer-video-2dni</guid>
      <description>&lt;p&gt;Have you started playing Animal Crossing New Horizons on your Nintendo Switch? Do you keep forgetting to buy turnips every Sunday? Looking for a fun &amp;amp; easy project that will help remind you when to start searching for Daisy Mae? 🤔💰📈&lt;/p&gt;

&lt;p&gt;No problem! We made a Courier + Azure Function problem to solve that!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdk88l9cmnxhtdc5cyhg5.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdk88l9cmnxhtdc5cyhg5.gif" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On this episode of Show &amp;amp; Tell, &lt;a href="https://dev.to/aydrian"&gt;Aydrian Howard&lt;/a&gt; (Developer Advocate at &lt;a href="https://bit.ly/3iQR5Pe" rel="noopener noreferrer"&gt;Courier&lt;/a&gt;, and friend of Chloe irl &lt;em&gt;and&lt;/em&gt; in Animal Crossing) joins me to talk all about our latest collab- an Animal Crossing Turnip Timer! 🏝 Using the power of Azure Functions &amp;amp; Courier- we talk through the high highs (&lt;em&gt;"yay!! it's working!!"&lt;/em&gt;) and the low lows (&lt;em&gt;"noooo- not timezone/UTC math!?!"&lt;/em&gt;) of building a project to help us remember when to purchase our turnips on Sundays.&lt;/p&gt;

&lt;p&gt;👉 You can learn how to work with Azure Functions in this free and easy MSLearn tutorial here! 🌈  &lt;a href="https://docs.microsoft.com/en-us/learn/modules/execute-azure-function-with-triggers/?WT.mc_id=showandtell-devto-chcondon" rel="noopener noreferrer"&gt;Execute an Azure Function with triggers&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/uo-vuXurouI"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Wanna try out Courier to help simplify designing and sending notifications? 💌📱📫 Check them out at &lt;a href="https://bit.ly/3iQR5Pe" rel="noopener noreferrer"&gt;https://bit.ly/3iQR5Pe&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Want more Animal Crossing content? You're in luck! Check out our previous episode with Brendon North of the &lt;a href="https://www.youtube.com/c/thenintendonerds" rel="noopener noreferrer"&gt;Nintendo Nerds&lt;/a&gt; to see his Animal Crossing Game Show Set here! 🎨🕹🏝👉&lt;a href="https://youtu.be/QVTEXIpLmsk" rel="noopener noreferrer"&gt;Brendon North Shows Chloe An Animal Crossing Game Show Set!&lt;/a&gt;&lt;/p&gt;

</description>
      <category>azure</category>
      <category>tutorial</category>
      <category>techtalks</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>How to Make AI Feel Less like Sci-Fi with AI Builder</title>
      <dc:creator>Chloe Condon 🎀</dc:creator>
      <pubDate>Sun, 12 Jul 2020 01:56:36 +0000</pubDate>
      <link>https://dev.to/azure/how-to-make-ai-feel-less-like-sci-fi-with-ai-builder-57an</link>
      <guid>https://dev.to/azure/how-to-make-ai-feel-less-like-sci-fi-with-ai-builder-57an</guid>
      <description> 
&lt;h4&gt;
  
  
  #PowerfulDevs Conference
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;RSVP HERE BY JULY 15:&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://aka.ms/powerfuldevsconf" rel="noopener noreferrer"&gt;https://aka.ms/powerfuldevsconf&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;The &lt;a href="https://aka.ms/powerfuldevsconf" rel="noopener noreferrer"&gt;Powerful DEVs Conference&lt;/a&gt; is the first virtual conference of its kind. We will showcase how developers can leverage the Power Platform to build applications faster and with far less effort. Connect with industry-recognized ProDev influencers, Microsoft Cloud Advocates, trusted and diverse community leaders, and members of the Power Platform Team. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;BOOKMARK THIS FOR RESOURCES AND DISCUSSION WITH SPEAKERS&lt;/code&gt;&lt;br&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/azure" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F512%2F64ce0b82-730d-4ca0-8359-2c21513a0063.jpg" alt="Microsoft Azure" width="400" height="400"&gt;
      &lt;div class="ltag__link__user__pic"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F422403%2F5e52a938-ac03-4919-afca-d684c4a3e39a.jpg" alt="" width="470" height="470"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/azure/powerfuldevs-conference-join-us-on-july-15th-online-fe3" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;#powerfuldevs Conference: Join us on July 15th Online!&lt;/h2&gt;
      &lt;h3&gt;JennyMEvents for Microsoft Azure ・ Jul 10 '20&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#powerfuldevs&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#powerplatform&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#prodev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#programming&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
 

&lt;p&gt;Revisit this page during the event to engage in live (and post-event) discussions on those topics with both speakers and community. The speakers will be here for a live Q&amp;amp;A for at least 30 minutes immediately after their session concludes. After the event, come back to find additional slides, videos, and resources for this session. &lt;/p&gt;


 

&lt;h2&gt;
  
  
  About This Session:
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;July 15, 2020: 12:30 PDT - 12:55 PDT&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;"Artificial Intelligence" may seem like a deeply complex and technical topic- but did you know you can build your own models with zero code? In this talk, I'll share how you can build and train your own models and add even more intelligence to your apps with Azure AI + Cognitive Services! &lt;/p&gt;

&lt;h2&gt;
  
  
  About the Speakers:
&lt;/h2&gt;

&lt;p&gt;Chloe Condon is a Cloud Advocate @ Microsoft where she loves to showcase fun ways to use Azure. Follow &lt;a href="https://twitter.com/chloecondon" rel="noopener noreferrer"&gt;@chloecondon&lt;/a&gt; on Twitter.&lt;/p&gt;

</description>
      <category>ama</category>
      <category>powerfuldevs</category>
      <category>azure</category>
      <category>cognitiveservices</category>
    </item>
  </channel>
</rss>
