Skip to content

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

License

Notifications You must be signed in to change notification settings

avidale/dialogic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages