用python做qq聊天机器人(PHP实现钉钉自定义机器人信息交互完整版)
一、设置钉钉机器人
①登录网页钉钉开放平台,如图所示
https://open-dev.dingtalk.com/
②依次点击应用开发-企业内部应用开发-钉钉机器人-创建应用
1
2
创建好的钉钉机器人应用1
③点击开发管理并设置消息接收地址和服务器出口IP,也就是说当钉钉群内有消息@机器人将消息发送的接口地址,我这边是自己的云服务器上面做了一个PHP的页面
二、添加企业钉钉机器人到群聊
新建钉钉内部群聊,群设置-智能群助手-添加机器人-企业机器人
这个webhook需要保管好,到时候需要通过这个地址向群聊发送消息
三、后台PHP处理钉钉消息的代码
<?php
include_once "log.php";
include_once "dingding_conndb.php";
////////////////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------------------//
//----------------------------------------------------------------------------//
////////////////////////////////////////////////////////////////////////////////
//获取钉钉机器人post过来的数据
//$file_contents = json_decode(file_get_contents('php://input'), true);
$file_contents = file_get_contents('php://input'); //$file_contents = file_get_contents('test.json');
$data_string = json_decode($file_contents,true); //var_dump($file_contents);//var_dump($data_string);//print_r($data_string);
$conversationId = $data_string['conversationId']; //id
$senderNick = $data_string['senderNick']; //发送者
$conversationTitle = $data_string['conversationTitle']; //群名称
$sessionWebhook = $data_string['sessionWebhook']; //https://oapi.dingtalk.com/robot/sendBySession?se=
$chatbotCorpId = $data_string['chatbotCorpId']; // dingf95003674c125809a39a90f97fcb1e09
$msgId = $data_string['msgId']; //msgKnJDs2zTrH5ekrZELms5XQ
$senderStaffId = $data_string['senderStaffId']; //manager3596
$createAt =$data_string['createAt']; //1648528809205
$senderCorpId = $data_string['senderCorpId']; //
$conversationType = $data_string['conversationType']; //2
$senderId = $data_string['senderId']; // $:LWCP_v1:$KblAP5ntIUHnmxgEs10U8A==
$robotCode = $data_string['robotCode']; // dingsxrvba0gkoxrsnoo
$text_content = str_replace(' ','',$data_string['text']['content']); //发送内容
$msgtype = $data_string['msgtype'];
$sessionWebhookExpiredTime = $data_string['sessionWebhookExpiredTime'];
//echo '<br>'.$text_content.'<br>';
//log_print("dingding-send",$log_data_head,$data_string,$log_data_bottom);
$datetime = date("Y-m-d H:i:s", time());
log_print("dingding-insert_result",$log_data_head,$results_insert,$log_data_bottom);
////////////////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------------------//
//----------------------------------------------------------------------------//
////////////////////////////////////////////////////////////////////////////////
// if($text_content == "china"){
// $auser = '回答正确!';
// }else{
// $auser = '回答错误!';
// }
switch ($text_content) {
case 'china':
$auser = "回答正确!";// code...
break;
case '天气':
$auser = $city.":".$info." "."温度:".$temperature." "."湿度:".$humidity;// code...
break;
default:
$auser = "回答错误";// code...
break;
}
//钉钉群机器人接口地址
//$webhook = "https://oapi.dingtalk.com/robot/send?access_token=";
$webhook = "https://oapi.dingtalk.com/robot/send?access_token=";
//类型2:Markdown
$msg2 = [
"msgtype" => "markdown",
"markdown" => [
"title" => "",
"text" => "#### 杭州天气 @ \n > 9度,西北风1级,空气良89,相对温度73%\n > ![screenshot]\n > ###### 10点20分发布 [天气](https://www.dingtalk.com) \n"
],
"at" => [
"atMobiles" => [
""
],
"atUserIds" => [
"user123"
],
"isAtAll" => false
]
];
$msg2[at][atUserIds] = $senderStaffId;
$msg2[markdown][text] = $auser;//var_dump($msg2);
curl_php($webhook,$msg2);
function curl_php($webhook,$msg2){
//调用curl函数发送信息
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $webhook);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($msg2));
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$res = curl_exec($curl);
curl_close($curl);
echo "</br>".'返回发送结果:'."</br>";
//log_print("dingding-log",$log_data_head,json_encode($msg2),$log_data_bottom);
var_dump($res);
log_print("dingding",$log_data_head,$res,$log_data_bottom);
}
?>
四、钉钉群内进行信息交互测试
@群助手 发送1212信息,钉钉机器人就会回复所有信息,从中不难找出我们有用的信息,针对有用的信息进行匹配应答
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com