Morgen Assist + OpenAI geram o meu plano diário + enviam para o meu Slack. Eis como.

Luke
Developer @ Morgen
October 27, 2023
10 min de leitura
⚡️
Principais conclusões
⚡️
Conclusion

A versão original (incluindo trechos de código) foi publicada no dev.to a 30 de outubro.

A Morgen lançou recentemente um novo produto – Morgen Assist – que acreditamos que vai realmente potenciar a automação de calendários e trazer milhares de fluxos de trabalho e aplicações incríveis para o mercado, com a Morgen a alimentar tudo isto.

Mas não acredites só em mim, acompanha-me e descobre como é fácil escrever, testar e implementar os teus próprios fluxos de trabalho de calendário do teu próprio ambiente.

E peço desculpa, mas colocar OpenAI no título foi a forma mais fácil de te fazer clicar, mas prometo que é necessário para esta aplicação com menos de 100 linhas que resume de forma inteligente eventos de calendário de todos os teus calendários*.

* Google e O365 suportados atualmente

"O que estou a fazer hoje?"

Talvez já te tenhas feito esta pergunta, café na mão, olhando em branco para o teu escritório de trabalho remoto depois de saíres da cama e entrares na sala de estar esta manhã.

Com 50+ novas mensagens do Slack do PM, da equipa de design, marketing e canal de suporte, podes esquecer-te de verificar o teu calendário, que está atualmente perdido num mar de abas do Firefox, terminais e bem… mais terminais.

E é aí que entra o Fluxo de Trabalho de Agenda Matinal.

Uma mensagem do Slack é entregue todas as manhãs (ou noites) diretamente nas tuas DMs informando-te sobre qualquer reunião próxima, incluindo retrospetivas, 1-1s, outras reuniões de sprint, chamadas com clientes, tudo na linguagem e tom à tua escolha.

Como demonstração, submeti o seguinte texto ao modelo ChatGPT da OpenAI:

Tu és o lendário fundador da Apple, Steve Jobs, a fazer um discurso de apresentação

Por favor, resume todos estes eventos próximos listados de uma forma típica do teu estilo de apresentação clássico.

- 1-1 com David

- Retrospetiva do último sprint

- Chamada com Cliente /w Apple

E isto é o que recebi:

Senhoras e senhores,

Hoje, estou aqui para vos dar uma breve atualização sobre alguns eventos próximos que são de importância máxima para a nossa empresa.

Em primeiro lugar, temos uma sessão 1-1 marcada com David. Esta é uma oportunidade fantástica para nos conectarmos a um nível pessoal, trocarmos ideias e alinharmos a nossa visão. Tais interações são …

E continua. O discurso completo é verdadeiramente inspirador, mas terás de ver isso por ti próprio.

Então temos a peça central do puzzle, mas como é que isto se encaixa num fluxo de trabalho Morgen Assist?

Começar com Morgen Assist

A seguir, vais precisar de uma conta com Morgen Assist. Só vais precisar de um endereço de email e uma conta de calendário que é fornecida por Microsoft O365 ou Google.

Criar um fluxo de trabalho personalizado

Primeiro, vamos precisar de um fluxo de trabalho personalizado na plataforma Morgen Assist, que podes encontrar aqui.

Não te esqueças de adicionar uma integração de calendário à tua conta, vais precisar dela em breve. Podes ignorar a integração do Slack por enquanto - isto é para um caso de uso ligeiramente diferente.

Depois segue estes passos:

  • Define o tipo de acionador para "agendado" a uma hora do dia à tua escolha (por exemplo, 18h)
  • Seleciona um calendário para obter os eventos a resumir
  • E finalmente insere código na secção User Script de acordo com as instruções abaixo

Nota que se quiseres essa experiência de engenheiro hacker 10x, também podes escrever e implementar o teu fluxo de trabalho através do SDK, que tem um cliente API TypeScript para fazer pedidos ao nosso backend. Atualmente o teu código tem de caber inteiramente na função run, que vou explicar abaixo. Ainda é necessária alguma interação na aplicação web, mas estamos a trabalhar para melhorar isto no futuro.

Escrever o Script

Felizmente, uma versão deste fluxo de trabalho já foi escrita e pode ser acedida numa forma que é compatível com ambos o Morgen Assist SDK e a Interface Web Morgen Assist.

Podes encontrá-lo aqui: https://github.com/morgen-so/morgen-cw-sdk/blob/main/examples/openai-tomorrow-summary.ts

Vou agora decompor este script.

Primeiro, vamos precisar de incluir alguns utilitários para fazer pedidos à Morgen e OpenAI. Cola o código no teu script de utilizador.

Nota que vais precisar de um token OpenAI para que tudo isto funcione como esperado. Depois de criares uma conta OpenAI, podes criar tokens a partir da Plataforma OpenAI.

Vamos também preparar o token do Slack:

  • Cria uma nova aplicação aqui: https://api.slack.com/apps
  • (é assim que o bot de resumo acede e aparece no Slack)
  • Define a aparência e permissões da tua aplicação
  • Vai para "OAuth & Permissions", encontra a secção "Bot Token Scopes"
  • Adiciona a permissão "chat:write"
  • Desliza para cima até à secção "Oauth Tokens for Your Workspace" e clica "Install to Workspace", clica "Allow" na página de confirmação
  • Encontra o token xorb-... em "OAuth & Permissions"

Ok, agora vamos escrever uma função run básica. Esta função será chamada quando o fluxo de trabalho for acionado.

Finalmente, vamos ver a lógica real deste fluxo de trabalho.

Obter os eventos de amanhã

Para fazer isto, precisamos de fazer uma chamada à API à API Morgen com um intervalo de início/fim que capture a meia-noite de amanhã até à meia-noite do dia seguinte.

Se executares isto, desde que haja eventos no teu calendário selecionado para amanhã, deves vê-los listados abaixo do editor depois de clicares em "Run & Save".

Nota que pode demorar um pouco até que algo aconteça, estamos a trabalhar para melhorar esta parte da funcionalidade de fluxos de trabalho personalizados.

Deves ver um blob JSON registado que corresponde a uma lista de eventos no teu calendário para amanhã.

A seguir, vamos enviar os títulos destes eventos para OpenAI para ver o que consegue fazer.

ChatGPT, faz a tua magia

Vamos pegar nos nossos eventos e pedir ao ChatGPT para os resumir num formato simples usando este código.

Agora que temos esse resumo, podes tentar executar isto para veres que registou corretamente um bom resumo com pontos de eventos para amanhã.

Claro, podes ajustar isto para ser praticamente qualquer coisa, por exemplo podes querer a edição de trailer de filme.

E a resposta é hilariante conforme necessário:

Num mundo cheio de desafios e oportunidades, uma equipa reúne-se para conquistar o dia. Prepara-te para uma jornada épica pelo mundo do esforço corporativo.

Na luz da manhã cedo, a equipa reúne-se para o seu emocionante "Morning Standup". Testemunha a camaradagem e determinação enquanto partilham o seu progresso, alinham os seus objetivos e se preparam para as batalhas à frente. Com cada membro a mostrar as suas competências e experiência, é um espetáculo que te deixará inspirado.

Mas a vitória não é sem reflexão. Quando o sol se põe e as sombras se aprofundam, os nossos heróis encontram-se no meio de uma "Retrospetiva" de cortar a respiração. Juntos, aventuram-se no passado, analisando os seus triunfos e desafios para emergirem mais fortes do que nunca…

Ou talvez um poema?

Na luz dourada da manhã, reunimo-nos,
Uma equipa unida em propósito, parece,
O standup sussurra histórias de novas tarefas,
Partilhando progresso, desafios e avanços.

Com corações cheios de esperança e olhos bem abertos,
Marchamos em direção aos objetivos, sem tempo a perder.
Uma sinfonia de vozes, ideias fluem,
Enquanto o standup matinal acende o nosso brilho partilhado.

Mas quando as sombras crescem, e o dia cobra o seu preço,
Reunimo-nos novamente, para refletir como um todo…

Brilhante. Algo para todos aqui com estes resumos de eventos. E claro que sempre refletirá os eventos do dia.

Vou deixar como exercício para o leitor tentar estas modificações:

  • Ignorar eventos recorrentes
  • Escrever um prompt para lidar com o caso em que não há eventos agendados
  • Adicionar uma descrição de tarefas que devem ser concluídas hoje e esta semana

Mas como é que envio isto para o Slack?

Desde que tenhas configurado a tua aplicação Slack, conforme descrito na secção anterior, deves conseguir começar a enviar mensagens em nome de um utilizador bot que pode ser controlado com o token que copiaste.

Para fazer isto, obtém o código aqui.

Nota que enviei a mensagem para o canal "@Luke", que é como enviar uma mensagem direta usando a API do Slack. Terás de mudar isso para o teu nome de utilizador na área de trabalho onde a tua aplicação está instalada.

E com isto, o fluxo de trabalho está completo. Podes tentar executá-lo, e espera que seja executado na hora configurada na secção "Trigger".

Conclusão

Obrigado por chegares ao final do meu blog, estou realmente grato por isso e se estás interessado em saber mais sobre Morgen Assist, aqui estão algumas ligações para começares:

  • Consulta o nosso SDK pré-alfa para implementar Fluxos de Trabalho Personalizados do teu próprio ambiente em GitHub
  • Vem juntar-te à discussão em Discord
About the author
Luke
Developer @ Morgen
Luke Barnard é um ex-desenvolvedor de software na Morgen, focado em criar ferramentas que simplificam a forma como as pessoas trabalham e colaboram. Com uma licenciatura pela Universidade de Bath e uma paixão por código limpo e centrado no utilizador, Luke trabalha em funcionalidades principais e integrações que melhoram a produtividade de utilizadores em todo o mundo.