dialog-ruby

Telegram Bot abstraction layer for textual collaboration.


License
Other
Install
gem install dialog-ruby -v 0.1

Documentation

logo

travis-ci codeclimate-issues-badge

Описание

Смысловое

Генерализация данных в понятийных цепях.

Техническое (Функциональность Телеграм как платформы)

Тут

Техническое (сервисы)

"Микросервисная архитектура для раскрытия всего своего потенциала требует сохранения работоспособности системы при отказе любой машины. Это позволяет хоститься на облаках с не очень надежными машинами, позволяет CD без даунтайма, позволяет A/B тестирование и т.д."

Приём и лёгкий парсинг сообщений (микросервис 1)

Неблокирующий конечный автомат принимает все сообщения, раскладывает в сесиионную базу и добавляет мета-данные (аналог "parse_and_provide" в текущем коде), выделяя KV-topic по смысловой сериализации. Под "смысловой сериализацией" понимается случай, при котором важно сохранить последовательность обработки сообщений. В данном случае, сериализация производится по chat_id - идентификатору чата.

Логический конструктор событий (микросервис 2)

Хранение результатов событий (микросервис 3)

Результатом событийной модели являются тексты, выраженные в форме специального чата (последовательность сообщений важна) или пост/посты в telegra.ph

Техническое (сопровождение)

Запуск

Кроме выполнения кода бота, для работы Dialog требуется запуск telegram-cli.

Упаковка Dialog

  • docker-контейнер (alpine, opensuse)
  • systemd-сервис/bash wrapper для dev-версии

Выбор технических решений

Языки программирования

ruby-sugar

  • ruby (текущий код как "смотри, что можно делать...")
  • elixir (production-код)

go-sugar

  • Go

Хранение данных

Сессионное

  • lmdb
  • badger (dgraph-io)
  • ets (erlang internals)
  • Redis

Долговременное (text)

  • elastic

Шины данных

Распознавание (*-to-text)

Изображения

  • tesseract

Голос

  • Yandex SpeechKit Cloud
  • Google Cloud Speech API v2
  • Wit.ai

Видео

  • ?

Links


Технические заметки

ToDo (текущая версия, чистый Ruby)

  • реализовать "пропуск" парсинга проблемного сообщения
  • def create_chat -> продумать варианты создания с точки зрения модели привилегий пользователя
  • action.rb - research-секция