Поскольку Smart QQ с 1 января 2019 года прекратил обслуживание, этот проект также больше не поддерживается!
Введение
XiaoV (小薇) — это Java-программа для создания чат-бота, который может использоваться для взаимодействия в социальных сетях:
- Слушает сообщения из нескольких групп QQ и, если находит «интересное» содержание, отвечает с помощью искусственного интеллекта от Turing, Baidu или Molly;
- Может быть настроен на отправку сообщений из QQ-групп на другие интерфейсы;
- Другие системы могут вызывать XiaoV для отправки сообщений в QQ, например, когда на форуме появляется новая тема, она автоматически отправляется в QQ;
- После добавления XiaoV в друзья можно использовать секретный код (key), чтобы она отправляла сообщения в группу.
В общем, если вам нужен бот, который связывает группы QQ с другими системами, XiaoV — хороший выбор!
Запуск
- Установите JDK 1.8 и Maven 3.
- Клонируйте этот проект и выполните
mvn install
в корневом каталоге проекта.
- Выполните
mvn jetty:run
.
После этого XiaoV запустится, и вы сможете войти, следуя инструкциям на экране.
Кроме того, если вы хотите запустить XiaoV на сервере (но мы не рекомендуем это делать, см. FAQ пункт 2):
- Создайте war-файл и разверните его на своём контейнере, изменив latke.props так, чтобы
serverHost
был вашим публичным IP-адресом, а serverPort
— портом, на котором слушает ваш контейнер. Если вы используете обратный прокси, то serverHost
, вероятно, будет вашим доменным именем, а serverPort
будет равен 80. Короче говоря, эти два значения будут теми же, что и при окончательном доступе к интерфейсу.
- Используйте /login для доступа к QR-коду.
Конфигурация
Конфигурационный файл находится в src/main/resources/xiaov.properties:
- turing.api & turing.key определяют API-адрес и пароль для искусственного интеллекта Turing;
- baidu.cookie определяет cookie, необходимый для доступа к Baidu AI (необходимо авторизоваться на Baidu, затем перехватить запрос);
- qq.bot.type определяет тип искусственного интеллекта, 1 — Turing, 2 — Baidu;
- qq.bot.name определяет имя искусственного интеллекта. Оно используется для определения того, является ли сообщение из группы «интересным», например, для сообщения «XiaoV, ты ела?» с именем искусственного интеллекта XiaoV, искусственный интеллект обработает его;
- qq.bot.key определяет пароль для управления сообщениями, которые отправляются в группы или из других систем. Сообщение должно начинаться с этого пароля, после чего оно будет отправлено в группу;
- qq.bot.pushGroups определяет группы, в которые будут отправляться сообщения. Можно разделить несколько групп с помощью
,
; также можно установить *
для отправки во все группы;
- qq.bot.pushGroupUserCnt определяет минимальное количество людей в группе, которое необходимо для отправки сообщения;
- bot.follow.keywords определяет ключевые слова, которые будут отслеживаться при получении сообщений из группы. При обнаружении этих слов искусственный интеллект будет обрабатывать их, например, для сообщения «Как можно освоить Java за 3 дня?» с ключевым словом Java, искусственный интеллект обработает его;
- bot.follow.keywordAnswer определяет шаблон ответа на сообщения из группы после обнаружения ключевых слов;
- third.api & third.key определяют адрес API и пароль для других систем, которым XiaoV будет отправлять сообщения;
FAQ
Как правильно использовать XiaoV QQ Chatbot?
См. статью на форуме по ссылке.
Почему было решено создать отдельный веб-сервис, а не просто зависимость jar?
Создание зависимости jar было бы более удобным для разработки, но есть серьёзная проблема: приложение обычно развёртывается в облаке, а вход с использованием QR-кода происходит локально, что может привести к проблеме с аутентификацией в разных местах и другим проблемам.
Поэтому XiaoV должен быть развёрнут локально, чтобы гарантировать, что после запуска XiaoV и мобильного приложения аутентификация QQ будет успешной. Однако это также требует решения проблемы обеспечения возможности «проникновения через внутренний сетевой барьер», например, с помощью ngrok. Подробнее см. здесь.
Почему возникает ошибка «Отправка не удалась, Api вернул код [1202]»?
Эта проблема связана с тем, как QQ сервер обрабатывает сообщения и возвращает код ошибки. Подробнее см. в issue.
Что делать с ошибкой «Api вернул код [103]»?
Сначала остановите XiaoV, войдите на w.qq.com, затем выйдите из системы в настройках и снова запустите XiaoV. После этого вы должны получить код 103.
Почему появляется ошибка «Group list error [groupId=xxxx], пожалуйста, сообщите об этой ошибке разработчику...»?
Следуйте тем же шагам, что и для ошибки 103.
Почему в журнале появляются искажённые символы?
Это связано с кодировкой консоли. Вы можете добавить log4j.appender.stdout.Encoding=UTF-8 в файл src/main/resources/log4j.properties, чтобы решить эту проблему.
Куда сообщать об ошибках?
API
Отправка сообщений из других систем в QQ группы
- Функция: XiaoV предоставляет HTTP-интерфейс для вызова другими системами для отправки сообщений из этих систем в QQ группы.
- URL: /qq
- Method: POST
- Body: key={qq.bot.key}&msg={msgcontent}
- Пример: /qq?key=123456&msg=Hello
Отправка сообщений из QQ групп в другие системы
- Функция: другие системы предоставляют HTTP-интерфейсы для вызова XiaoV для отправки сообщений из групп QQ в эти системы (эта функция должна быть реализована в системе, здесь приводится только способ вызова и параметры XiaoV).
- URL: {third.api}
- Method: POST
- Body: key={third.key}&msg={msgcontent}&user={hexuserid}
- Пример: /xiaov?key=123456&msg=Hello&user=0a
Благодарности
XiaoV появился благодаря следующим открытым проектам/продуктам:
-
Smart QQ Java — оболочка для API SmartQQ (WebQQ), которая реализует связь с QQ;
-
Turing AI — предоставляет XiaoV интеллектуальные возможности;
-
Baidu AI — ещё раз предоставляет XiaoV интеллектуальные возможности;
-
Molly AI — ещё раз предоставляет XiaoV интеллектуальные возможности (говорят, что он очень грязный
);
-
Latke — лаконичный и эффективный Java Web framework.
Комментарии ( 0 )