English English

Configuración del bot de chat Go-neb para el servidor de mensajería Matrix

Cómo configurar Go-neb (última versión). Se trata de un chatbot (bot de chat) que proporciona servicios como el envío automático de fuentes de noticias RSS, la búsqueda de imágenes GIF o información de Wikipedia y muchas otras funcionalidades. El chatbot es fácil de configurar y puede ser utilizado a través del cliente de mensajería Riot (cliente para el servidor de matriz).

Aviso:
Decidí actualizar este tutorial porque hay una nueva versión del robot de chat Go-neb en Github. El procedimiento de instalación es ahora diferente, porque el chat bot es ahora un módulo Go. La nueva versión tiene también nuevos servicios (bots) y el bot de wikipedia también fue arreglado.

En este tutorial el chat bot se instala con todos sus requisitos. Aquí se utiliza Root. Sin embargo, se requiere una instancia del Servidor Matrix previamente ejecutada y configurada. Se recomienda la instalación de Matrix a través de "Paquetes Preconstruidos". Más información sobre la instalación y configuración de Matrix: https://github.com/matrix-org/synapse/blob/master/INSTALL.md

 

Instalación del GO

Necesitas tener Go 1.14 o una versión más reciente. Si esa versión ya está instalada y configurada, esta sección puede saltarse. GO puede ser descargado desde este sitio web. Por favor, descargue la última versión para Linux:

https://golang.org/dl/

También puedes usar este script probado que descarga la última versión de Golang para tu sistema operativo:
https://github.com/udhos/update-golang

Luego, agrega un enlace suave a tu archivo binario de Go:

ln -s /usr/local/go1.14.2.linux-amd64/bin/go go
ln -s /usr/local/go1.14.2.linux-amd64/bin/gofmt gofmt

 

Luego establezca las rutas en el sistema operativo (si no usó el guión mencionado anteriormente). Las rutas deben apuntar a la carpeta donde se descargó GO.

export GOROOT=/usr/local/go
export PATH=$GOROOT/bin:$PATH

Con este comando puedes comprobar si el GO se llama ahora y puedes mostrar todos los caminos establecidos para el GO.

go env

También se puede usar el comando "versión" para mostrar la versión del GO.

 

Instalación de go-neb

Ahora ve a la ruta de tu carpeta de inicio de tu instalación "Golang" ("Go")
Si está conectado como root (usado aquí en este ejemplo), entonces es esta carpeta.

/root/go/src/


Es "nombre de usuario" y luego "go/src". También puedes ir a la ruta de instalación de tu go en "/usr/local".

Crea esta ruta en la carpeta "/root/go/src/" o en tu carpeta de inicio de go.

mkdir -p "github.com/matrix-org"


Cambiar a la nueva carpeta creada "github.com/matrix-org"

cd github.com/matrix-org


Y luego clonar el depósito de go-neb Github:

git clone https://github.com/matrix-org/go-neb

Vuelve a la carpeta "github.com"

cd ..


Ahora, haz el siguiente paso.

Cree estas carpetas:

mkdir -p "lib/pq"
mkdir -p "matrix-org/dugong"
mkdir -p "matrix-org/util"
mkdir -p "mattn/go-sqlite3"
mkdir -p "prometheus/client_golang"
mkdir -p "sirupsen/logrus"

Clonar este repositorio Github "https://github.com/lib/pq.git" en la carpeta creada:

git clone https://github.com/lib/pq.git lib/pq/


Clonar este repositorio Github "https://github.com/matrix-org/dugong" en la carpeta creada:

git clone https://github.com/matrix-org/dugong matrix-org/dugong


Clonar este repositorio Github "https://github.com/matrix-org/util" en la carpeta creada:

git clone https://github.com/matrix-org/util matrix-org/util


Clonar este repositorio Github "https://github.com/mattn/go-sqlite3" en la carpeta creada:

git clone https://github.com/mattn/go-sqlite3 mattn/go-sqlite3


Clonar este repositorio Github "https://github.com/prometheus/client_golang" en la carpeta creada:

git clone https://github.com/prometheus/client_golang prometheus/client_golang


Clonar este repositorio Github "https://github.com/sirupsen/logrus" en la carpeta creada:

git clone https://github.com/sirupsen/logrus sirupsen/logrus


Cambie a su carpeta go-neb.

cd matrix-org/go-neb

Ahora, puedes construir tu robot de chat go-neb.

go build github.com/matrix-org/go-neb

 

Esto puede llevar algo de tiempo. Puedes ir a tomar un café mientras tanto.

 

Si el proceso de construcción se hizo, entonces puedes encontrar el archivo binario (nombre: "go-neb") de tu bot de chat en esta carpeta:

~/go/src/github.com/matrix-org/go-neb

 

Por favor, crea una carpeta "bin" y mueve ese archivo binario a la carpeta creada "bin".

mkdir bin && mv go-neb bin/

 

Copie la carpeta completa de "go-neb" en una carpeta donde guarde sus aplicaciones:

cp ~/go/src/github.com/matrix-org/go-neb /opt/ -R



Configuración del go-neb

Ahora tienes que crear un usuario (go-neb) para el chatbot, que no tiene derechos de Sudo y puede ser usado con el directorio de inicio /opt/go-neb

Crea el go-neb del grupo y añade el go-neb del usuario a este grupo. No olvides dar derechos de acceso a la carpeta del programa go-neb para el usuario go-neb ahora creado.

chown -R go-neb:go-neb /opt/go-neb

 

Crear un nuevo usuario en Matrix para el chatbot. Aquí el bot del usuario se usa para el go-neb.

register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml https://localhost:8448

 

Go-neb puede ser ejecutado directamente usando este comando:

BIND_ADDRESS=:4050 DATABASE_TYPE=sqlite3 DATABASE_URL=go-neb.db?_busy_timeout=5000 BASE_URL=http://localhost:4050 bin/go-neb

Aquí, sin embargo, se crea un servicio de sistema para este programa para su uso en la producción.

vim /etc/systemd/system/go-neb.service
[Unit]
Description=Go-neb bot for matrix-synapse server
After=network.target
[Service]
WorkingDirectory=/opt/go-neb
ExecStart=/opt/go-neb/bin/go-neb
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=go-neb
User=go-neb
Group=go-neb
Environment=BIND_ADDRESS=localhost:4050 DATABASE_TYPE=sqlite3 DATABASE_URL=db/go-neb.db?_busy_timeout=5000 BASE_URL=http://localhost:4050 CONFIG_FILE=config.yaml
Restart=always
RestartSec=10
StartLimitInterval=900
StartLimitBurst=3
[Install]
WantedBy=multi-user.target

 

Crear una carpeta para la base de datos del robot del chat.

mkdir /opt/go-neb/db

 

Ahora configura los ajustes del chatbot go-neb. El archivo de configuración debe ser copiado y luego puede ser personalizado de acuerdo a sus necesidades.

cp config.sample.yaml config.yaml

El bot de chat está configurado en esta sección. Se pueden utilizar varios usuarios (clientes) para el bot de chat. Aquí sólo se configura un usuario. Por favor, introduzca el AccessToken definido en la configuración de Matrix. La ID de usuario corresponde a la cuenta de usuario en el servidor Matrix.

clients:
  - UserID: "@bot:localhost"
    AccessToken: "XXXXXXXXXXX"
    HomeserverURL: "http://localhost:8448"
    Sync: true
    AutoJoinRooms: true
    DisplayName: "Go-NEB Chatbot"

Las funciones del chatbot se pueden configurar en esta sección "servicios". También puedes añadir tus propios servicios aquí. Hay que crear nuevas claves de API. Las claves de la API en la configuración no funcionan. Tienes que crear y tus claves de API.

# The list of services which Go-NEB is aware of.
# Delete or modify this list as appropriate.
# See the docs for /configureService for the full list of options:
# https://matrix-org.github.io/go-neb/pkg/github.com/matrix-org/go-neb/api/index.html#ConfigureServiceRequest
services:
  - ID: "giphy_service"
    Type: "giphy"
    UserID: "@goneb:localhost" # requires a Syncing client
    Config:
      api_key: "XXXX"
      use_downsized: false

Ahora activa e inicia el servicio recién creado.

systemctl enable go-neb
systemctl start go-neb

 

Solución de problemas

Si obtienes el siguiente error "start-limit-hit":

Apr 05 19:28:02 myserver systemd[1]: Failed to start Go-neb Bot For Synapse-Matrix server.
Apr 05 19:28:02 myserver systemd[1]: go-neb.service: Failed with result 'start-limit-hit'.

Solución: Reinicie su servicio con este comando.

systemctl reset-failed go-neb

Más información

Hay otros escenarios además de los mencionados aquí. La funcionalidad de Go-neb también puede ser ampliada por servicios auto-programados. Para el servicio guggy no hay más claves de API por parte del operador.

Más información sobre Go-neb y la API de Go-neb se puede encontrar en esta página web: https://matrix-org.github.io/go-neb/pkg/github.com/matrix-org/go-neb/

Página de Github de Go-neb (incluye también documentación): https://github.com/matrix-org/go-neb

 

Usamos cookies en nuestro sitio web. Algunas de ellas son esenciales para el funcionamiento del sitio, mientras que otras nos ayudan a mejorar el sitio web y también la experiencia del usuario (cookies de rastreo). Puedes decidir por ti mismo si quieres permitir el uso de las cookies. Ten en cuenta que si las rechazas, puede que no puedas usar todas las funcionalidades del sitio web.