All Projects → pojntfx → nextcloud-talk-bot-framework

pojntfx / nextcloud-talk-bot-framework

Licence: AGPL-3.0 license
A framework for writing Nextcloud Talk chatbots with every language that supports gRPC.

Programming Languages

go
31211 projects - #10 most used programming language
shell
77523 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to nextcloud-talk-bot-framework

gort
Gort is a chatbot framework designed from the ground up for chatops.
Stars: ✭ 381 (+1556.52%)
Mutual labels:  chat-bot, chatbot-framework
talk-ios
📱😀 Video & audio calls through Nextcloud on iOS
Stars: ✭ 99 (+330.43%)
Mutual labels:  nextcloud, nextcloud-talk
nextcloud docker
Docker setup to run Nextcloud
Stars: ✭ 35 (+52.17%)
Mutual labels:  nextcloud, nextcloud-talk
connectycube-flutter-call-kit
A Flutter plugin for displaying call screen when the app in the background or terminated.
Stars: ✭ 35 (+52.17%)
Mutual labels:  videochat
jitsi-admin
Organize and fully controll your jitsi meet meetings. Make your meeting secure and be sure that only you and your fellows can join your meeting.
Stars: ✭ 76 (+230.43%)
Mutual labels:  jitsi
jitsi-meet-electron-sdk
Jitsi Meet SDK for Electron
Stars: ✭ 72 (+213.04%)
Mutual labels:  jitsi
ocr
Nextcloud OCR (optical character recoginition) processing for images with tesseract-js
Stars: ✭ 98 (+326.09%)
Mutual labels:  nextcloud
dockerimages
🐳 Some dockerfiles based on alpine
Stars: ✭ 27 (+17.39%)
Mutual labels:  nextcloud
logreader
📜 Log reader for Nextcloud
Stars: ✭ 46 (+100%)
Mutual labels:  nextcloud
nextcloud-java-api
Java api library to access nextcloud features from java applications
Stars: ✭ 61 (+165.22%)
Mutual labels:  nextcloud
SaorTech-cloud-services
A range of scripts to provision and configure open source cloud services.
Stars: ✭ 23 (+0%)
Mutual labels:  nextcloud
ldapcontacts
View other LDAP users as contacts in Nextcloud and see the personal data they shared
Stars: ✭ 18 (-21.74%)
Mutual labels:  nextcloud
MySB
MySB (MySeedBox) is more than a simplified installation script of a multi-users Seedbox. There are many solutions to install a Seedbox, but we never talk about safety and regular operations. MySB could be renamed MySSB (MySecuredSeedBox).
Stars: ✭ 105 (+356.52%)
Mutual labels:  nextcloud
nextcloud-snap
☁️📦 Nextcloud packaged as a snap
Stars: ✭ 1,445 (+6182.61%)
Mutual labels:  nextcloud
MajBot
Open source Java Chat Bot project.
Stars: ✭ 60 (+160.87%)
Mutual labels:  chat-bot
mediadc
Nextcloud Media Duplicate Collector application
Stars: ✭ 57 (+147.83%)
Mutual labels:  nextcloud
twurple
Interact with Twitch's API, chat and subscribe to events via PubSub and EventSub.
Stars: ✭ 479 (+1982.61%)
Mutual labels:  chat-bot
One-to-One-Video-Calling-Open-Source-PHP-Application
This Sample PHP Application demonstrates the use of EnableX webRTC Platform Server APIs and JavaScript Toolkit to develop one to one real time communication (RTC) application. It allows developers to ramp up on app development by hosting on their own devices.
Stars: ✭ 13 (-43.48%)
Mutual labels:  videochat
cogy
Cog commands from your Rails app
Stars: ✭ 20 (-13.04%)
Mutual labels:  chat-bot
integration github
🐙 GitHub integration into Nextcloud
Stars: ✭ 41 (+78.26%)
Mutual labels:  nextcloud

Nextcloud Talk Bot Framework

A framework to realize Nextcloud Talk chatbots in a client/server model, where sessions exchange data via gRPC stubs.

The bot has bin re-written as nctalkbot-jitsi. It takes advantage of the new framework and implements the client side. Please have a look at at pojntfx/nextcloud-talk-bot-jitsi. The server part is available as nctalkproxyd. The source-code is provided in this repo.

Take a look at the following introduction video:

thumbnail

Overview

The Nextcloud Talk Bot Framework discribes a client/server infrastructure to realize Nextcloud chatbots, that interact via gRPC sessions. Shown here is an example for nctalkbot-jitsi.

  • Server side: nctalkproxyd implements a server instance written in the Go language. This component handles all the interaction with the Nextcloud API. It will listen for new chat requests while monitoring the associated rooms. Chat requests will be processed and the relavant data are proxied via gRPC messages to the client side. The new session will be advertised inside the addressed Nextcloud chat.

  • Client side: In order to create a chatbot, a client counterpart has to be implemented in any gRPC supported language. This Client will interacts with nctalkproxyd sending and recieving messages. The latter will will take care of all the heavy lifting (eg. handling the Nextcloud Talk API, keeping track of participants). nctalkbot-jitsi is a reference implementation written in JavaScript.

  • Jitsi-Meet: Participants will connect to the initiated Jitsi meeting inside a new window of their browser session. jitsi-meet-node will take care to process the needed steps. The communication with the Jitsi-Meet server follows the JitsiMeetExternal API. The framework is taking care to preset the Session parameters (eg. Name, password), beside participant specicfic options (participant name, language, etc).

The following image try to illustrate the major components and its workflow.

nctalkbot-framework.png

Installation

Go Package

A Go package is available.

Docker Image

A Docker image is available at Docker Hub.

Others

If you're interested in using alternatives like OCI images, see OCI.

Usage

The API will asure fast and secure messsage exchange via gRPC using protocol buffers. The protocol description itself is defined in pkg/protos/nextcloud_talk.proto.

nctalkbot-jitsi is a pretty advanced chatbot implementation, using this framework. Take it as a reference.

nctalkproxyd will integrate itself in the Nextcloud Talk infrastructure while authenticating as a dedicated user. In order to use the bot, this user (e.g. name it "jitsibot") needs to be added as a participent in every Nextcloud Talk room. You will handle that as an admin user from within the Nextcloud GUI.

The following code will interconnect a nctalkproxyd docker container with a nctalkbot-jitsicontainer. Please adapt variables to meet your production/testing needs. The given values are just examples:

% docker volume create nctalkproxyd
% docker network create nctalkbots
% docker run \
	-p 1969:1969 \
	-v nctalkproxyd:/var/lib/nctalkproxyd \
	-e NCTALKPROXYD_DBPATH=/var/lib/nctalkproxyd \
	-e NCTALKPROXYD_USERNAME=botusername \
	-e NCTALKPROXYD_PASSWORD=botpassword \
	-e NCTALKPROXYD_ADDRREMOTE=https://mynextcloud.com \
	--network nctalkchatbots \
	--name nctalkproxyd \
	-d pojntfx/nctalkproxyd
% docker run \
	-e NCTALKBOT_BOT_NAME=botusername \
	-e NCTALKBOT_COMMANDS=\#videochat,\#videocall,\#custom \
	-e NCTALKBOT_SLEEP_TIME=20 \
	-e NCTALKBOT_JITSI_ADDR=meet.jit.si \
	-e NCTALKBOT_JITSI_ROOM_PASSWORD_BYTE_LENGTH=1 \
	-e NCTALKBOT_NCTALKPROXYD_ADDR=localhost:1969 \
	--network nctalkbots \
	-d pojntfx/nctalkbot-jitsi

License

Nextcloud Talk Bot Framework (c) 2020 Felix Pojtinger

SPDX-License-Identifier: AGPL-3.0

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].