Skip to content

computas/helsesjekk-bot

 
 

Repository files navigation

Helsesjekk Bot 🤖

Hva er det?

Dette er en Slack-bot som spør et par enkle spørsmål til medlemmene i kanalen en gang uken.

image

Når helsesjekken stenges, så vil man få sammensatte tall på hvordan teamet har det. Selve svarene er anonyme.

image

image

Er du NAV ansatt?

Jeg vil bruke den!

Så bra! Gå til ditt team sin private team kanal (ikke den store, åpne kanalen som alle har tilgang til), også legger du til botten som en integrasjon.

image

Søk opp integrasjonen, den heter "Helsesjekk":

image

Det siste du må gjøre er å skrive /helsesjekk i kanalen, da får du tilgang til å gi teamet ditt et navn, samt fortelle botten når du vil at helsesjekken skal postes!

image

image

Jeg fant noe feil!

Ta kontakt på #helsesjekk-bot på NAV-IT slacken!

Utenfor NAV

Botten er hostet som en intern app på NAV sin IT-plattform. Selve bot-brukeren er en intern slack-app.

Dersom du ønsker å bruke botten, kan du ta sette opp din egen bot-bruker på din Slack ved å bruke slack-manifest.yml som utgangspunkt.

Når det kommer til selve botten, så kan du gjøre følgende:

  1. Fork dette Github-repoet
  2. Fjern filene:
    1. nais.yml og nais-dev.yaml
  3. Konfigurer opp en egen CI/CD-løsning for å deploye botten i deploy.yaml
  4. Konfigurer opp env.ts med miljøvariablene din platform trenger
  5. Tweak authentication.ts og ms-graph.ts til å fungere med deres env løsning.
    1. For eksempel libben som er brukt her, @navikt/next-auth-wonderwall har en sterk kobling til NAV sin applikasjonsplatform, og er ikke noe dere kan gjenbruke.

Det er sikkert andre ting som må justeres på også.

Jeg vil utvikle på den!

Avhengigheter

Noen av bottens avhengigheter er hostet her på Github. Github tillatter ikke anonyme pulls av pakker fra Github Package Registry.

For å kunne installere avhengighetene må du opprette en Personal Access Token (PAT), som beskrevet her:

Denne PAT-en skal kun ha tilgangen package:read. Sett denne PAT-en som miljøvariabel på maskinen din.

export NPM_AUTH_TOKEN=<tokenet du nettopp genererte>

i enten .bashrc eller .zshrc (avhengig av ditt shell).

Du skal nå kunne kjøre yarn for å installere avhengighetene uten 401-feil.

Utvikle selve botten:

  1. Først så trenger du ditt helt eget slack workspace du har admin tilgang til.
  2. Deretter kan du opprette en ny bot i Slack, bruk slack-manifest.yml i dette repoet til å kickstarte alle permissions du trenger.
  3. Opprett en .env-fil på rot i repoet, og legg til følgende:
    NAIS_DATABASE_HELSESJEKK_BOT_HELSESJEKK_BOT_URL="postgresql://postgres:postgres@localhost:5432/postgres"
    SLACK_SIGNING_SECRET=<secret>
    SLACK_BOT_TOKEN=<secret>
    SLACK_APP_TOKEN=<secret>
  4. Start opp en lokal postgres-database:
    yarn dev:db
  5. Kjør prisma-migreringene mot databasen:
    yarn prisma:migrate-dev
  6. Endelig kan vi starte development-serveren:
    yarn dev
  7. Gjør en curl request mot /api/internal/is_ready for å starte slack-integrasjonen.
    curl -X GET http://localhost:3000/api/internal/is_ready

Utviklingsflyten vil være å interaktere med slack botten gjennom ditt private slack workspace. F.eks. ved å legge botten til som en integrasjon på en testkanal, kjøre /helsesjekk i den kanalen, og fylle ut helsesjekken.

Det er noen verktøy i ./src/commands/commands-handler.ts som kan være nyttige for å teste ut funksjonalitet. F.eks. kan du kjøre /helsesjekk test for triggre ting som eller ser cron-basert.

Utvikle Dashboardet

Dette er litt enklere å jobbe med.

  1. Opprett en .env-fil på rot i repoet, og legg til følgende:
    NAIS_DATABASE_HELSESJEKK_BOT_HELSESJEKK_BOT_URL="postgresql://postgres:postgres@localhost:5432/postgres"
  2. Start opp en lokal postgres-database:
    yarn dev:db
  3. Kjør prisma-migreringene mot databasen:
    yarn prisma:migrate-dev
  4. Seed databasen:
    yarn prisma:seed
  5. Kjør opp nextjs dev server:
    yarn dev

Besøk localhost:3000 for å se dashboardet.

Ikke nøl med å ta kontakt på #helsesjekk-bot på NAV-IT slacken om du trenger hjelp!

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 99.3%
  • Other 0.7%