微信网页版接口【史塔克微信机器人】

微信网页版上所有的接口以及逻辑架构如下, 网页版上有的功能目前基本上都在如下。

网页版微信API如下,可查看具体实现案例:微信机器人史塔克
1.微信二维码登录
2.微信初始化
3.获取微信联系人信息
4.同步刷新微信
5.微信消息接口
6.微信发送表情
7.微信图片接口
8.微信多媒体接口
9.微信消息类型:文本消息、图片消息、小视频消息、地理位置消息、名片消息、语音消息、动画表情、音乐链接消息、普通链接或应用分享消息、群消息、红包消息、系统消息

weixinrobot

Web Weixin Pipeline

       +--------------+     +---------------+   +---------------+
       |              |     |               |   |               |
       |   Get UUID   |     |  Get Contact  |   | Status Notify |
       |              |     |               |   |               |
       +-------+------+     +-------^-------+   +-------^-------+
               |                    |                   |
               |                    +-------+  +--------+
               |                            |  |
       +-------v------+               +-----+--+------+      +--------------+
       |              |               |               |      |              |
       |  Get QRCode  |               |  Weixin Init  +------>  Sync Check  <----+
       |              |               |               |      |              |    |
       +-------+------+               +-------^-------+      +-------+------+    |
               |                              |                      |           |
               |                              |                      +-----------+
               |                              |                      |
       +-------v------+               +-------+--------+     +-------v-------+
       |              | Confirm Login |                |     |               |
+------>    Login     +---------------> New Login Page |     |  Weixin Sync  |
|      |              |               |                |     |               |
|      +------+-------+               +----------------+     +---------------+
|             |
|QRCode Scaned|
+-------------+

Web Weixin API

登录

API 获取 UUID
url https://login.weixin.qq.com/jslogin
method POST
data URL Encode
params appid:?应用ID
fun: new?应用类型
lang: zh_CN?语言
_:?时间戳

返回数据(String):

window.QRLogin.code = 200; window.QRLogin.uuid = "xxx"

注:这里的appid就是在微信开放平台注册的应用的AppID。网页版微信有两个AppID,早期的是wx782c26e4c19acffb,在微信客户端上显示为应用名称为Web微信;现在用的是wxeb7ec651dd0aefa9,显示名称为微信网页版。

 

API 绑定登陆(webwxpushloginurl)
url https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxpushloginurl
method GET
params uin: xxx

返回数据(String):

{'msg': 'all ok', 'uuid': 'xxx', 'ret': '0'}

通过这种方式可以省掉扫二维码这步操作,更加方便

 

API 生成二维码
url https://login.weixin.qq.com/l/?uuid
method GET

 

API 二维码扫描登录
url https://login.weixin.qq.com/cgi-bin/mmwebwx-bin/login
method GET
params tip: 1?未扫描?0?已扫描
uuid: xxx
_:?时间戳

返回数据(String):

window.code=xxx;

xxx:
	408 登陆超时
	201 扫描成功
	200 确认登录

当返回200时,还会有
window.redirect_uri="https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?ticket=xxx&uuid=xxx&lang=xxx&scan=xxx";

 

API webwxnewloginpage
url https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage
method GET
params ticket: xxx
uuid: xxx
lang: zh_CN?语言
scan: xxx
fun: new

返回数据(XML):

	0
	OK
	xxx
	xxx
	xxx
	xxx
	1

 

微信初始化

API webwxinit
url https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxinit?pass_ticket=xxx&skey=xxx&r=xxx
method POST
data JSON
header ContentType: application/json; charset=UTF-8
params {
BaseRequest: {
Uin: xxx,
Sid: xxx,
Skey: xxx,
DeviceID: xxx,
}
}

返回数据(JSON):

{
	"BaseResponse": {
		"Ret": 0,
		"ErrMsg": ""
	},
	"Count": 11,
	"ContactList": [...],
	"SyncKey": {
		"Count": 4,
		"List": [
			{
				"Key": 1,
				"Val": 635705559
			},
			...
		]
	},
	"User": {
		"Uin": xxx,
		"UserName": xxx,
		"NickName": xxx,
		"HeadImgUrl": xxx,
		"RemarkName": "",
		"PYInitial": "",
		"PYQuanPin": "",
		"RemarkPYInitial": "",
		"RemarkPYQuanPin": "",
		"HideInputBarFlag": 0,
		"StarFriend": 0,
		"Sex": 1,
		"Signature": "Apt-get install B",
		"AppAccountFlag": 0,
		"VerifyFlag": 0,
		"ContactFlag": 0,
		"WebWxPluginSwitch": 0,
		"HeadImgFlag": 1,
		"SnsFlag": 17
	},
	"ChatSet": xxx,
	"SKey": xxx,
	"ClientVersion": 369297683,
	"SystemTime": 1453124908,
	"GrayScale": 1,
	"InviteStartCount": 40,
	"MPSubscribeMsgCount": 2,
	"MPSubscribeMsgList": [...],
	"ClickReportInterval": 600000
}

 

API webwxstatusnotify
url https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxstatusnotify?lang=zh_CN&pass_ticket=xxx
method POST
data JSON
header ContentType: application/json; charset=UTF-8
params {
BaseRequest: { Uin: xxx, Sid: xxx, Skey: xxx, DeviceID: xxx },
Code: 3,
FromUserName:?自己ID,
ToUserName:?自己ID,
ClientMsgId:?时间戳
}

返回数据(JSON):

{
	"BaseResponse": {
		"Ret": 0,
		"ErrMsg": ""
	},
	...
}

 

获取联系人信息

API webwxgetcontact
url https://wx.qq.com/cgi-bin/mmwebwx-bin//webwxgetcontact?pass_ticket=xxx&skey=xxx&r=xxx
method POST
data JSON
header ContentType: application/json; charset=UTF-8

返回数据(JSON):

{
	"BaseResponse": {
		"Ret": 0,
		"ErrMsg": ""
	},
	"MemberCount": 334,
	"MemberList": [
		{
			"Uin": 0,
			"UserName": xxx,
			"NickName": "Urinx",
			"HeadImgUrl": xxx,
			"ContactFlag": 3,
			"MemberCount": 0,
			"MemberList": [],
			"RemarkName": "",
			"HideInputBarFlag": 0,
			"Sex": 0,
			"Signature": "你好,我们是地球三体组织。在这里,你将感受到不一样的思维模式,以及颠覆常规的世界观。而我们的目标,就是以三体人的智慧,引领人类未来科学技术500年。",
			"VerifyFlag": 8,
			"OwnerUin": 0,
			"PYInitial": "URINX",
			"PYQuanPin": "Urinx",
			"RemarkPYInitial": "",
			"RemarkPYQuanPin": "",
			"StarFriend": 0,
			"AppAccountFlag": 0,
			"Statues": 0,
			"AttrStatus": 0,
			"Province": "",
			"City": "",
			"Alias": "Urinxs",
			"SnsFlag": 0,
			"UniFriend": 0,
			"DisplayName": "",
			"ChatRoomId": 0,
			"KeyWord": "gh_",
			"EncryChatRoomId": ""
		},
		...
	],
	"Seq": 0
}

 

API webwxbatchgetcontact
url https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxbatchgetcontact?type=ex&r=xxx&pass_ticket=xxx
method POST
data JSON
header ContentType: application/json; charset=UTF-8
params {
BaseRequest: { Uin: xxx, Sid: xxx, Skey: xxx, DeviceID: xxx },
Count:?群数量,
List: [
{ UserName:?群ID, EncryChatRoomId: “” },

],
}

返回数据(JSON)同上

同步刷新

API synccheck
protocol https
host webpush.weixin.qq.com
webpush.wx2.qq.com
webpush.wx8.qq.com
webpush.wx.qq.com
webpush.web2.wechat.com
webpush.web.wechat.com
path /cgi-bin/mmwebwx-bin/synccheck
method GET
data URL Encode
params r:?时间戳
sid: xxx
uin: xxx
skey: xxx
deviceid: xxx
synckey: xxx
_:?时间戳

返回数据(String):

window.synccheck={retcode:"xxx",selector:"xxx"}

retcode:
	0 正常
	1100 失败/登出微信
selector:
	0 正常
	2 新的消息
	7 进入/离开聊天界面

 

API webwxsync
url https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxsync?sid=xxx&skey=xxx&pass_ticket=xxx
method POST
data JSON
header ContentType: application/json; charset=UTF-8
params {
BaseRequest: { Uin: xxx, Sid: xxx, Skey: xxx, DeviceID: xxx },
SyncKey: xxx,
rr:?时间戳取反
}

返回数据(JSON):

{
	'BaseResponse': {'ErrMsg': '', 'Ret': 0},
	'SyncKey': {
		'Count': 7,
		'List': [
			{'Val': 636214192, 'Key': 1},
			...
		]
	},
	'ContinueFlag': 0,
	'AddMsgCount': 1,
	'AddMsgList': [
		{
			'FromUserName': '',
			'PlayLength': 0,
			'RecommendInfo': {...},
			'Content': "", 
			'StatusNotifyUserName': '',
			'StatusNotifyCode': 5,
			'Status': 3,
			'VoiceLength': 0,
			'ToUserName': '',
			'ForwardFlag': 0,
			'AppMsgType': 0,
			'AppInfo': {'Type': 0, 'AppID': ''},
			'Url': '',
			'ImgStatus': 1,
			'MsgType': 51,
			'ImgHeight': 0,
			'MediaId': '', 
			'FileName': '',
			'FileSize': '',
			...
		},
		...
	],
	'ModChatRoomMemberCount': 0,
	'ModContactList': [],
	'DelContactList': [],
	'ModChatRoomMemberList': [],
	'DelContactCount': 0,
	...
}

 

消息接口

API webwxsendmsg
url https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxsendmsg?pass_ticket=xxx
method POST
data JSON
header ContentType: application/json; charset=UTF-8
params {
BaseRequest: { Uin: xxx, Sid: xxx, Skey: xxx, DeviceID: xxx },
Msg: {
Type: 1?文字消息,
Content:?要发送的消息,
FromUserName:?自己ID,
ToUserName:?好友ID,
LocalID:?与clientMsgId相同,
ClientMsgId:?时间戳左移4位随后补上4位随机数
}
}

返回数据(JSON):

{
	"BaseResponse": {
		"Ret": 0,
		"ErrMsg": ""
	},
	...
}
API webwxrevokemsg
url https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxrevokemsg
method POST
data JSON
header ContentType: application/json; charset=UTF-8
params {
BaseRequest: { Uin: xxx, Sid: xxx, Skey: xxx, DeviceID: xxx },
SvrMsgId: msg_id,
ToUserName: user_id,
ClientMsgId: local_msg_id
}

返回数据(JSON):

{
	"BaseResponse": {
		"Ret": 0,
		"ErrMsg": ""
	}
}

发送表情

API webwxsendmsgemotion
url https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxsendemoticon?fun=sys&f=json&pass_ticket=xxx
method POST
data JSON
header ContentType: application/json; charset=UTF-8
params {
BaseRequest: { Uin: xxx, Sid: xxx, Skey: xxx, DeviceID: xxx },
Msg: {
Type: 47?emoji消息,
EmojiFlag: 2,
MediaId:?表情上传后的媒体ID,
FromUserName:?自己ID,
ToUserName:?好友ID,
LocalID:?与clientMsgId相同,
ClientMsgId:?时间戳左移4位随后补上4位随机数
}
}

 

图片接口

API webwxgeticon
url https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgeticon
method GET
params seq:?数字,可为空
username:?ID
skey: xxx

 

API webwxgetheadimg
url https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetheadimg
method GET
params seq:?数字,可为空
username:?群ID
skey: xxx

 

API webwxgetmsgimg
url https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetmsgimg
method GET
params MsgID:?消息ID
type: slave?略缩图?or?为空时加载原图
skey: xxx

 

多媒体接口

API webwxgetvideo
url https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetvideo
method GET
params msgid:?消息ID
skey: xxx

 

API webwxgetvoice
url https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetvoice
method GET
params msgid:?消息ID
skey: xxx

 

账号类型

类型 说明
个人账号 以@开头,例如:@xxx
群聊 以@@开头,例如:@@xxx
公众号/服务号 以@开头,但其VerifyFlag?& 8 != 0

VerifyFlag:
一般个人公众号/服务号:8
一般企业的服务号:24
微信官方账号微信团队:56

特殊账号 像文件传输助手之类的账号,有特殊的ID,目前已知的有:
filehelper,?newsapp,?fmessage,?weibo,?qqmail,?tmessage,?qmessage,?qqsync,?floatbottle,?lbsapp,?shakeapp,?medianote,?qqfriend,?readerapp,?blogapp,?facebookapp,?masssendapp,?meishiapp,?feedsapp,?voip,?blogappweixin,?weixin,?brandsessionholder,?weixinreminder,?officialaccounts,?notification_messages,?wxitil,?userexperience_alarm,?notification_messages

 

消息类型

消息一般格式:

{
	"FromUserName": "",
	"ToUserName": "",
	"Content": "",
	"StatusNotifyUserName": "",
	"ImgWidth": 0,
	"PlayLength": 0,
	"RecommendInfo": {...},
	"StatusNotifyCode": 4,
	"NewMsgId": "",
	"Status": 3,
	"VoiceLength": 0,
	"ForwardFlag": 0,
	"AppMsgType": 0,
	"Ticket": "",
	"AppInfo": {...},
	"Url": "",
	"ImgStatus": 1,
	"MsgType": 1,
	"ImgHeight": 0,
	"MediaId": "",
	"MsgId": "",
	"FileName": "",
	"HasProductId": 0,
	"FileSize": "",
	"CreateTime": 1454602196,
	"SubMsgType": 0
}

 

MsgType 说明
1 文本消息
3 图片消息
34 语音消息
37 好友确认消息
40 POSSIBLEFRIEND_MSG
42 共享名片
43 视频消息
47 动画表情
48 位置消息
49 分享链接
50 VOIPMSG
51 微信初始化消息
52 VOIPNOTIFY
53 VOIPINVITE
62 小视频
9999 SYSNOTICE
10000 系统消息
10002 撤回消息

 

微信初始化消息

MsgType: 51
FromUserName: 自己ID
ToUserName: 自己ID
StatusNotifyUserName: 最近联系的联系人ID
Content:


<msg>
<op id='4'>
<username>
// 最近联系的联系人
filehelper,xxx@chatroom,wxid_xxx,xxx,...
</username>
<unreadchatlist>
<chat>
<username>
// 朋友圈
MomentsUnreadMsgStatus
</username>
<lastreadtime>
1454502365
</lastreadtime>
</chat>
</unreadchatlist>
<unreadfunctionlist>
// 未读的功能账号消息,群发助手,漂流瓶等
</unreadfunctionlist>
</op>
</msg>

 

文本消息

MsgType: 1
FromUserName: 发送方ID
ToUserName: 接收方ID
Content: 消息内容

图片消息

MsgType: 3
FromUserName: 发送方ID
ToUserName: 接收方ID
MsgId: 用于获取图片
Content:

<msg>
<img length="6503" hdlength="0" />
<commenturl></commenturl>
</msg>

小视频消息

MsgType: 62
FromUserName: 发送方ID
ToUserName: 接收方ID
MsgId: 用于获取小视频
Content:

<msg>
<img length="6503" hdlength="0" />
<commenturl></commenturl>
</msg>

地理位置消息

MsgType: 1
FromUserName: 发送方ID
ToUserName: 接收方ID
Content: http://weixin.qq.com/cgi-bin/redirectforward?args=xxx
// 属于文本消息,只不过内容是一个跳转到地图的链接

名片消息

MsgType: 42
FromUserName: 发送方ID
ToUserName: 接收方ID
Content:

<?xml version="1.0"?>
<msg bigheadimgurl="" smallheadimgurl="" username="" nickname="" shortpy="" alias="" imagestatus="3" scene="17" province="" city="" sign="" sex="1" certflag="0" certinfo="" brandIconUrl="" brandHomeUrl="" brandSubscriptConfigUrl="" brandFlags="0" regionCode="" />

RecommendInfo:
	{
		"UserName": "xxx", // ID
		"Province": "xxx", 
		"City": "xxx", 
		"Scene": 17, 
		"QQNum": 0, 
		"Content": "", 
		"Alias": "xxx", // 微信号
		"OpCode": 0, 
		"Signature": "", 
		"Ticket": "", 
		"Sex": 0, // 1:男, 2:女
		"NickName": "xxx", // 昵称
		"AttrStatus": 4293221, 
		"VerifyFlag": 0
	}

语音消息

MsgType: 34
FromUserName: 发送方ID
ToUserName: 接收方ID
MsgId: 用于获取语音
Content:


<msg>
<voicemsg endflag="1" cancelflag="0" forwardflag="0" voiceformat="4" voicelength="1580" length="2026" bufid="216825389722501519" clientmsgid="49efec63a9774a65a932a4e5fcd4e923filehelper174_1454602489" fromusername="" />
</msg>

动画表情

MsgType: 47
FromUserName: 发送方ID
ToUserName: 接收方ID
Content:


<msg>
<emoji fromusername = "" tousername = "" type="2" idbuffer="media:0_0" md5="e68363487d8f0519c4e1047de403b2e7" len = "86235" productid="com.tencent.xin.emoticon.bilibili" androidmd5="e68363487d8f0519c4e1047de403b2e7" androidlen="86235" s60v3md5 = "e68363487d8f0519c4e1047de403b2e7" s60v3len="86235" s60v5md5 = "e68363487d8f0519c4e1047de403b2e7" s60v5len="86235" cdnurl = "http://emoji.qpic.cn/wx_emoji/eFygWtxcoMF8M0oCCsksMA0gplXAFQNpiaqsmOicbXl1OC4Tyx18SGsQ/" designerid = "" thumburl = "http://mmbiz.qpic.cn/mmemoticon/dx4Y70y9XctRJf6tKsy7FwWosxd4DAtItSfhKS0Czr56A70p8U5O8g/0" encrypturl = "http://emoji.qpic.cn/wx_emoji/UyYVK8GMlq5VnJ56a4GkKHAiaC266Y0me0KtW6JN2FAZcXiaFKccRevA/" aeskey= "a911cc2ec96ddb781b5ca85d24143642" ></emoji>
<gameext type="0" content="0" ></gameext>
</msg>

普通链接或应用分享消息

MsgType: 49
AppMsgType: 5
FromUserName: 发送方ID
ToUserName: 接收方ID
Url: 链接地址
FileName: 链接标题
Content:


<msg>
<appmsg appid="" sdkver="0">
<title></title>
<des></des>
<type>5</type>
<content></content>
<url></url>
<thumburl></thumburl>
...
</appmsg>
<appinfo>
<version></version>
<appname></appname>
</appinfo>
</msg>

音乐链接消息

MsgType: 49
AppMsgType: 3
FromUserName: 发送方ID
ToUserName: 接收方ID
Url: 链接地址
FileName: 音乐名

AppInfo: // 分享链接的应用
	{
		Type: 0, 
		AppID: wx485a97c844086dc9
	}

Content:


<msg>
<appmsg appid="wx485a97c844086dc9" sdkver="0">
<title></title>
<des></des>
<action></action>
<type>3</type>
<showtype>0</showtype>
<mediatagname></mediatagname>
<messageext></messageext>
<messageaction></messageaction>
<content></content>
<contentattr>0</contentattr>
<url></url>
<lowurl></lowurl>
<dataurl>
http://ws.stream.qqmusic.qq.com/C100003i9hMt1bgui0.m4a?vkey=6867EF99F3684&guid=ffffffffc104ea2964a111cf3ff3edaf&fromtag=46
</dataurl>
<lowdataurl>
http://ws.stream.qqmusic.qq.com/C100003i9hMt1bgui0.m4a?vkey=6867EF99F3684&guid=ffffffffc104ea2964a111cf3ff3edaf&fromtag=46
</lowdataurl>
<appattach>
<totallen>0</totallen>
<attachid></attachid>
<emoticonmd5></emoticonmd5>
<fileext></fileext>
</appattach>
<extinfo></extinfo>
<sourceusername></sourceusername>
<sourcedisplayname></sourcedisplayname>
<commenturl></commenturl>
<thumburl>
http://imgcache.qq.com/music/photo/album/63/180_albumpic_143163_0.jpg
</thumburl>
<md5></md5>
</appmsg>
<fromusername></fromusername>
<scene>0</scene>
<appinfo>
<version>29</version>
<appname>摇一摇搜歌</appname>
</appinfo>
<commenturl></commenturl>
</msg>

群消息

MsgType: 1
FromUserName: @@xxx
ToUserName: @xxx
Content:
	@xxx:<br/>xxx

红包消息

MsgType: 49
AppMsgType: 2001
FromUserName: 发送方ID
ToUserName: 接收方ID
Content: 未知

注:根据网页版的代码可以看到未来可能支持查看红包消息,但目前走的是系统消息,见下。

系统消息

MsgType: 10000
FromUserName: 发送方ID
ToUserName: 自己ID
Content:
	"你已添加了 xxx ,现在可以开始聊天了。"
	"如果陌生人主动添加你为朋友,请谨慎核实对方身份。"
	"收到红包,请在手机上查看"

Recent Update

  • association_login 目前网页版微信已经可以脱离扫码,但是依然需要在客户端进行确认登录。

Demo

注意!和你微信聊天的最大骗局

什么情况下会被骗?

前几天无意收到微信许久未联系的好友的一条问候消息,在感叹物欲横流的社会之中,特别的意外和惊喜,人间自有真情在,还是会有真挚的那个朋友会一直记得你。收到消息,立马回复,嘻嘻哈哈聊得越来越火热。直到… 朋友晒出了朋友圈 “原来微信机器人也这么厉害,把失散多年的兄弟给找回来了”,奇怪的是还贴出了他和我的聊天截图。 一琢磨,我去!原来我和机器人在聊天!!!

openstax

天真的你,如何防骗?

竟然还有这么强大功能的微信机器人,我也必须玩一玩,几经研究,找到了开启微信机器人的方法如下:

  • 第一步,使用电脑打开史塔克微信机器人登录网址: http://open.bywei.cn/stax/index
  • 第二步使用微信扫一扫(注意:非使用手机的长按二维码方法),因为机器人将获取微信相关的权限,机器人庞大的后勤服务器在四处,会提示异地登录风险,属于正常现象,完全不用担心
    openstaxlogin
  • 第三步,等待登录成功后,微信聊天列表上方会提示已经登录成功。点击可随时退出。 使用技巧:
    1)找到自己的微信聊天窗口(自己和自己聊天),输入:我回来了, 我走了。 可以控制史塔克机器人是否自动响应微信好友消息。
    2)别人不想和机器人聊天,可输入:不爱史塔克了
    3)可以在自己和自己的聊天窗口或者其他微信好友咨询机器人各种问题,天气预报,查快递,问各种知识
    openstaxloginok

应用场景

史塔克机器人是一款具备个性化身份属性特征、满足不同场景多轮对话及上下文对话的人工智能机器人,可对话式交互。

场景 具体说明
微信/QQ 微信/QQ群、公众号用户管理、自动回复、粉丝活跃;
二次元形象 赋予二次元IP人工智能,让二次元IP具备人工生命;
语音助手 快速打造你的专属语音助手,功能不亚于iPhone Siri;
儿童机器人 让机器人快速拥有5~7岁的儿童语言对话能力;
商用机器人 让机器人快速拥有接近常人的语言对话能力;
智能硬件 让智能硬件快速拥有接近常人的语言对话能力;

参与贡献

  1. 提交评论
  2. 提出建议
  3. 分享好友
  4. 体验使用

关于作者

bywei = 程序员百味

个人博客 = “http://www.bywei.cn

用户协议

  • 禁止用户在使用中触犯中国法律范围内的任何法律条文。
  • 不通过出售任何以此项目为基础开发的产品,仅用作自身学习研究使用。
  • 任何个人,公司和组织不得以任何形式和目的侵犯百味博客的版权和著作权。
  • 在未经官方书面允许的情况下,任何个人、公司和组织不能单方面发布和出售以此项目为基础开发的任何互联网软件或者产品,否则将视为侵权行为,将依照中华人民共和国法律追究其法律责任。

企业微信开发JAVA源码框架[weiwork]

weiwork 项目介绍

微信企业号管理系统 Java企业微信开发源码框架,获取AccessToken,发送消息 . 当前应用于公司的企业微信监控报警系统.列表

微信企业号管理系统源码框架

  1. 使用springboot框架
  2. 基础签名验证,附加强加密算法jar
  3. 获取accessToken
  4. 发送消息
  5. 扩展对接其他系统(联系开发者定制)
扩展系统 扩展功能说明
表单流程 通过表单设计器及流程引擎 快速搭建企业工作流 费控报销
费控报销 自动生成报销单,随时随地 审批,缩短员工报销周期 会议助手
会议助手 会议室查询预定、一键通知 开会人员,微信会议签到 移动外勤
移动外勤 快速联系,跨部门沟通快速 联系,跨部门沟通 培训学习
培训学习 搭建移动培训平台,员工随 时随地可以进行学习 考试评测
考试评测 支持自建题库、系统智能出 卷、改卷,成绩自动统计
新闻公告 新闻公告消息通告、员工生日周年关 怀、微信工资条发放
开放API 定制开发应用API,方便与 其他OA、CRM、ERP、财务 系统进行集成

扩展对接系统演示

扩展系统

开源地址:https://github.com/bywei/weiwork

参与贡献

  1. Fork 本项目
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request

关于作者

bywei = 程序员百味

个人博客 = “http://www.bywei.cn

用户协议

  • 禁止用户在使用中触犯中国法律范围内的任何法律条文。
  • 不通过出售任何以此项目为基础开发的产品,仅用作自身学习研究使用。
  • 任何个人,公司和组织不得以任何形式和目的侵犯百味博客的版权和著作权。
  • 在未经官方书面允许的情况下,任何个人、公司和组织不能单方面发布和出售以此项目为基础开发的任何互联网软件或者产品,否则将视为侵权行为,将依照中华人民共和国法律追究其法律责任。

工作不开心的十大原因,你属于哪一种?

图/来自网络

前几日,一条重磅消息震动了江苏商界。南京万达茂“六一”盛大开业后,总经理徐毓女士却突然坠楼离世。其中有一条网络传言:总经理徐毓女士坠楼前和人事约谈,怀疑工作不开心,导致做出跳楼的举动。不管事实是否是因为工作上的原因,能做出这么惊人的举动,让人不得不感叹 要是工作做得不开心,会产生的影响该多大?像徐毓这种从业人员工作繁忙,任务繁重,节奏紧凑,压力大,出差是家常便饭,其中的心酸只有经历过的人才能体会,身心在长期高强度负荷下往往容易崩溃,如果不懂得自我调节,就会出问题。总结了如下十条工作不开心的原因,希望能适时调整自己,改变心态,早时规避发生不好的结果吧。

个人职业兴趣和当前工作内容不相符

据专家分析,“多数人并不清楚自己的兴趣和潜力所在,当工作做的得不快乐时,一味强调是自己的能力或个性不能胜任这份工作,却没有考虑过这份工作究竟是不是自己的兴趣所在。这是导致工作越来越不快乐的首要原因。

有一个不靠谱的领导

跟随一个对下属不好的领导工作,一般你就是一个领导执行工作的机器,很难有发挥空间的工作;这种领导的原则通常比较强,在领导的眼里没有什么特殊的案例,只要是下属出现了错误,那肯定就是严格按照制度惩罚,虽然说能够带出一个竞争力强的团队,但是下属们已经失去了尊严和感情,由于大家都像机器一样运转,一旦工作上出现错误,就要面临严格的惩罚,导致大家都不喜欢这样的工作氛围;在这种团队中,你一年后的工作内容,仍然会与今天相同,对你的能力增长也是没有多大帮助的;因此,跟着这种领导工作,是对自己严重不利的,大家还是在工作中谨慎些,与领导保持距离的好。

不要试图去强硬改变你的领导,他的想法和行为方式很可能是根深蒂固的。总是想着要去改变他,可能最后你累他也累,他还会觉得你是在找事,试想如果你是领导会替总是跟自己对着干的员工说好话吗,现实点说人在屋檐下不得不低头。

有思想抱负、有想法的人

每个人都是一个独立的个体,难免会有各种各样的想法,行为习惯,风格也不尽相同。做事也是一样。要是领导布置了一些任务,明摆着的会有更合适、更合理的选择方案。但碍于各种涂于表面的东西,也会顽于固守。遇到这种情况,相信明眼聪慧的人都会心有不甘。感觉自己像傻子一样做着只有傻子才会做的事情。日子越久,内心就越向往更有意义的工作。至少不是越做越傻。

做违背自己意愿的事

很多时候,人们会觉得无力改变又不能离开,就只有一味地妥协。也许刚开始还试图努力改变,最后觉得被现实打败,只剩下混日子。最后这个公司成为了消磨意志的场所,而这个不靠谱的领导成为了你给自己找的借口。最终变成了你最不想成为的样子。

工作繁重,加班多

每天做着大量而重复的工作,很累,而且没有时间去总结和思考,更没有时间去和他人沟通、交往。我感觉这样做事情只会和民工落得同样下场:就是累死累活也不会有什么出息。

福利待遇跟自己的期望值不匹配

有人工作为理想,有为成就感,有为打发时间,相信有跟多的一批人都是不得不面对生活物质的追求,靠着微薄的一份工资支付各种各样的开销。生活压力这么大,累死累活学习成长,不就为了多拿点儿工资,待遇好点儿,福利多点儿,干起活儿来就心里得劲儿。要是呆了几年的公司,大家也肯定你的才华能力,但上面的领导就是不给你涨薪;要是公司没钱,发不起工资;要是跳槽换工作,少你一半儿期望;真要是遇到上面这些情况,内心必定犹如刀割,惶恐不安。

做的事情得不到肯定

工作认真负责是基本的职责所在,原本自己可以轻松自在的去做,也可以做得更好。但是就算尽心尽力去做事却还是得不到领导的肯定。和其他同事比较起来,自己做的也能得到同事们的认可,在上级领导眼里有可能根本就不会在意,不会注意到这些。

没有上升空间,看不到希望

工作七八年,你一直在同样的岗位上徘徊不前。上面的领导不下位,你也上不去。遇到这样尴尬的境地肯定很多。奋斗这么多年,不就盼着那天上升到经理、总监职位么?不就为了那点儿荣誉成就感么?

死气沉沉,负面的工作氛围

温水煮青蛙的工作环境,可能当时很舒服,要是哪天你突然醒悟清醒,恨不得时光倒退三百年,人生从头来过。

还有一种氛围是我所不齿的,也最痛恨最无赖的:办公室政治。我们俗称“搞事”,那种不以解决问题为目的的做事方法,致力于怎么把责任推脱掉,怎么让某人在公司无法生存。常言道,有人就有江湖,江湖文化的好坏其实就是企业文化的体现。林子大了,总会有那么几坨屎特别丑!

综上所有的导致工作不开心的各种原因,重点还是在改变自己,改变心态,让自己提升到更高的一个层次,悟出其中的真理。更重要的是不管你从事何种行业,不能像万达总经理一样,衷心希望每一位都能好好爱护自己,善待自己,珍惜生命,笑对生活。


本文由百味博客原创, www.bywei.cn 首发

产品设计运营之道:如何实现从0涨粉100万?

如何实现从0涨粉100万?相信这是广大企业、自媒体人士的苦恼问题。

以前我关注互联网软件研发功能居多,突然发现一门心思研究技术功能,自己的微信公众号、个人博客、个人小程序就像一只蜈蚣,长了很多的足,却怎么也跑不起来。

后来接触到了自媒体运营相关的课程,彻底改变了我的想法,微信公众号也从零星的几个亲戚朋友访问到用户暴涨的状态,今天特分享出来,帮助更多类似的运营朋友,希望你们有所收获!

相关的学习资料已整理到个人微信公众号上。借之前老师分享图片,扫描二维码,关注后并回复【产品设计】即可学习:

产品设计

如何利用免费邮件群发软件做到精准邮件营销推广

今天介绍关于邮件营销推广工具,俗称EDM营销工具,邮件群发软件。翻看市场上邮件群发软件繁多,各种收费限制,功能功能限制,以此萌发了以自己软件工程专业知识开发一款完全免费邮件群发软件分享。

该邮件群发软件已上传到github代码开源分享社区。可以免费下载安装使用,有任何疑问或建议可以在本博客评论区留言,谢谢!

 免费邮件群发软件简介

该邮件群发软件简称钱龙邮件群发,技术使用C#+Web协调运行机制,本地邮件服务将作为临时测试使用,正式运行请添加正式的邮件服务。 screenshot

发送效果演示

最新版界面UI

免费邮件群发软件
钱龙邮件群发软件界面

软件版本说明

Qianlongsoft_email_v2.5.1
1.修复个人信息界面
增加了邮件群发技巧教程
增加了邮件统计链接
修复了刷新信息产生的多个icon
2.修复编辑邮件时插入代码问题
3.修复发件统计代码,使其自动化识别链接地址

Qianlongsoft_email_v2.5.0
1.增加企业邮箱服务器
smtp1.qianlongsoft.com
smtp2.qianlongsoft.com
smtp3.qianlongsoft.com
smtp4.qianlongsoft.com
smtp5.qianlongsoft.com
smtp6.qianlongsoft.com
2.修改软件风格样式,增加用户体验
3.修改v2.3.4遗留的发送时间问题
4.去掉试用用户的邮件广告
Qianlongsoft_email_v2.3.4
1.在收件人管理里面添加删除发送成功的收件人
2.增加钱龙smtp服务器
3.增加邮件编辑日期变量
4.增加html在线编辑器
5.修改登录界面特效

V2.3.2升级记录
1.当软件登录帐号被锁定,设置五分钟后可自动登录
2.设置测试一封只能测试前二十个发件人
3.邮件标题使用 ‘|’分割,可以添加多个标题,发送时随机选择标题

V2.3.2升级记录
–失败的右键重新发送

Qianlongsoft_email_v2.3.2 升级日志
1.增加导入收件人完成后的提示信息
2.提升导入收件人速度
3.修改切换界面显示花屏问题
4.增加删除发发送的时候箱
5.隐藏smtp地址
6.卸载不干净
7.兼容w7 jet

V2.3.1升级记录
1.增加了来源邮箱的统计分析,结合在线邮件营销跟踪系统

V2.3.0升级记录
1.增加了在线邮件营销效果跟踪,已经实现了在线申请软件帐号,在线管理个人资料信息,邮件内部链接统计分析等功能。
[Web管理项目](https://github.com/bywei/qianlong-email-marketing-assistant)
2.修改用户登录记录,每次只能登录一个用户。防止帐号多个地方登录。

V2.0.0升级记录
1.邮件时间配置
2.登录大小写问题
3.注册中文问题
4.发件配置:购买企业版发件邮箱和链接
5.登录界面广告
6.邮件内容广告
7.批量生成发邮箱的小号
8.测试一封大于10使用list列表
9.邮件发送机制:
构建线程池
(1)一封邮件发送失败后,临时保存
–(2)连续发送失败3封后更换发件人
–(4)连续发送(用户自定义发送N封)封后睡眠一会儿
–(5)通过主线程来控制发送的排序(发送到什么地方了)
–(6)生成子线程来控制连续发送几封邮件(控制(4))
–(7)如果发件人循环完毕,就(更换ip),再重新循环发送
(8)运行完毕之后,进行失败项的第二次发送
–(9)用户自定义发送N封邮件后换发件人
(10)内容中间添加白色字符和宏变量
–(11)如果用户没有自定义邮件发送邮件数量=>采用平均分配 发件人
(12)记录已经发送的位置
10.把广告放入到数据库中,一次性读取

关于作者

bywei = 程序员百味

个人博客 = “http://www.bywei.cn

用户协议

  • 禁止用户在使用中触犯中国法律范围内的任何法律条文。
  • 不通过出售任何以此邮件群发软件为基础开发的产品,仅用作自身学习研究使用。
  • 任何个人,公司和组织不得以任何形式和目的侵犯百味博客邮件群发软件的版权和著作权。
  • 在未经官方书面允许的情况下,任何个人、公司和组织不能单方面发布和出售以此邮件群发软件为基础开发的任何互联网软件或者产品,否则将视为侵权行为,将依照中华人民共和国法律追究其法律责任。

微信小程序:百味博客音乐播放器项目开源

微信小程序

微信小程序:百味博客音乐播放器项目介绍

百味博客音乐播放器小程序示例源代码, 自动连播,使用后端接口数据。

项目开源地址:https://github.com/bywei/wxapp-music 

该小程序为针对light-music提供的源码进行优化改进

  • 修复播放时间会出现毫秒显示问题
  • 修复分享音乐播放问题
  • 增加自动连播功能
  • 优化界面列表导航位置到左边,并增加列表返回按钮(原右边和微信小程序自带的按钮重叠)
  • 使用全屏显示播放器
  • 修改播放器风格
  • 增加使用api获取音乐列表

感谢原作者:https://github.com/facejiong/light-music-wechat-mini-programs

修改后的演示

播放 列表

参与贡献

  1. Fork 本项目
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request

关于作者

bywei = 程序员百味

个人博客 = “http://www.bywei.cn

用户协议

  • 禁止用户在使用中触犯中国法律范围内的任何法律条文。
  • 不通过出售任何以此小程序模板为基础开发的产品,仅用作自身学习研究使用。
  • 任何个人,公司和组织不得以任何形式和目的侵犯百味博客小程序示例的版权和著作权。
  • 在未经官方书面允许的情况下,任何个人、公司和组织不能单方面发布和出售以此小程序模板为基础开发的任何互联网软件或者产品,否则将视为侵权行为,将依照中华人民共和国法律追究其法律责任。

免费图库WordPress插件开源分享

图片免费外链

百味免费图库插件

该插件让你直接在编辑器页面上传图片到免费服务器
上传完成后自动在编辑器中添加图片
功能简单方便

wordpress图片外链插件 wordpress图片外链插件 插件演示 插件演示

安装

  • 上传 free-picture-links目录 到 /wp-content/plugins/ 目录
  • 在后台插件菜单激活该插件
  • 在后台设置设置

开源地址

https://github.com/bywei/free-picture-links

其他百味博客开源项目:https://www.bywei.cn/github

关于作者

bywei = 程序员百味

个人博客 = “http://www.bywei.cn

用户协议

  • 禁止用户在使用中触犯中国法律范围内的任何法律条文。
  • 不通过出售任何以此项目为基础开发的产品,仅用作自身学习研究使用。
  • 任何个人,公司和组织不得以任何形式和目的侵犯百味博客的版权和著作权。
  • 在未经官方书面允许的情况下,任何个人、公司和组织不能单方面发布和出售以此项目为基础开发的任何互联网软件或者产品,否则将视为侵权行为,将依照中华人民共和国法律追究其法律责任。

3步搞定你的年度落地计划

只需3步搞定你的年度落地计划,为目标奋斗。
3步搞定你的年度落地计划
职业发展:在我们目前的岗位上,如何精进和成长
财务状况:很简单,就是管理好自己的收支情况,投资理财等方面
个人健康:比如运动、饮食、生活作息等身体方面的事情,心理健康也包括
家庭生活:对亲人的陪伴是家庭下一年度的大事。如果你已经结婚,就是指你的小家庭(丈夫/妻子及孩子);如果还没结婚,就是指和父母的
重要他人:闺蜜、兄弟等不是亲人却是不可失去的人,都可以纳入这个范围,看看与他们相处的情况如何;若你已结婚,父母也在这个范围内
娱乐休闲:就是业余的爱好,吃喝玩乐等,让自己特别放松的事情
个人成长:比职业发展的范围更广,指的是通用能力和综合素质的提升,如读书、写作、学英语、参加培训课程等
自我实现:这是关于梦想的,也许和工作有关也许无关,但能发挥我们的天赋,实现价值的事情。如完成全程马拉松、八块腹肌等。

详细内容可具体查询演示PDF文稿。评论并分享本博文后,发截图给博主微信【jiaivr】索要ppt下载链接
3步搞定目标

腾讯云免费ssl证书nginx配置

免费https百味博客从独立VPS迁移到腾讯云服务器后,发现腾讯有一年免费的ssl证书,发现好多童鞋都是用了。为提升博客安全/专业,今天闲暇时间也做了相关配置。具体操作形式比较简单,在腾讯云后台按照指引进行申请证书。

提供的免费TrustAsiaSSL 证书如下:
TrustAsia 是亚数信息科技(上海)有限公司应用于信息安全领域的品牌。包括国际第一 Symantec 数字证书、代码签名证书,技术支持与售后服务等,还拥有世界领先的 TrustAsia 自主知识产权的 SSL 证书 MPKI? 管理平台、SSL 证书云安全(SSLCloud?)监控检测平台,以及先进的“加密无处不在”网络安全综合解决方案、密钥保护安全解决方案等一系列网络信息安全管理解决方案。

证书审核通过后下载证书压缩包,压缩包内有Apache/Tomcat/nginx等所需证书文件,百味博客使用的是nginx,故选择nginx证书上传到服务器目录:/data/server/nginx/ssl/;
然后修改百味博客nginx的配置文件部分如下即可.

#实现了三种场景的配置
   
   #访问顶级域名bywei.cn跳转到www.bywei.cn域名
   server {
        listen       80;
        server_name  bywei.cn;
        return       301 https://www.bywei.cn$request_uri;
   }
  
   #访问非https域名跳转到https://www.bywei.cn
   server {
        listen       80;
        server_name  www.bywei.cn;
        rewrite ^ https://$http_host$request_uri? permanent;    # force redirect http to https
        #return 301 https://$http_host$request_uri;
   }
  
  #https证书支持
   server {
        listen       443 ssl;
        server_name  www.bywei.cn;
        #禁用返回服务器版本信息
        server_tokens off;
        
        #配置证书文件路径
        ssl_certificate /data/server/nginx/ssl/1_www.bywei.cn_bundle.crt;
        ssl_certificate_key /data/server/nginx/ssl/2_www.bywei.cn.key;
  }
  
  #百味博客使用wordpress,故添加fastcgi_param配置
  location ~ \.php(.*)$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param  PATH_INFO  $fastcgi_path_info;
            fastcgi_param  PATH_TRANSLATED  $document_root;
            fastcgi_param   HTTPS               on;
            fastcgi_param   HTTP_SCHEME         https;
            include        fastcgi_params;
   }

百味博客增加Https访问演示效果:https://www.bywei.cn