www.state-it.info

Gran base de respuestas a las preguntas de los desarrolladores
Header decor

Que aconsejan sobre la arquitectura de chat bot?

VeroLom 2018-11-06 12:08:07

hola, compañeros! :)
Necesito sus consejos.

Hago un chat bot, hasta el momento sólo hay una mínima de la pieza. Algo del tipo:

bot.listen();

bot.on('event', (event) => {
    switch(event.type) {
        case 'type1':
            type1EventHandler(event);
            break;
        // ...
        default:
            defaultEventHandler();
    }
});


El principal funcionalidad es necesario "moderación" y el control de acceso (MAC, como se llama). Quizás es en este asunto no tiene mucha importancia, pero por si acaso :)
En general, la tarea de la recepción de comandos, el procesamiento y la ejecución de la acción a través de la API.

La intención de implementar la funcionalidad en forma de plugins. El trabajo con el chat (autorización, eventos, etc.), también pienso que será un plugin, para que pueda conectar en el futuro algún otro protocolo/API.

Miraba гитхаб sobre este tema, pero nada concreto no lo he encontrado - irónica o hecho, o está sobrecargado. O no ha encontrado la adecuada :)

En general, es necesario el consejo, como es todo en práctica. ¿Cuáles son los patrones de aquí se puede aplicar? Puede, tener la experiencia de tal o conocidos опенсорс productos, donde inspirarse =)

UPD: Todavía quiero compartir esto causa en el proceso que va a controlar el chat de robots, los cuales tendrán sus configuraciones, los administradores, que pueden estar en varios canales.

UPD: hasta un poco atascado en la pieza. Que decir, escribió en la pregunta. Específico para el tipo de evento, se llama el controlador correspondiente.
Para decirlo sin rodeos, por el evento join se llama al controlador onJoin(), la cual, por ejemplo, escribe en el archivo de log "{date} el Usuario {event.user} se unió al canal".

Mientras veo dos grandes problemas:
1. El controlador de eventos.
Ahora se utiliza switch case para el procesamiento de eventos, quiero sacar "base" de un motor en la clase y para el procesamiento de los eventos a registrar sus controladores (plugins).

2. El evento "message" (mensaje en el chat). Debido a que el robot responde a los comandos de tipo bot <equipo> <objeto> <opciones>" creo que este evento es llevar una clase práctica de algún tipo de routing / suscripción a la llamada de la orden. También plugins.

Todavía quiero algo de zoom y abstracción de la API y protocolos. Los bots pueden ser múltiples en los diferentes canales y redes de IRC, Tg, sec. de la red y así sucesivamente). Puede, en principio no tiene mucho sentido plantearse esta pregunta, pero sería necesario previamente tener en cuenta este matiz.
Probablemente, para empezar tengo antes de ir a dormir Design patterns. Puede, pensamientos útiles aparecerán :)

Teslaman 2018-11-06 12:41:13

Python aquí para lo cual se especifica?


VeroLom 2018-11-06 13:45:33

Teslaman, uy, se olvidó de borrar.
Miraba listas de bots y hasta que no es tan importante en ноде escribir o python. Pero sí, YAP aquí, especialmente, no al que.


Total answers: 2

Sowd 2018-11-06 12:56:03

Usted escribe, que llevó a cabo el análisis de soluciones similares en гитхабе, ninguna de las soluciones que no llegó por una serie de atributos. Sobre la base de su solicitud, se puede concluir, que ya tiene una comprensión de cómo se debe trabajar y representación de la arquitectura. Pero, ¿qué es lo sagrado razón, usted no desea escribir su decisión. Se produce es una pregunta razonable, que es exactamente lo que usted espera ver en las respuestas? Terminados копипасту?

VeroLom 2018-11-06 13:54:03

estoy de Acuerdo, bastante desordenado. Me resulta más fácil el código de escribir, que buena pregunta.

Acerca de las decisiones en гитхабе - en general hay algo frívolo, el tipo de mi pieza, escrita en unos 20 minutos :) Mantuvo un par de opciones, pero hay un montón de remodelación y demasiado superfluo. Eso si, la otra opción no la encuentro.

Y espero ver algunos consejos que utilizar, qué ver, qué patrones de diseño a considerar, best practices. Puede, sin embargo, algo útil.
Hasta la vista de la arquitectura débil.


Sowd 2018-11-06 15:59:02

Como se puede aconsejar algo concreto sin la comprensión de la tarea en detalle? Yo empecé con la aplicación de la mas modesto de un prototipo, sin ningún патернами y бестпрактис, esto permitirá caminar por граблям y formar adecuado a sus tareas de la vista de la arquitectura y dará más de un portaobjetos de la gestin de la perspectiva, y se de lo de bailar.


VeroLom 2018-11-06 21:17:41

Sowd, mientras que un poco atascado en la pieza. Que decir, escribió en la pregunta. Específico para el tipo de evento, se llama el controlador correspondiente.
Para decirlo sin rodeos, por el evento join se llama al controlador onJoin(), la cual, por ejemplo, escribe en el archivo de log "{date} el Usuario {event.user} se unió al canal".

Pensé mientras veo dos problemas:
1. El controlador de eventos.
Ahora se utiliza switch case para el procesamiento de eventos, quiero sacar "base" de un motor en la clase y para el procesamiento de los eventos a registrar sus controladores (plugins).

2. El evento "message" (mensaje en el chat). Debido a que el robot responde a los comandos de tipo bot <equipo> <objeto> <opciones>" creo que este evento es llevar una clase práctica de algún tipo de routing / suscripción a la llamada de la orden. También plugins.

Probablemente, una de las cuestiones aún no hay nada más importante.

UPD: Casi se me olvida. Me gustaría algo de zoom y abstracción de la API y protocolos. Los bots pueden ser múltiples en los diferentes canales y redes de IRC, Tg, sec. de la red y así sucesivamente). Puede, en principio no tiene mucho sentido plantearse esta pregunta, pero sería necesario previamente tener en cuenta este matiz.
Probablemente, para empezar tengo antes de ir a dormir Design patterns. Puede, pensamientos útiles aparecerán :)


Sowd 2018-11-07 09:35:31

SOLID =)


opium 2018-11-06 14:21:06

Нахрена aquí patrones ?
Escriba монолитом

VeroLom 2018-11-06 14:37:56

la Funcionalidad no va a ser fácil, aquí sin la modularidad de la nada.


ahmpro 2018-11-08 19:01:32

VeroLom, no se impide a organizar la modularidad normal núcleo compacto código, y no el plug-plug-ins.
en mi humilde opinión en la etapa actual, cuando no está claro por qué lo mejor no dar excesiva complejidad, y escribir simplemente.


VeroLom 2018-11-09 01:41:34

ahmpro, he aproximadamente imagino que necesito en el futuro, por lo tanto, en cada etapa de la remodelación de todos los que no parece razonable. Reescribir algo nada algo tendrá, pero me gustaría diseñar algo más-menos comprobado al menos en el nivel de interfaces.

Entiendo que, "chat-bot", puede y suena como algo que... no respetable, que si, pero el proyecto un poco абстрактнее y grave.


ahmpro 2018-11-09 02:28:36

VeroLom,
"alrededor de la imagino", "en el futuro" ...
comience cursi con la descripción de los requisitos funcionales de los MVP, para que sean claros los límites.

quieres hacer una estructura modular de plug-plug-ins con фичами, que en realidad representan una parte principal del sistema, por lo que le aconsejaron que allí no inmiscuirse, conseguir que más dolores de cabeza beneficio.

es posible que no todos nos lo dieron cuenta de que usted específicamente desea, y luego otro upd con el proceso que han aparecido.

Ahora se utiliza switch case para el procesamiento de eventos, quiero sacar "base" de un motor en la clase y para el procesamiento de los eventos a registrar sus controladores (plugins).

sólo se puede utilizar dict de búsqueda del tipo de evento y su controlador, en mi humilde opinión es un poco fácil que el creciente switch case, si apetece mucho esto puede ser no sólo un procesador, y una lista de varios

Pd: como dice cuanto más específico sea la pregunta, más concretamente la respuesta ;)


Preguntas relacionadas:

Footer decor

© www.state-it.info | Base of answers to questions for developers and programmers.