Gerando engajamento para jogos indies com OpenApi + Twitter API + Azure LogicApps (PT/BR)
Tags: openai, twitter, azure, gamedev
Published: 2023-05-26 16:33:32


## Briefing

Em resumo, desenvolver jogos não é minha atividade principal. É um hobby que pratico principalmente durante o meu tempo livre na [DZ9 Games](https://www.dz9games.com/), 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.

Se você quiser saber mais detalhes sobre o jogo e sua evolução, pode encontrá-los [aqui](https://linktr.ee/dz9games), [aqui](https://theagent.dz9games.com/) ou [aqui](https://www.instagram.com/theagent.game/).

## O Problema

À 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 **"divulgação"**, **"propaganda"** e **"engajamento"** entra em conflito direto com os ajustes das mecânicas do jogo, o trabalho artístico e aprimoramentos na continuidade.

Mais uma vez, é impossível conciliar e realizar todas essas tarefas com o mínimo de qualidade.

## A solução estava próxima

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 **custos adicionais** :sob:. A cada nova ideia, parecia que o impossível sempre se apresentava diante de nós.

No entanto, surgiu uma sugestão simples e despretensiosa que se revelou perfeita: _"E se automatizarmos isso de alguma maneira?"_ 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.

## IA como facilitadora!

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.

É 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 [perfil no Twitter](https://twitter.com/dz9_games), pode ter certeza de que estamos lá! 😄😄😄

## Passo 1 - Twitter Developer Platform

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 _App permissions_ e logo após criamos uma aplicação para gerar as chaves de autenticação dos grupos: _Consumer Keys/API Key and Secret_, e _Authentication Tokens/Access Token and Secret_.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f216qax99vtuqkl9ibrf.png)


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tkqgk0b5bbpwgeyxddkg.png)


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6h08azl0v0p03e3tfjm2.png)


## Passo 2 - Open AI API

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.

Com a chave de acesso em mãos, é hora de preparar a requisição para [v1/chat/completions](https://platform.openai.com/docs/api-reference/chat/create).

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hcm9yad5mm8mrh4eqvkv.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d2jlx3ukuj8xo68n1ru4.png)

## Passo 3 - Preparando o modelo

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


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qnshzd4im1n56czkh5mh.png)

## Passo 4 - Postman + OpenAPI

Importe a [curl template](https://gist.github.com/leduqueiroz/dce1fe292202124f2f2de155f1dbf3cb) no Postman, e substitua os valores de:

**- API KEY:** Chave gerada no passo 2.
**- TEMPLATE COM ENCODED:** Formate o seu texto de prompt que foi refinado no passo 3 em uma [ferramenta online de Escape/Unescape](https://www.freeformatter.com/json-escape.html#before-output).
**- EXEMPLO GERADO NO BROWSER:** 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.
**- SUA SOLICITAÇÃO:** Aqui não têm segredo! _(exemplo: preciso de um tweet, preciso de um tweet em francês, preciso de um tweet em inglês)._

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t4yfcqhof4zsnedeaj53.png)

## Passo 5 - Postman + Twitter

[Importe da collection](https://www.postman.com/twitter/workspace/twitter-s-public-workspace/request/9956214-5bd6ebb1-9d79-4456-a9a6-22ead4a41625) a requisição api.twitter.com/2/tweets

Substitua os valores gerados no passo 1 na aba Authorization:


**- Consumer Key:** Chave gerada no grupo _Consumer Keys/API Key and Secret_
**- Consumer Secret:** Chave gerada no grupo _Consumer Keys/API Key and Secret_
**- Access Token:** Chave gerada no grupo _Authentication Tokens/Access Token and Secret_
**- Access Token:** Chave gerada no grupo _Authentication Tokens/Access Token and Secret_

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

Quando a mágica acontecer, o seu perfil estará totalmente integrado as API's.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pk6tedjkxaqas3jy1x13.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jlv9yn0o0pqkmya5aeq1.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g7clbdxnhyb9od1yjrc2.png)


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1g7w2cnn2mdworns6tpd.png)

## Passo 6 - Azure AppLogic

Acesse sua conta por meio do Portal Azure e crie um novo aplicativo lógico.

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

Selecione _'Blank App Logic / Scheduler / Recurrence'_. 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.

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 [aqui](https://gist.github.com/leduqueiroz/7ebfd1f79c662efb600fc55bab15a052) para configurá-la).

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

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

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.

Se o campo '**message**' 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 [aqui](https://gist.github.com/leduqueiroz/ff0c96386dc2dcfcac696e18d26b3b54), caso necessário). Não se esqueça de preencher os valores de autenticação.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wjjdvvn8756jo7soprgq.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n0f79km44z5gkxhg12bu.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wbi9gn0yl9uoq844p2s7.png)


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v0vw7bui41ppdav6h503.png)


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tpa4xhwupbjetji1dmwf.png)


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/szcicu9ejwszmfnr58v9.png)


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/scwkx7rhiusn0ortaixv.png)


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ylq95kpv0b9ko01o8bwb.png)


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9xgksf32v6mm4hybfy1o.png)


## Passo 7 - Testes

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.

Lembre-se de que, de acordo com o tempo configurado no passo 6, você terá uma nova postagem!

Importante:

- 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.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/opzuz5sgjpq7x3b9vqqt.png)


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1ov2x5teolhmkko56x5y.png)

## Passo 8 - Considerações finais

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!

Se você quiser saber mais detalhes sobre o jogo The Agent - A Role Playing Game e sua evolução, pode encontrá-los [aqui](https://linktr.ee/dz9games), [aqui](https://theagent.dz9games.com/) ou [aqui](https://www.instagram.com/theagent.game/).

E para acompanhar nossos tweets, pode seguir nossa página [aqui](https://twitter.com/dz9_games).


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/28gwt83ciu6rvt5z648d.png)

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.

Espero que este guia detalhado seja útil para manter a comunidade de jogos independentes engajada e atualizada com as novidades. :video_game:

Juntos, podemos impulsionar o crescimento e o sucesso dessa comunidade apaixonada! :heart_eyes: :heart:

Abraços!