Это очередная обёртка на 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.