Maison Applet WeChat Développement WeChat La série de développement Force.com WeChat s'applique aux comptes de test et répond aux messages graphiques

La série de développement Force.com WeChat s'applique aux comptes de test et répond aux messages graphiques

Feb 25, 2017 pm 04:51 PM
微信开发

En plus des simples réponses aux messages texte, Force.com peut également répondre aux messages avec des images et des textes, répondre à de la musique ou des vidéos, reconnaître les voix envoyées par les utilisateurs, collecter des informations de localisation géographique des utilisateurs et fournir le contenu ou les services correspondants, etc. ., cet article expliquera ces compétences une par une. Avant cela, nous devons d'abord présenter comment demander un compte test avec toutes les fonctions de l'interface du compte de service (bien que cela ne soit pas nécessaire pour répondre aux messages graphiques).

Demander un compte test

En tant que développeur individuel, vous pouvez demander un compte d'abonnement. Le compte d'abonnement ouvre uniquement l'interface de base, y compris la réception des messages des utilisateurs, répondre aux utilisateurs et accepter les événements (l'événement push a suivi ou ne plus suivre, scanner le code QR avec des paramètres (la génération d'un tel code QR nécessite une interface avancée), signaler l'emplacement géographique (non pris en charge par un compte d'abonnement ordinaire), menu personnalisé (non pris en charge par un abonnement ordinaire compte) ) cliquez) poussez trois interfaces, mais les fonctions avancées telles que les menus personnalisés, la reconnaissance vocale, les interfaces de service client, l'autorisation de page Web OAuth2.0, l'obtention d'informations de localisation géographique de l'utilisateur, etc. nécessitent toutes la prise en charge de comptes de service, parmi lesquels un abonnement certifié comptes Supporte le menu personnalisé. Afin de permettre aux développeurs de comprendre et d'apprendre ces interfaces de Tencent, comme toute entreprise de plateforme, Tencent a finalement ouvert des applications pour les comptes de test à la fin de l'année dernière. Toute personne possédant un compte d’abonnement WeChat peut postuler (un compte de service devrait également être possible, mais je n’ai pas vu à quoi ressemble le backend d’un compte de service, donc je ne ferai pas de commentaire).

La méthode de candidature est simple et directe. Après avoir accédé au backend WeChat (https://mp.weixin.qq.com), il y a un bouton en bas à gauche de la dernière version (au 6 juillet). , 2014) du backend. Après avoir cliqué sur le lien "Developer Center", vous trouverez un lien vers "Interface Test Application System Cliquez pour entrer". Après avoir cliqué pour entrer, vous pouvez postuler selon les idées de Tencent. dans les détails ici.

La série de développement Force.com WeChat sapplique aux comptes de test et répond aux messages graphiques

À quoi ressemblera l'application après une connexion réussie. Vous pouvez également la voir ici. voyez un deux lorsque vous faites défiler la page, scannez ce code QR via WeChat pour suivre ce compte de test, qui prend en charge jusqu'à 20 utilisateurs de test. Après un suivi réussi, il y aura un compte supplémentaire appelé « Compte de test de la plateforme publique WeChat ». " dans le dossier "Compte d'abonnement" WeChat, notez que bien qu'il se trouve dans le dossier "Compte d'abonnement", il a les fonctions de tous les comptes de service :

La série de développement Force.com WeChat sapplique aux comptes de test et répond aux messages graphiques                                   La série de développement Force.com WeChat sapplique aux comptes de test et répond aux messages graphiques

Pour le prochain travail, nous construisons d'abord ici plusieurs classes clés et les cadres de traitement correspondants pour faciliter l'ajout ultérieur d'un support plus fonctionnel.

IncomingMsg : la classe de messages envoyés par l'utilisateur, comprenant diverses informations de champ clés ;

WeChatNews : la classe d'actualités lors de la réponse aux actualités avec des images et des textes

Le IncomingMsg ; le code de classe est le suivant, 12 champs, comprenant la plupart des informations de champ de différents types de messages :

Le code de définition de la classe WeChatNews est le suivant, y compris les informations de définition détaillées d'une actualité :

Ensuite, dans la méthode doPost, nous utiliserons le code d'analyse XML dans le dernier article de blog de ce soir pour lui permettre d'analyser tout type de texte XML WeChat. La méthode doPost modifiée est la suivante :

public class IncomingMsg{
    public String toUserName;
    public String fromUserName;
    public String msgType;
    public String picURL;
    public String mediaID;
    public String locationX;
    public String locationY;
    public String URL;
    public String content;
    public String event;
    public String eventKey;
    public String recognition;
    
    public IncomingMsg(){}
    
    public IncomingMsg(String tUN, String fUN, String mT, String pU, String mI, String lX, String lY, String u, String c, String e, String eK, String r){
        this.toUserName = tUN;
        this.fromUserName = fUN;
        this.msgType = mT;
        this.picURL = pU;
        this.mediaID = mI;
        this.locationX = lX;
        this.locationY = lY;
        this.URL = u;
        this.content = c;
        this.event = e;
        this.eventKey = eK;
        this.recognition = r;
    }
}
Copier après la connexion
Cette méthode Ici, nous avons analysé les champs dans le texte XML de tous les types de messages WeChat et initialisé l'objet IncomingMsg via la valeur analysée. Ensuite, nous passerons cet objet pour appeler différentes méthodes pour compléter diverses. tâches. Ensuite, nous ajoutons le code suivant à la fin de la méthode doPost ci-dessus :

public class WeChatNews{
    public String title;
    public String description;
    public String picUrl;
    public String url;
    
    public WeChatNews(){}
    
    public WeChatNews(String t, String d, String p, String u){
        this.title = t;
        this.description = d;
        this.picUrl = p;
        this.url = u;
    }
}
Copier après la connexion

global static void doPost(){
        //Receive message from user;
        RestRequest req = RestContext.request;
        RestResponse res = RestContext.response;
        string strMsg = req.requestBody.toString();  
        System.debug('Request Contents' + strMsg);
        XmlStreamReader reader = new XmlStreamReader(strMsg);
        String toUserName = '';
        String fromUserName = '';
        String msgType = '';
        String picURL = '';
        String mediaID = '';
        String locationX = '';
        String locationY = '';
        String URL = '';
        String content = '';
        String msgID = '';
        String event = '';
        String eventKey = '';
        String recognition = '';
        
        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() == 'PicURL'){
                reader.next();
                if(String.isNotBlank(reader.getText())){
                    picURL = reader.getText();
                }
            }
            else if(reader.getLocalName() == 'MediaId'){
                reader.next();
                if(String.isNotBlank(reader.getText())){
                    mediaID = reader.getText();
                }
            }
            else if(reader.getLocalName() == 'Location_X'){
                reader.next();
                if(String.isNotBlank(reader.getText())){
                    locationX = reader.getText();
                }
            }
            else if(reader.getLocalName() == 'Location_Y'){
                reader.next();
                if(String.isNotBlank(reader.getText())){
                    locationY = reader.getText();
                }
            }
            else if(reader.getLocalName() == 'Url'){
                reader.next();
                if(String.isNotBlank(reader.getText())){
                    URL = reader.getText();
                }
            }
            else if(reader.getLocalName() == 'MsgId'){
                reader.next();
                if(String.isNotBlank(reader.getText())){
                    msgID = reader.getText();
                }
            }
            else if(reader.getLocalName() == 'Content'){
                reader.next();
                if(String.isNotBlank(reader.getText())){
                    content = reader.getText();
                }
            }
            else if(reader.getLocalName() == 'Event'){
                reader.next();
                if(String.isNotBlank(reader.getText())){
                    event = reader.getText();
                }
            }
            else if(reader.getLocalName() == 'EventKey'){
                reader.next();
                if(String.isNotBlank(reader.getText())){
                    eventKey = reader.getText();
                }
            }
            else if(reader.getLocalName() == 'Recognition'){
                reader.next();
                if(String.isNotBlank(reader.getText())){
                    recognition = reader.getText();
                }
            }
            reader.next();
        }
        IncomingMsg inMsg = new IncomingMsg(toUserName, fromUserName, msgType, picURL, mediaID, locationX, locationY, URL, content, event, eventKey, recognition );
}
Copier après la connexion

Ce code définit d'abord un fichier XML de retour de stockage String chaîne, puis déterminez si le type de message envoyé par l'utilisateur est un type texte, puis appelez une méthode handleText pour traiter le message de réponse. L'objet transmis à la méthode handleText ici est l'objet IncomingMsg que nous avons défini précédemment. Nous le présenterons dans la section suivante.Après avoir obtenu avec succès la chaîne de retour de cette méthode, le message texte XML peut être renvoyé à Tencent WeChat via RestContext, puis renvoyé à l'utilisateur qui a envoyé le message.
String rtnMsg = '';
//回复消息

if(msgType.equals('text')){
   rtnMsg = handleText(inMsg);
}
RestContext.response.addHeader('Content-Type', 'text/plain');    
RestContext.response.responseBody = Blob.valueOf(rtnMsg);
Copier après la connexion


Explication détaillée de la méthode handleText pour l'envoi d'images et de texte

Ensuite, nous présenterons comment répondre aux messages image et texte. Notez que vous n'avez pas besoin de demander un compte test pour répondre aux messages graphiques, juste un compte d'abonnement classique. Voici le code complet de cette méthode :

代码的思路应该来说比较直接,从第4行的if开始判断用户发送过来的文本是什么,根据不同的关键字来确定不同的返回内容,第一个if里将返回给用户单图文信息,这里先构造了一个WeChatNews数组,当然数组里只有一个WeChatNews对象,将这个数组交给composeNewsReply来完成最终的XML文构建;第一个else if也很类似,只不过这里的WeChatNews数组里有三条新闻,关于composeNewsReply方法的细节我们稍后介绍;最后一个else if里展示了如何回复音乐,这里我们构建了一个Map对象存储音乐的详情,并调用composeMusicReply方法来完成最终的XML文构建,同样该方法的细节稍后就会介绍到。

上面的思路应该来说还是比较清楚的,接下来介绍composeNewsReply方法的全部代码:

private static String composeNewsReply(IncomingMsg msg, List<wechatnews> newsList){
        String strNews = '';
        String newsTpl = '<item><title></title>
<description></description><picurl></picurl><url></url></item>';
        for(WeChatNews news : newsList){
            String[] arguments = new String[]{news.title, news.description, news.picUrl, news.url};
            strNews += String.format(newsTpl, arguments);
        }
        String strTmp = '<xml><tousername></tousername><fromusername></fromusername><createtime>1234567890</createtime><msgtype></msgtype><articlecount></articlecount><articles>' + strNews + '</articles></xml>';
        String[] arguments = new String[]{msg.fromUserName, msg.toUserName, String.valueOf(newsList.size())};
        String results = String.format(strTmp, arguments);
        return results;
}</wechatnews>
Copier après la connexion

 

了解该方法代码前先要了解回复图文信息的XML格式,关于此点可以参照腾讯公司链接:回复图文消息 ,与前文介绍到的普通文本消息大同小异,可以留意到里面有个ArticleCount字段用来指定回复的消息里能有几条图文新闻,最大是10,超过10则会无法响应;另外Article节点下方每一个item均是一条图文消息。为此,上述代码的第3行先构造一个每条新闻的模板,接着从第4行开始轮询新闻列表里的每一条新闻,并构造相应的XML文。从第8行开始构造整个图文回复的字符串模板,并在第9、10行通过相应参数将模板转换为最终的XML字符串。

再接下来介绍composeMusicReply,该方法的全部代码如下:

private static String composeMusicReply(IncomingMsg msg, Map<string> music){
        String strTitle = music.get('title');
        String strDesc = music.get('description');
        String strURL = music.get('musicUrl');
        String strHQURL = music.get('musicHQUrl');
        String musicTpl = '<xml><tousername></tousername><fromusername></fromusername><createtime>12345678</createtime><msgtype></msgtype><music><title></title>
<description></description><musicurl></musicurl><hqmusicurl></hqmusicurl></music></xml>';
        String[] arguments = new String[]{msg.fromUserName, msg.toUserName, strTitle, strDesc, strURL, strHQURL};
        String results = String.format(musicTpl, arguments);
        return results;
}</string>
Copier après la connexion

同样了解该方法要首先了解回复音乐信息的XML格式,可以参照腾讯公司链接:回复音乐消息,上面代码与前面方法比较类似,就不再赘述。(这里的Map对象也许有点多余,可以考虑是否可以和回复视频的方法整合到一起,否则不需要额外的Map对象开销,直接将标题、描述、链接等信息传给composeMusicReply方法即可)。

运行效果

 

完成后直接保存代码便可立即生效,回复图文、多图文、音乐的运行效果分别如下:

La série de développement Force.com WeChat sapplique aux comptes de test et répond aux messages graphiques          La série de développement Force.com WeChat sapplique aux comptes de test et répond aux messages graphiques          La série de développement Force.com WeChat sapplique aux comptes de test et répond aux messages graphiques

更多La série de développement Force.com WeChat sapplique aux comptes de test et répond aux messages graphiques相关文章请关注PHP中文网!

 

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Développement PHP WeChat : Comment implémenter le cryptage et le décryptage des messages Développement PHP WeChat : Comment implémenter le cryptage et le décryptage des messages May 13, 2023 am 11:40 AM

PHP est un langage de script open source largement utilisé dans le développement Web et la programmation côté serveur, notamment dans le développement de WeChat. Aujourd'hui, de plus en plus d'entreprises et de développeurs commencent à utiliser PHP pour le développement de WeChat, car il est devenu un langage de développement vraiment facile à apprendre et à utiliser. Dans le développement de WeChat, le cryptage et le décryptage des messages sont une question très importante car ils impliquent la sécurité des données. Pour les messages sans méthodes de cryptage et de décryptage, les pirates peuvent facilement obtenir les données, ce qui constitue une menace pour les utilisateurs.

Utiliser PHP pour développer des outils de messagerie de masse WeChat Utiliser PHP pour développer des outils de messagerie de masse WeChat May 13, 2023 pm 05:00 PM

Avec la popularité de WeChat, de plus en plus d’entreprises commencent à l’utiliser comme outil marketing. La fonction de messagerie de groupe WeChat est l'un des moyens importants permettant aux entreprises de mener du marketing WeChat. Cependant, si vous comptez uniquement sur l’envoi manuel, il s’agit d’une tâche extrêmement longue et laborieuse pour les spécialistes du marketing. Il est donc particulièrement important de développer un outil de messagerie de masse WeChat. Cet article présentera comment utiliser PHP pour développer des outils d'envoi de masse WeChat. 1. Travail de préparation Pour développer les outils d'envoi de masse WeChat, nous devons maîtriser les points techniques suivants : Connaissance de base du développement de la plateforme publique PHP WeChat Outils de développement : Sub

Développement PHP WeChat : Comment implémenter la gestion des balises utilisateur Développement PHP WeChat : Comment implémenter la gestion des balises utilisateur May 13, 2023 pm 04:31 PM

Dans le développement des comptes publics WeChat, la gestion des balises utilisateur est une fonction très importante, qui permet aux développeurs de mieux comprendre et gérer leurs utilisateurs. Cet article explique comment utiliser PHP pour implémenter la fonction de gestion des balises utilisateur WeChat. 1. Obtenez l'openid de l'utilisateur WeChat Avant d'utiliser la fonction de gestion des balises utilisateur WeChat, nous devons d'abord obtenir l'openid de l'utilisateur. Dans le développement des comptes publics WeChat, il est courant d'obtenir l'openid via l'autorisation de l'utilisateur. Une fois l'autorisation de l'utilisateur terminée, nous pouvons obtenir l'utilisateur via le code suivant

Développement PHP WeChat : Comment implémenter des enregistrements d'envoi de messages de groupe Développement PHP WeChat : Comment implémenter des enregistrements d'envoi de messages de groupe May 13, 2023 pm 04:31 PM

Alors que WeChat devient un outil de communication de plus en plus important dans la vie des gens, sa fonction de messagerie agile est rapidement privilégiée par un grand nombre d'entreprises et de particuliers. Pour les entreprises, développer WeChat en une plate-forme marketing est devenu une tendance, et l'importance du développement de WeChat est progressivement devenue plus importante. Parmi eux, la fonction d'envoi de groupe est encore plus largement utilisée. Alors, en tant que programmeur PHP, comment implémenter des enregistrements d'envoi de messages de groupe ? Ce qui suit vous donnera une brève introduction. 1. Comprendre les connaissances en développement liées aux comptes publics WeChat. Avant de comprendre comment mettre en œuvre des enregistrements d'envoi de messages de groupe, je

Développement PHP WeChat : Comment implémenter la gestion des fenêtres de discussion du service client Développement PHP WeChat : Comment implémenter la gestion des fenêtres de discussion du service client May 13, 2023 pm 05:51 PM

WeChat est actuellement l'une des plateformes sociales comptant la plus grande base d'utilisateurs au monde. Avec la popularité de l'Internet mobile, de plus en plus d'entreprises commencent à prendre conscience de l'importance du marketing WeChat. Lors du marketing WeChat, le service client est un élément crucial. Afin de mieux gérer la fenêtre de discussion du service client, nous pouvons utiliser le langage PHP pour le développement de WeChat. 1. Introduction au développement PHP WeChat PHP est un langage de script open source côté serveur largement utilisé dans le domaine du développement Web. En combinaison avec l'interface de développement fournie par la plateforme publique WeChat, nous pouvons utiliser le langage PHP pour mener WeChat

Développement PHP WeChat : Comment implémenter la fonction de vote Développement PHP WeChat : Comment implémenter la fonction de vote May 14, 2023 am 11:21 AM

Dans le développement des comptes publics WeChat, la fonction de vote est souvent utilisée. La fonction de vote est un excellent moyen pour les utilisateurs de participer rapidement aux interactions, et c'est également un outil important pour organiser des événements et recueillir des opinions. Cet article vous présentera comment utiliser PHP pour implémenter la fonction de vote WeChat. Obtenez l'autorisation du compte officiel WeChat. Tout d'abord, vous devez obtenir l'autorisation du compte officiel WeChat. Sur la plateforme publique WeChat, vous devez configurer l'adresse API du compte public WeChat, le compte officiel et le token correspondant au compte public. Dans le processus de développement en langage PHP, nous devons utiliser le PH officiellement fourni par WeChat

Comment utiliser PHP pour le développement WeChat ? Comment utiliser PHP pour le développement WeChat ? May 21, 2023 am 08:37 AM

Avec le développement d’Internet et des appareils mobiles intelligents, WeChat est devenu un élément indispensable dans les domaines social et marketing. Dans cette ère de plus en plus numérique, la manière d'utiliser PHP pour le développement de WeChat est devenue la préoccupation de nombreux développeurs. Cet article présente principalement les points de connaissances pertinents sur la façon d'utiliser PHP pour le développement WeChat, ainsi que certains conseils et précautions. 1. Préparation de l'environnement de développement Avant de développer WeChat, vous devez d'abord préparer l'environnement de développement correspondant. Plus précisément, vous devez installer l'environnement d'exploitation PHP et la plateforme publique WeChat

Développement PHP WeChat : Comment implémenter la reconnaissance vocale Développement PHP WeChat : Comment implémenter la reconnaissance vocale May 13, 2023 pm 09:31 PM

Avec la popularité de l'Internet mobile, de plus en plus de personnes utilisent WeChat comme logiciel social, et la plateforme ouverte WeChat a également apporté de nombreuses opportunités aux développeurs. Ces dernières années, avec le développement de la technologie de l’intelligence artificielle, la technologie de reconnaissance vocale est progressivement devenue l’une des technologies les plus populaires dans le développement de terminaux mobiles. Dans le développement de WeChat, la manière de mettre en œuvre la reconnaissance vocale est devenue une préoccupation pour de nombreux développeurs. Cet article expliquera comment utiliser PHP pour développer des applications WeChat afin d'implémenter des fonctions de reconnaissance vocale. 1. Principes de la reconnaissance vocale Avant de présenter comment mettre en œuvre la reconnaissance vocale, comprenons d'abord le langage

See all articles