>### 愛優微信機器人支持httpAPI,可以快速對接網站,進行功能擴展和二次開發。

1. 點擊程序主界面的設置選項卡,點擊【自定義接口】按鈕。

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] 發送的消息格式請參考附錄資料:[消息格式](http://www.hmoore.net/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"){//定時消息
}
```