Lag denne slakke boten og gi kanalen din en vennligere atmosfære.

Å ønske nye brukere velkommen til kanalen din får dem til å føle seg hjemme, men det kan være en slitsom oppgave å holde oversikt over hver bruker som blir med. Det er her en Slack-velkomstrobot kommer inn. Boten sender en personlig velkomstmelding til hver ny kanalbruker. Det er alltid online, så det vil ikke være sene velkomstmeldinger.

Du vil lære hvordan du konfigurerer botens legitimasjon, lytter til hendelser i Slack og sender meldinger tilbake til brukere.

Opprette en Slack Bot og få API-tokenet

Lage en Slapp konto eller logg inn på din eksisterende. Deretter oppretter du en nytt Slack arbeidsområde for å teste boten din før du installerer den i ditt aktive arbeidsområde.

Logg inn på ditt nye arbeidsområde. Slack lager automatisk en tilfeldig og generell kanal for deg.

Legg merke til app-delen nederst til venstre på arbeidsområdet. Det er her boten vår vises når du oppretter den. Naviger til Slack API-nettsted.

Klikk på Lag en app. Opprett appen Fra bunnen av i vinduet som vises.

instagram viewer

Gi appen et navn og velg arbeidsområdet du vil utvikle den i.

Klikk deretter på Lag app knapp. Ved å klikke omdirigeres du til en side som inneholder grunnleggende informasjon om appen din. Legg merke til signeringshemmeligheten under applegitimasjonen. Boten din vil bruke signeringshemmeligheten for å bekrefte at en hendelse kom fra Slack og ikke ble tuklet med under overføringen.

Gå til funksjonen OAuth og tillatelser.

Under OAuth og tillatelser, naviger til Bot Token Scopes. Det er her du vil legge til tillatelsene til hva boten din kan gjøre i arbeidsområdet ditt. Legg til brukere: les omfang. Dette omfanget lar boten din se personene i arbeidsområdet ditt. Legg også til chat: skriv omfang som lar boten din sende meldinger til arbeidsområdet.

Naviger tilbake til botens grunnleggende informasjon og klikk Installer til Workspace.

Klikk tillat på neste side som vises. Du er nå ferdig med å installere boten på arbeidsområdet ditt. Naviger til funksjonen OAuth og tillatelser. Legg merke til Bot User OAuth Token som Slack genererer etter installasjonen. Boten vil være synlig i app-delen av arbeidsområdet ditt.

Nå du har installert boten på arbeidsområdet ditt, kan du skrive koden for å kontrollere den.

Forberede miljøet ditt

Du må være kjent med grunnleggende om Python å følge disse kodeeksemplene.

Lag et nytt virtuelt miljø og a .env fil. Du vil bruke .env-filen til å lagre tokenet og signeringshemmeligheten, som du må holde privat. Du bør ikke laste opp .env-filen til noen offentlig plattform.

Kjør følgende kommando i en terminal for å installere de nødvendige bibliotekene:

pip installer slack-sdk pathlib dotenv flask slackeventsapi

Slack-sdk-biblioteket vil gi deg verktøy for å bygge Slack-apper og integrasjoner, inkludert API-metoder, Web API-klienter og OAuth. pathlib og dotenv vil hjelpe deg med å laste miljøvariablene. flask vil hjelpe deg med å håndtere HTTP-forespørsler og svar. slackeventsapi vil gi deg en hendelseslytter som mottar og håndterer hendelser fra Slack.

Den fullstendige kildekoden er tilgjengelig i en GitHub-depot.

Importere de nødvendige bibliotekene

Lag en ny Python-fil, og begynn med å importere bibliotekene du tidligere installerte, slik at du kan bruke funksjonaliteten deres i koden din.

import slack_sdk som slakk
import os
fra stilib import Sti
fra dotenv import load_dotenv
fra kolbe import Kolbe
fra slakkeventsapi import SlackEventAdapter

Pythons OS-modul kommer med språket, så du trenger ikke å installere det. SlackEventAdapter er en klasse fra slackeventsapi-modulen som håndterer hendelser fra Slack API.

Sette opp Slack Bot

Opprett to variabler i .env-filen. Nevn én SLACK_BOT_TOKEN og tildel den Bot User OAuth Token. Gi den andre et navn SLACK_SIGNING_SECRET og tildel den signeringshemmeligheten. Gå tilbake til Python-filen og lag et Flask-objekt. Last deretter inn miljøvariablene fra .env-filen ved å bruke load_dotenv-funksjonen fra dotenv-modulen.

app = Kolbe (__navn__)
env_path = Bane('.') / '.env'
load_dotenv (dotenv_path=env_path)

Opprett en slack_event_adapter-forekomst. Den vil håndtere hendelser fra Slack API, ved å bruke miljøvariabelen SLACK_SIGNING_SECRET for å autentisere forespørsler.

slack_event_adapter = SlackEventAdapter (os.environ['SLACK_SIGNING_SECRET'],
'/slack/events', app)

/slack/events er endepunktet som Slack API vil bruke for å sende hendelser.

Opprett en WebClient-forekomst som vil sende meldinger til Slack API. Foreta et API-kall for å hente botens ID.

klient = slakk. WebClient (token=os.environ['SLACK_BOT_TOKEN'])
BOT_ID = klient.api_call("auth.test")['bruker-ID']

Sett opp meldingen du skal sende til de nye brukerne som blir med i en kanal. Initialiser et tomt sett som vil holde styr på de velkomne brukerne.

GREETING_MESSAGE = "Hei {user_name}, velkommen til {channel_name} " \
"kanal! Vi er glade for å ha deg her."
welcomed_users = set()

Du kan tilpasse hilsenen etter eget ønske.

Opprette en funksjon for å håndtere "Medlem Joined Channel"-hendelsen

Sett opp en hendelseslytter. Den vil lytte til member_joined_channel-arrangementet.

@slack_event_adapter.on('member_joined_channel')

Definer en funksjon som du vil ringe når en bruker blir med i en kanal. Bruk funksjonen til å trekke ut bruker-ID og kanal-ID fra hendelsesdataene. Sjekk om brukeren er ny på kanalen. Hvis ikke, få bruker- og kanalinformasjon ved å bruke WebClient-klassen. Lag en personlig hilsen. Send hilsenen til kanalen

defhandle_member_joined_channel(event_data):
user_id = hendelsesdata['begivenhet']['bruker']
kanal_id = hendelsesdata['begivenhet']['kanal']

# Send kun en velkomstmelding hvis brukeren er ny
hvis bruker-ID ikkei velkommen_brukere:
welcomed_users.add (user_id)

user_info = client.users_info (user=user_id)
brukernavn = brukerinformasjon['bruker']['Navn']

channel_info = client.conversations_info (channel=channel_id)
kanalnavn = kanalinformasjon['kanal']['Navn']

hilsen = GREETING_MESSAGE.format (brukernavn=brukernavn,
kanalnavn=kanalnavn)

client.chat_postMessage (channel=channel_id, text=greeting)

Event_data inneholder all informasjon om hendelsen der en bruker har sluttet seg til en kanal.

Start Flask-appen og kjør skriptet. Hvis det kjøres som hovedprogram (ikke importert som en modul), kjør i feilsøkingsmodus og lytt på port 5000.

hvis __navn__ == "__hoved__":
app.run (debug=ekte, port=5000)

Feilsøkingsmodusen laster automatisk inn programmet på nytt når du gjør endringer i koden. Ikke bruk feilsøkingsmodus i et produksjonsmiljø, det kan avsløre sensitiv informasjon og gjøre applikasjonen din sårbar for angrep. Kjør appen din. Den vil kjøre som en lokal server på port 5000.

Koble logikken med boten din

Etter å ha opprettet logikken, må du nå koble til boten i arbeidsområdet ditt. Dette vil gjøre det mulig for den å bruke denne logikken til å utføre operasjoner i arbeidsområdet ditt. Start med å laste ned og kjøre Ngrok. Ngrok vil hjelpe deg med å eksponere din lokale webserver for internett.

Etter å ha kjørt den, bruk følgende kommando for å tilordne adressen til din lokale server til adressen til Ngrok.

ngrok http 500

Kopier Ngrok-adressen som er tilordnet din lokale vert.

Naviger til Slack API-nettstedet. Under Arrangementsabonnement funksjon, aktivere hendelser. Under Be om URL skriv inn Ngrok-adressen etterfulgt av /slack/events. Dette vil peke til endepunktet ditt.

Så abonner på medlem_joined_channel-arrangementet. Dette vil varsle boten din hver gang en bruker blir med i en kanal. Klikk på Lagre endringer. Slack vil automatisk legge til omfanget du trenger for å abonnere på dette arrangementet. Hver gang du endrer et omfang, må du installere appen på nytt i arbeidsområdet.

Klikk på installer appen på nytt.

Tester boten din

Gå til arbeidsområdet ditt. Gå til kanalen du vil bruke boten. Send en direktemelding til boten. For eksempel @Welcoming Bot. En melding om å legge til boten til kanalen vil dukke opp. Klikk legg til.

Nå, hver gang en ny bruker blir med i kanalen, vil boten sende en velkomstmelding.

Bildet ovenfor viser boten som ønsker en ny bruker velkommen til kanalen.

Få mest mulig ut av det slappe arbeidsområdet ditt

Slack-roboter er ikke den eneste måten å utvide funksjonaliteten til Slack-meldingsplattformen på. Den andre metoden er å integrere tredjepartsverktøy med Slack. De gir ekstra funksjonalitet innenfor plattformen.

Gjør deg kjent med disse integrasjonene, da de vil øke produktiviteten din i Slack.