GitXplorerGitXplorer
a

dialogic

public
26 stars
7 forks
0 issues

Commits

List of commits on branch master.
Verified
c5b0da161da5138ce0bea157a98421b148406970

Update README.md

aavidale committed 2 years ago
Unverified
08725ed936eb80a21b458bd94d419c37e5fa537e

add a neural example: add dialogic to requirements.txt

aavidale committed 3 years ago
Unverified
cba3a15fa374e92eb6fe5f3182d56cca6f167fa6

add a neural example: empty response handler

aavidale committed 3 years ago
Unverified
7669ba9e4a14d28bdf4d4963953d1d291c3fa80a

add a neural example

aavidale committed 3 years ago
Unverified
bafb1aa55d306b50af3bca2d55d98be8a77b0dd8

up version

aavidale committed 3 years ago
Unverified
c4f22934b64d5e91185a8094e1ae88f1e85b5770

add utils for working with Google sheets

aavidale committed 3 years ago

README

The README file for this repository.

dialogic

PyPI version

readme in english

Это очередная обёртка на Python для навыков Алисы и Салюта (Сбер) и ботов в Telegram *, VK, и Facebook.

Она позволяет как быстро писать прототипы ботов для разных платформ, так и масштабировать их, когда кода и сценариев становится много.

Ранее пакет был известен как tgalice.

Установка пакета: pip install dialogic

Пример кода

Ниже описан бот, который на приветствие отвечает приветствием, а на все остальные фразы - заглушкой по умолчанию.

from dialogic.dialog_connector import DialogConnector
from dialogic.dialog_manager import TurnDialogManager
from dialogic.server.flask_server import FlaskServer
from dialogic.cascade import DialogTurn, Cascade

csc = Cascade()


@csc.add_handler(priority=10, regexp='(hello|hi|привет|здравствуй)')
def hello(turn: DialogTurn):
    turn.response_text = 'Привет! Это единственная условная ветка диалога.'


@csc.add_handler(priority=1)
def fallback(turn: DialogTurn):
    turn.response_text = 'Я вас не понял. Скажите мне "Привет"!'
    turn.suggests.append('привет')


dm = TurnDialogManager(cascade=csc)
connector = DialogConnector(dialog_manager=dm)
server = FlaskServer(connector=connector)

if __name__ == '__main__':
    server.parse_args_and_run()

Чтобы запустить приложение как веб-сервис, достаточно запустить данный скрипт.

Если приложение доступно по адресу {BASE_URL}, то вебхуки для Алисы, Салюта и Facebook будут доступны, соотвественно, на {BASE_URL}/alice/, {BASE_URL}/salut/, and {BASE_URL}/fb/ (при желании, адреса можно изменить). Вебхук для бота в Telegram будет установлен автоматически, если выставить в переменную окружения TOKEN значение, полученное от @BotFather.

Чтобы протестировать приложение локально, можно вызвать его с аргументами:

  • --cli - диалог с ботом в командной строке, полностью онлайн
  • --poll - запуск бота в Telegram в режиме long polling
  • --ngrok - локальный запуск с использованием ngrok **, чтобы создать туннель из вашего компьютера во внешний Интернет. Удобный способ тестировать навыки Алисы.

Приложение запускается на порте, взятом из переменной окружения PORT (по умолчанию 5000). Для правильной работы с вебхуками нужно будет также выставить переменную окружения BASE_URL, описывающую префикс урла, на который будут приходить запросы (например https://myapp.herokuapp.com/).

Чтобы протестировать работу API для Алисы, не подключая навык, можно сделать такой POST-запрос с помощью CURL:

curl http://localhost:5000/alice/ -X POST -H "Content-Type: application/json" -d '{"session": {"user_id":"123"}, "request": {"command": "hi"}, "version":"1.0"}'

на Windows при этом придется заэскейпить кавычки (ибо там работают только двойные), примерно так:

curl http://localhost:5000/alice/ -X POST -H "Content-Type: application/json" -d "{\"session\": {\"user_id\":\"123\"}, \"request\": {\"command\": \"hi\"}, \"version\":\"1.0\"}"

Подробнее про формат запроса для Алисы можно почитать в её документации.

Больше возможностей

  • Использование встроенных классификаторов интентов или сторонних средств NLU, включая грамматики от Яндекса или любые доступные в Python модели.
  • Подключение собственных поверхностей или настройка имеющихся.
  • Логирование запросов и ответов для последующей аналитики.

Библиотека возможностей регулярно пополняется.

Ресурсы и поддержка

В папе examples собраны примеры использования компонент и запуска ботов.

Вопросы можно задать в чате Dialogic.Digital support (Telegram).

* Обёртка для Telegram использует пакет pyTelegramBotAPI.

** Обёртка для ngrok была взята из пакета flask-ngrok.