advotracker: the backend library
Signed-off-by: Ralf Zerres <ralf.zerres@networkx.de>
This commit is contained in:
78
lib.rs
Normal file
78
lib.rs
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
//! # nctalkbot-framework
|
||||||
|
//!
|
||||||
|
//! `nctalkbot` is a rust implemented framework, that describes a client/server infrastructure
|
||||||
|
//! needed to build a scalable chatbot that communicates with Nextcloud.
|
||||||
|
//!
|
||||||
|
//! ## Overview
|
||||||
|
//!
|
||||||
|
//! The framework will offer the following components:
|
||||||
|
//!
|
||||||
|
//! * Server side
|
||||||
|
//!
|
||||||
|
//! `nctalkproxyd` implements the server component. This proxy handles all
|
||||||
|
//! the interaction with the Nextcloud API. It will monitor NextCloud Talk
|
||||||
|
//! rooms while listening for new chat requests.
|
||||||
|
//! Incoming requests are processed appropriately and session relevant data
|
||||||
|
//! are exchanged via gRPC message between the proxy and the client side.
|
||||||
|
//! All interaction between the proxy and the Nextcloud server are encapsulated
|
||||||
|
//! inside http2 messages.
|
||||||
|
//! To keep track of the addressed rooms and its participants, it will take
|
||||||
|
//! advantage of an [`in memory database`](https://github.com/mambisi/escanor).
|
||||||
|
//! Communication is handled using the redis protocol.
|
||||||
|
//! New chat responses are advertised to the user as rendered chat messages
|
||||||
|
//! inside its originating room.
|
||||||
|
//!
|
||||||
|
//! * Client side
|
||||||
|
//!
|
||||||
|
//! In order to create a functional chatbot, a client counterpart has to be
|
||||||
|
//! implemented as well. Your client will interact with `nctalkproxyd` while
|
||||||
|
//! sending and recieving gRPC messages.
|
||||||
|
//! You may implemnt it in any supported native languages that support gRPC
|
||||||
|
//! bindings.
|
||||||
|
//!
|
||||||
|
//! `nctalkbot-jitsi` is reference implementation, that take advantage of the
|
||||||
|
//! framework to create new jitsi meetings.
|
||||||
|
//! The actual meeting is created in a new window of a supported browser session.
|
||||||
|
//! If a new gRPC meeting request is received, the client will process the
|
||||||
|
//! required steps following the [JitsiMeetExternal API](https://github.com/jitsi/jitsi-meet/blob/master/doc/api.md).
|
||||||
|
//! The framework is taking care to preset the session parameters (eg. Name,
|
||||||
|
//! password), beside participant specicfic options (participant name,
|
||||||
|
//! language, etc).
|
||||||
|
//!
|
||||||
|
//! ## gRPC Overview
|
||||||
|
//!
|
||||||
|
//! Like many RPC systems, gRPC is based around the idea of defining a service,
|
||||||
|
//! specifying the methods that can be called remotely with their parameters and
|
||||||
|
//! return types. By default, gRPC uses protocol buffers as the
|
||||||
|
//! Interface Definition Language (IDL) for describing both the service interface
|
||||||
|
//! and the structure of the payload messages. It is possible to use other
|
||||||
|
//! alternatives if desired.
|
||||||
|
//!
|
||||||
|
//! gRPC lets you define four kinds of service method:
|
||||||
|
//!
|
||||||
|
//! * Unary RPCs
|
||||||
|
//! The client sends a single request to the server and gets a single response back
|
||||||
|
//! * Server streaming RPCs
|
||||||
|
//! The client sends a request to the server and gets a stream to read a sequence of messages back.
|
||||||
|
//! * Client streaming RPCs
|
||||||
|
//! The client writes a sequence of messages and sends them to the server,
|
||||||
|
//! again using a provided stream. Once the client has finished writing the messages,
|
||||||
|
//! it waits for the server to read them and return its response.
|
||||||
|
//! * Bidirectional streaming RPCs#
|
||||||
|
//! Both sides send a sequence of messages using a read-write stream.
|
||||||
|
//! The two streams operate independently, so clients and servers can read and write
|
||||||
|
//! in whatever order they like
|
||||||
|
//!
|
||||||
|
//! Have a look at the following bird's eye illustration of the processes
|
||||||
|
//!
|
||||||
|
//! 
|
||||||
|
//!
|
||||||
|
//! ## Workflow visualization
|
||||||
|
//!
|
||||||
|
//! The following image try to illustrate the major components and its workflow.
|
||||||
|
//!
|
||||||
|
//! 
|
||||||
|
//!
|
||||||
|
|
||||||
|
//#![feature(extern_doc)]
|
||||||
|
//#[doc(include="../README.md")]
|
||||||
42
src/lib.rs
Normal file
42
src/lib.rs
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
//! # advotracker-framework
|
||||||
|
//!
|
||||||
|
//! `AdvoTracker` is a framework implemented in the `Rust` language
|
||||||
|
//! ().
|
||||||
|
//! It assembles a client/server infrastructure needed to build a scalable, robust
|
||||||
|
//! tool used to keep track of legal mandate data within an online advice.
|
||||||
|
//!
|
||||||
|
//! ## Overview
|
||||||
|
//!
|
||||||
|
//! The framework will offer the following components:
|
||||||
|
//!
|
||||||
|
//! * Server side
|
||||||
|
//!
|
||||||
|
//! `advotrackerd` implements the server component. For example, it will handle all
|
||||||
|
//! the interaction with an underling database engine.
|
||||||
|
//!
|
||||||
|
//! * Client side
|
||||||
|
//!
|
||||||
|
//! `advotracker` is the client counterpart that represents the frontend.
|
||||||
|
//! To offer a operating system agnostic graphical interface, it will take advantage
|
||||||
|
//! of `OrbTk`, a Rust naitive GUI framework ().
|
||||||
|
//!
|
||||||
|
//! This component is the entry point for all `AdvoTracker` users.
|
||||||
|
//! All offered tasks are organized in roles. Thus, a user needs to authenticate agains
|
||||||
|
//! the system to make use of and access its assigned roles.
|
||||||
|
//!
|
||||||
|
//! The followin list is an
|
||||||
|
//! - enter and capture legal mandate date wile working in an online advice
|
||||||
|
//! - search inside the legal advices database
|
||||||
|
//! - export legal advices
|
||||||
|
//! - follow the history of legal advices
|
||||||
|
//! - get statistics about completed advices
|
||||||
|
//!
|
||||||
|
//! ## Workflow visualization
|
||||||
|
//!
|
||||||
|
//! The following image try to illustrate the major components and its workflow.
|
||||||
|
//!
|
||||||
|
//! 
|
||||||
|
//!
|
||||||
|
|
||||||
|
//#![feature(extern_doc)]
|
||||||
|
//#[doc(include="../README.md")]
|
||||||
Reference in New Issue
Block a user