Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/avidale/dialogic
Yet another common Python wrapper for Alice and Salut skills and bots in Telegram, VK, and Facebook
https://github.com/avidale/dialogic
Last synced: 3 months ago
JSON representation
Yet another common Python wrapper for Alice and Salut skills and bots in Telegram, VK, and Facebook
- Host: GitHub
- URL: https://github.com/avidale/dialogic
- Owner: avidale
- License: gpl-3.0
- Created: 2021-03-03T22:15:33.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2023-03-16T14:13:11.000Z (over 1 year ago)
- Last Synced: 2024-07-13T09:45:22.620Z (4 months ago)
- Language: Python
- Size: 301 KB
- Stars: 25
- Watchers: 2
- Forks: 6
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-alice - avidale/dialogic - Общая обёртка для навыков в Алисе и Салюте, ботов в Telegram, ВК и Facebook на Python 3.6+ (Разработка / SDK)
README
# dialogic
[![PyPI version](https://badge.fury.io/py/dialogic.svg)](https://badge.fury.io/py/dialogic)[readme in english](https://github.com/avidale/dialogic/blob/master/README_en.md)
Это очередная обёртка на Python для навыков
[Алисы](https://yandex.ru/dev/dialogs/alice/doc/about.html) и
[Салюта](https://salute.sber.ru/smartmarket/dev/) (Сбер) и ботов
в Telegram [*](#footnote1), VK, и Facebook.Она позволяет как быстро писать прототипы ботов для разных платформ,
так и масштабировать их, когда кода и сценариев становится много.Ранее пакет был известен как [tgalice](https://github.com/avidale/tgalice).
Установка [пакета](https://pypi.org/project/dialogic/): `pip install dialogic`
## Пример кода
Ниже описан бот, который на приветствие отвечает приветствием,
а на все остальные фразы - заглушкой по умолчанию.```python
from dialogic.dialog_connector import DialogConnector
from dialogic.dialog_manager import TurnDialogManager
from dialogic.server.flask_server import FlaskServer
from dialogic.cascade import DialogTurn, Cascadecsc = 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](https://t.me/BotFather).Чтобы протестировать приложение локально, можно вызвать его с аргументами:
* `--cli` - диалог с ботом в командной строке, полностью онлайн
* `--poll` - запуск бота в Telegram в режиме long polling
* `--ngrok` - локальный запуск с использованием
[ngrok](https://ngrok.com/) [**](#footnote2),
чтобы создать туннель из вашего компьютера во внешний Интернет.
Удобный способ тестировать навыки Алисы.
Приложение запускается на порте, взятом из переменной окружения `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 при этом придется заэскейпить кавычки (ибо там работают [только двойные](https://mkyong.com/web/curl-post-json-data-on-windows/)), примерно так:
```
curl http://localhost:5000/alice/ -X POST -H "Content-Type: application/json" -d "{\"session\": {\"user_id\":\"123\"}, \"request\": {\"command\": \"hi\"}, \"version\":\"1.0\"}"
```
Подробнее про формат запроса для Алисы можно почитать [в её документации](https://yandex.ru/dev/dialogs/alice/doc/request.html).
## Больше возможностей- Использование встроенных классификаторов интентов или сторонних средств NLU,
включая грамматики от Яндекса или любые доступные в Python модели.
- Подключение собственных поверхностей или настройка имеющихся.
- Логирование запросов и ответов для последующей аналитики.Библиотека возможностей регулярно пополняется.
## Ресурсы и поддержка
В папе [examples](https://github.com/avidale/dialogic/tree/master/examples)
собраны примеры использования компонент и запуска ботов.Вопросы можно задать в чате
[Dialogic.Digital support](https://t.me/joinchat/WOb48KC6I192zKZu) (Telegram).* Обёртка для Telegram использует пакет
[pyTelegramBotAPI](https://github.com/eternnoir/pyTelegramBotAPI).** Обёртка для ngrok была взята из пакета
[flask-ngrok](https://github.com/gstaff/flask-ngrok).