JFinal Weixin — это библиотека для быстрого развития приложений с использованием JFinal, основанная на WeChat. Для начала работы достаточно просмотреть примеры в демонстрационной части. Поддержка нескольких аккаунтов была добавлена начиная с версии 1.2.
Документация: https://gitee.com/jfinal/jfinal-weixin/wikis
<dependency>
<groupId>com.jfinal</groupId>
<artifactId>jfinal-weixin</artifactId>
<version>3.4</version>
</dependency>
Подробнее здесь
: Конфигурация WeixinConfig в JFinal weixin
public class WeixinMsgController extends MsgController {
protected void processInTextMsg(InTextMsg inTextMsg) {
String msgContent = inTextMsg.getContent().trim();
// Помощь
if ("help".equalsIgnoreCase(msgContent)) {
OutTextMsg outMsg = new OutTextMsg(inTextMsg);
outMsg.setContent(helpStr);
render(outMsg);
}
// Тест сообщения с картинками
else if ("news".equalsIgnoreCase(msgContent)) {
OutNewsMsg outMsg = new OutNewsMsg(inTextMsg);
outMsg.addNews("Заголовок", "Описание", "Ссылка на изображение", "Ссылка");
render(outMsg);
}
// Тест музыкального сообщения
else if ("music".equalsIgnoreCase(msgContent)) {
OutMusicMsg outMsg = new OutMusicMsg(inTextMsg);
outMsg.setTitle("Day By Day");
outMsg.setDescription("Рекомендовано прослушивание в условиях Wi-Fi");
outMsg.setMusicUrl("https://jfinal.com/DayByDay-T-ara.mp3");
outMsg.setHqMusicUrl("https://jfinal.com/DayByDay-T-ara.mp3");
outMsg.setFuncFlag(true);
render(outMsg);
} else if ("美女".equalsIgnoreCase(msgContent)) {
OutNewsMsg outMsg = new OutNewsMsg(inTextMsg);
outMsg.addNews("秀色可餐", "JFinal Weixin Быстрое развитие так удобно, есть ли?", "http://mmbiz.qpic.cn/mmbiz/zz3Q6WSrzq2GJLC60ECD7rE7n1cvKWRNFvOyib4KGdic3N5APUWf4ia3LLPxJrtyIYRx93aPNkDtib3ADvdaBXmZJg/0", "http://mp.weixin.qq.com/s?__biz=MjM5ODAwOTU3Mg==&mid=200987822&idx=1&sn=7eb2918275fb0fa7b520768854fb7b80#rd");
render(outMsg);
}
// Возврат других текстовых сообщений с помощью помощи
else {
OutTextMsg outMsg = new OutTextMsg(inTextMsg);
outMsg.setContent("\tТекстовое сообщение успешно получено, содержание: " + inTextMsg.getContent() + "\n\n" + helpStr);
render(outMsg);
}
}
protected void processInImageMsg(InImageMsg inImageMsg) {
OutImageMsg outMsg = new OutImageMsg(inImageMsg);
// Возвращаем полученное изображение обратно
outMsg.setMediaId(inImageMsg.getMediaId());
render(outMsg);
}
protected void processInVoiceMsg(InVoiceMsg inVoiceMsg) {
OutVoiceMsg outMsg = new OutVoiceMsg(inVoiceMsg);
// Возвращаем полученное голосовое сообщение обратно
outMsg.setMediaId(inVoiceMsg.getMediaId());
render(outMsg);
}
protected void processInVideoMsg(InVideoMsg inVideoMsg) {
/* Tencent API имеет ошибку, поэтому невозможно отправить видео сообщение. Временно используем текстовое сообщение для тестирования
OutVideoMsg outMsg = new OutVideoMsg(inVideoMsg);
outMsg.setTitle("Отправка OutVideoMsg");
outMsg.setDescription("Полученное видео отправлено обратно");
// Отправляем полученное видео обратно, но проверка показывает, что проблема в официальном API Tencent
outMsg.setMediaId(inVideoMsg.getMediaId());
render(outMsg);
*/
OutTextMsg outMsg = new OutTextMsg(inVideoMsg);
outMsg.setContent("\tВидео сообщение успешно получено, mediaId этого видео: " + inVideoMsg.getMediaId());
render(outMsg);
}
protected void processInLocationMsg(InLocationMsg inLocationMsg) {
OutTextMsg outMsg = new OutTextMsg(inLocationMsg);
outMsg.setContent("Получено геолокационное сообщение:"
+ "\nlocation_X = " + inLocationMsg.getLocation_X()
+ "\nlocation_Y = " + inLocationMsg.getLocation_Y()
+ "\nscale = " + inLocationMsg.getScale()
+ "\nlabel = " + inLocationMsg.getLabel());
render(outMsg);
}
protected void processInLinkMsg(InLinkMsg inLinkMsg) {
OutNewsMsg outMsg = new OutNewsMsg(inLinkMsg);
outMsg.addNews("Ссылочное сообщение успешно получено", "Ссылка отправлена вам в виде новостей, также можно использовать текстовый способ отправки.", "http://mmbiz.qpic.cn/mmbiz/zz3Q6WSrzq1ibBkhSA1BibMuMxLuHIvUfiaGsK7CC4kIzeh178IYSHbYQ5eg9tVxgEcbegAu22Qhwgl5IhZFWWXUw/0", inLinkMsg.getUrl());
render(outMsg);
}
protected void processInFollowEvent(InFollowEvent inFollowEvent) {
OutTextMsg outMsg = new OutTextMsg(inFollowEvent);
outMsg.setContent("Благодарю за подписку на JFinal Weixin Быстрое развитие, которое экономит ваше время." + helpStr);
// Если событие отмены подписки, то информация не будет передана обратно
render(outMsg);
}
protected void processInQrCodeEvent(InQrCodeEvent inQrCodeEvent) {
OutTextMsg outMsg = new OutTextMsg(inQrCodeEvent);
outMsg.setContent("Метод processInQrCodeEvent() успешно протестирован");
render(outMsg);
}
protected void processInLocationEvent(InLocationEvent inLocationEvent) {
OutTextMsg outMsg = new OutTextMsg(inLocationEvent);
outMsg.setContent("Метод processInLocationEvent() успешно протестирован");
render(outMsg);
}
protected void processInMenuEvent(InMenuEvent inMenuEvent) {
OutTextMsg outMsg = new OutTextMsg(inMenuEvent);
outMsg.setContent("Метод processInMenuEvent() успешно протестирован");
render(outMsg);
}
protected void processInSpeechRecognitionResults(InSpeechRecognitionResults inSpeechRecognitionResults) {
OutTextMsg outMsg = new OutTextMsg(inSpeechRecognitionResults);
outMsg.setContent("Метод processInSpeechRecognitionResults() успешно протестирован");
render(outMsg);
}
}
DemoController наследует методы WeixinController для удобства получения и отправки сообщений
public class WeixinApiController extends ApiController {
public void index() {
render("/api/index.html");
}
/**
* Получение меню публичного аккаунта
*/
public void getMenu() {
ApiResult apiResult = MenuApi.getMenu();
if (apiResult.isSucceeded()) {
renderText(apiResult.getJson());
} else {
renderText(apiResult.getErrorMsg());
}
}
/**
* Получение подписчиков публичного аккаунта
*/
public void getFollowers() {
ApiResult apiResult = UserApi.getFollows();
renderText(apiResult.getJson());
}
}
Используя методы таких как MenuApi и UserApi, вы можете получить данные, упакованные в объект ApiResult, который затем может быть быстро выведен с помощью методов render
<packaging>war</packaging>
в pom.xml
Подробнее здесь
: JFinal weixin Jar зависимости
WIKI: http://git.oschina.net/jfinal/jfinal-weixin/wikis/home
Приветствуем новых участников!
В процессе разработки важно иметь канал связи между локальной машиной разработчика и платформой WeChat для эффективного отладки. Без такого канала каждый новый функционал придется разворачивать на общедоступном сервере для тестирования.
Настройка среды разработки и отладки подробно описана в моем блоге: Перейти Также доступна в документации jfinal-weixin: Перейти
Кроме того: если ваша машина разработки использует Linux или MacOS, вы можете создать обратный туннель с помощью следующей команды SSH: ssh -R <remote_host_ip>:<port>:localhost:<local_port> root@<remote_host_ip>
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )