dialogic
dialogic copied to clipboard
Yet another common Python wrapper for Alice and Salut skills and bots in Telegram, VK, and Facebook
dialogic
Это очередная обёртка на 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.