>  기사  >  위챗 애플릿  >  Force.com WeChat 개발 시리즈 사용자 메시지 처리

Force.com WeChat 개발 시리즈 사용자 메시지 처리

高洛峰
高洛峰원래의
2017-02-25 16:58:061426검색

Force.com은 국제적으로 유명한 클라우드 플랫폼 회사입니다. Force.com을 WeChat 공개 계정용 서버로 성공적으로 구성한 후 다음으로 필요한 작업은 사용자가 보낸 메시지를 처리하는 것입니다. 일반 WeChat 사용자가 공용 계정으로 메시지를 보내면 WeChat 서버는 개발자가 입력한 URL에 메시지의 XML 데이터 패킷을 게시합니다. 일반적으로 메시지 유형에는 텍스트 정보, 사진 정보, 음성 정보, 비디오 정보가 포함됩니다. , 지리적 위치 정보 및 링크. 각 메시지의 XML 패킷의 자세한 구조는 http://mp.weixin.qq.com/wiki/index.php?title=%E6%8E%A5%E6%94%B6%E6%99를 참조하세요. %AE%E9%80%9A%E6%B6%88%E6%81%AF. 이 기사에서는 문자 메시지 XML 패킷 형식 및 설명을 소개합니다.

문자 메시지 XML 패킷 예

1348831860
 
 
 1234567890123456

데이터 패킷 구조 설명

Force.com WeChat 개발 시리즈 사용자 메시지 처리

디버그 로그를 통해 사용량 모니터링

Force.com에서는 WeChat 사용자가 보낸 XML 데이터 정보를 쉽게 관찰할 수 있습니다. 이를 위해 Force.com 백그라운드 설정에 들어갑니다. 왼쪽 페이지 측면 탐색 모음의 로그에서 디버그 로그 찾기를 클릭하여 입력한 후 아래와 같이 오른쪽의 모니터링되는 사용자 옆에 있는 새로 만들기 버튼을 클릭합니다.

Force.com WeChat 개발 시리즈 사용자 메시지 처리

다음 화면에서는 Force.com 서버와의 상호 작용을 모니터링할 사용자를 선택할 수 있습니다. 검색 화면에서 돋보기를 클릭하면 Site.com이 유사한 익명 계정을 사용하는 모든 사용자를 찾을 수 있습니다. "사이트 게스트 사용자..."를 선택한 후 개략적인 인터페이스는 다음과 같습니다.

Force.com WeChat 개발 시리즈 사용자 메시지 처리

이 때 이 WeChat 공개 계정을 팔로우하는 WeChat 사용자가 이 계정에 텍스트를 입력하고 디버그 로그 모니터링 페이지를 새로 고치면 아래를 클릭할 수 있습니다. 해당 로그가 추가되었는지 확인할 수 있습니다.

Force.com WeChat 개발 시리즈 사용자 메시지 처리

클릭하면 다음의 XML 패킷을 볼 수 있습니다. 로그에 보낸 텍스트:

Force.com WeChat 개발 시리즈 사용자 메시지 처리

이러한 종류의 로그는 후속 디버깅에도 도움이 될 수 있습니다.

사용자 메시지 처리 메소드 생성

다음으로 앞서 생성한 WeChatRestController 클래스를 열고 사용자 데이터 패킷에 응답하기 위해 다음 메소드를 추가합니다

@HttpPost
    global static void doPost(){
        //存储XML各节点数据变量
        String toUserName = '';
        String fromUserName = '';
        String msgType = '';
        String content = '';
        //获取XML数据包
        RestRequest req = RestContext.request;
        RestResponse res = RestContext.response;
        string strMsg = req.requestBody.toString();  
        XmlStreamReader reader = new XmlStreamReader(strMsg);

        //解析XML数据包,Force.com这块的处理能力并不强,简单的结构也需要较多代码来解析
         while(reader.hasNext()){
            if(reader.getLocalName() == 'ToUserName'){
                reader.next();
                if(String.isNotBlank(reader.getText())){
                    toUserName = reader.getText();
                }
            }
            else if(reader.getLocalName() == 'FromUserName'){
                reader.next();
                if(String.isNotBlank(reader.getText())){
                    fromUserName = reader.getText();
                }
            }
            else if(reader.getLocalName() == 'MsgType'){
                reader.next();
                if(String.isNotBlank(reader.getText())){
                    msgType = reader.getText();
                }
            }
            else if(reader.getLocalName() == 'Content'){
                reader.next();
                if(String.isNotBlank(reader.getText())){
                    content = reader.getText();
                }
            }
            reader.next();
        }
    }

위 코드는 사용자가 보낸 데이터 XML 패키지의 분석을 완료합니다. 다음으로 http://mp.weixin.qq.com/wiki/index.php?title=%E5%8F%91%E9를 따릅니다. %80%81 %E8%A2%AB%E5%8A%A8%E5%93%8D%E5%BA%94%E6%B6%88%E6%81%AF 설명, 회신된 문자 메시지 데이터를 정리합니다. 사용자, 여기 응답 데이터도 XML 구조로, 기본적으로 보낸 문자 메시지의 XML 데이터 구조와 동일합니다. 자세한 내용은 링크의 Tencent 세부 소개를 참조하세요. 다음 코드는 현재 날짜와 시간을 사용자에게 자동으로 보냅니다. 이전 코드의 While 루프 뒤에 다음 코드를 추가합니다.

Datetime dt = System.now();
String returnDT = dt.format('EEEE, MMMM d, yyyy');
String replyMSG = &#39;<xml><ToUserName><![CDATA[{0}]]></ToUserName><FromUserName><![CDATA[{1}]]></FromUserName><CreateTime>12345678</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[{2}]]></Content></xml>&#39;;
String[] arguments = new String[]{fromUserName, toUserName, rtnMsg};
String formattedReplyMSG = String.format(replyMSG, arguments);
RestContext.response.addHeader(&#39;Content-Type&#39;, &#39;text/plain&#39;);
RestContext.response.responseBody = Blob.valueOf(rtnMsg);

이전 코드에서 약간 기억해야 할 것은 ToUserName 매개 변수입니다. 3행의 FromUserName 매개변수와 WeChat 사용자가 보낸 일반 메시지 XML 데이터 패킷은 그 반대입니다.

이 때, 이 공개 계정으로 메시지를 보내는 일반 사용자는 현재 시간 정보를 빠르게 받을 수 있습니다.

Force.com WeChat 개발 시리즈 사용자 메시지 처리에 관한 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.