HTTPS
https://www.yunzhijia.com/pubacc/pubsend
POST
Content-Type: application/json
请求body参数使用符合JSON
规格的数据交换格式,默认的字符编码格式为UTF-8
格式。
消息内容由消息的发送发、接收方、消息类型、身份认证签名等不可见信息以及发布内容等可见信息组成。
{
"from":"发送方信息,格式为JSON对象",
"to":"接收方信息,格式为包含一至多个接收方信息JSON对象的JSON数组",
"type":"消息类型,格式为整型",(取值 2:单文本,5:文本链接,6:图文链接)
"msg":"发布到讯通的消息内容,格式为JSON对象"
}
{
"no":"发送方企业的企业注册号(eid),格式为字符串",
"pub":"发送使用的公共号ID,格式为字符串",
"time":"发送时间,为'currentTimeMillis()以毫秒为单位的当前时间'的字符串或数字",
"nonce":"随机数,格式为字符串或数字",
"pubtoken":"公共号加密串,格式为字符串。"
}
如果您是isv伙伴可以在创建轻应用界面查看pubid,pubsercet;
如果您是企业内部轻应用可以登录云之家公共服务平台查看,详细请参考此页FAQ;
公共号密钥验证规则pubtoken=sha(no,pub,pubsercet,nonce,time)
,示例代码参见此页公共号密钥验证规则
[
{
"no":"接收方企业的企业注册号(eID),格式为字符串",
"user":"接收方的用户ID,格式为包含OPENID的JSON数组"
},
{
……
},
……
]
其中,”to”:[] 表示所有订阅的企业和用户。(企业自建公共号此参数不起作用);
其中,”to”:[{“no”:“10001”,”code”:“all”},{“no”:“10002”,”code”:“all”}….] 表示企业10001,10002所有订阅的用户。”code”:“all”一定不要漏,否则报错;
其中,”to”:[{“no”:“10001”,”user”:[“1”,”2”]},{“no”:“10002”,”user”:[“3”,”4”]}] 表示企业10001的openid=1,2用户;企业10002的openid=3,4用户。
根据不同的type定义,msg会有不同的格式定义。
type为2时,msg的定义:
{
"text":"文本消息内容,格式为字符串"
}
type为5时,msg的定义:
{
"text":"文本消息内容,String",
"url":"文本链接地址,格式为经过URLENCODE编码的字符串",
"appid": "如果打开的链接是轻应用,必须传入轻应用号讯通才能传入参数ticket,参考<轻应用框架>开发",
"todo":"int,必填,暂时只能为0,表示推送原公共号消息",
"sourceid":"备用字段,暂时无用"
}
“url”:“文本链接地址,格式为参数值经过URLENCODE编码的字符串” 注意:只是参数值编码,不要编码全部路径或者路径包含非法字符,否则无法打开url
doku.php?id=使用说明&abc=123 编码后为
doku.php?id=%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E&abc=123
type为6时,msg的定义:
{
"model":"排版展现模板,格式为整型",
"todo":"int,必填,暂时只能为0,表示推送原公共号消息",
"sourceid":"备用字段,暂时无用",
"list":"发布信息列表,格式为包含发布信息JSON对象的JSON数组"
}
model的定义:
list的定义:
根据不同的model定义,list会有不同的格式定义。
model为1时,list的定义:
[
{
"date":"发布日期,格式为包含了'年月日时分秒'字符串",
"title":"消息标题,格式为字符串",
"text":"消息摘要,格式为字符串",
"zip":"内容压缩包二进制字节流,格式为经过BASE64编码的字符串",
"url":"原文链接,格式为经过URLENCODE编码的字符串",
"appid": 如果打开的链接是轻应用,必须传入轻应用号讯通才能传入参数ticket,参考<轻应用框架>开发
}
]
“url”:“文本链接地址,格式为参数值经过URLENCODE编码的字符串” 注意:只是参数值编码,不要编码全部路径或者路径包含非法字符,否则无法打开url
doku.php?id=使用说明&abc=123 编码后为
doku.php?id=%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E&abc=123
model为2时,list的定义:
[
{
"date":"发布日期,格式为包含了'年月日时分秒'字符串",
"title":"消息标题,格式为字符串",
"text":"消息摘要,格式为字符串",
"zip":"内容压缩包二进制字节流,格式为经过BASE64编码的字符串",
"url":"原文链接,格式为经过URLENCODE编码的字符串",
"appid": 必填,
"name":"图片的文件名,格式为字符串",
"pic":"图片的二进制字节流,格式为经过BASE64编码的字符串"
}
]
model为3时,list的定义:
[
{
"date":"发布日期,格式为包含了'年月日时分秒'字符串",
"title":"消息标题,格式为字符串",
"text":"消息摘要,格式为字符串",
"zip":"内容压缩包二进制字节流,格式为经过BASE64编码的字符串",
"url":"原文链接,格式为经过URLENCODE编码的字符串",
"appid": 如果打开的链接是轻应用,必须传入轻应用号讯通才能传入参数ticket,参考<轻应用框架>开发
"name":"图片的文件名,格式为字符串",
"pic":"图片的二进制字节流,格式为经过BASE64编码的字符串"
},
{
……
},
……
]
zip的定义:
以zip格式压缩的内容文件夹,文件夹根目录内必须包含名称为index.html的文件,该文件将作为讯通消息查看全文的页面。
pic的定义:
讯通公共号消息大尺寸缩略图的宽度和高度规格为542px*260px,小尺寸缩略图的宽度和高度规格为142px*112px,如发送图片的比例不相符,将会在显示前被裁减。model为3时,第一条消息显示为大尺寸缩略图,其他的为小尺寸缩略图。
文本链接信息内容JSON示例:
{
"from": {
"no": "10603457",
"pub": "XT-d4dfc04c-9416-4b8c-86ca-dc57dc949006",
"pubtoken": "bc3bbfab24dd995f955244fb81d671bd9f621da0",
"nonce": "add9b617-a95f-417d-882c-722e077348c7",
"time": "1530758888"
},
"to": [
{
"no": "10603457",
"user": [
"5a41b292e4b058cf3d0cf314",
"5a39c75ae4b0a5d9edbf1d67"
]
}
],
"type": 5,
"msg": {
"appid": "10745",
"text": "公共号消息发送测试\n打开轻应用云龙项目",
"todo": 0,
"url": "https://www.cloudlong.cn/yzj/index.html"
}
}
图文混排信息内容JSON示例:
{
"from": {
"no": "10250",
"pub": "XT-95 ... 37a",
"time": "2013-10-18 20:11"
},
"to": [
{
"no": "10250",
"user": [
"+8R ... wg=",
"RMC ... wg=",
"El4 ... wg=",
"/Ut ... wg=",
"cgu ... wg=",
"Jb0 ... wg="
]
}
],
"type": 6,
"msg": {
"model": 2,
"list": [
{
"date": "2013-10-18",
"title": "金蝶K/3WISE APS成功通过BETA测试",
"text": "2013年9月29日,在隔朗五金的大力配合下,顺利完成金蝶K/3WISE V13.1 APS 的BETA测试",
"zip": "UEsDBAoAAAAAAOFAEsB ... BAADFvQEAFEsBAAAAA=",
"url": "eas://easportal/xt/news/XTNewsContent.jsp?contentId=+8RN5f ... YSwwg=",
"name": "E6O2IqkURTaIoz1n ... 018201154584.jpg",
"pic": "/9j/4AAQSkZJRgABA ... AkZ6VVlUc0UVijV7H//Z"
}
]
}
}
{
"pubId": "XT-d4dfc04c-9416-4b8c-86ca-dc57dc949006",
"sourceMsgId": "XT-5b3dc0f3e4b0ad2483c0701a"
}
当消息发送请求被成功执行时,HTTP状态码返回200。
当消息发送请求执行失败时,HTTP状态码返回以下错误: 2014年4月启用
• 5000:一般参数错误,如:from/to不完整、必须传入参数xxx
• 5001:公共号不存在或未审核
• 5002:数据长度超限错误,如:传入数据长度超过了1M
• 5003:发送的公司或用户错误,如:发送到其他企业,无发送用户或错误的openid
• 5004:公共号密钥验证失败,from.pubtoken=sha(from.no,from.pub,公共号.pubkey,from.nonce,from.time)
• 5005:发往公共号消息过多,请等x分钟
公共号服务端会限制公共号发送的频率,同一from内容不能在一分钟内重复发送,否则返回5005错误。
如果有密集的业务消息发送,必须保证from内容不同,例如不同的time,nonce。
企业管理员创建完公共号后可以点击“公共服务平台”页签进入公共号服务平台,也可以和公共号管理员一样通过"公共号管理"页签进入公共号服务平台。注意:如果企业管理员没有创建任何公共号,则是不能进入公共号管理平台进入公共号管理平台的。
企业管理员和公共号管理员进入公共号管理平台后选择“开发者”下的“API接口”,如下图所示:
<?php
function http_post_data($url, $data_string) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json; charset=utf-8',
'Content-Length: ' . strlen($data_string))
);
ob_start();
curl_exec($ch);
$return_content = ob_get_contents();
ob_end_clean();
$return_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
return array($return_code, $return_content);
}
$pubkey = "12345678123456781234567812345678";
//公共号密钥验证规则pubtoken=sha(no,pub,公共号.密钥pubkey,nonce,time)
$a = array("19901","XT-87e1732f-xxxx",$pubkey,"123456","1395460000");
sort($a,SORT_STRING);
$b = implode("",$a);
echo $b."\r\n";
$pubtoken = sha1($b);
echo $pubtoken."\r\n";
$data_string = '{ "from": { "no":"19901", "pub":"XT-87e1732f-xxxx", "time":"1395460000", "nonce":"123456", "pubtoken":"'.$pubtoken.'" }, '.
'"to": [ { "no":"19901", "user": ["cde2b88a-xxxx"], "code":"0" } ], "type":2, "msg": {"text":"金蝶测试"}}';
$url = "https://www.yunzhijia.com/pubacc/pubsend";
list($return_code, $return_content) = http_post_data($url, $data_string);
echo "返回值:".$return_code."\r\n";
echo "返回内容:".$return_content."\r\n\r\n";
?>