2018-03-19 23:22:55 Eastmount 阅读数 3934
  • 微信公众平台开发4-消息管理-微信开发php

    微信公众平台开发之消息管理是子恒老师《微信公众平台开发》视频教程的第4部。详细讲解了用php开发微信,对微信公众平台中的消息管理开发。内容包含微信关键字回复,多图文消息回复开发,接收图片消息,视频,小视频消息等等。欢迎反馈,微信/QQ:68183131

    6328 人正在学习 去看看 秦子恒

最近准备学习微信小程序开发,偶然间看到了python与微信互动的接口itchat,简单学习了下,感觉还挺有意思的,故写了篇基础文章供大家学习。itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单。使用不到三十行的代码,你就可以完成一个能够处理所有信息的微信机器人。

官网文档:http://itchat.readthedocs.io/zh/latest/

本文主要讲解itchat扩展包的入门基础知识,包括:
1.itchat安装及入门知识
2.微信好友性别分析
3.微信自动回复及发送图片
4.获取微信签名并进行词云分析

基础性文章,希望对您有所帮助,后面将结合舆情分析、朋友圈等接口进行更一步的讲解。如果文章中存在错误或不足之处,还请海涵~

参考文章:
https://zhuanlan.zhihu.com/p/26514576?group_id=839173221667446784
https://www.cnblogs.com/jmmchina/p/6692149.html

http://blog.csdn.net/qinyuanpei/article/details/79360703



一. itchat安装及入门知识


安装通过 pip install itchat 命令实现,如下图所示:


安装成功之后通过 import itchat 进行导入。


下面给出我们第一个简单的代码:
# -*- coding:utf-8 -*-
import itchat

# 登录
itchat.login()
# 发送消息
itchat.send(u'你好', 'filehelper')

首先调用itchat.login()函数登录微信,再通过itchat.send(u'你好', 'filehelper')函数发送信息给微信的“文件传输助手(filehelper)”。注意,执行代码过程中会弹出一张二维码图片,我们通过手机扫一扫登录后才能获取我们微信及好友的信息。

  


输出结果如下图所示,可以看到给自己发送了一个“你好”。



下面给出另一段代码:

#-*- coding:utf-8 -*-
import itchat

# 先登录
itchat.login()

# 获取好友列表
friends = itchat.get_friends(update=True)[0:]
print u"昵称", u"性别", u"省份", u"城市"
for i in friends[0:]:
    print i["NickName"], i["Sex"], i["Province"], i["City"]
这里最重要的代码是获取好友列表,代码如下:
    friends = itchat.get_friends(update=True)[0:] 

再通过["NickName"]获取昵称、["Sex"]获取性别、["Province"]获取省份、["City"]获取城市。返回的结果如下所示,其中第一个friends[0]是作者本人,然后性别0表示未填写、1表示男性、2表示女性;省份和城市可以不设置。




二. 微信好友性别分析


下面直接给出对微信好友性别分析绘图的代码:

#-*- coding:utf-8 -*-
import itchat

#获取好友列表
itchat.login() #登录
friends = itchat.get_friends(update=True)[0:]

#初始化计数器
male = 0
female = 0
other = 0

#1男性,2女性,3未设定性别
for i in friends[1:]: #列表里第一位是自己,所以从"自己"之后开始计算
    sex = i["Sex"]
    if sex == 1:
        male += 1
    elif sex == 2:
        female += 1
    else:
        other += 1
#计算比例
total = len(friends[1:])
print u"男性人数:", male
print u"女性人数:", female
print u"总人数:", total
a = (float(male) / total * 100)
b = (float(female) / total * 100)
c = (float(other) / total * 100)
print u"男性朋友:%.2f%%" % a
print u"女性朋友:%.2f%%" % b
print u"其他朋友:%.2f%%" % c

#绘制图形
import matplotlib.pyplot as plt
labels = ['Male','Female','Unkown']
colors = ['red','yellowgreen','lightskyblue']
counts = [a, b, c]
plt.figure(figsize=(8,5), dpi=80)
plt.axes(aspect=1) 
plt.pie(counts, #性别统计结果
        labels=labels, #性别展示标签
        colors=colors, #饼图区域配色
        labeldistance = 1.1, #标签距离圆点距离
        autopct = '%3.1f%%', #饼图区域文本格式
        shadow = False, #饼图是否显示阴影
        startangle = 90, #饼图起始角度
        pctdistance = 0.6 #饼图区域文本距离圆点距离
)
plt.legend(loc='upper right',)
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.title(u'微信好友性别组成')
plt.show()

这段代码获取好友列表后,从第二个好友开始统计性别,即friends[1:],因为第一个是作者本人,然后通过循环计算未设置性别0、男性1和女性2,最后通过Matplotlib库绘制饼状图。如下所示,发现作者男性朋友66.91%,女性朋友26.98%。




三. 微信自动回复及发送图片


微信发送信息调用send()函数实现,下面是发送文字信息、文件、图片和视频。

# coding-utf-8
import itchat
itchat.login()
itchat.send("Hello World!", 'filehelper')
itchat.send("@fil@%s" % 'test.text')
itchat.send("@img@%s" % 'img.jpg', 'filehelper')
itchat.send("@vid@%s" % 'test.mkv')
比如给我的微信文件助手发了个“Hello World”和一张图片。


如果想发送信息给指定好友,则核心代码如下:

#想给谁发信息,先查找到这个朋友
users = itchat.search_friends(name=u'通讯录备注名')
#找到UserName
userName = users[0]['UserName']
#然后给他发消息
itchat.send('hello',toUserName = userName)

下面这部分代码是自动回复微信信息,同时在文件传输助手也同步发送信息。
#coding=utf8
import itchat
import time

# 自动回复
# 封装好的装饰器,当接收到的消息是Text,即文字消息
@itchat.msg_register('Text')
def text_reply(msg):
    if not msg['FromUserName'] == myUserName: # 当消息不是由自己发出的时候
        # 发送一条提示给文件助手
        itchat.send_msg(u"[%s]收到好友@%s 的信息:%s\n" %
                        (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(msg['CreateTime'])),
                         msg['User']['NickName'],
                         msg['Text']), 'filehelper')
        # 回复给好友
        return u'[自动回复]您好,我现在有事不在,一会再和您联系。\n已经收到您的的信息:%s\n' % (msg['Text'])

if __name__ == '__main__':
    itchat.auto_login()
    myUserName = itchat.get_friends(update=True)[0]["UserName"]
    itchat.run()
运行结果如下图所示:

  



四. 获取微信签名并进行词云分析


最后给出获取微信好友的签名的词云分析,其friends[i]["Signature"]获取签名,最后调用jieba分词最后进行WordCloud词云分析。

# coding:utf-8
import itchat
import re

itchat.login()
friends = itchat.get_friends(update=True)[0:]
tList = []
for i in friends:
    signature = i["Signature"].replace(" ", "").replace("span", "").replace("class", "").replace("emoji", "")
    rep = re.compile("1f\d.+")
    signature = rep.sub("", signature)
    tList.append(signature)

# 拼接字符串
text = "".join(tList)

# jieba分词
import jieba
wordlist_jieba = jieba.cut(text, cut_all=True)
wl_space_split = " ".join(wordlist_jieba)

# wordcloud词云
import matplotlib.pyplot as plt
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator   
import PIL.Image as Image
from scipy.misc import imread
from os import path
  
# 读取mask/color图片  
d = path.dirname(__file__)  
nana_coloring = imread(path.join(d, "test.png"))  

# 对分词后的文本生成词云  
my_wordcloud = WordCloud(background_color = 'white',      # 设置背景颜色  
                            mask = nana_coloring,          # 设置背景图片  
                            max_words = 2000,              # 设置最大现实的字数  
                            stopwords = STOPWORDS,         # 设置停用词  
                            max_font_size = 50,            # 设置字体最大值  
                            random_state = 30,             # 设置有多少种随机生成状态,即有多少种配色方案  
                            )
# generate word cloud   
my_wordcloud.generate(wl_space_split)  
  
# create coloring from image    
image_colors = ImageColorGenerator(nana_coloring)  
  
# recolor wordcloud and show    
my_wordcloud.recolor(color_func=image_colors)  
  
plt.imshow(my_wordcloud)    # 显示词云图  
plt.axis("off")             # 是否显示x轴、y轴下标  
plt.show()

输出结果如下图所示,注意这里作者设置了图片罩,生成的图形和那个类似,发现“个人”、“世界”、“生活”、“梦想”等关键词挺多的。



(By:Eastmount 2018-03-19 晚上11点  http://blog.csdn.net/eastmount/ )


2014-06-20 15:21:17 u013802231 阅读数 2387
  • 微信公众平台开发4-消息管理-微信开发php

    微信公众平台开发之消息管理是子恒老师《微信公众平台开发》视频教程的第4部。详细讲解了用php开发微信,对微信公众平台中的消息管理开发。内容包含微信关键字回复,多图文消息回复开发,接收图片消息,视频,小视频消息等等。欢迎反馈,微信/QQ:68183131

    6328 人正在学习 去看看 秦子恒
微信开发案例教程按知识点划分,共100小节,每小节时间不等,请学员注意!


微信开发教程-深入浅出微信公众平台实战开发(微网站、LBS云、Api接口调用、服务号高级接口)


1.1、课程的背景


微信公众平台的火热程度已经不用多言,无论是个人还是企业,政府还是商家,都已经开始搭建微信公众平台,微信的作用已经被各界人士认可。微信公众平台的技术需求市场缺口巨大。


1.2、微信开发教程课程内容简介


微信开发案例教程基于微信公众平台官方代码,由易到难,深入浅出的讲解微信公众平台各种常见功能的开发,微信开发教程包括Api接口调用,lbs应用,服务号高级接口,二级菜单,微网站搭建,分100节小课程,时长合计10小时26分钟。本课程针对零基础学员,如果具有一定的php和jquery基础将更快速的学习。


微信开发案例教程具体内容请查看:http://www.ibeifeng.com/goods-383.html


1.3、微信开发教程课程特色


1、讲师为业余程序开发爱好者,短时间内通过自学掌握微信公众平台开发技术,可以提供快速学习的方法和介绍学习经验,特别适合零基础学员。


2、微信公众平台各功能都是在客户需求基础上开发,实用性强。


3、在微信官方示例代码上进行修改,适合基础学员学习,避免讲解过于复杂的类的封装和继承。


1.4、微信开发视频教程课程亮点


1、紧跟最新微信公众平台接口更新内容,对各个接口讲解全面。


2、云平台开发,兼顾主流的BAE和SAE云平台,降低学习成本。


3、Dw6微网站开发,快速上手,所见所得,减少代码录入。


4、单客服、多客服、手机留言客服系统,多种客服解决方案,解决企业需求。


5、刮刮卡、会员卡、大转盘、一站到底微信流行游戏悉数介绍。


1.5、微信开发教程课程大纲




1、微信公众平台基础篇


(1)微信公众平台简介:开发准备、账号注册


(2)官方代码讲解


(3)编辑模式


(4)接口验证


(5)关键词回复


(6)关注事件


(7)图文消息


(8)音乐信息


(9)超链接,xml转义


(10)图片回复


2、Api调用


(11)车联网api测距


(12)最近店铺


(13)天气预报


(14)周边酒店


(15)静态地图


3、数据库


(16)Mysql数据库链接


(17) 欢迎老朋友,数据保存


(18)奖品秒杀


(19)数据库导入


4、提高篇


(20)综合功能,各类消息整合


(21)html5播放视频


(22)组合地图


(23)小黄鸡api


(24)调用手机web应用


(25)图片数据库


(26)字符串截取


(27)二级菜单


(28)图书馆查询 Rss调用


(29)SAE及SVN使用


(30)遍历数组


(31)刮刮乐


(32)缓存


(33)wap页制作


(34)足球比分,simple_html_dom应用


(35)导航地图


(36)模糊匹配


(37)百度翻译


(38)快递查询


(39)翻页查询


(40)任意翻页


(41)会员卡,BAE图片工具


(42)curl简介


(43)curl伪造来源


(44)法律查询


(45)curl重新定向


(46)自定义菜单


(47)微信5.0变化


(48)正则表达式


(49)简答题


(50)连闯三关


(51)电影点播


(52)四六级查询


5、微网站


(53)微网站介绍html+jqm


(54) 留言本


(55)手机浏览限制


(56)幻灯片,jqm事件


(57)滚屏,jqm方法


(58)日期插件


(59)html5定位+街景调用


(60)微网站布局


(61)升级版会员卡


(62)大转盘


(63)面板使用panel


(64) 人脸识别


6、服务号高级接口


(65)视频语音消息


(66) 高级接口综述


(67)语音接口,机器人问答


(68)语音接口,学英语


(69)客服接口,多条回复


(70)客服接口,生日提醒


(71)客服接口,手机随时回复


(72)永久二维码,分场景统计


(73)永久二维码,校园指南


(74)临时二维码,限时抢购


(75)地理位置接口,跑步签到


(76) 获取用户信息接口


(77)关注着列表接口


(78)分组管理接口


(79)多媒体上传下载接口


(80)oauth2 投票


(81)oauth2 留言


(82)声音提醒,ajax


(83)贺年卡


(84)微信墙


(85)叫号系统


(86)每问必答系统


(87)答错即过系统


(88)一站到底系统


(89)LBS云初步


(90)LBS云进阶


(91)单客服系统


(92)多客服系统


(93)异性对话


(94)摇色子


(95)WeixinJS接口


(96)中文分词


(97)360全景


(98)订阅号开发


(99)服务号开发


(100)代码调试
2019-12-25 18:29:15 chen15369337607 阅读数 24
  • 微信公众平台开发4-消息管理-微信开发php

    微信公众平台开发之消息管理是子恒老师《微信公众平台开发》视频教程的第4部。详细讲解了用php开发微信,对微信公众平台中的消息管理开发。内容包含微信关键字回复,多图文消息回复开发,接收图片消息,视频,小视频消息等等。欢迎反馈,微信/QQ:68183131

    6328 人正在学习 去看看 秦子恒

一、前言
闲来有空,正好把这两年开发微信的东西拿出来抖抖。从零基础搭建一个微信开发基础框架。闲来搭建微信消息实体,包括接收的用户消息和回复用户消息两个基本实体。
在这里插入图片描述
二、参考/说明
主要需要参看微信公众平台开发者文档
网页地址:微信开发者文档
实体类中使用了lombok,所以省略了set ,get ,equal,hash以及ToString方法。
三、消息实体类
参看微信开发者文档消息管理中的第一栏,接收用户消息中分为文本消息、图片消息、语音消息,视频消息、链接消息等等吧,有一些共同属性,进行提取。包结构如下:
在这里插入图片描述
1)BaseEntity

package com.zlc.wechat.entity;

import lombok.Data;

import java.io.Serializable;

/**
 * @author : 追到乌云的尽头找太阳-(Jacob)
 * @date : 2019/10/23 16:34
 **/
@Data
public class BaseEntity implements Serializable {
    
    private static final long serialVersionUID = 1L;
    /**
     * 媒体Id,用于从微信素材接口调用
     */
    private long mediaId;
    
}

2)ArticleEntity

package com.zlc.wechat.entity;

import lombok.Data;

/**
 * 微信图文
 * @author :  追到乌云的尽头找太阳-(Jacob)
 * @date : 2019/10/23 15:22
 **/
@Data
public class ArticleEntity extends BaseEntity{
    /**
     * 图文消息标题
     */
    private String title;
    /**
     * 图文消息描述
     */
    private String description;
    /**
     * 图片的链接
     * 支持JPG、PNG格式,较好的效果为大图640*320,小图80*80,限制图片链接的域名需要与开发者填写的基本资料中的Url一致
     */
    private String pictureUrl;
    /**
     * 点击图文消息后要跳转的url
     */
    private String url;

}

3)ImageEntity

package com.zlc.wechat.entity;

import lombok.Data;

/**
 * 微信图片
 * @author :  追到乌云的尽头找太阳-(Jacob)
 * @date : 2019/10/23 15:22
 **/
@Data
public class ImageEntity extends BaseEntity{
	
	/**
	 * 图片链接(由系统生成)
	 */
	private String picUrl;
	
}

4)LinkEntity

package com.zlc.wechat.entity;

import lombok.Data;

/**
 * @author : 追到乌云的尽头找太阳-(Jacob)
 * @date : 2019/10/24 9:47
 **/
@Data
public class LinkEntity extends BaseEntity{
    
    /**
     * 消息标题
     */
    private String title;
    /**
     * 消息描述
     */
    private String description;
    /**
     * 消息链接
     */
    private String url;
    
}

5)LocationEntity

package com.zlc.wechat.entity;

import lombok.Data;

/**
 * @author : 追到乌云的尽头找太阳-(Jacob)
 * @date : 2019/10/23 17:06
 **/
@Data
public class LocationEntity extends BaseEntity{

    /**
     * 地理位置维度
     */
    private String locationX;
    /**
     * 地理位置经度
     */
    private String locationY;
    /**
     * 地图缩放大小
     */
    private String scale;
    /**
     * 地理位置信息
     */
    private String label;
    
}

6)MusicEntity

package com.zlc.wechat.entity;

import lombok.Data;

import java.io.Serializable;

/**
 * 微信音乐
 * @author :  追到乌云的尽头找太阳-(Jacob)
 * @date : 2019/10/23 15:22
 **/
@Data
public class MusicEntity implements Serializable {

	private static final long serialVersionUID = 1L;
	
	/**
	 * 音乐名称
	 */
	private String title;
	/**
	 * 音乐描述
	 */
	private String description;
	/**
	 * 音乐链接
	 */
	private String musicUrl;
	/**
	 * 质量音乐链接,WIFI环境优先使用该链接播放音乐
	 */
	private String HQMusicUrl;
	/**
	 * 缩略图的媒体id,通过上传多媒体文件得到的id
	 */
	private String thumbMediaId;
	
}

7)TextEntity

package com.zlc.wechat.entity;

import lombok.Data;

/**
 * @author : 追到乌云的尽头找太阳-(Jacob)
 * @date : 2019/10/23 16:40
 **/
@Data
public class TextEntity extends BaseEntity{
    
    /**
     * 文本消息内容
     */
    private String content;
    
}

8)VideoEntity

package com.zlc.wechat.entity;

import lombok.Data;

/**
 * 微信视频
 * @author :  追到乌云的尽头找太阳-(Jacob)
 * @date : 2019/10/23 15:22
 **/
@Data
public class VideoEntity extends BaseEntity {
	
	/**
	 * 视频缩略图的媒体Id,(缩略图就是微信中的那个小窗口视频,图片和视频都会缩略)
	 */
	private String thumbMediaId;
	
}

9)VoiceEntity

package com.zlc.wechat.entity;

import lombok.Data;

/**
 * 微信语音
 * @author :  追到乌云的尽头找太阳-(Jacob)
 * @date : 2019/10/23 15:22
 **/
@Data
public class VoiceEntity extends BaseEntity {
	
	/**
	 * 语音格式,如amr,speex等
	 */
	private String format;
	/**
	 * 开通语音识别后,用户每次发送语音给公众号时,微信会在推送的语音消息XML数据包中,增加
	 * 语音格式:amr
	 * 语音识别结果,UTF8编码()
	 */
	private String recognition;
	
}

三、用户发送消息类
1)BaseWeChatMsg

package com.zlc.wechat.message;

import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * @author : 追到乌云的尽头找太阳-(Jacob)
 * @date : 2019/10/23 16:08
 **/
@Data
public class BaseWeChatMsg implements Serializable {

    private static final long serialVersionUID = 1L;
    /**
     * 消息Id,64位整形
     */
    private long msgId;
    /**
     * 开发者微信号
     */
    private String toUserName;
    /**
     * 发送方帐号(一个OpenID)
     */
    private String fromUserName;
    /**
     * 消息创建时间 (整型)
     */
    private Date createTime;
    /**
     * 消息类型
     */
    private String msgType;
    /**
     * 位0x0001被标志时,星标刚收到的消息
     */
    private int funcFlag;
    
}

2)ReceiveImageMsg

package com.zlc.wechat.message.receive;

import com.zlc.wechat.entity.ImageEntity;
import com.zlc.wechat.message.BaseWeChatMsg;
import lombok.Data;

/**
 * 图片消息
 * @author : 追到乌云的尽头找太阳-(Jacob)
 * @date : 2019/10/23 16:31
 **/
@Data
public class ReceiveImageMsg extends BaseWeChatMsg {
   
    /**
     * 图片
     */
    private ImageEntity imageEntity;
    
}

3)ReceiveLinkMsg

package com.zlc.wechat.message.receive;

import com.zlc.wechat.entity.LinkEntity;
import com.zlc.wechat.message.BaseWeChatMsg;
import lombok.Data;

/**
 * @author : 追到乌云的尽头找太阳-(Jacob)
 * @date : 2019/10/24 9:46
 **/
@Data
public class ReceiveLinkMsg extends BaseWeChatMsg {
    
    /**
     * 链接
     */
    private LinkEntity linkEntity;
    
}

4)ReceiveLocationMsg

package com.zlc.wechat.message.receive;

import com.zlc.wechat.entity.LocationEntity;
import com.zlc.wechat.message.BaseWeChatMsg;
import lombok.Data;

/**
 * 地理位置信息
 * @author : 追到乌云的尽头找太阳-(Jacob)
 * @date : 2019/10/23 17:05
 **/
@Data
public class ReceiveLocationMsg extends BaseWeChatMsg {
   
    /**
     * 位置
     */
    private LocationEntity locationEntity;
    
}

5)ReceiveTextMsg

package com.zlc.wechat.message.receive;

import com.zlc.wechat.entity.TextEntity;
import com.zlc.wechat.message.BaseWeChatMsg;
import lombok.Data;

/**
 * 文本消息
 * @author : 追到乌云的尽头找太阳-(Jacob)
 * @date : 2019/10/23 16:06
 **/
@Data
public class ReceiveTextMsg extends BaseWeChatMsg {
   
    /**
     * 文本
     */
    private TextEntity textEntity;
    
}

6)ReceiveVideoMsg

package com.zlc.wechat.message.receive;

import com.zlc.wechat.entity.VideoEntity;
import com.zlc.wechat.message.BaseWeChatMsg;
import lombok.Data;

/**
 * 视频类消息(包括小视频)
 * @author : 追到乌云的尽头找太阳-(Jacob)
 * @date : 2019/10/23 17:00
 **/
@Data
public class ReceiveVideoMsg extends BaseWeChatMsg {
   
    /**
     * 视频
     */
    private VideoEntity videoEntity;
    
}

7)ReceiveVoiceMsg

package com.zlc.wechat.message.receive;

import com.zlc.wechat.entity.BaseEntity;
import com.zlc.wechat.entity.VoiceEntity;
import lombok.Data;

/**
 * 语音消息
 * @author : 追到乌云的尽头找太阳-(Jacob)
 * @date : 2019/10/23 16:47
 **/
@Data
public class ReceiveVoiceMsg extends BaseEntity {
    
    /**
     * 语音
     */
    private VoiceEntity voiceEntity;
    
}

四、被动回复用户消息类
1)ReplyArticleMsg

package com.zlc.wechat.message.reply;

import com.zlc.wechat.entity.ArticleEntity;
import com.zlc.wechat.message.BaseWeChatMsg;
import lombok.Data;

import java.util.List;

/**
 * 被动回复用户图文消息
 * @author : 追到乌云的尽头找太阳-(Jacob)
 * @date : 2019/10/24 10:05
 **/
@Data
public class ReplyArticleMsg extends BaseWeChatMsg {
    
    /**
     * 图文消息总条数
     */
    private int articleCount;
    /**
     * 图文消息集合
     */
    private List<ArticleEntity> articles;
    
}

2)ReplyImageMsg

package com.zlc.wechat.message.reply;

import com.zlc.wechat.entity.ImageEntity;
import com.zlc.wechat.message.BaseWeChatMsg;
import lombok.Data;

/**
 * 被动回复图片信息,可以是多图
 * @author : 追到乌云的尽头找太阳-(Jacob)
 * @date : 2019/10/24 9:56
 **/
@Data
public class ReplyImageMsg extends BaseWeChatMsg {
    
    /**
     * 图片
     */
    private ImageEntity imageEntity;
    
}    

3)ReplyMusicMsg

package com.zlc.wechat.message.reply;

import com.zlc.wechat.entity.MusicEntity;
import com.zlc.wechat.message.BaseWeChatMsg;
import lombok.Data;

/**
 * 被动回复用户乐音消息
 * @author : 追到乌云的尽头找太阳-(Jacob)
 * @date : 2019/10/24 10:02
 **/
@Data
public class ReplyMusicMsg extends BaseWeChatMsg {
  
    /**
     * 音乐
     */
    private MusicEntity musicEntity;
    
}

4)ReplyTextMsg

package com.zlc.wechat.message.reply;

import com.zlc.wechat.entity.TextEntity;
import com.zlc.wechat.message.BaseWeChatMsg;
import lombok.Data;

/**
 * 被动回复用户文本消息
 * @author : 追到乌云的尽头找太阳-(Jacob)
 * @date : 2019/10/24 9:53
 **/
@Data
public class ReplyTextMsg extends BaseWeChatMsg {
    
    /**
     * 文本
     */
    private TextEntity textEntity;
    
}

5)ReplyVideoMsg

package com.zlc.wechat.message.reply;

import com.zlc.wechat.entity.VideoEntity;
import com.zlc.wechat.message.BaseWeChatMsg;
import lombok.Data;

/**
 * 被动回复用户视频消息
 * @author : 追到乌云的尽头找太阳-(Jacob)
 * @date : 2019/10/24 10:00
 **/
@Data
public class ReplyVideoMsg extends BaseWeChatMsg {
   
    /**
     * 视频
     */    
    private VideoEntity videoEntity;
    
}

6)ReplyVoiceMsg

package com.zlc.wechat.message.reply;

import com.zlc.wechat.entity.VoiceEntity;
import com.zlc.wechat.message.BaseWeChatMsg;
import lombok.Data;

/**
 * 被动回复用户语音消息
 * @author : 追到乌云的尽头找太阳-(Jacob)
 * @date : 2019/10/24 9:58
 **/
@Data
public class ReplyVoiceMsg extends BaseWeChatMsg {
   
    /**
     * 语音
     */
    private VoiceEntity voiceEntity;
    
}

2019-05-29 15:28:22 sunfellow2009 阅读数 221
  • 微信公众平台开发4-消息管理-微信开发php

    微信公众平台开发之消息管理是子恒老师《微信公众平台开发》视频教程的第4部。详细讲解了用php开发微信,对微信公众平台中的消息管理开发。内容包含微信关键字回复,多图文消息回复开发,接收图片消息,视频,小视频消息等等。欢迎反馈,微信/QQ:68183131

    6328 人正在学习 去看看 秦子恒

微信开发SDK,微信二次开发sdk,个人微信开发API
微信开发SDK接口API列表
1、基础消息类型
1、客户端发送的心跳包 HeartBeatReq = 1001;
2、消息接收确认回复(接收或拒绝接收) MsgReceivedAck = 1002;
3、错误单独提升为一种消息类型 Error = 1003;
2、设备客户端授权类消息
1、设备(手机客户端、客服客户端)获取通信token请求 DeviceAuthReq = 1010;
2、设备(手机客户端、客服客户端)获取通信token响应 DeviceAuthRsp = 1011;
3、设备授权后退出(仅用于服务端内部) DeviceExitNotice = 1012;
4、账号强制下线通知 AccountForceOfflineNotice = 1013;
微信开发SDK,微信二次开发sdk,个人微信开发API
3、手机客户端上传的通知类消息
1、手机客户端微信上线通知 WeChatOnlineNotice = 1020;
2、手机客户端微信下线通知 WeChatOfflineNotice = 1021;
3、微信个人号新增好友通知 FriendAddNotice = 1022;
4、微信个人号移除好友通知 FriendDelNotice = 1023;
5、微信好友发来聊天消息 FriendTalkNotice = 1024;
6、任务执行结果通知 TaskResultNotice = 1025;
7、手机上回复好友的聊天消息 WeChatTalkToFriendNotice = 1026;
8、有好友请求添加好友的通知 FriendAddReqeustNotice = 1027;
9、手机端向服务端通知聊天执行结果 TalkToFriendTaskResultNotice = 1028;
10、图片或视频消息的详细内容结果 RequestTalkDetailTaskResultNotice = 1029;
11、上传手机客户端上微信的二维码 PullWeChatQrCodeTaskResultNotice = 1030;
12、手机上发送了朋友圈通知 CircleNewPublishNotice = 1031;
13、手机上删除朋友圈通知 CircleDelNotice = 1032;
14、手机检测到有人点赞/取消点赞通知 CircleLikeNotice = 1033;
15、手机检测到有人评论/删除朋友圈通知 CircleCommentNotice = 1034;
16、消息标记为已读 PostMessageReadNotice = 1035;
17、联系人信息上传 ContactsInfoNotice = 1036;
18、群聊新增通知 ChatRoomAddNotice = 1037;
19、联系人标签新增,修改通知 ContactLabelAddNotice = 1038;
20、收钱任务执行结果通知 TakeMoneyTaskResultNotice = 1039;
21、朋友圈图片上传 CircleDetailNotice = 1040;
22、群聊删除通知 ChatRoomDelNotice = 1041;
23、群聊信息变更通知 ChatRoomChangedNotice = 1042;
24、群二维码 PullChatRoomQrCodeTaskResultNotice = 1043;
微信开发SDK,微信二次开发sdk,个人微信开发API
4、服务端、客服客户端发给设备的指令类消息
1、给好友发消息任务 TalkToFriendTask = 1070;
2、发送朋友圈任务 PostSNSNewsTask = 1071;
3、主动添加好友任务 AddFriendsTask = 1072;
4、发送朋友圈任务后数据回传 PostSNSNewsTaskResultNotice = 1073;
5、删除朋友圈 DeleteSNSNewsTask = 1074;
6、客户端或者服务端接受好友请求通知 AcceptFriendAddRequestTask = 1075;
7、群发消息任务 WeChatGroupSendTask = 1076;
8、执行养号动作命令 WeChatMaintenanceTask = 1077;
9、请求图片或视频消息的详细内容 RequestTalkDetailTask = 1078;
10、服务端主动要求手机上传当前登录的微信二维码 PullWeChatQrCodeTask = 1079;
11、触发手机推送好友列表任务 TriggerFriendPushTask = 1080;
12、触发手机推送朋友圈列表任务 TriggerCirclePushTask = 1081;
13、朋友圈评论删除任务 CircleCommentDeleteTask = 1082;
14、朋友圈评论删除任务反馈 CircleCommentDeleteTaskResultNotice = 1083;
15、朋友圈评论回复任务 CircleCommentReplyTask = 1084;
16、朋友圈评论回复反馈 CircleCommentReplyTaskResultNotice = 1085;
17、通知手机将某个聊天窗口置为已读 TriggerMessageReadTask = 1086;
18、消息撤回 RevokeMessageTask = 1087;
19、转发消息 ForwardMessageTask = 1088;
20、通知手机推送聊天记录 TriggerHistoryMsgPushTask = 1089;
21、获取群聊二维码 PullChatRoomQrCodeTask = 1090;
微信开发SDK,微信二次开发sdk,个人微信开发API
5、服务端通知执行的命令
1、服务端通知pc客户版本升级 UpgradeAppNotice = 1093;
2、通知手机客户端软件升级 UpgradeDeviceAppNotice = 1094;
3、清粉任务 PostFriendDetectTask = 1095;
4、终止清粉任务 PostStopFriendDetectTask = 1096;
5、删除设备通知 PostDeleteDeviceNotice = 1097;
6、朋友圈点赞任务 PostMomentsPraiseTask = 1098;
7、停止朋友圈点赞任务 PostStopMomentsPraiseTask = 1099;
8、养号任务停止 PostStopWeChatMaintenanceTask = 1100;
9、修改备注任务 ModifyFriendMemoTask = 1101;
10、领取红包或转账 TakeLuckyMoneyTask = 1200;
11、获取指定好友朋友圈 PullFriendCircleTask = 1201;
12、获取朋友圈图片 PullCircleDetailTask = 1202;
13、单条朋友圈点赞任务 CircleLikeTask = 1203;
14、触发手机推送群聊列表 TriggerChatroomPushTask = 1210;
15、请求具体群聊的详细信息 RequestChatRoomInfoTask = 1211;
16、获取联系人详细信息(不一定是好友,如群聊成员) RequestContactsInfoTask = 1212;
17、群聊管理 ChatRoomActionTask = 1213;
18、群内加好友 AddFriendInChatRoomTask = 1214;
19、通讯录加好友 AddFriendFromPhonebookTask = 1215;
20、删除好友 DeleteFriendTask = 1216;
21、发红包 SendLuckyMoneyTask = 1217;
22、获取聊天消息的原始内容(主要是xml内容) RequestTalkContentTask = 1218;
23、返回聊天消息的原始内容 RequestTalkContentTaskResultNotice = 1219;
24、转发消息内容 ForwardMessageByContentTask = 1220;
微信开发SDK,微信二次开发sdk,个人微信开发API
6、手机端主动发出的交互类消息
1、手机端推送好友列表 FriendPushNotice = 2026;
2、手机端推送当前安装版本 PostDeviceInfoNotice = 2027;
3、手机端回传检测清粉好友数 PostFriendDetectCountNotice = 2028;
4、手机回传朋友圈数据 CirclePushNotice = 2029;
5、手机回传朋友圈点赞数量 PostMomentsPraiseCountNotice = 2030;
9、手机端推送群聊列表 ChatroomPushNotice = 2031;
7、手机端推送标签列表 ContactLabelInfoNotice = 2032;
8、推送历史消息 HistoryMsgPushNotice = 2033;
9、群成员(陌生人)信息 ChatRoomMembersNotice = 2034;
【聚客通】等等scrm都是基于这个微信sdk的API二次开发的。
github地址:https://www.wuliaokankan.cn/url301/138.html

2018-04-08 18:28:40 sinat_36553913 阅读数 818
  • 微信公众平台开发4-消息管理-微信开发php

    微信公众平台开发之消息管理是子恒老师《微信公众平台开发》视频教程的第4部。详细讲解了用php开发微信,对微信公众平台中的消息管理开发。内容包含微信关键字回复,多图文消息回复开发,接收图片消息,视频,小视频消息等等。欢迎反馈,微信/QQ:68183131

    6328 人正在学习 去看看 秦子恒

异常信息

将图文消息对象转换为xml时,格式出错

<xml>
  <ToUserName>oVICC0pcZLLPZUowr_wNAxiwTzeo</ToUserName>
  <FromUserName>gh_d6acc2ca6533</FromUserName>
  <CreateTime>1523177601677</CreateTime>
  <MsgType>news</MsgType>
  <ArticleCount>2</ArticleCount>
  <Articles>
    <item>                   // 这里出错  这是Articles类中item的list集合
      <com.example.vo.item>  // 出错这是集合中每个item类对象
        <Title>图文消息测试</Title>
        <Description>第一个</Description>
        <PicUrl>http://f.hiphotos.baidu.com/image/pic/item/8694a4c27d1ed21bfb91c832a66eddc450da3f89.jpg</PicUrl>
        <Url>https://www.baidu.com/</Url>
      </com.example.vo.item>
      <com.example.vo.item>
        <Title>图文消息测试</Title>
        <Description>第二个</Description>
        <PicUrl>http://f.hiphotos.baidu.com/image/pic/item/6159252dd42a283441d4d0dc50b5c9ea14cebff3.jpg</PicUrl>
        <Url>https://www.baidu.com/</Url>
      </com.example.vo.item>
    </item>
  </Articles>
</xml>

解决方法

网上查资料时,发现一种解决方法,是在根类中直接有一个item的list集合,省去了Articles类,通过这种方法发现,并没有解决问题
方法链接:https://www.cnblogs.com/cxchanpin/p/7208440.html
执行结果:

<xml>
  <ToUserName>oVICC0pcZLLPZUowr_wNAxiwTzeo</ToUserName>
  <FromUserName>gh_d6acc2ca6533</FromUserName>
  <CreateTime>1523179217834</CreateTime>
  <MsgType>news</MsgType>
  <ArticleCount>2</ArticleCount>
  <item>  // 这里为不同处
    <com.example.vo.item>
      <Title>图文消息测试</Title>
      <Description>第一个</Description>
      <PicUrl>http://f.hiphotos.baidu.com/image/pic/item/8694a4c27d1ed21bfb91c832a66eddc450da3f89.jpg</PicUrl>
      <Url>https://www.baidu.com/</Url>
    </com.example.vo.item>
    <com.example.vo.item>
      <Title>图文消息测试</Title>
      <Description>第二个</Description>
      <PicUrl>http://f.hiphotos.baidu.com/image/pic/item/6159252dd42a283441d4d0dc50b5c9ea14cebff3.jpg</PicUrl>
      <Url>https://www.baidu.com/</Url>
    </com.example.vo.item>
  </item>
</xml>

最后发现,使用xstream解析时,可以设置忽略节点和设置节点的别名

参考博文:https://www.cnblogs.com/fengmingyue/p/6084100.html

代码实现

 public static String messageToxml(BaseMessage message) {
        XStream xStream = new XStream();
//        xStream.alias("",List.class); // 将图文消息列表中的List类型指定为“”  经验证 这种方法不行
        xStream.addImplicitCollection(Articles.class,"item");//Articles类中的item 忽略
        xStream.alias("item",item.class);//将类的全限定名改为item
        xStream.alias("xml", message.getClass());
        return xStream.toXML(message);
    }

执行结果:

<xml>
  <ToUserName>oVICC0pcZLLPZUowr_wNAxiwTzeo</ToUserName>
  <FromUserName>gh_d6acc2ca6533</FromUserName>
  <CreateTime>1523180542636</CreateTime>
  <MsgType>news</MsgType>
  <ArticleCount>2</ArticleCount>
  <Articles>
    <item>
      <Title>图文消息测试</Title>
      <Description>第一个</Description>
      <PicUrl>http://f.hiphotos.baidu.com/image/pic/item/8694a4c27d1ed21bfb91c832a66eddc450da3f89.jpg</PicUrl>
      <Url>https://www.baidu.com/</Url>
    </item>
    <item>
      <Title>图文消息测试</Title>
      <Description>第二个</Description>
      <PicUrl>http://f.hiphotos.baidu.com/image/pic/item/6159252dd42a283441d4d0dc50b5c9ea14cebff3.jpg</PicUrl>
      <Url>https://www.baidu.com/</Url>
    </item>
  </Articles>
</xml>

个人微信开发API

阅读数 655

没有更多推荐了,返回首页