noticias
Serverspace Tecnologías en los Emiratos Árabes Unidos: lanzamiento de Falconcloud
DF
Sábado, Junio 21, 2022
Actualizado junio 7, 2023

Cómo construir un Slabot en Python on Ubuntu 20.04.

Ubuntu

Creamos Slausando Python on Ubuntu 20.04:

Intro:

Slack - un mensajero corporativo, que fue diseñado para mejorar la productividad en sus lugares de trabajo. Con él podrás intercambiar mensajes, crear chats públicos o privados, realizar llamadas (de voz o videollamadas), e integrarte con diferentes Slabots. Slackbot es un aplicación que fue diseñada para interactuar con los usuarios a través de conversaciones. Eso tiene muchas funciones y opciones, como: enviar advertencias y mensajes, iniciar cualquier tarea.
Slack messenger logo

En nuestro tutorial, para implementar Slackbot que usaremos Python y Ubuntu 20.04. Slack tiene muchas herramientas en su propio arsenal, para ayudarte a interactuar con Python's programa de aplicaciónraminterfaz de ming (API) y sus integraciones.

Para probar las habilidades de los Python y Slack API, CoinBot se lanzará, que monitoreará el chat y lanzará una moneda cuando se active. Después de todo, puede actualizar su bot para fines más prácticos y sus propias ideas.

Mancha: En nuestro tutorial, estamos usando Python.3, eso significa que si va a utilizar versiones que se lanzaron antes, el bot no podrá funcionar.

Preparación:

Todo funcionaría, si tienes estos elementos:

1) Slack en su PC y Workplace (workspace) en el que vas a trabajar. Si no tiene uno, debe crear uno en el sitio oficial Slasitio web de ck.
2)Máquina virtual o PC con dirección IP pública.

Lanzamiento Slarobot

En primer lugar, vamos a lanzar nuestro Slack aplicación en el Slack API Panel de control (SCP)API). Ingrese al menú de su lugar de trabajo y luego vaya a SCPAPI.
Entonces, click en el menú "Crear una aplicación", como en nuestra captura de pantalla:

Context menu "Create an App width

A partir de entonces, se le pedirá que nombre su aplicación. Nuestro nombre será "CoinBot", pero tu nombre depende de ti. Después de eso, elige un trabajospace que sea más conveniente para usted, donde se instalará la aplicación.Application creation context menu in Slack API

 

Luego, su aplicación estará lista para funcionar. Podrías ir al panel de control.

Slack API Control PanelDesde ese panel, puede personalizar su aplicación: cargar nuevos permisos, conectar notificaciones a cualquier evento, instalar su aplicación en cualquier lugar de trabajo y muchas otras cosas.

Ahora, debemos otorgar derechos especiales a nuestra aplicación, si queremos que nuestra aplicación tenga acceso para enviar mensajes en nuestros chats.
Para tener este permiso: tenemos que click en el menú contextual "Permisos", como en nuestra captura de pantalla:

Context menu "Permissions" in Slack2Después de eso, estará en el menú "OAuth y permisos". Tienes que bajar al "Alcance". Allí debe seleccionar "Ámbitos de token de bot". En ese menú, presione el menú "Add on OAuth Scope":

Add an OAuth Scope button in subsection

Como siguiente paso, necesitamos agregar el permiso charlar: escribir. Puedes buscarlo en el escritorio especial.
Enable your app to write to Slack3 API channels height=
Después de eso, su aplicación tendrá permiso para escribir en los chats.

A continuación, después de agregar este derecho, debe agregar su aplicación nuevamente a su Trabajospace.
Vaya un poco más abajo en esta página a "Tokens Oauth para su trabajospace", luego haga clic en "Instalar para trabajarspace" botón:

Menu for adding the Slak API application to your workspace
Después de nuestras acciones, Slack le indicará que mire los permisos disponibles para esta aplicación. Si todo te arregla, click en el botón con "Permitir":

Adding an app to your Slack API workspace

Entonces nuestro bot está listo para funcionar, Slack le proporcionará su token de usuario, se utilizará para acceder a su Trabajospace:
Your Slack API Access Token

Todavía en ese menú tiene un botón "Reinstalar para trabajarspace", que puedes usar si tienes algunos errores con tu bot, se va a reinstalar, después clihaciendo clic en ese botón.
Lo último que debemos hacer es agregar nuestro chatbot en su trabajospaCe. Si ya tiene un canal creado, puede pasar a ese paso ahora: "Agregar un bot a tu canal"

En caso de que aún no haya iniciado los chats, siga estos pasos:
Busque el menú contextual "Agregar canal" y seleccione el botón "Crear un nuevo canal" en él:

Adding a new channel in Slack
Después, seleccione un nombre para su canal y, opcionalmente, complete la barra de descripción.

Creating a channel for the Slack API bot

 

Agregar un bot a tu canal

Si desea agregar un bot a su chat, debe colocar su cursor en el nombre del chat y click en el menú contextual "Ver detalles del canal":

View Slack channel details
Luego cambie al menú "Integración" y cliHaga clic en el botón "Agregar aplicación":

Menu for adding an app to a Slack channel

Luego busque su aplicación por su nombre o simplemente desplácese hacia abajo para encontrarla. En nuestro caso "CoinBot":

Select the app you want to add to your Slack channel
Después de todas nuestras acciones, el bot se lanzará en nuestro chat:

Application added to your channel

 

Python Configure

tenemos que configurar Python, para que podamos instalar y administrar nuestro Slabots de ck.
En primer lugar, instalemos python v.3 y los asistentes de herramientas correspondientes. Vamos a hacer eso en nuestra máquina virtual con Ubuntu v.20.04 implementado en él.
Inicialmente, Python v.3 ya está preinstalado en todos Ubuntu servidores versión 20.04, pero para convencernos de que tenemos todas las actualizaciones disponibles, debemos descargar todas las actualizaciones anteriores en nuestro sistema usando estos comandos:

sudo apt update
sudo apt -y upgrade

Después de eso, podemos ver qué versión tenemos:

python3 -V

La respuesta será algo como esto:

Python 3.8.2

A continuación, debemos descargar la herramienta pip, que nos dará acceso a la gestión de paquetes:

sudo apt install -y python3-pip

Después de eso, vamos a implementar el entorno virtual (VE):

python3 -m venv ~/.venvs/slackbot

Después de eso necesitamos activarlo:

source ~/.venvs/slackbot/bin/activate

Ahora nuestro terminal entre paréntesis mostrará nuestro entorno virtual, debería ser algo así:

(slackbot) root@Ubuntu-Bot-Python:~#

A continuación, con la herramienta pip, vamos a instalar algunos importantes Python componentes:

pip install slackclient slackeventsapi Flask

Explicanation: slackclient y slaeventosapi - herramientas que facilitan el uso de Slack API más fácil. Matraz - microweb framework que se utilizará para implementar nuestro bot.
Después de que hayamos configurado Python, podemos configurar nuestro bot.

Creando una clase para Slamensajes de ckbot en Python

Slack utiliza datos JSON con formato especial para enviar mensajes.
Lancemos un Python clase que simula un lanzamiento de moneda.
Recordatorio: hacemos todas las acciones en un entorno virtual. En nuestro caso, el entorno virtual es root@Ubuntu-Bot-Python: ~ #
Primero, usando el comando táctil, cree un archivo llamado coinbot.py:

touch coinbot.py

Luego abra este archivo con el editor nano, puede usar cualquier otro editor:

nanocoinbot.py

Agregue el siguiente contenido a nuestro archivo:

# import the random library to help us generate the random numbers
import random

# Crear la clase CoinBot
clase CoinBot:
# Crear una constante que contenga el texto predeterminado para el mensaje
MONEDA_BLOQUE = {
"tipo": "sección",
"texto": {
"tipo": "mrkdwn",
"texto": (
"¡Vale! Tirar una moneda al aire....\n\n"
),
},
}
& # El constructor de la clase. Toma el nombre del canal como el a
#papárameter y luego lo establece como una variable de instancia
def __init__(uno mismo, canal):
self.canal = canal
# Genere un número aleatorio para simular lanzar una moneda. Luego devuelve el
# hecho a mano slack payload con el mensaje de lanzamiento de moneda.
def _flip_coin(uno mismo):
rand_int = aleatorio.randint(0,1)
si rand_int == 0:
resultados = "Cabezas"
más:
resultados = "cruz"
text = f"El resultado es {resultados}"
volver {"tipo": "sección", "texto": {"tipo": "mrkdwn", "texto": texto}},
# Elabore y devuelva la carga completa del mensaje como un diccionario.
def get_message_payload(auto):
regreso {
"canal": self.channel,
"bloques": [
yo.COIN_BLOCK,
*self._flip_coin(),
],
}
Luego guardemos y cerremos nuestro archivo con un atajo de teclado.
Ahora nuestro bot puede enviar mensajes y puedes agregarlo a tu trabajospace.

Mensajes de prueba de nuestro Slarobot

Ahora comprobemos que nuestra clase crea la carga correcta.
Cree un archivo llamado coinbot_test.py:

nano coinbot_test.py

Luego agregue el siguiente contenido al archivo creado
Importante: asegúrese de cambiar el nombre del servidor por el suyo propio en coin_bot = coinbot("#YOUR_CHANNEL_HERE").

from slack import WebClient
from coinbot import CoinBot
import os

# Crear un slack client
slack_web_client = WebClient(token=os.environ.get("SLACK_TOKEN"))

# Obtener un nuevo CoinBot
coin_bot = CoinBot("#SU_CANAL_AQUÍ")

# Obtenga la carga útil del mensaje de incorporación
mensaje = coin_bot.get_message_payload()

# Publique el mensaje de incorporación en Slack
slack_web_client.chat_postMessage(**mensaje)
Guarde y cierre este archivo.
Antes de ejecutar la prueba, debe exportar su token, que se encuentra en la lista Slak API:
Your Slack API token
Ahora exporta tu token:

export SLACK_TOKEN="Your token"

Ahora podemos probar nuestro bot. Ejecute el siguiente script en su terminal:

python coinbot_test.py

Después de eso, se le enviará un mensaje sobre el lanzamiento de una moneda en el canal en el que instaló su aplicación. Asegúrate de que tu bot realmente te haya dado cara o cruz.

Creación de una aplicación Flask para ejecutar Slarobot

Ahora que su bot puede lanzar una moneda, crear y enviar mensajes, implementaremos Flask, que procesará los mensajes y les dará algún tipo de reacción si su contenido coincide con algunos criterios.
Primero, configuremos el firewall configuración para permitir el tráfico en el puerto 3000:

sudo ufw allow 3000

Ahora verifique el estado de ufw:

sudo ufw status

Deberías ver un resultado similar a este:

Output
status: active

A la acción de
-- ------ ----
AbiertoSSH    PERMITIR en cualquier lugar
3000 PERMITIR En cualquier lugar
AbiertoSSH (v6) PERMITIR en cualquier lugar (v6)
3000 (v6) PERMITIR en cualquier lugar (v6)

Luego crearemos un archivo para nuestra aplicación Flask.
Llamemos a este archivo app.py:

touch app.py

Luego, abra este archivo con cualquiera de los editores. Usaremos nano:

nano app.py

Agreguemos el siguiente contenido a nuestro archivo app.py:

import os
import logging
from flask import Flask
from slack import WebClient
from slackeventsapi import SlackEventAdapter
from coinbot import CoinBot

# Inicialice una aplicación Flask para alojar el adaptador de eventos
app = Frasco (__ nombre__)
# Cree un adaptador de eventos y regístrelo en un punto final en el slaaplicación ck para inyección de eventos.
slack_events_adaptador = SlackEventAdapter(os.environ.get("SLACK_EVENTS_TOKEN"), "/slack/eventos", aplicación)

# Inicializar una Web API client
slack_web_client = WebClient(token=os.environ.get("SLACK_TOKEN"))

def flip_coin(canal):
"""Crea el CoinBot, lanza la moneda y envía el mensaje al canal
""
# Crear un nuevo CoinBot
coin_bot = CoinBot(canal)

# Obtenga la carga útil del mensaje de incorporación
mensaje = coin_bot.get_message_payload()

# Publique el mensaje de incorporación en Slack
slack_web_client.chat_postMessage(**mensaje)

# Cuando el adaptador de eventos detecta un evento de 'mensaje', reenvía esa carga
# a esta función.
@slack_events_adapter.on("mensaje")
mensaje def (carga útil):
""" Analice el evento del mensaje y, si la cadena de activación está en el texto,
simule un lanzamiento de moneda y envíe el resultado.
""

# Obtenga los datos del evento de la carga útil
evento = payload.get("evento", {})

# Obtenga el texto del evento que se produjo
texto = evento.get("texto")

# Verifique y vea si la frase de activación estaba en el texto del mensaje.
# Si es así, ejecuta el código para lanzar una moneda.
if "hey sammy, lanza una moneda" en text.lower():
# Dado que se cumplió la frase de activación, obtenga el ID del canal que el evento
# fue ejecutado el
channel_id = event.get("canal")

# Ejecuta la función flip_coin y envía los resultados de
# lanzar una moneda al canal
devolver flip_coin(channel_id)

if __name__ == "__main__":
# Crear el objeto de registro
registrador = registro.getLogger()

# Establecer el nivel de registro en DEBUG. Esto aumentará la verbosidad de los mensajes de registro.
logger.setLevel (registro.DEBUG)

# Agregue StreamHandler como controlador de registro
registrador.addHandler(registro.StreamHandler())

# Ejecute nuestra aplicación en nuestra dirección IP externa en el puerto 3000 en lugar de
# ejecutándolo en localhost, que es tradicional para el desarrollo.
aplicación.ejecutar(host='0.0.0.0', puerto=3000)
Guarde y cierre el archivo.
Explicanation: Agregamos las siguientes afirmaciones porque:

importar os - usaremos para acceder a las variables de entorno

registro de importación - usaremos para registrar eventos de la aplicación.

desde el matraz de importación Matraz - usaremos para crear una aplicación Flask

en slack importar WebClient - utilizaremos para enviar mensajes a través de Slack

en slaeventosapi importar SlackEventAdapter - utilizaremos para recibir eventos de Slack y procesarlos

de coinbot importar CoinBot - usaremos para crear una instancia de su CoinBot y generar la carga útil del mensaje.

Lanzamiento de su aplicación Flask

Después de todo, nuestra aplicación Flask está lista para funcionar con la aplicación, probémosla.
Primero, agreguemos nuestro Slaaplicación ckbot.
En Slack API página, vaya a la sección "Información básica" y desplácese hacia abajo hasta la subsección "Credenciales de la aplicación":
The secret of signing your application in Slack API

CliHaga clic en "Mostrar" como se muestra en la captura de pantalla y luego copie el secreto de firma.
Ahora exportamos nuestra firmanature secreto con este comando:

export SLACK_EVENTS_TOKEN="MY_SIGNING_SECRET_TOKEN"

Ahora podemos probar nuestra aplicación.
Inicie la aplicación Flask usando ese código:

python3 app.py

Ejemplo de salida:

(slackbot) [19:37:05] danial:CoinBot$ python app.py
* Serving Flask app "app" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://0.0.0.0:3000/ (Press CTRL+C to quit)

Ahora terminemos de configurar nuestra aplicación en el SlaVerifique la interfaz de usuario.
En primer lugar, vamos a proporcionar a nuestra aplicación el derecho de leer, procesar actividades en el chat y responder a ellas.
En el menú de la interfaz de usuario, seleccione la sección "Suscripciones a eventos" y cambie el interruptor de palanca "Habilitar eventos" a la posición "Encendido", como se muestra en la captura de pantalla:
Enable events toggle switch in Slack API

 

Después, abra el menú "Suscribirse a eventos de bot" y seleccione mensajes.canales:

 

Adding permission for your Slack API app

Después de nuestras acciones, su aplicación en futere tendrá la oportunidad de procesar mensajes.
Una vez que guarde los cambios, tendrá un menú contextual amarillo en la parte superior de la pantalla que le informará que necesita reinstalar la aplicación para aplicar los siguientes cambios.
CliHaga clic en el enlace de reinstalación en este banner para reinstalar la aplicación:

Notice about reinstalling the app to apply Slack API changes
Luego tendrá un menú contextual con los nuevos permisos aplicados. Si estás de acuerdo con todo, climarque "Permitir":

Allow the app in your Slack0 API workspace
Después de todo, nuestro bot estará listo. Vaya a su chat y envíe un mensaje con la frase "Oye, Danny, lanza una moneda".
Tu vas a comprobar tu suerte y mostrarte el resultado. ¡Felicitaciones, lanzamos nuestro bot!

Votar:
5 de 5
Calificación promedio: 5
Calificado por: 1
1101 CT Ámsterdam Países Bajos, Herikerbergweg 292
+31 20 262-58-98
700 300
ITGLOBAL.COM NL
700 300
Utilizamos cookies para hacer que su experiencia en el Serverspace mejor. Al continuar navegando en nuestro sitio web, usted acepta nuestros
Uso de Cookies y Sitio de Política de privacidad.