>### 爱优微信机器人支持httpAPI,可以快速对接网站,进行功能扩展和二次开发。
![](https://box.kancloud.cn/133a3b90b1574552ebebd6d38ccbd2a5_802x583.png)
1. 点击程序主界面的设置选项卡,点击【自定义接口】按钮。
![](https://box.kancloud.cn/53d2a7dd845e0f1d2ef23f3f3715f2f8_389x171.png)
2. 在弹出的接口地址对话框中输入自定义接口地址即可。
* * * * *
### API文档:
请求方式:POST
返回格式:json
~~~[api]
post:/url
mode=1/2/3/4/5#消息模式
iuname#机器人账号
robotid#机器人wxid
robotname#机器人昵称
gid#群ID/好友wxid
gname#群名称/好友备注
username#群成员wxid/好友wxid
nickname#群成员昵称/好友昵称
isadmin=0/1/2#管理员权限
msgtype=1/10000/3/34/37/42/43/47/49#消息类型
msgid#消息唯一ID
content#消息内容
atwxid#群聊@对象wxid
membernum#群人数
<<<
success
{"code":"10001","text":"发送消息成功!","atwxid":"wxid_123456789","addtext":"附加文本","v1":"v1"}
<<<
error
~~~
### (1)触发型消息
触发型消息指群内或者好友发送消息,触发机器人回复。
* 请求参数说明:
|名称|类型|说明|
| --- | --- | --- |
|mode|string| 1:群聊触发;2:私聊触发;|
|iuname| string | 机器人账号 |
|robotid| string | 机器人wxid |
|robotname| string | 机器人昵称 |
|gid|string | 群聊:群chatroomid;私聊:好友wxid |
|gname| string | 群聊:群名称;私聊:好友备注 |
|username| string | 群聊:群成员wxid;私聊:好友wxid |
|nickname| string | 群聊:群成员昵称;私聊:好友昵称 |
|isadmin| int | 群聊:是否是群管理员;私聊:是否是全局管理员 |
|msgtype| int | 消息类型。1:文本消息;10000:系统消息;3:图片消息;47:表情消息;42:名片消息;34:语音消息;43:视频消息;49:链接消息(小程序,私聊转账消息,邀请进群消息);37:加好友消息 |
|msgid| string | 消息唯一id |
|content| string | 消息内容 |
|atwxid| string | 群聊:@对象的wxid,多个逗号分隔;私聊:无 |
|membernum| string | 群聊:群人数;私聊:无 |
* 返回参数说明:
JSON示例:{"code":"10001","text":"发送消息成功!","atwxid":"wxid_123456789","addtext":"附加文本","v1":"v1"}
注:atwxid可省略,默认为@触发消息的群成员。
| code | text | 说明 | 备注 |
| --- | --- | --- | --- |
| 10001 | 返回消息 | 群聊普通消息 |
| 10002 | 返回消息 | 添加atwxid为好友 | 未开放
| 10003 | 返回消息 | 将atwxid踢出群 |须机器人为群主
| 10004 | 返回消息 | 刷新群成员列表 |刷新群成员列表
| 10005 | 返回消息 | 设置atwxid为分群管理员 |
| 10006 | 返回消息 | 取消atwxid分群管理员 |
| 10007 | 返回消息 | 清空本群的分群管理员 |
| 10008 | 返回消息 | 发布公告 |须机器人为群主
| 10009 | 返回消息 | 群聊退群 |
| 10010 | 返回消息 | 修改群名 |
| 20001 | 返回消息 | 私聊普通消息 |
| 20002 | 返回消息 | 私聊发送进群邀请 |addtext:群号码
| 20003 | 返回消息 | 私聊删除好友 |
| 20004 | 返回消息 | 延迟回复 |未开放
| 20005 | 返回消息 | 自动进群 |addtext:url
| 20006 | 返回消息 | 接收转账 |addtext:transferid
| 20007 | 返回消息 | 接受好友申请 |v1:wxid,addtext:scene
### (2)主动型消息
主动型消息是指机器人主动发送消息至群或者好友。主动型消息由机器人每分钟访问一次接口获取。主动消息每次可以发送多条。
* 请求参数说明:
|名称|类型|说明|
| --- | --- | --- |
|mode|string| 3:定时消息|
|iuname| string | 爱优账号 |
|robotid| string | 机器人wxid |
|robotname| string | 机器人昵称 |
* 返回参数说明:
JSON示例:{"delaytime":"1000","list":[{"wxid":"1451900082@chatroom","code":"10001","text":"群聊主动消息成功!","atwxid":"wxid_123456789"},{"wxid":"wxid_1234567890123","code":"20001","text":"私聊主动消息成功!"}]}
| 参数 | 必填 | 说明 |
| --- | --- | --- |
| delaytime | 是 | 每条消息的间隔时间 |
| list | 是 | 消息列表,数组格式 |
| wxid | 是 | 目标id,群chatroomid或者好友wxid |
| code | 是 | 参考触发型消息code定义 |
| text | 是 | 消息内容或者欲踢出群成员wxid或者邀请群chatroomid |
| atwxid | 否 | 群内@效果的对象的wxid |
### (3)群成员数据推送(仅爱优微信精灵)
群成员数据推送是指机器人在获取到某个群的群成员数据后,将群成员wxid、昵称、头像地址推送至接口。同时推送退群的成员wxid列表。
>[success] 群成员数据推送会在以下情形被触发:
> (1)双击群列表的某个群;
> (2)点击刷新群成员列表按钮;
> (3)群内管理员发送 更新成员;
> (4)群成员数量变化(以机器人群列表显示为准);
> (5)在机器人上群成员列表右键手动踢人之后;
> (6)有人进群(包括直接邀请和二维码邀请)。
> (7)接口触发10004指令。
* 群成员列表请求参数说明:
|名称|类型|说明|
| --- | --- | --- |
|mode|string| 4:模式代码|
|iuname| string | 爱优账号 |
|gid| string | 群Id |
|memberlist| string | 群成员列表 |
* 退群成员列表请求参数说明:
|名称|类型|说明|
| --- | --- | --- |
|mode|string| 5:模式代码|
|iuname| string | 爱优账号 |
|gid| string | 群Id |
|exitlist| string | 退群成员wxid |
|exitlist1| string | 退群成员昵称 |
>[success] memberlist格式:
> wxid1,昵称1,头像1|wxid2,昵称2,头像2|wxid3,昵称3,头像3
> exitlist格式:
> wxid1,wxid2,wxid3
> exitlist1格式:
> 昵称1,昵称2,昵称3
>[warning] 群成员多的话,memberlist数据量会很大,可能会造成请求失败。
* 返回参数说明:
JSON示例:{"code":"10001","text":"发送消息成功!","atwxid":"12345678@chatroom"}
>[success] (1)本类型返回消息只支持10001,即只支持返回消息,不支持触发其他事件。
> (2)atwxid为发送消息的对象ID(gid或者wxid),即消息可以发送给指定的群或者好友。如果省略,则默认发至触发群。
### (4)群数据推送(仅爱优微信精灵)
群数据推送是指机器人在获取到群列表数据后,将群名称和群ID推送至接口。
>[success] 群列表数据推送会在以下情形被触发:
> (1)启动机器人时;
> (2)机器人加入新群;
> (3)客户端删除好友;
> (4)客户端上点击退群;
> (5)客户端上切换默认群状态;
> (6)接口触发10009指令;
> (7)接口触发10010指令。
* 群列表请求参数说明:
|名称|类型|说明|
| --- | --- | --- |
|mode|string| 6:模式代码|
|iuname| string | 爱优账号 |
|glist| JSON| 群列表 |
>[success] 发送的消息格式请参考附录资料:[消息格式](https://www.kancloud.cn/ivanspring/iurobot_help_document/684125)
>
DEMO1:
```
<?php
$s['iuname']=trim($_POST['iuname']);
$s['robotid']=trim($_POST['robotid']);
$s['robotname']=unicode2utf8(trim($_POST['robotname']));
$s['gid']=trim($_POST['gid']);
$s['gname']=unicode2utf8(trim($_POST['gname']));
$s['username']=trim($_POST['username']);
$s['nickname']=str_replace("\"","",$_POST['nickname']);
$s['nickname']=str_replace("&","&",$s['nickname']);
$s['nickname'] =trim(unicode2utf8($s['nickname']));
$s['content']=unicode2utf8(trim($_POST['content']));
$s['msgid']=trim($_POST['msgid']);
$s['msgtype']=trim($_POST['msgtype']);
$s['isadmin'] = trim($_POST['isadmin']);
$s['atwxid']=trim($_POST['atwxid']);
$s['mode']=trim($_POST['mode']);
$s['membernum']=(int)trim($_POST['membernum']);
$time=time();
function unicode2utf8($str){
$t = preg_replace_callback('/\\%u([0-9a-f]{4})/i', create_function('$matches', 'return iconv("UCS-2BE","UTF-8",pack("H*", $matches[1]));'), $str);
return $t;
}
if($s['mode']=="1"){//群聊消息
if($s['msgtype']=="10000"){
//系统消息
//进群欢迎语示例
$arr=explode("邀请",str_replace("\"","",str_replace("加入了群聊","",$s['content'])));
if($arr[0]=='你'){
$arr[0]=$s['robotname'];
}
$output="欢迎".$arr[1]."加入本群!感谢".$arr[0]."的邀请!";
echo '{"code":"10001","text":"'.$output.'"}';
}
if(substr($s['content'],-6)=="人品"){
//人品应用示例
$name=htmlspecialchars($s['nickname'].date("Y年m月d日"));
for($i = 0;$i < strlen($name); $i++){
$a=$a+ord($name[$i]);
}
$shuzi=($a*47+70)%100;
$output=getvalue($shuzi);
$name1=htmlspecialchars($s['nickname'].date("Y年m月d日",($time+86400)));
for($i = 0;$i < strlen($name1); $i++){
$a1=$a1+ord($name1[$i]);
}
$shuzi1=($a1*47+70)%100;
$output1=getvalue($shuzi1);
if($shuzi1>$shuzi){
if($shuzi>65){
$t="%ue106预测明天您的人品会更好哦!";
}else{
$t="%ue056预测明天您的人品会好一点哦!";
}
}else{
if($shuzi>65){
$t="%ue40e预测明天您的人品会有所下降哦!";
}else{
$t="%ue107预测明天您的人品还不如今天哦!";
}
}
echo '{"code":"10001","text":"@'.$s['nickname'].',您今天的人品为【'.$shuzi.'】。'.$output.'[n]'.$t.'"}';
exit();
}else{
if($s['atwxid']==""){
echo '{"code":"10001","text":"@'.$s['nickname'].',请@需要查询的人。"}';
exit();
}
$name=htmlspecialchars(substr($s['content'],0,-6));
for($i = 0;$i < strlen($name); $i++){
$a=$a+ord($name[$i]);
}
$shuzi=($a*47+$time/86400)%100;
$output=getvalue($shuzi);
$name1=htmlspecialchars($s['nickname'].date("Y年m月d日",($time+86400)));
for($i = 0;$i < strlen($name1); $i++){
$a1=$a1+ord($name1[$i]);
}
$shuzi1=($a1*47+70)%100;
$output1=getvalue($shuzi1);
if($shuzi1>$shuzi){
if($shuzi>65){
$t="%ue106预测明天TA的人品会更好哦!";
}else{
$t="%ue056预测明天TA的人品会好一点哦!";
}
}else{
if($shuzi>65){
$t="%ue40e预测明天TA的人品会有所下降哦!";
}else{
$t="%ue107预测明天TA的人品还不如今天哦!";
}
}
echo '{"code":"10001","text":"'.substr($s['content'],0,-6).'今天的人品为【'.$shuzi.'】。'.$output.'[n]'.$t.'"}';
exit();
}
}elseif($s['mode']=="2"){//私聊消息
}elseif($s['mode']=="3"){//定时消息
}
```