avidale / dialogic

Yet another common Python wrapper for Alice and Salut skills and bots in Telegram, VK, and Facebook

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.

About

Yet another common Python wrapper for Alice and Salut skills and bots in Telegram, VK, and Facebook

License:GNU General Public License v3.0


Languages

Language:Python 100.0%