Conectando PowerAutomate + Teams + ChatGPT
Tags: chatgpt, api, javascript, database
Published: 2023-02-24 19:54:54

Neste pequeno post irei mostrar como efetuar a integração entre ChatGPT e PowerAutomate (Ferramenta da Suite Power da Microsft).
Como explicado anteriormente em outro post publicado aqui de como [conectar Postman + ChatGPT](https://dev.to/madrade1472/como-integrar-chatgpt-postman-4i9i), iremos utilizar o mesmo processo e chaves, porém desta vez, utilizando o serviço de mensageria do Microsoft Teams + Automate e ChatGPT, para podermos capturar perguntas e respostas para os usuários.


Vamos ao que interessa como efetuar a conexão:

Primeiramente necessitamos de acesso à uma conta do PowerAutomate.
Após este processo vamos acessa-lo e começar da seguinte forma:


- No menu superior esquerdo selecionar como Novo Fluxo

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


- Em seguida devemos Selecionar a opção **Criar um fluxo da nuvem automatizado**


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



- Feito este processo, será aberta uma caixa de pesquisa e também alguns modelos, como neste caso estamos conectando ao Microsoft Teams vamos selecionar a seguinte opção: **Quando uma palavra chave for mencionada** e em seguida vamos selecionar a opção **Criar**

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


- Agora seremos direcionados para a estrutura de arquitetura do fluxo, quais gatilhos e atividades iremos fazer ou montar, no caso veremos a seguinte instrução:

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

- Onde possuímos o campo Tipo de mensagem, devemos escolher se será uma mensagem em um canal específico ou um Chat em grupo (disponível para todos, imaginem como se fosse um grupo de WhatsApp), no nosso caso iremos selecionar a opção **Canal**, mas lembre-se você poderá selecionar outro meio também.

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

- Em seguida vamos preencher o campo **Palavras-chave para pesquisar**, isto irá nos trazer a seguinte condição, toda vez que alguém começar, uma pergunta utilizando esta palavra, irá acionar o nosso gatilho(trigger), no caso apresentado iremos utilizar a palavra **ChatGPT**

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


- Onde possuímos a opção **TEAM** devemos selecionar a opção a qual o seu time representa (nome da sua empresa), ao clicar será listado para ti todos os grupos da sua empresa.

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

- Ao selecionar o grupo será listado o Chanel (Mais conhecido como Canal), a qual iremos direcionar nosso fluxo, então após efetuar o preenchimento deste campo já mapeamos a qual grupo ou canal do teams iremos efetuar a captura da informação.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qeuppakpt2u4jh2ip7hj.png)
Lembrando, podemos ter mais de um grupo associado.

- Agora, vamos adicionar uma etapa chamada **Aplicar a cada, ou caso o seu esteja em inglês, Apply ecah order**, para isto vamos clicar no sinal de "+" e buscar a opção Aplicar a cada:
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nclbqgdpwdlwh0cdbadb.png)

- Selecione a opção Adicionar uma ação:

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

- Busque por **Aplicar a Cada**:
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wjidzh347o3t6v00cs46.png)

- Ao Adicionarmos o campo Aplicar a cada, teremos a seguinte opção:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5y30ek3qltw3fga4k1yo.png)
Onde estamos com a frase: **Selecione uma saída de etapas anteriores**, devemos clicar e selecionar a opção Value de nossa saída do teams, clique na caixa e pesquise e na aba conteúdo dinâmico selecione value.

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

- Agora necessitamos selecionar a opção **Adicionar uma ação**

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

- Vamos selecionar a opção, Obter Detalhes da Mensagem: Buscando o Conector Teams 
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/glfbirsesa1anh6i9mhg.png)

- Feito isto, vamos preencher o nosso campo da seguinte forma: 
Mensagem: devemos buscar no conteúdo dinâmico por **MessageID**, que será o identificador de nossa mensagem

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


- Após efetuarmos o preenchimento devemos selecionar o tipo de mensagem, a mesma que selecionamos no nosso gatilho principal, **tipo de mensagem, CANAL**

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

- Em seguida, devemos selecionar o campo Team, a qual representa nossa empresa, ou chat ao qual foi direcionado:

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

- No campo **Chanel**, devemos selecionar a opção a qual direcionamos nosso fluxo, para captura da mensagem:

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

- No campo **Parent Message ID**, devemos selecionar a opção repply to message ID, lembrando este message ID é o mesmo que definimos acima.

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

Agora como mencionado no artigo anterior, devemos adicionar uma chamada HTTP com método POST para tal: [conectar Postman + ChatGPT](https://dev.to/madrade1472/como-integrar-chatgpt-postman-4i9i)

- Vamos clicar no sinal de mais e buscar a chamada HTTP

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0kbf6jkclmn5ud5mat7g.png)
e vamos selecionar a primeira opção:

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

- No campo método vamos selecionar POST

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

- Em seguida, vamos selecionar nossa URI, a mesma a qual configuramos no artigo do postman, mas caso dê aquela preguiça, segue a URI: https://api.openai.com/v1/completions

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

- Vamos agora nos cabeçalhos selecionar os seguintes argumentos 
 Authorization e Content-Type.

- No campo Authorization devemos colocar a condição: Bearer e em seguida a sua Key (chave de autenticação)

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

- No campo ao lado vamos preencher da seguinte forma:

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


- Já no corpo da da saída HTTP devemos preencher da seguinte forma:
{
  "model": "text-davinci-003",
  "prompt": ""
  "max_tokens": 2048,
  "temperature": 0
}


- Onde possuímos o "prompt", devemos selecionar o Body Content:

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

O campo body content irá trazer o que foi preenchido no chat do teams.

- Em seguida, vamos adicionar uma nova ação, a qual se chama Responder com uma mensagem em um canal:

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

- E vamos preencher como:
Postar como: Selecionarmos o Flow bot
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ewt67yxk67j9dno0qnl5.png)

- Postar em: Vamos selecionar o Chanel ao qual utilizamos em todo o fluxo.

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

- Messade ID: Devemos incluir o Campo MessageiD

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

- Em Team: Devemos selecionar o chat ao qual estamos trabalhando, no caso o seu grupo da empresa, ou chat particular:
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8owehlu40e9t9vrwz3r2.png)

- Em Chanel: Vamos selecionar o chat ao qual deseja que a resposta seja inclusa:

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


- E no Message iremos inserir a nossa resposta com uma variável, da seguinte forma:

- Vamos clicar no corpo da mensagem em seguida seremos direcionados para o conteúdo dinâmico, vamos clicar em Expressão:
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eh2n7ycccbvljfymfu1p.png)

- E vamos preencher da seguinte forma: body('HTTP')?['choices'][0]['text']

E vamos clicar no OK ou atualizar

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


- Agora devemos apenas testar nossa aplicação chamando o Gatilho:

Gatilho inicial da mensagem: 

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

- Em seguida sua pergunta:

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

- Enviamos a pergunta :

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

E veremos no histórico o tempo de resposta:

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

Pode acontecer de demorar um pouco a resposta.
Mas no corpo ela virá da seguinte forma:

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


Obrigado por lerem até aqui.