Функциональные возможности официального аккаунта включают предоставление пользователям возможности бесплатного использования, функции обратной связи, функции перевода документов, функции распознавания и перевода текста на изображениях, функции перевода реального изображения.
В настоящее время официальный аккаунт "Распознавание и перевод текста на изображениях" + "Распознавание и перевод текста на изображениях OCR" предоставляет услуги более чем 10 000 пользователям.
Проект был создан с нуля до единицы, начиная с идеи, используемых технологических стеков, создания проекта и написания кода.
Перед созданием проекта, используя систему Mac недавно, я обнаружил, что нет подходящего плагина или программы для перевода. Поскольку при использовании компьютера WeChat обычно запущен, можно использовать встроенные функции перевода в официальном аккаунте WeChat для перевода нужного контента. Однако большинство аккаунтов требуют оплаты или просмотра видео для получения возможности перевода после определенного количества использований. Поэтому было решено использовать WeChat Official Account или тестовый аккаунт WeChat API для создания аккаунта, который будет использовать собственные функции и интегрированные API для перевода.### 1.3 Решение поддерживать проект
В один из дней, просмотрев официальный аккаунт, я обнаружил, что аккаунт, созданный для личного использования, уже имеет десятки подписчиков, которые используют его некоторое время. Имея подписчиков, появляется мотивация, поэтому было решено поддерживать аккаунт и продолжать его развитие.### 1.4 Встреченные проблемы
Проблемы с реакцией на сообщения от подписчиков
Frontend: html + jquery + bootstrap
Изменений по тексту нет, так как он уже на русском языке и корректен с точки зрения грамматики и стиля.### 19 марта 2022 года
Проект переработан и прекращены обновления
Изменения
- Функция поддержки распространения: после подписки пользователя или после каждого ответа, будет отправлено сообщение с ссылкой для получения постоянного доступа. При переходе по ссылке пользователь получает промо-код, который содержит уникальный идентификатор пользователя. После подписки других пользователей по промо-коду, система получает идентификатор пользователя и выполняет дальнейшие действия. Если три или более пользователей успешно подписались по промо-коду, пользователь получает постоянный доступ к каналу.
Ограничения: если пользователь не является одним из первых 100 тестовых пользователей или не получил постоянный доступ через промо-код, он может использовать сервис только 5 раз в день.
Решения
com.jeffrey.manager.user
.com.jeffrey.menu
.Проблемы
Решение
Проблемы
Проблемы
WeChatServiceImpl
Решение
com.jeffrey.translate
, добавлены классы GetTranslateMetaData
и другие. Вызов метода getData()
класса GetTranslateMetaData
возвращает объект Translate
, который содержит информацию ответа. Через этот объект можно легко получить данные ответа.
Translate
: содержит все данные ответа.
SegmentedData
: фрагменты данных ответа, такие как координаты, оригинальный текст, переведенный текст и т.д.
DataPoints
: данные координат.FrequencyQueue
, который добавляет IP или openid
в BLACK_MAP
, если частота запросов достигает критического значения. В BLACK_MAP
ключом является IP или openid
, а значением — текущее время.BlackMapQueue
, который отслеживает пользователей с частыми запросами. Если значение ключа в BLACK_MAP
достигает времени, когда ограничение на доступ снимается, этот ключ удаляется из BLACK_MAP
.ListenRequestFrequency
, который используется для отслеживания частоты запросов с использованием openid
, если он присутствует в запросе. Если openid
отсутствует, используется IP-адрес запроса для отслеживания частоты запросов. - Добавлен фильтр RequestFilter, который используется для определения, пришел ли запрос из WeChat или из браузера. Если запрос пришел из WeChat и находится в списке часто посещаемых, вызывается слой service для парсинга xml и создания нового объекта сообщения. Если запрос пришел из браузера, сначала проверяется наличие openid. Если openid присутствует и находится в списке часто посещаемых, возвращается ответ. Если openid отсутствует, проверяется наличие IP-адреса в списке часто посещаемых. Если IP-адрес присутствует, возвращается ответ. В других случаях запрос проходит.Проблемы
Решение
Проблемы
Решение
ALTER TABLE feedback DROP INDEX details;
```- Изменения
- В параметрах choose.jsp, feedback.jsp и QuestionServlet заменено значение `data_id` на `openid`.
- Удалены ненужные jar-файлы.
Добавлено
Проблемы
saveFeedBackText()
класса QuestionServiceDaoImpl
не было предусмотрено возвращение соединения с базой данных при возникновении исключения, что приводило к исчерпанию соединений в пуле после gst 10 ошибок, что приводило к неудачному ответу сервера.Решение
finally
добавлено возвращение соединения с базой данных, а также добавлена проверка существования пользователя перед вставкой данных, чтобы избежать ошибок.@Override
public boolean saveFeedBackText(FeedBack feedBack) {
String sql = "insert into feedback (data_id, title, message, way, details, is_beta_user, ctime) VALUE(?,?,?,?,?,?,?)";
Connection connection = null;
try {
String dateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(feedBack.getTimeStamp()));
connection = JdbcUtils.getConnection();
return update(connection, sql, feedBack.getData_id(), feedBack.getTitle(), feedBack.getMessage(), feedBack.getWay(),
feedBack.getDetails(), betaUserServiceDao.isExists(feedBack.getData_id(), feedBack.getTable()) ? 1 : 0, dateTime) >= 1;
} finally {
JdbcUtils.close(connection);
}
}
Добавлены параметры перевода API
OPTIONS.put("language_type", "CHN_ENG");
OPTIONS.put("detect_direction", "true");
OPTIONS.put("detect_language", "true");
OPTIONS.put("probability", "true");
```- Переработана страница, когда документ не найден
DATA_MAP
. Фактически, объект документа хранится в области ServletContext
, что приводит к замедлению или даже отказу сервера при накоплении большого количества объектов документов.При уничтожении документа по ключу времени создания в DATA_MAP
также удалять соответствующий объект документа из ServletContext
.
В классе DocumentQueue
добавлен конструктор для передачи ServletContext
.
private ServletContext servletContext;
public DocumentQueue(ServletContext servletContext){
this.servletContext = servletContext;
}
Отменить создание и запуск потока DocumentQueue
в слушателе ListenServletContextStatus
, так как это может вызвать исключение NullPointerException
.
Создать и запустить поток DocumentQueue
в методе init(ServletConfig servletConfig)
класса WeChatAccessServlet
.
Подписка: после подписки должна быть нормальная реакция, включая возврат ссылки и правильность возврата информации о подписчике. Также следует проверить, добавлен ли пользователь в базу данных.
Отписка: после отписки следует проверить, удалена ли информация о пользователе из базы данных, включая таблицы beta_users
, users
и share
. Информация в других таблицах не должна удаляться.### ② Проверка отправки текстового сообщения
При отправке пользователем текстового сообщения должна быть нормальная реакция, включая реакцию на ключевые слова и возврат уведомлений.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )