<?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>Forem: Eduardo Queiróz</title>
    <description>The latest articles on Forem by Eduardo Queiróz (@leduqueiroz).</description>
    <link>https://forem.com/leduqueiroz</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%2F567269%2F34e5dea2-38e6-44db-b8ff-346e02f873c9.jpeg</url>
      <title>Forem: Eduardo Queiróz</title>
      <link>https://forem.com/leduqueiroz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/leduqueiroz"/>
    <language>en</language>
    <item>
      <title>Generating Engagement for Indie Games with OpenAPI + Twitter API + Azure Logic Apps (EN/US)</title>
      <dc:creator>Eduardo Queiróz</dc:creator>
      <pubDate>Fri, 26 May 2023 16:51:05 +0000</pubDate>
      <link>https://forem.com/leduqueiroz/generating-engagement-for-indie-games-with-openapi-twitter-api-azure-logic-apps-enus-4ia5</link>
      <guid>https://forem.com/leduqueiroz/generating-engagement-for-indie-games-with-openapi-twitter-api-azure-logic-apps-enus-4ia5</guid>
      <description>&lt;h2&gt;
  
  
  Briefing
&lt;/h2&gt;

&lt;p&gt;In summary, game development is not my main activity. It's a hobby that I mainly pursue during my free time at &lt;a href="https://www.dz9games.com/"&gt;DZ9 Games&lt;/a&gt;, during sleepless nights, or on weekends. However, I realized that this journey was becoming impossible to pursue alone, so I decided to invite an illustrator and a scriptwriter to join the #theagent team, both of whom eagerly accepted the challenge.&lt;/p&gt;

&lt;p&gt;If you want to know more details about the game and its progress, you can find them &lt;a href="https://linktr.ee/dz9games"&gt;here&lt;/a&gt;, &lt;a href="https://theagent.dz9games.com/"&gt;here&lt;/a&gt;, or &lt;a href="https://www.instagram.com/theagent.game/"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;As the Demo version (which is currently in progress) approaches, we are starting to work on social media and explore potential marketing channels. However, we face a challenge as nobody on the team is dedicated full-time to this role. The time required for this "&lt;strong&gt;marketing&lt;/strong&gt;," "&lt;strong&gt;advertising&lt;/strong&gt;," and "&lt;strong&gt;engagement&lt;/strong&gt;" work directly conflicts with tweaking game mechanics, artwork, and overall improvements.&lt;/p&gt;

&lt;p&gt;Once again, it is impossible to juggle and accomplish all these tasks with a minimum level of quality.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution Was Close
&lt;/h2&gt;

&lt;p&gt;During the development phase, we faced the need to solve our marketing challenges. We considered various options, such as hiring an agency, a social media specialist, or even an intern, but these alternatives mainly involved additional costs 😭. With every new idea, it seemed like the impossible always stood before us.&lt;/p&gt;

&lt;p&gt;However, a simple and unassuming suggestion emerged and proved to be perfect: "What if we automate this somehow?" Most social media platforms provide APIs and integration methods for post publishing, but creative work and the team's time were still required.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI as a Facilitator!
&lt;/h2&gt;

&lt;p&gt;By witnessing the rapid evolution of AI on a daily basis, it became evident how it can streamline the resolution of our problems. In this tutorial, I will demonstrate how we implemented the automatic and efficient generation of tweets on our profile.&lt;/p&gt;

&lt;p&gt;It's important to emphasize that despite automating tweet generation, we still actively monitor and respond to all comments. So, if you come across posts on our &lt;a href="https://twitter.com/dz9_games"&gt;Twitter profile&lt;/a&gt;, rest assured that we are there! 😄😄😄&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1 - Twitter Developer Platform
&lt;/h2&gt;

&lt;p&gt;The first step was to activate our account on the developer portal and create a project in the free tier, which allows us to generate approximately 1500 tweets per month. Then, we selected the read and write option under App permissions, and proceeded to create an application to generate the authentication keys: Consumer Keys/API Key and Secret, and Authentication Tokens/Access Token and Secret.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6zGraOwW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f216qax99vtuqkl9ibrf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6zGraOwW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f216qax99vtuqkl9ibrf.png" alt="Image description" width="609" height="341"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xtcztkei--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tkqgk0b5bbpwgeyxddkg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xtcztkei--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tkqgk0b5bbpwgeyxddkg.png" alt="Image description" width="539" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oNLRzHIz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6h08azl0v0p03e3tfjm2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oNLRzHIz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6h08azl0v0p03e3tfjm2.png" alt="Image description" width="596" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2 - OpenAI API
&lt;/h2&gt;

&lt;p&gt;The second step involves generating the access key for your OpenAI account. When you create an account, you will receive a $5 credit for testing API requests. Later on, you will need to acquire a plan to access the public APIs.&lt;/p&gt;

&lt;p&gt;Once you have the access key, it's time to prepare the request for  &lt;a href="https://platform.openai.com/docs/api-reference/chat/create"&gt;v1/chat/completions&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oc5g-FB9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hcm9yad5mm8mrh4eqvkv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oc5g-FB9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hcm9yad5mm8mrh4eqvkv.png" alt="Image description" width="531" height="454"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IpMgEhw2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d2jlx3ukuj8xo68n1ru4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IpMgEhw2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d2jlx3ukuj8xo68n1ru4.png" alt="Image description" width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3 - Preparing the Model
&lt;/h2&gt;

&lt;p&gt;Before we proceed with the API requests, we can prepare our model directly in the browser at &lt;a href="https://chat.openai.com/"&gt;chat.openai.com&lt;/a&gt;.&lt;br&gt;
Use this &lt;a href="https://gist.github.com/leduqueiroz/92d1c1015762aa53af0e1d8f09f62619"&gt;template&lt;/a&gt; and insert the information about your game. Provide details and make adjustments multiple times until you achieve a satisfactory result.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rOv5S1kA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qnshzd4im1n56czkh5mh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rOv5S1kA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qnshzd4im1n56czkh5mh.png" alt="Image description" width="800" height="660"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4 - Postman + OpenAPI
&lt;/h2&gt;

&lt;p&gt;Import the curl template into Postman, and replace the values with:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- API KEY&lt;/strong&gt;: Replace this value with the API key you generated in Step &lt;br&gt;
&lt;strong&gt;- ENCODED TEMPLATE&lt;/strong&gt;: Format your refined prompt text from Step 3 using an online Escape/Unescape tool. Replace this value with the formatted text.&lt;br&gt;
&lt;strong&gt;- YOUR MODE&lt;/strong&gt;L: List all the generated models from the browser in Step 3 that met your needs. Include them here without any limitations. This will help refine and make the response more aligned with your request.&lt;br&gt;
&lt;strong&gt;- YOUR REQUEST&lt;/strong&gt;: Simply provide your request here, specifying the type of tweet you need. For example: "I need a tweet," "I need a tweet in French," or "I need a tweet in English."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VkfyrpW5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t4yfcqhof4zsnedeaj53.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VkfyrpW5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t4yfcqhof4zsnedeaj53.png" alt="Image description" width="438" height="504"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5 - Postman + Twitter
&lt;/h2&gt;

&lt;p&gt;Import the request &lt;strong&gt;api.twitter.com/2/tweets&lt;/strong&gt; from the &lt;a href="https://www.postman.com/twitter/workspace/twitter-s-public-workspace/request/9956214-5bd6ebb1-9d79-4456-a9a6-22ead4a41625"&gt;collection&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Replace the values generated in Step 1 in the Authorization tab:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Consumer Key:&lt;/strong&gt; Key generated in the Consumer Keys/API Key and Secret group&lt;br&gt;
&lt;strong&gt;- Consumer Secret: *&lt;em&gt;Key generated in the Consumer Keys/API Key and Secret group&lt;br&gt;
*&lt;/em&gt;- Access Token:&lt;/strong&gt; Key generated in the Authentication Tokens/Access Token and Secret group&lt;br&gt;
&lt;strong&gt;- Access Token Secret:&lt;/strong&gt; Key generated in the Authentication Tokens/Access Token and Secret group&lt;/p&gt;

&lt;p&gt;Next, fill in the request body with the world's most famous test string: &lt;em&gt;"Hello World"&lt;/em&gt; and click on &lt;em&gt;"Send"&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;When the magic happens, your profile will be fully integrated with the APIs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WJVEXHtf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pk6tedjkxaqas3jy1x13.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WJVEXHtf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pk6tedjkxaqas3jy1x13.png" alt="Image description" width="638" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zpp00wHZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jlv9yn0o0pqkmya5aeq1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zpp00wHZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jlv9yn0o0pqkmya5aeq1.png" alt="Image description" width="800" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0gEQi_FY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g7clbdxnhyb9od1yjrc2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0gEQi_FY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g7clbdxnhyb9od1yjrc2.png" alt="Image description" width="800" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--e6P6f-sq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1g7w2cnn2mdworns6tpd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--e6P6f-sq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1g7w2cnn2mdworns6tpd.png" alt="Image description" width="800" height="253"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6 - Azure AppLogic
&lt;/h2&gt;

&lt;p&gt;Access your account through the Azure Portal and create a new Logic App.&lt;/p&gt;

&lt;p&gt;After deploying the application, click on the "Design" option. This is where we will start configuring the recurrence of tweets.&lt;/p&gt;

&lt;p&gt;Select &lt;em&gt;'Blank App Logic / Scheduler / Recurrence'&lt;/em&gt;. On the next screen, define the desired time interval. For this example, since we are using free/trial tiers, it is recommended to set the execution between 6 and 12 hours.&lt;/p&gt;

&lt;p&gt;Now, create a new step of type &lt;em&gt;'HTTP'&lt;/em&gt; and copy the values used in Postman, as shown in Step 4. At this point, it is important to remember to add the access authorization, as demonstrated in the images below. (If you encounter difficulties with this task, you can use the file located &lt;a href="https://gist.github.com/leduqueiroz/7ebfd1f79c662efb600fc55bab15a052"&gt;here &lt;/a&gt; to configure it).&lt;/p&gt;

&lt;p&gt;The next task is of type &lt;em&gt;'Data Operations/Parse JSON'&lt;/em&gt;. Here, we need to define the structure of the API response. Select the option &lt;em&gt;'Use sample payload to generate schema'&lt;/em&gt; and past your response body to automatically map the structure.&lt;/p&gt;

&lt;p&gt;With the response structure ready, let's manipulate the data. Create a task of type &lt;em&gt;'Control/For each'&lt;/em&gt;, selecting the '&lt;strong&gt;choices&lt;/strong&gt;' node (where the fields we need are located). Then, create a task of type &lt;em&gt;'Control/Condition'&lt;/em&gt; and validate whether the '&lt;strong&gt;message&lt;/strong&gt;' field is filled or not.&lt;/p&gt;

&lt;p&gt;If the field is not filled, no action is required. However, you can customize this task: redo the steps, send an email, or send a predefined tweet. The choice of what to do in this flow depends on your desire/need. In my case, I simply end the execution.&lt;/p&gt;

&lt;p&gt;If the '&lt;strong&gt;message&lt;/strong&gt;' field is correctly filled, the last step is to send the request to the Twitter API. Create a new task of type &lt;em&gt;'HTTP'&lt;/em&gt; and fill in the same values used in Step 5 (configuration of the task &lt;a href="https://gist.github.com/leduqueiroz/ff0c96386dc2dcfcac696e18d26b3b54"&gt;here&lt;/a&gt;, if necessary). Don't forget to fill in the authentication values.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5cLZc-It--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wjjdvvn8756jo7soprgq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5cLZc-It--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wjjdvvn8756jo7soprgq.png" alt="Image description" width="714" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gu5D6skN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n0f79km44z5gkxhg12bu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gu5D6skN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n0f79km44z5gkxhg12bu.png" alt="Image description" width="800" height="625"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YMA2KhJu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wbi9gn0yl9uoq844p2s7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YMA2KhJu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wbi9gn0yl9uoq844p2s7.png" alt="Image description" width="800" height="286"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3p4qRcmZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v0vw7bui41ppdav6h503.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3p4qRcmZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v0vw7bui41ppdav6h503.png" alt="Image description" width="800" height="497"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sWjcFGQC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tpa4xhwupbjetji1dmwf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sWjcFGQC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tpa4xhwupbjetji1dmwf.png" alt="Image description" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0pR-nwsp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/szcicu9ejwszmfnr58v9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0pR-nwsp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/szcicu9ejwszmfnr58v9.png" alt="Image description" width="800" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MV256enB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/scwkx7rhiusn0ortaixv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MV256enB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/scwkx7rhiusn0ortaixv.png" alt="Image description" width="785" height="491"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pMYnST22--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ylq95kpv0b9ko01o8bwb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pMYnST22--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ylq95kpv0b9ko01o8bwb.png" alt="Image description" width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zUhA2t2n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9xgksf32v6mm4hybfy1o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zUhA2t2n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9xgksf32v6mm4hybfy1o.png" alt="Image description" width="800" height="602"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 7 - Testing
&lt;/h2&gt;

&lt;p&gt;To test your application, simply select the &lt;em&gt;'Run Trigger'&lt;/em&gt; option and monitor the execution log to check the status. In case of successful execution, just access your Twitter profile to see the update.&lt;/p&gt;

&lt;p&gt;Remember that, according to the time configured in step 6, you will have a new post!&lt;/p&gt;

&lt;p&gt;Important:&lt;/p&gt;

&lt;p&gt;You may need to continue refining your model by including new information and adjusting the values of temperature, top_p, frequency_penalty, presence_penalty, and max_tokens. To understand these parameters, you can refer to the OpenAPI documentation, test them in Postman, and then update your HTTP task in step 6.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9kudKnX7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/opzuz5sgjpq7x3b9vqqt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9kudKnX7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/opzuz5sgjpq7x3b9vqqt.png" alt="Image description" width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BisDN12R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1ov2x5teolhmkko56x5y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BisDN12R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1ov2x5teolhmkko56x5y.png" alt="Image description" width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 8 - Final Considerations
&lt;/h2&gt;

&lt;p&gt;In this article, I aimed to provide detailed steps so that non-developers or individuals without familiarity with cloud environments or programming languages can easily configure the tasks!&lt;/p&gt;

&lt;p&gt;If you want to learn more about the game "The Agent - A Role Playing Game" and its development, you can find more details &lt;a href="https://linktr.ee/dz9games"&gt;here&lt;/a&gt;, &lt;a href="https://theagent.dz9games.com/"&gt;here&lt;/a&gt;, or &lt;a href="https://www.instagram.com/theagent.game/"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To stay updated with our tweets, you can follow our page &lt;a href="https://twitter.com/dz9_games"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--x7Fueec2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/28gwt83ciu6rvt5z648d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--x7Fueec2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/28gwt83ciu6rvt5z648d.png" alt="Image description" width="629" height="620"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Furthermore, if you have any questions during the process, feel free to reach out. I'm available to assist and clarify any doubts that may arise.&lt;/p&gt;

&lt;p&gt;I hope this detailed guide proves useful in keeping the independent gaming community engaged and up-to-date with the latest developments. 🎮&lt;/p&gt;

&lt;p&gt;Together, we can drive the growth and success of this passionate community! 😍 ❤️&lt;/p&gt;

&lt;p&gt;Best regards!&lt;/p&gt;

</description>
      <category>openai</category>
      <category>twitter</category>
      <category>azure</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>Gerando engajamento para jogos indies com OpenApi + Twitter API + Azure LogicApps (PT/BR)</title>
      <dc:creator>Eduardo Queiróz</dc:creator>
      <pubDate>Fri, 26 May 2023 16:33:32 +0000</pubDate>
      <link>https://forem.com/leduqueiroz/gerando-engajamento-para-jogos-indies-com-openapi-twitter-api-azure-logicapps-ptbr-ib5</link>
      <guid>https://forem.com/leduqueiroz/gerando-engajamento-para-jogos-indies-com-openapi-twitter-api-azure-logicapps-ptbr-ib5</guid>
      <description>&lt;h2&gt;
  
  
  Briefing
&lt;/h2&gt;

&lt;p&gt;Em resumo, desenvolver jogos não é minha atividade principal. É um hobby que pratico principalmente durante o meu tempo livre na &lt;a href="https://www.dz9games.com/"&gt;DZ9 Games&lt;/a&gt;, nas madrugadas de insônia ou nos fins de semana. No entanto, percebi que essa jornada tornava-se impossível de trilhar sozinho, então decidi convidar um ilustrador e um roteirista para se juntarem à equipe de #theagent, os quais prontamente aceitaram o desafio.&lt;/p&gt;

&lt;p&gt;Se você quiser saber mais detalhes sobre o jogo e sua evolução, pode encontrá-los &lt;a href="https://linktr.ee/dz9games"&gt;aqui&lt;/a&gt;, &lt;a href="https://theagent.dz9games.com/"&gt;aqui&lt;/a&gt; ou &lt;a href="https://www.instagram.com/theagent.game/"&gt;aqui&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  O Problema
&lt;/h2&gt;

&lt;p&gt;À medida que a versão Demo (que está em andamento) se aproxima, estamos começando a trabalhar nas redes sociais e explorar possíveis canais de divulgação. No entanto, enfrentamos um desafio, uma vez que ninguém na equipe se dedica integralmente a essa ocupação. O tempo necessário para esse trabalho de &lt;strong&gt;"divulgação"&lt;/strong&gt;, &lt;strong&gt;"propaganda"&lt;/strong&gt; e &lt;strong&gt;"engajamento"&lt;/strong&gt; entra em conflito direto com os ajustes das mecânicas do jogo, o trabalho artístico e aprimoramentos na continuidade.&lt;/p&gt;

&lt;p&gt;Mais uma vez, é impossível conciliar e realizar todas essas tarefas com o mínimo de qualidade.&lt;/p&gt;

&lt;h2&gt;
  
  
  A solução estava próxima
&lt;/h2&gt;

&lt;p&gt;Durante a fase de desenvolvimento, nos deparamos com a necessidade de resolver nossos problemas de divulgação. Consideramos várias opções, como contratar uma agência, um especialista em mídias sociais ou até mesmo um estagiário, mas essas alternativas acarretavam principalmente &lt;strong&gt;custos adicionais&lt;/strong&gt; 😭. A cada nova ideia, parecia que o impossível sempre se apresentava diante de nós.&lt;/p&gt;

&lt;p&gt;No entanto, surgiu uma sugestão simples e despretensiosa que se revelou perfeita: &lt;em&gt;"E se automatizarmos isso de alguma maneira?"&lt;/em&gt; A maioria das redes sociais fornece API's e meios de integração para a publicação de posts, mas ainda assim o trabalho criativo e o tempo da equipe eram necessários.&lt;/p&gt;

&lt;h2&gt;
  
  
  IA como facilitadora!
&lt;/h2&gt;

&lt;p&gt;Ao acompanhar a rápida evolução das IA's diariamente, ficou evidente como elas podem facilitar a resolução dos nossos problemas. Neste tutorial, vou mostrar como implementamos a geração automática e eficiente dos tweets em nosso perfil.&lt;/p&gt;

&lt;p&gt;É importante ressaltar que, apesar da automatização na geração dos tweets, continuamos a acompanhar e responder todos os comentários. Portanto, se você se deparar com posts em nosso &lt;a href="https://twitter.com/dz9_games"&gt;perfil no Twitter&lt;/a&gt;, pode ter certeza de que estamos lá! 😄😄😄&lt;/p&gt;

&lt;h2&gt;
  
  
  Passo 1 - Twitter Developer Platform
&lt;/h2&gt;

&lt;p&gt;O primeiro passo foi ativar a nossa conta no portal do desenvolvedor e criar um projeto na camada gratuita, o que nos permite gerar aproximadamente 1500 tweets por mês. Em seguida, marcamos a opção de escrita e leitura em &lt;em&gt;App permissions&lt;/em&gt; e logo após criamos uma aplicação para gerar as chaves de autenticação dos grupos: &lt;em&gt;Consumer Keys/API Key and Secret&lt;/em&gt;, e &lt;em&gt;Authentication Tokens/Access Token and Secret&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6zGraOwW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f216qax99vtuqkl9ibrf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6zGraOwW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f216qax99vtuqkl9ibrf.png" alt="Image description" width="609" height="341"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xtcztkei--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tkqgk0b5bbpwgeyxddkg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xtcztkei--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tkqgk0b5bbpwgeyxddkg.png" alt="Image description" width="539" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oNLRzHIz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6h08azl0v0p03e3tfjm2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oNLRzHIz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6h08azl0v0p03e3tfjm2.png" alt="Image description" width="596" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Passo 2 - Open AI API
&lt;/h2&gt;

&lt;p&gt;O segundo passo consiste em gerar a chave de acesso para a sua conta na OpenAI. Ao criar a conta, você receberá um crédito de $5 para realizar testes nas requisições. Posteriormente, será necessário adquirir um plano para ter acesso às APIs públicas.&lt;/p&gt;

&lt;p&gt;Com a chave de acesso em mãos, é hora de preparar a requisição para &lt;a href="https://platform.openai.com/docs/api-reference/chat/create"&gt;v1/chat/completions&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oc5g-FB9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hcm9yad5mm8mrh4eqvkv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oc5g-FB9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hcm9yad5mm8mrh4eqvkv.png" alt="Image description" width="531" height="454"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IpMgEhw2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d2jlx3ukuj8xo68n1ru4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IpMgEhw2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d2jlx3ukuj8xo68n1ru4.png" alt="Image description" width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Passo 3 - Preparando o modelo
&lt;/h2&gt;

&lt;p&gt;Antes de iniciarmos a requisição através das API's podemos preparar nosso modelo diretamente no browser em &lt;a href="https://chat.openai.com/"&gt;chat.openai.com&lt;/a&gt;.&lt;br&gt;
Utilize esse &lt;a href="https://gist.github.com/leduqueiroz/92d1c1015762aa53af0e1d8f09f62619"&gt;template&lt;/a&gt;, em seguida insira as informações do seu jogo, informe detalhes e ajuste diversas vezes até conseguir um resultado satisfatório.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rOv5S1kA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qnshzd4im1n56czkh5mh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rOv5S1kA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qnshzd4im1n56czkh5mh.png" alt="Image description" width="800" height="660"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Passo 4 - Postman + OpenAPI
&lt;/h2&gt;

&lt;p&gt;Importe a &lt;a href="https://gist.github.com/leduqueiroz/dce1fe292202124f2f2de155f1dbf3cb"&gt;curl template&lt;/a&gt; no Postman, e substitua os valores de:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- API KEY:&lt;/strong&gt; Chave gerada no passo 2.&lt;br&gt;
&lt;strong&gt;- TEMPLATE COM ENCODED:&lt;/strong&gt; Formate o seu texto de prompt que foi refinado no passo 3 em uma &lt;a href="https://www.freeformatter.com/json-escape.html#before-output"&gt;ferramenta online de Escape/Unescape&lt;/a&gt;.&lt;br&gt;
&lt;strong&gt;- EXEMPLO GERADO NO BROWSER:&lt;/strong&gt; Informe todos os modelos gerados no browser no passo 3 e que atenderam suas necessidades aqui, sem limites, isso vai ajudar que sua resposta seja refinada e cada vez mais aderente  a sua solicitação.&lt;br&gt;
&lt;strong&gt;- SUA SOLICITAÇÃO:&lt;/strong&gt; Aqui não têm segredo! &lt;em&gt;(exemplo: preciso de um tweet, preciso de um tweet em francês, preciso de um tweet em inglês).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VkfyrpW5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t4yfcqhof4zsnedeaj53.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VkfyrpW5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t4yfcqhof4zsnedeaj53.png" alt="Image description" width="438" height="504"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Passo 5 - Postman + Twitter
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.postman.com/twitter/workspace/twitter-s-public-workspace/request/9956214-5bd6ebb1-9d79-4456-a9a6-22ead4a41625"&gt;Importe da collection&lt;/a&gt; a requisição api.twitter.com/2/tweets&lt;/p&gt;

&lt;p&gt;Substitua os valores gerados no passo 1 na aba Authorization:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Consumer Key:&lt;/strong&gt; Chave gerada no grupo &lt;em&gt;Consumer Keys/API Key and Secret&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;- Consumer Secret:&lt;/strong&gt; Chave gerada no grupo &lt;em&gt;Consumer Keys/API Key and Secret&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;- Access Token:&lt;/strong&gt; Chave gerada no grupo &lt;em&gt;Authentication Tokens/Access Token and Secret&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;- Access Token:&lt;/strong&gt; Chave gerada no grupo &lt;em&gt;Authentication Tokens/Access Token and Secret&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Em seguida, preencha o request body com a string de testes mais famosa do mundo: Hello Word e clique em Send.&lt;/p&gt;

&lt;p&gt;Quando a mágica acontecer, o seu perfil estará totalmente integrado as API's.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WJVEXHtf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pk6tedjkxaqas3jy1x13.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WJVEXHtf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pk6tedjkxaqas3jy1x13.png" alt="Image description" width="638" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zpp00wHZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jlv9yn0o0pqkmya5aeq1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zpp00wHZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jlv9yn0o0pqkmya5aeq1.png" alt="Image description" width="800" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0gEQi_FY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g7clbdxnhyb9od1yjrc2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0gEQi_FY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g7clbdxnhyb9od1yjrc2.png" alt="Image description" width="800" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--e6P6f-sq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1g7w2cnn2mdworns6tpd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--e6P6f-sq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1g7w2cnn2mdworns6tpd.png" alt="Image description" width="800" height="253"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Passo 6 - Azure AppLogic
&lt;/h2&gt;

&lt;p&gt;Acesse sua conta por meio do Portal Azure e crie um novo aplicativo lógico.&lt;/p&gt;

&lt;p&gt;Após implantar o aplicativo, clique na opção de design. Aqui é onde iniciaremos a configuração da recorrência dos tweets.&lt;/p&gt;

&lt;p&gt;Selecione &lt;em&gt;'Blank App Logic / Scheduler / Recurrence'&lt;/em&gt;. Na próxima tela, defina o intervalo de tempo desejado. Para este exemplo, como estamos usando camadas gratuitas/trial, recomenda-se configurar a execução entre 6 e 12 horas.&lt;/p&gt;

&lt;p&gt;Agora, crie um novo passo do tipo _HTTP _e copie os valores utilizados no Postman, conforme mostrado no passo 4. Neste momento, é importante lembrar de adicionar a autorização de acesso, conforme demonstrado nas imagens abaixo. (Caso tenha dificuldades nesta tarefa, você pode utilizar o arquivo localizado &lt;a href="https://gist.github.com/leduqueiroz/7ebfd1f79c662efb600fc55bab15a052"&gt;aqui&lt;/a&gt; para configurá-la).&lt;/p&gt;

&lt;p&gt;A próxima tarefa é do tipo &lt;em&gt;'Data Operations/Parse Json'&lt;/em&gt;. Aqui, precisamos definir a estrutura da resposta da API. Selecione a opção &lt;em&gt;'Use sample payload to generate schema'&lt;/em&gt; para que a estrutura seja mapeada automaticamente.&lt;/p&gt;

&lt;p&gt;Com a estrutura de resposta pronta, vamos manipular os dados. Crie uma tarefa do tipo &lt;em&gt;'Control/For each'&lt;/em&gt;, selecionando o nó '&lt;strong&gt;choices&lt;/strong&gt;' (aqui estão os campos que precisamos). Em seguida, crie uma tarefa do tipo _'Control/Condition' e valide se o campo '&lt;strong&gt;message&lt;/strong&gt;' está preenchido ou não.&lt;/p&gt;

&lt;p&gt;Caso o campo não esteja preenchido, não é necessário fazer nada. No entanto, você pode ajustar essa tarefa: refazer os passos, enviar um e-mail ou enviar um tweet pré-definido. A escolha do que fazer nesse fluxo depende do seu desejo/necessidade. No meu caso, simplesmente encerro a execução.&lt;/p&gt;

&lt;p&gt;Se o campo '&lt;strong&gt;message&lt;/strong&gt;' estiver preenchido corretamente, o último passo é enviar a requisição para a API do Twitter. Crie uma nova tarefa do tipo _HTTP _e preencha os mesmos valores utilizados no passo 5 (configuração da tarefa &lt;a href="https://gist.github.com/leduqueiroz/ff0c96386dc2dcfcac696e18d26b3b54"&gt;aqui&lt;/a&gt;, caso necessário). Não se esqueça de preencher os valores de autenticação.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5cLZc-It--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wjjdvvn8756jo7soprgq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5cLZc-It--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wjjdvvn8756jo7soprgq.png" alt="Image description" width="714" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gu5D6skN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n0f79km44z5gkxhg12bu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gu5D6skN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n0f79km44z5gkxhg12bu.png" alt="Image description" width="800" height="625"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YMA2KhJu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wbi9gn0yl9uoq844p2s7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YMA2KhJu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wbi9gn0yl9uoq844p2s7.png" alt="Image description" width="800" height="286"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3p4qRcmZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v0vw7bui41ppdav6h503.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3p4qRcmZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v0vw7bui41ppdav6h503.png" alt="Image description" width="800" height="497"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sWjcFGQC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tpa4xhwupbjetji1dmwf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sWjcFGQC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tpa4xhwupbjetji1dmwf.png" alt="Image description" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0pR-nwsp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/szcicu9ejwszmfnr58v9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0pR-nwsp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/szcicu9ejwszmfnr58v9.png" alt="Image description" width="800" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MV256enB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/scwkx7rhiusn0ortaixv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MV256enB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/scwkx7rhiusn0ortaixv.png" alt="Image description" width="785" height="491"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pMYnST22--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ylq95kpv0b9ko01o8bwb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pMYnST22--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ylq95kpv0b9ko01o8bwb.png" alt="Image description" width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zUhA2t2n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9xgksf32v6mm4hybfy1o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zUhA2t2n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9xgksf32v6mm4hybfy1o.png" alt="Image description" width="800" height="602"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Passo 7 - Testes
&lt;/h2&gt;

&lt;p&gt;Para testar sua aplicação, basta selecionar a opção _'Run Trigger' _e acompanhar o log de execuções para verificar o status. Em caso de sucesso na execução, basta acessar seu perfil no Twitter para ver a atualização.&lt;/p&gt;

&lt;p&gt;Lembre-se de que, de acordo com o tempo configurado no passo 6, você terá uma nova postagem!&lt;/p&gt;

&lt;p&gt;Importante:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Talvez seja necessário continuar refinando seu modelo, incluindo novas informações e ajustando os valores de temperatura, top_p, frequency_penalty, presence_penalty e max_tokens. Para entender esses parâmetros, basta acessar a documentação da OpenAPI, testá-los no Postman e, em seguida, atualizar sua tarefa de HTTP no passo 6.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9kudKnX7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/opzuz5sgjpq7x3b9vqqt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9kudKnX7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/opzuz5sgjpq7x3b9vqqt.png" alt="Image description" width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BisDN12R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1ov2x5teolhmkko56x5y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BisDN12R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1ov2x5teolhmkko56x5y.png" alt="Image description" width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Passo 8 - Considerações finais
&lt;/h2&gt;

&lt;p&gt;Neste artigo, procurei detalhar os passos para que pessoas não desenvolvedoras ou sem familiaridade com ambientes em nuvem ou linguagens de programação também possam configurar as tarefas com facilidade!&lt;/p&gt;

&lt;p&gt;Se você quiser saber mais detalhes sobre o jogo The Agent - A Role Playing Game e sua evolução, pode encontrá-los &lt;a href="https://linktr.ee/dz9games"&gt;aqui&lt;/a&gt;, &lt;a href="https://theagent.dz9games.com/"&gt;aqui&lt;/a&gt; ou &lt;a href="https://www.instagram.com/theagent.game/"&gt;aqui&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;E para acompanhar nossos tweets, pode seguir nossa página &lt;a href="https://twitter.com/dz9_games"&gt;aqui&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--x7Fueec2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/28gwt83ciu6rvt5z648d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--x7Fueec2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/28gwt83ciu6rvt5z648d.png" alt="Image description" width="629" height="620"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Além disso, caso surjam dúvidas durante o processo, fique à vontade para entrar em contato. Estou disponível para ajudar e esclarecer qualquer questão que possa surgir.&lt;/p&gt;

&lt;p&gt;Espero que este guia detalhado seja útil para manter a comunidade de jogos independentes engajada e atualizada com as novidades. 🎮&lt;/p&gt;

&lt;p&gt;Juntos, podemos impulsionar o crescimento e o sucesso dessa comunidade apaixonada! 😍 ❤️&lt;/p&gt;

&lt;p&gt;Abraços!&lt;/p&gt;

</description>
      <category>openai</category>
      <category>twitter</category>
      <category>azure</category>
      <category>gamedev</category>
    </item>
  </channel>
</rss>
