In deze stappen kunnen we onze groep wijzigen als openbaar of privé, terwijl we de groepsnaam moeten wijzigen, dit wordt beschouwd als chat_id bij de rest API-aanroep. Voor mijn groep houd ik het als een openbare groep, je kunt ook privé geven. Mijn groepsnaam is MinoTest1 (Chat_id). Hetzelfde zal ook in Channel worden toegepast.
Voor zover we het configuratiegedeelte hebben gedaan. Bovendien moeten we een aangepaste API maken om te gebruiken in onze springboot-applicatie. Maar voor nu kunnen we het bericht zien verzenden met onze browser of postbode. Ik zal het je laten zien in de postbode.
Postbode-demo 1
In dit verzoek moet u uw token toevoegen dat volgt van bot
Gebruik deze krul (token, chat_id aangepast)
curl --location --request POST 'https://api.telegram.org/bot5532040960:AAEs1234AAl8T45Nm1234i59NwwEy6V-viM/[e-mail beveiligd]&text=testbericht' --form '[e-mail beveiligd]"/home/mino/Afbeeldingen/Screenshot van 2022-06-10 17-53-58.png"'
Aangepaste Spring-boot-API
Deze stap is optioneel, maar als we berichten naar meerdere groepen of kanalen moeten sturen, is het handig. Kan deze configuratie dus weglaten.
Maak zoals gewoonlijk uw spring-boot-project. Maak vervolgens TelegramController, TelegramService en TelegramClient aan. Ik stopte met de uitleg van de Spring-boot-applicatie. Ik zal alleen de belangrijke codes delen. De verstrekte inloggegevens zijn gewijzigd.
Telegram-controller
pakket com.sample.telegramservice.controller; importeer com.sample.telegramservice.service.TelegramService; import org.springframework.beans.factory.annotation.Autowired; importeer org.springframework.web.bind.annotation.*; org.springframework.web.multipart.MultipartFile importeren; @RestController @RequestMapping("/telegram") openbare klasse TelegramController { @Autowired TelegramService telegramService; @PostMapping("/sendPhoto") public void sendPhotoToTelegramGroup(String caption, String photo) gooit Exception {telegramService.sendPhotoToTelegramGroup(caption, photo); } @PostMapping("/sendPhoto/file") public void sendPhotoFileToTelegramGroup(@RequestParam("caption") String caption, @RequestPart("photo") MultipartFile photo) gooit Exception { telegramService.sendPhotoFileToTelegramGroup(caption, photo); } @PostMapping("/sendMessage") public void sendMessageToTelegramGroup(@RequestParam("message") String message) gooit Exception { telegramService.sendMessageToTelegramGroup(message); } }
Telegram-service
pakket com.voorbeeld.telegramservice.service; importeer com.sample.telegramservice.client.TelegramClient; import org.springframework.beans.factory.annotation.Autowired; importeer org.springframework.stereotype.Service; org.springframework.web.multipart.MultipartFile importeren; java.util.ArrayList importeren; java.util.Lijst importeren; @Service openbare klasse TelegramService { @Autowired TelegramClient telegramClient; public void sendPhotoToTelegramGroup(String caption, String photo) gooit Exception { List chatIdList = new ArrayList(); chatIdList.add("@MinoTest1"); chatIdList.add("@minoTestChannel"); for(String chatId: chatIdList){ telegramClient.sendPhoto(chatId,caption, photo); } } public void sendPhotoFileToTelegramGroup(String caption, MultipartFile photo) throws Exception { List chatIdList = new ArrayList(); chatIdList.add("@MinoTest1"); chatIdList.add("@minoTestChannel"); for(String chatId: chatIdList){ telegramClient.sendPhotoFile(chatId,caption, photo); } } public void sendMessageToTelegramGroup(String message) throws Exception { List chatIdList = new ArrayList(); chatIdList.add("@MinoTest1"); chatIdList.add("@minoTestChannel"); for(String chatId: chatIdList){ telegramClient.sendMessage(bericht, chatId); } } }
TelegramClient
pakket com.voorbeeld.telegramservice.client; org.slf4j.Logger importeren; org.slf4j.LoggerFactory importeren; import org.springframework.beans.factory.annotation.Autowired; org.springframework.core.io.ByteArrayResource importeren; org.springframework.http.* importeren; importeer org.springframework.stereotype.Service; org.springframework.util.LinkedMultiValueMap importeren; org.springframework.util.MultiValueMap importeren; org.springframework.web.client.HttpClientErrorException importeren; org.springframework.web.client.HttpServerErrorException importeren; org.springframework.web.client.RestTemplate importeren; org.springframework.web.multipart.MultipartFile importeren; org.springframework.web.util.UriComponentsBuilder importeren; @Service openbare klasse TelegramClient {private String-token = "5123456960:AAEs0C6f12345ABcdeFSCki52Mwery6V-viM"; private String telegramBaseUrl = "https://api.telegram.org/bot"; private String apiUrl = telegramBaseUrl+token; privé finale RestTemplate restTemplate; privé statische laatste logger houthakker = Loggerfabriek.haalLogger(GoogleRecaptchaClient.class); @Autowired openbare TelegramClient(RestTemplate restTemplate) { this.restTemplate = restTemplate; } public void sendMessage(String message, String chatID) gooit Exception { probeer { RestTemplate restTemplate = new RestTemplate(); UriComponentsBuilder-bouwer = UriComponentsBuilder.vanHttpUrl(apiUrl+"/sendMessage") .queryParam("chat_id", chatID) .queryParam("tekst", bericht); ResponseEntity exchange = restTemplate.exchange(builder.toUriString().replaceAll("%20", " "), HttpMethod.GET, null, String.klasse); } vangen (HttpClientErrorException | HttpServerErrorException e) { houthakker.error("Foutreactie: Staatscode: {}, reactie: {} ", e.getStatusCode(), e.getResponseBodyAsString()); gooi e; } vangst (uitzonderingsfout) { houthakker.fout("Fout: {} ", fout.getMessage()); throw new Exception ("Deze service is momenteel niet beschikbaar!"); } } public void sendPhotoFile(String chatID, String caption, MultipartFile photo) gooit Exception { try { RestTemplate restTemplate = new RestTemplate(); HttpHeaders-headers = nieuwe HttpHeaders(); headers.setContentType(MediaType.MULTIPART_FORM_DATA); MultiValueMap body = nieuwe LinkedMultiValueMap(); ByteArrayResource fileAsResource = new ByteArrayResource(photo.getBytes()){ @Override public String getFilename(){ return photo.getOriginalFilename(); } }; body.add("Inhoudstype", "image/png"); body.add("foto", fileAsResource); HttpEntiteit requestEntity = nieuwe HttpEntity(body, headers); UriComponentsBuilder-bouwer = UriComponentsBuilder.vanHttpUrl(apiUrl+"/sendPhoto") .queryParam("chat_id", chatID) .queryParam("onderschrift", onderschrift); Systeem.uit.println(verzoekEntiteit); String exchange = restTemplate.postForObject(builder.toUriString().replaceAll("%20", " "), requestEntity, String.class); } vangen (HttpClientErrorException | HttpServerErrorException e) { houthakker.error("Foutreactie: Staatscode: {}, reactie: {} ", e.getStatusCode(), e.getResponseBodyAsString()); gooi e; } vangst (uitzonderingsfout) { houthakker.fout("Fout: {} ", fout.getMessage()); throw new Exception ("Deze service is momenteel niet beschikbaar!"); } } public void sendPhoto(String chatID, String caption, String photo) gooit Exception { probeer { RestTemplate restTemplate = new RestTemplate(); UriComponentsBuilder-bouwer = UriComponentsBuilder.vanHttpUrl(apiUrl+"/sendPhoto") .queryParam("chat_id", chatID) .queryParam("foto", foto) .queryParam("bijschrift", bijschrift); String exchange = restTemplate.postForObject(builder.toUriString().replaceAll("%20", " "), null, String.class); } vangen (HttpClientErrorException | HttpServerErrorException e) { houthakker.error("Foutreactie: Staatscode: {}, reactie: {} ", e.getStatusCode(), e.getResponseBodyAsString()); gooi e; } vangst (uitzonderingsfout) { houthakker.fout("Fout: {} ", fout.getMessage()); throw new Exception ("Deze service is momenteel niet beschikbaar!"); } } }