DingTalk 로봇 메시지 푸시를 위한 샘플 코드를 구현하기 위해 Java를 배우십시오.
먼저 DingTalk 그룹을 만들고 로봇을 추가하세요
이때 로봇 IT는 추가되었으니 로봇형님과 연결하는 코드를 작성해 볼까요
import com.alibaba.fastjson.JSON; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import java.util.List; import java.util.Map; /** * @author yanghao * @version DingTalkTest.java, v 0.1 2019-03-29 11:36 */ public class DingTalkTest { public static void main(String[] args){ try { //钉钉机器人地址(配置机器人的webhook) String dingUrl = "https://oapi.dingtalk.com/robot/send?access_token=............"; //是否通知所有人 boolean isAtAll = false; //通知具体人的手机号码列表 List<String> mobileList = Lists.newArrayList(); //钉钉机器人消息内容 String content = "小哥,你好!"; //组装请求内容 String reqStr = buildReqStr(content, isAtAll, mobileList); //推送消息(http请求) String result = HttpUtil.postJson(dingUrl, reqStr); System.out.println("result == " + result); }catch (Exception e){ e.printStackTrace(); } } /** * 组装请求报文 * @param content * @return */ private static String buildReqStr(String content, boolean isAtAll, List<String> mobileList) { //消息内容 Map<String, String> contentMap = Maps.newHashMap(); contentMap.put("content", content); //通知人 Map<String, Object> atMap = Maps.newHashMap(); //1.是否通知所有人 atMap.put("isAtAll", isAtAll); //2.通知具体人的手机号码列表 atMap.put("atMobiles", mobileList); Map<String, Object> reqMap = Maps.newHashMap(); reqMap.put("msgtype", "text"); reqMap.put("text", contentMap); reqMap.put("at", atMap); return JSON.toJSONString(reqMap); } }
실행 결과는 다음과 같습니다.
result == {"errmsg":"ok","errcode":0}
DingTalk 그룹 표시 메시지:
좋아요, 간단한 메시지 푸시 완료!
모든 사람에게 알리고 특정 사람에게 다시 알리는 테스트를 해보자
isAtAll을 true로 변경
//是否通知所有人 boolean isAtAll = true; //通知具体人的手机号码列表 List<String> mobileList = Lists.newArrayList();
알림자 번호 목록을 추가하세요 (참고: isAtAll과 mobileList는 동시에 적용될 수 없습니다)
//是否通知所有人 boolean isAtAll = false; //通知具体人的手机号码列表 List<String> mobileList = Lists.newArrayList(); mobileList.add("182********");
특수 기호를 다시 테스트해 보겠습니다
줄 바꿈 식별자
/** * 换行标识符 */ private static final String NEWLINE = "\n"; //钉钉机器人消息内容 //String content = "小哥,你好!"; StringBuffer sb = new StringBuffer(); sb.append("小哥,你好!") .append(NEWLINE) .append("看会书"); String content = sb.toString();
emoji 사진
먼저 emoji 사진의 유니코드 인코딩을 가져옵니다
쓰기 코드는 다음과 같습니다:
/** * 苹果unicode编码 */ private static final String APPLE = "\ud83c\udf4e"; //钉钉机器人消息内容 //String content = "小哥,你好!"; StringBuffer sb = new StringBuffer(); sb.append("小哥,你好!") .append(NEWLINE) .append("看会书") .append(NEWLINE) .append("吃个").append(APPLE); String content = sb.toString();
보통 우리 프로젝트에 일부 알람으로 추가되어 편리하고 실용적입니다.
다양한 실용적인 기술을 갖춘 매우 흥미로운 DingTalk 로봇으로 깊이있게 탐색할 수 있습니다!
2019-12-05에 업데이트되었습니다
많은 친구들이 http 요청에 대해 문의하는 메시지를 남겼습니다. 여기에 2개의 http 요청 코드가 있습니다.
<!--糊涂工具--> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>4.0.12</version> </dependency>
2. Maven이 아닌 프로젝트
jar 패키지 추가httpclient-xxx.jar
commons-logging-xxx.jarhttp 요청 코드private static final int timeout = 10000; public static String postJson(String url, String reqStr) { String body = null; try { body = HttpRequest.post(url).body(reqStr).timeout(timeout).execute().body(); } catch (Exception e) { e.printStackTrace(); } return body; }방법은 참고용이며 이미 만들어져 있습니다. 프로젝트의 http 요청을 직접 사용할 수 있습니다!
관련 학습 권장사항:
위 내용은 DingTalk 로봇 메시지 푸시를 위한 샘플 코드를 구현하기 위해 Java를 배우십시오.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undress AI Tool
무료로 이미지를 벗다

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제

선택 사항은 잠재적 인 널 값을보다 안전하게 처리하기 위해 Java 8에서 도입 한 컨테이너 클래스이며, 핵심 목적은 명시 적으로 "결 측값"을 명시 적으로 "결 측값"하고 NullPointerException의 위험을 줄이는 것입니다. 1. 옵션 (), 옵션 (값)을 사용하여 빈 인스턴스를 만듭니다. (값)는 널 값이 아닌 값을 랩핑하고 옵션 (옵션)은 null의 값을 안전하게 랩핑합니다. 2. ispresent ()를 결합하고 get ()를 직접 결합하지 마십시오. 기본값을 제공하기 위해 Orelse ()를 사용하는 데 우선 순위를 부여해야합니다. orelseget ()는 지연 계산을 구현합니다. 이 방법은 기본값이 오버 헤드 인 경우 권장됩니다.

간결하고 효율적이며 읽을 수 있기 때문에 사전에 키가 존재하는지 확인하기 위해 IN 키워드를 사용하는 것이 좋습니다. 2. 키가 존재하는 경우 오해되지만 값은 없기 때문에 get () 메소드를 사용하여 키가 존재하는지 여부를 결정하는 것이 좋습니다. 3. 키 () 메소드를 사용할 수 있지만 키를 확인하기 위해 기본값에서는 중복됩니다. 4. 값을 가져와야하고 예상 키가 일반적으로 존재하면 Try-excrect를 사용하여 KeyError 예외를 포착 할 수 있습니다. 가장 권장되는 방법은 안전하고 효율적이며 None 값의 영향을받지 않는 IN 키워드를 사용하는 것입니다. 이는 대부분의 시나리오에 적합합니다.

Fmt.scanf를 사용하여 간단한 구조화 된 데이터에 적합한 형식 입력을 읽지 만 공간을 만날 때 문자열이 잘립니다. 2. Bufio.scanner를 사용하여 라인별로 읽고, 멀티 라인 입력, EOF 감지 및 파이프 라인 입력을 지원하며, 스캔 오류를 처리 할 수 있습니다. 3. IO.readall (OS.Stdin)을 사용하여 큰 블록 데이터 또는 파일 스트림을 처리하는 데 적합한 모든 입력을 한 번에 읽습니다. 4. 실시간 키 응답에는 golang.org/x/term과 같은 타사 라이브러리가 필요하며 Bufio는 기존 시나리오에 충분합니다. 실용적인 제안 : 대화식 간단한 입력을 위해 FMT.Scan을 사용하고, 라인 입력 또는 파이프 라인에 Bufio.scanner를 사용하고, 큰 블록 데이터에 io.readall을 사용하고 항상 처리하십시오.

SQLServer 자체는 서버리스 아키텍처를 지원하지 않지만 클라우드 플랫폼은 유사한 솔루션을 제공합니다. 1. Azure의 ServerlessSQL 풀은 자원 소비에 따라 데이터를 직접 쿼리하고 청구 할 수 있습니다. 2. COSMOSDB 또는 Blobstorage와 결합 된 Azureftionstion은 경량 SQL 처리를 실현할 수 있습니다. 3. Awsathena는 S3 데이터의 표준 SQL 쿼리를 지원하고 스캔 된 데이터를 기반으로 충전을 지원합니다. 4. GoogleBigQuery는 FederatedQuery를 통해 서버리스 개념에 접근합니다. 5. SQLServer 함수를 사용해야하는 경우 AzuresQLDatabase의 Serverless Service가없는 선택을 선택할 수 있습니다.

installjdk, setjava_home, installjavaextensionpackinvscode, createoropenamaven/gradleProject, introsproperProjectStructure, anduseBuilt-inrun/debugfeatures; 1. installjdkandVerifywithjava-versionandjavac-version, 2.installmava _

UseConnectionPoolingwithHikArictoreUsedAabaseConnectionsAndUceOverHead.2.usepRepRedStatementTopReventSQlinejectAndimProveQueryPerformance.3.fetchOnlyRequiredDatabySelectingSpecificColumnSandApplyingFilterSandPagination.4.useBatchOperationStor

시스템 호출은 사용자 프로그램이 커널 인터페이스를 통해 특권 작업을 요청하는 메커니즘입니다. 워크 플로는 다음과 같습니다. 1. 사용자 프로그램 호출 캡슐화 기능; 2. 시스템 호출 번호 및 매개 변수를 레지스터로 설정하십시오. 3. SyScall 명령을 실행하고 커널 상태로 떨어집니다. 4. 체크 테이블에서 해당 처리 기능을 실행합니다. 5. 실행 후 사용자 상태로 돌아갑니다. Strace 도구를 사용하여 추적하거나 syscall () 함수를 직접 호출하거나 unitd.h 헤더 파일을 확인하여 호출 번호를보십시오. 시스템 호출과 라이브러리 기능의 차이점은 커널 상태에 들어가는 지 여부이며 자주 호출이 성능에 영향을 미칩니다. MMAP 및 Epoll 메소드를 사용하여 I/O를 병합하여 최적화해야하며 시스템 호출을 이해하면 Linux의 기본 작동 메커니즘을 마스터하는 데 도움이됩니다.

SpringCloud 통합 모델 마스터 링은 최신 분산 시스템을 구축하는 데 중요합니다. 1. 서비스 등록 및 발견 : 자동 서비스 등록 및 발견은 Eureka 또는 SpringCloudkubernetes를 통해 실현되며로드 밸런싱은 리본 또는로드 밸런서로 수행됩니다. 2. 구성 센터 : SpringCloudConfig를 사용하여 다중 환경 구성을 중앙에서 관리하고 동적 로딩 및 암호화 처리를 지원합니다. 3. API 게이트웨이 : SpringCloudGateway를 사용하여 항목, 라우팅 제어 및 권한 관리를 통합하고 현재 제한 및 로깅을 지원합니다. 4. 분산 링크 추적 : Sleuth 및 Zipkin을 결합하여 요청 시각적 추구의 전체 프로세스를 실현합니다.
