编辑: Mckel0ve | 2019-07-09 |
7moor.com/ 配置微信对接信息 说明: 接受消息地址:http消息接口,座席回复消息时,需要送到第三方,因此第三方需要有个入口来接收平台发过去的消息. 接受结束会话推送:开启后当座席结束会话时,推送会话结束事件. b、点击列表中的【配置说明】项 将会在【配置说明】中显示:
二、接受消息: 【客户发送消息请求接口】
1、协议: 字符集编码 utf-8 提交方式 post 类型 json 发消息地址 http://wechat.7moor.com/Icallback(配置说明中所写接口) 参数: 参数名称 是否必须 参数描述 参数作用 app_id 是 微信公众号标示 消息参数 open_id 是 微信用户的标示 nick_name 是 微信用户的昵称(无法获取nick_name可以使用open_id代替) msgType 是 消息类型: 文本:text 图片:image 语音:voice 视频:vodeo content 是 文本消息内容: //msgType = "text" mediaUrl 否 多媒体文件链接,图片、语音、视频类型时使用 timestamp 是 当前消息时间戳 加解密参数 nonce 是 随机数 msg_signature 是 签名 调用示例: 发送消息: { "app_id": "wx894f14bd8ab3d594", "content ": "哈哈", "msgType": "text", "nick_name ": "仰望星空", "open_id": "oBxq1wMfjWsDdDgHLRST6aiXqwas", "timestamp":1454299783079, "nonce" : "xxxxx", "msg_signature":"xxxxxxx" } 说明:对之上的消息需要对其进行签名,当用户配置微信对接时候,会生成一个token 详情见配置说明
三、发送消息: 【客户接收消息格式】
1、协议 字符集编码 utf-8 提交方式 json 类型 post 回消息地址 对接方的接收url 参数: 参数名称 是否必须 参数描述 参数作用 open_id 是 微信用户的标示(为避免与其他公众号的访客冲突,请务必使用微信的open_id) 消息参数 msgType 是 消息类型:文本:text,图片:image,语音:voice,视频:video,结束会话:finish content 是 文本消息内容或多媒体文件链接 timestamp 是 当前消息时间戳 加解密参数 nonce 是 随机数 msg_signature 是 签名 调用示例: 发送文本消息: { "open_id" : " toUser", "msgType" : "text", "content":"12345678", "timestamp" : 1454299783079, "nonce" : " xxxx", "msg_signature" : " xxxxxxx " } 说明:对得到的消息中的msg_signature签名也需要比对
四、签名算法: 当中需要的token值可从配置说明里获取. token timestamp nonce open_id 例1(Nodejs): var crypto = require('crypto');
var token = 'token';
var timestamp = (new Date()).getTime().toString();
var nonce = Math.random().toString();
var open_id = 'open_id';
var shasum = crypto.createHash('sha1');
var arr = [token, timestamp, nonce, open_id].sort();
shasum.update(arr.join(''));
var msg_signature = shasum.digest('hex').toLowerCase();
例2(Java): import java.security.MessageDigest;
import java.util.Arrays;
import java.util.Date;
public class test { public static void main(String[] args) { String token = "token";
String timestamp = Long.toString((new Date()).getTime());
String nonce = Double.toString(Math.random());
String open_id = "open_id";
// 排序 String[] arr = new String[] { token, timestamp, nonce, open_id };
Arrays.sort(arr);
// 拼接排序后的字符串 StringBuffer str_buff = new StringBuffer();
for (int i = 0;
i < arr.length;
i++) { str_buff.append(arr[i]);
} String str = str_buff.toString();
try { // 指定sha1算法 MessageDigest digest = MessageDigest.getInstance("SHA-1");