Customize the robot to send messages regularly through PHP docking nails. Full version

Posted by bodzan on Tue, 12 Oct 2021 04:16:57 +0200

DingTalk is a multi terminal platform for free communication and collaboration created by Alibaba Group for Chinese enterprises. It provides PC version, Web version, Mac version and mobile version, and supports file transfer between mobile phones and computers. Nailing is born of Chinese enterprises and helps Chinese enterprises improve the communication and collaboration efficiency of Chinese enterprises in an all-round way through systematic solutions (micro applications). (from Baidu Encyclopedia)

This document mainly introduces that the background server sends information to the nail group regularly through the nail custom robot

Note: another function is that the nail group @ nail robot + string can send information to the server through the nail robot. The server will process the information sent by the top group after receiving it, and then complete the information interaction through the reply of the nail robot

1, Create a group of custom nailing robots

1. Open the nail group settings and find the smart group assistant

  2. Select Add robot and customize robot

 

 

 

  3. Set the robot name and safety mode

There are three security modes:

① Custom keyword means that when the background sends a message to the nailing robot, the message text content needs to include the content in the keyword to be sent successfully.

② Signature means that according to the official document, the timestamp+"\n" + key is used as the signature string, the HmacSHA256 algorithm is used to calculate the signature, then Base64 encode, and finally urlEncode the signature parameters to obtain the final signature (UTF-8 character set is required)

③ For the IP address segment, the analysis should be to fill in the public IP address

  4. After completion, the webhook address will be generated, that is, the interface address of the background to send information. Remember the interface address to avoid disclosure

 

  2, PHP sends information to the nailing robot interface

1. Main service page, main content: PHP connects to mysql database, determines the time, and refreshes the page regularly. The page effect is shown in the figure below. The database connection is successful, the current server time, and the page refreshes once per second to judge the time matching, and jump to the nail information sending page regularly (specific to seconds).

2. Main service page code

The official document contains curl command sending information, which can be tested on Linux system

curl 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxx'\
-H 'Content-Type: application/json' \
-d '{"msgtype": "text","text": {"content":"I am me, It's different fireworks"}}'
<?php
//Linked database configuration started
//start--------------------------------------------------------------------------
    $mysql_server_name = ''; //Change to your own mysql database server
	$mysql_username = '';         //Change to your own mysql database user name
	$mysql_password = '';       //Change to your own mysql database password
	$mysql_database = '';      //Change to your own mysql database name
	$conn=mysqli_connect($mysql_server_name,$mysql_username,$mysql_password,$mysql_database); //Connect to database

//Error message when connecting to database, 'database connection: SUCCESS'
if (mysqli_connect_errno($conn)) { 

    die("connect MySQL fail: " . mysqli_connect_error()); 

}else{
	echo("<b>"."Database connection: SUCCESS!"."</b>");
	echo "<br/>";
	echo "<b>"."The current system time is:".date('Y-m-d H:i:s', time())."</b>";
}
mysqli_query($conn,"set names utf8mb64"); //Database encoding format
	
?>

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<script>
//get SysTime
var myDate = new Date();
//console.log(myDate.getHours());
var LocalTime = myDate.toLocaleTimeString();//Get current time
var dt= myDate.toLocaleString(); //Get date and time
var hh = myDate.getHours();//Get hours
var ms = myDate.getMinutes();     //Get current minutes (0-59)
var ss = myDate.getSeconds();     //Get current seconds (0-59)
var sss = myDate.getTime();
console.log(dt);//Time
//console.log(sss);// Time
console.log(hh);//branch
console.log(ms);//second
console.log(ss);

//Delayed loading can avoid repeated page Jump, delaying 3 seconds

var timer_reload = setTimeout(function(){
	//window.location.reload();
	//window.history.back(-1);
	},3000);

//Refresh the page every 1s to monitor the execution of conditional statements, that is, jump to the page regularly
var timer_reload = setInterval(function(){
	console.log("di 1 ci shu chu");
	window.location.reload();
	},1000);

//Time judgment statement, conditional completion, jump to page test3.php
//Time: 9:00-10:00
if(hh == 10){          //Hour judgment 
	if(ms == 0){      //Minute judgment
		if(ss == 40){  //Second judgment
			//console.log(ms);
			//console.log(hh);
			var timer_reload = function(){
					window.location.reload();
					console.log("di 2 ci shu chu");
					window.location.href="http://10.16.20.13:8088/dingding_rebot.php "; / / jump to test3.php and send the nailing message
				 };
			timer_reload();//Execution function
			
		}
	}
}
//Time: 10:00-11:00
if(hh == 11){
	if(ms == 26){
		if(ss == 30){
			console.log(ms);
			console.log(hh);
			var timer_reload = function(){
					window.location.reload();
					console.log("di 2 ci shu chu");
					window.location.href="http://10.16.20.13:8088/dingding_rebot.php";
				 };
			timer_reload();
			
		}
	}
}
//Time: 11:00-12:00
if(hh == 12){
	if(ms == 0){
		if(ss == 40){
			console.log(ms);
			console.log(hh);
			var timer_reload = function(){
					window.location.reload();
					console.log("di 2 ci shu chu");
					window.location.href="http://10.16.20.13:8088/dingding_rebot.php";
				 };
			timer_reload();
			
		}
	}
}
//Time: 12:00-13:00
if(hh == 13){
	if(ms == 0){
		if(ss == 40){
			console.log(ms);
			console.log(hh);
			var timer_reload = function(){
					window.location.reload();
					console.log("di 2 ci shu chu");
					window.location.href="http://10.16.20.13:8088/dingding_rebot.php";
				 };
			timer_reload();
			
		}
	}
}
//Time: 13:00-14:00
if(hh == 14){
	if(ms == 0){
		if(ss == 40){
			console.log(ms);
			console.log(hh);
			var timer_reload = function(){
					window.location.reload();
					console.log("di 2 ci shu chu");
					window.location.href="http://10.16.20.13:8088/dingding_rebot.php";
				 };
			timer_reload();
			
		}
	}
}
//Time: 14:00-15:00
if(hh == 15){
	if(ms == 0){
		if(ss == 40){
			console.log(ms);
			console.log(hh);
			var timer_reload = function(){
					window.location.reload();
					console.log("di 2 ci shu chu");
					window.location.href="http://10.16.20.13:8088/dingding_rebot.php";
				 };
			timer_reload();
			
		}
	}
}
//Time: 15:00-16:00
if(hh == 16){
	if(ms == 0){
		if(ss == 40){
			console.log(ms);
			console.log(hh);
			var timer_reload = function(){
					window.location.reload();
					console.log("di 2 ci shu chu");
					window.location.href="http://10.16.20.13:8088/dingding_rebot.php";
				 };
			timer_reload();
			
		}
	}
}
//Time: 16:00-17:00
if(hh == 17){
	if(ms == 0){
		if(ss == 40){
			console.log(ms);
			console.log(hh);
			var timer_reload = function(){
					window.location.reload();
					console.log("di 2 ci shu chu");
					window.location.href="http://10.16.20.13:8088/dingding_rebot.php";
				 };
			timer_reload();
			
		}
	}
}
//Time: 17:00-18:00
if(hh == 18){
	if(ms == 0){
		if(ss == 40){
			console.log(ms);
			console.log(hh);
			var timer_reload = function(){
					window.location.reload();
					console.log("di 2 ci shu chu");
					window.location.href="http://10.16.20.13:8088/dingding_rebot.php";
				 };
			timer_reload();
			
		}
	}
}
//Time: 18:00-19:00
if(hh == 19){
	if(ms == 0){
		if(ss == 40){
			console.log(ms);
			console.log(hh);
			var timer_reload = function(){
					window.location.reload();
					console.log("di 2 ci shu chu");
					window.location.href="http://10.16.20.13:8088/dingding_rebot.php";
				 };
			timer_reload();
			
		}
	}
}
//Time: 19:00-20:00
if(hh == 20){
	if(ms == 0){
		if(ss == 40){
			console.log(ms);
			console.log(hh);
			var timer_reload = function(){
					window.location.reload();
					console.log("di 2 ci shu chu");
					window.location.href="http://10.16.20.13:8088/dingding_rebot.php";
				 };
			timer_reload();
			
		}
	}
}
//Time: 20:00-21:00
if(hh == 21){
	if(ms == 0){
		if(ss == 40){
			//console.log(ms);
			//console.log(hh);
			var timer_reload = function(){
					//window.location.reload();
					//console.log("di 2 ci shu chu");
					window.location.href="http://10.16.20.13:8088/dingding_rebot.php";
				 };
			timer_reload();
			
		}
	}
}
</script>


</body>
</html>

  2. Linked database code

<?php
//Linked database configuration started
//start--------------------------------------------------------------------------
    $mysql_server_name = ''; //Change to your own mysql database server
	$mysql_username = '';         //Change to your own mysql database user name
	$mysql_password = '';       //Change to your own mysql database password
	$mysql_database = '';      //Change to your own mysql database name
	$conn=mysqli_connect($mysql_server_name,$mysql_username,$mysql_password,$mysql_database); //Connect to database

//Error prompt for connecting to database
if (mysqli_connect_errno($conn)) { 

    die("connect MySQL fail: " . mysqli_connect_error()); 

}else{
	echo("<b>"."Database connection: SUCCESS!------Successfully jump to page"."</b>");
	echo "<br/>";
}

//Get current system time
//echo date('Y-m-d H:i:s', time())."</br>";  //2021-10-09 20:02:54
//echo date('H', time())."</br>";  //2021-10-09 20:02:54
//Start time of the day
$start_time=strtotime(date("Y-m-d",time()));
//Between the end of the day
$end_time=$start_time+60*60*24-1;
//echo  $start_time."</br>";      //1633708800
//echo $end_time."</br>";         //1633795199
$start_time_1=date("Y-m-d H:i:s",$start_time);       
$end_time=date("Y-m-d H:i:s",$end_time);      
//The second before the current hour
$day_hour = date('H', time());
$day_hour_start = date("Y-m-d H:i:s",$start_time+($day_hour-1)*3600);//2021-10-10 11:00:00
$day_hour_pre = date("Y-m-d H:i:s",$start_time+$day_hour*3600-1);//2021-10-10 11:59:59
//$day_hour_pre = date("Y-m-d H:i:s",$start_time+$day_hour*3600-1); 
echo $day_hour_start;    
echo $start_time_1."</br>";
echo $day_hour_pre;
//echo  "</br>".$start_time."</br>";      //2021-10-09 00:00:00
//echo $end_time;                 //2021-10-09 23:59:59
//Query statement, period number query
$sql_select_day = "select wocc.parttimes,sum(wocc.groupnum) peoples from v_WorkOffCard_Cursor wocc where 1=1 and wocc.ADDTIME >='".$day_hour_start."' and wocc.ADDTIME <='".$day_hour_pre."' group by wocc.parttimes order by wocc.parttimes";
echo "</br>".$sql_select_day;
//Query statement, total number query
$sql_select_count= "select sum(wocc.groupnum) peoples from v_WorkOffCard_Cursor wocc where 1=1 and wocc.ADDTIME >='".$start_time_1."' and wocc.ADDTIME <='".$day_hour_pre."'";
echo "</br>".$sql_select_count."</br>";
//Query the number of people out of the park
$sql_select_out = "select leaver_num from t_out_peoples top  order by currentTime desc limit 1";

mysqli_query($conn,"set names utf8mb64"); //Database encoding format
	//$sql = "select msgtype,'content' => 'dingding' text from digdinng_test";
	//$query = mysqli_query($conn,$sql);
	//$sql2 = "select distinct encode,left(decode,17) as decode from `encode_decode` where encode = '".$encode."'and '".$encode."' is not null order by datetime desc";
	//$re_query = mysqli_query($conn,$sql2);
	//$re_query_id = mysqli_fetch_array(mysqli_query($conn, $sql));
	
	//$sql = "select count(*) peoples from digdinng_test";
//$sql_select_day	
$results = mysqli_query($conn, $sql_select_day);
while ($rows = mysqli_fetch_assoc($results)) {
 $res[] = $rows;       //time interval
}
//$sql_select_count
$results_count = mysqli_query($conn, $sql_select_count);
while ($rows = mysqli_fetch_assoc($results_count)) {
 $res_count[] = $rows; //Number of people
}
//$sql_select_out
$results_out = mysqli_query($conn, $sql_select_out);
while ($rows = mysqli_fetch_assoc($results_out)) {
 $res_out[] = $rows;   //Out of the garden
}

//result
//print_r($res_count);
//Number of visitors during the period (10:00-21:00)
//time slot
$times_curr_start_end = $res[0][parttimes];//time interval
echo "Period:".$times_curr_start_end."</br>";
//Number of people corresponding to time period

$peo_curr_start_end = $res_count[0][peoples];//Period number
echo "</br>"."Number of visitors:".$peo_curr_start_end;
//echo $times_20_21. "The number of people entering the park is:" $peo_20_21. "People." < / BR > ";
//echo $times_10_11. "The number of people entering the park is:" $peo_10_11. "People." < / BR > ";
//Total number of visitors
$times_day_count = $res_count[0][peoples];
//echo "total number of visitors today:". $times_day_count. "< / BR >";
//echo "<br/>";	
//$msgtype = $res[0][peoples];
//$content = 'total quantity is'. $msgtype;	
//var_dump($content);

//Total number of people out of the park
$times_out = $res_out[0][leaver_num];
//Number of people in the park
$times_in_park = $times_day_count - $times_out;

3. Nail sending information page

<?php
include 'test_mysql_check.php';
//The following is the configuration of nail push message
//start-----------------------------------------------------------------------
//
//webhook:https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx
echo "</br>"."Jump nail sending program succeeded! Return in 3 seconds!";
$url = 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxx';
/*
// In the first step, take the timestamp+"\n" + key as the signature string, calculate the signature using HmacSHA256 algorithm, then perform Base64 encode, and finally perform urlEncode on the signature parameters to obtain the final signature (UTF-8 character set is required).
$time = time() *1000;//Millisecond timestamps. For convenience here, I directly set the time * 1000
$secret = 'This is the key ';
$sign = hash_hmac('sha256', $time . "\n" . $secret,$secret,true);
$sign = base64_encode($sign);
$sign = urlencode($sign);
$url = "{$url}&timestamp={$time}&sign={$sign}";
*/
//Use keywords
//Type 1: Text
$msg1 = [
    'msgtype' => 'text',//This is the file sending type, which can be adjusted according to requirements
    'text'    => [
        'content' => 'dingding',
    ],
];
/*
//Test SMS $msg1, modify the text message sent
//Define quantity
$num = 1;
$sum[10] = $num++;
var_dump($sum);
echo "</br>";
$content = 'Good afternoon! This is the test text, please ignore! '. $count1.$num;
//Output spliced content
echo $content."</br>";
$msg1[text][content]=$content;
var_dump($msg1);
echo "</br>";
*/
//Get current hours
$h_cuur = date('H', time());
$day_today = date('Y year m month d day', time());
$curr_today = date('Y-m-d H:i', time());
//9-10 o'clock
if($h_cuur == 10){
	if($times_curr_start_end != ''){
		//echo "</br>"."21212121"."</br>";
		$msg1[text][content] = $day_today."\n"."Current time:".$curr_today."\n".$times_curr_start_end."Number of visitors:".$peo_curr_start_end."people"."\n"."The total number of visitors today is:".$times_day_count."people"."\n"."The total number of visitors today is:".$times_out."people"."\n"."The current number of people in the park is:".$times_in_park."people";
		$curl = curl_init();
	}
}
//10-11 o'clock
if($h_cuur == 11){
	if($times_curr_start_end != ''){
		//echo "</br>"."21212121"."</br>";
		$msg1[text][content] = $day_today."\n"."Current time:".$curr_today."\n".$times_curr_start_end."Number of visitors:".$peo_curr_start_end."people"."\n"."The total number of visitors today is:".$times_day_count."people"."\n"."The total number of visitors today is:".$times_out."people"."\n"."The current number of people in the park is:".$times_in_park."people";
		$curl = curl_init();
	}
}
//11-12 o'clock
if($h_cuur == 12){
	if($times_curr_start_end != ''){
		//echo "</br>"."21212121"."</br>";
		$msg1[text][content] = $day_today."\n"."Current time:".$curr_today."\n".$times_curr_start_end."Number of visitors:".$peo_curr_start_end."people"."\n"."The total number of visitors today is:".$times_day_count."people"."\n"."The total number of visitors today is:".$times_out."people"."\n"."The current number of people in the park is:".$times_in_park."people";
		$curl = curl_init();
	}
}
//12-13 o'clock
if($h_cuur == 13){
	if($times_curr_start_end != ''){
		//echo "</br>"."21212121"."</br>";
		$msg1[text][content] = $day_today."\n"."Current time:".$curr_today."\n".$times_curr_start_end."Number of visitors:".$peo_curr_start_end."people"."\n"."The total number of visitors today is:".$times_day_count."people"."\n"."The total number of visitors today is:".$times_out."people"."\n"."The current number of people in the park is:".$times_in_park."people";
		$curl = curl_init();
	}
}
//13-14 points
if($h_cuur == 14){
	if($times_curr_start_end != ''){
		//echo "</br>"."21212121"."</br>";
		$msg1[text][content] = $day_today."\n"."Current time:".$curr_today."\n".$times_curr_start_end."Number of visitors:".$peo_curr_start_end."people"."\n"."The total number of visitors today is:".$times_day_count."people"."\n"."The total number of visitors today is:".$times_out."people"."\n"."The current number of people in the park is:".$times_in_park."people";
		$curl = curl_init();
	}
}
//14-15 o'clock
if($h_cuur == 15){
	if($times_curr_start_end != ''){
		//echo "</br>"."21212121"."</br>";
		$msg1[text][content] = $day_today."\n"."Current time:".$curr_today."\n".$times_curr_start_end."Number of visitors:".$peo_curr_start_end."people"."\n"."The total number of visitors today is:".$times_day_count."people"."\n"."The total number of visitors today is:".$times_out."people"."\n"."The current number of people in the park is:".$times_in_park."people";
		$curl = curl_init();
	}
}
//15-16 o'clock
if($h_cuur == 16){
	if($times_curr_start_end != ''){
		//echo "</br>"."21212121"."</br>";
		$msg1[text][content] = $day_today."\n"."Current time:".$curr_today."\n".$times_curr_start_end."Number of visitors:".$peo_curr_start_end."people"."\n"."The total number of visitors today is:".$times_day_count."people"."\n"."The total number of visitors today is:".$times_out."people"."\n"."The current number of people in the park is:".$times_in_park."people";
		$curl = curl_init();
	}
}
//16-17 o'clock
if($h_cuur == 17){
	if($times_curr_start_end != ''){
		//echo "</br>"."21212121"."</br>";
		$msg1[text][content] = $day_today."\n"."Current time:".$curr_today."\n".$times_curr_start_end."Number of visitors:".$peo_curr_start_end."people"."\n"."The total number of visitors today is:".$times_day_count."people"."\n"."The total number of visitors today is:".$times_out."people"."\n"."The current number of people in the park is:".$times_in_park."people";
		$curl = curl_init();
	}
}
//17-18 o'clock
if($h_cuur == 18){
	if($times_curr_start_end != ''){
		//echo "</br>"."21212121"."</br>";
		$msg1[text][content] = $day_today."\n"."Current time:".$curr_today."\n".$times_curr_start_end."Number of visitors:".$peo_curr_start_end."people"."\n"."The total number of visitors today is:".$times_day_count."people"."\n"."The total number of visitors today is:".$times_out."people"."\n"."The current number of people in the park is:".$times_in_park."people";
		$curl = curl_init();
	}
}
//18-19 o'clock
if($h_cuur == 19){
	if($times_curr_start_end != ''){
		//echo "</br>"."21212121"."</br>";
		$msg1[text][content] = $day_today."\n"."Current time:".$curr_today."\n".$times_curr_start_end."Number of visitors:".$peo_curr_start_end."people"."\n"."The total number of visitors today is:".$times_day_count."people"."\n"."The total number of visitors today is:".$times_out."people"."\n"."The current number of people in the park is:".$times_in_park."people";
		$curl = curl_init();
	}
}
//19-20 o'clock
if($h_cuur == 20){
	if($times_curr_start_end != ''){
		//echo "</br>"."21212121"."</br>";
		$msg1[text][content] = $day_today."\n"."Current time:".$curr_today."\n".$times_curr_start_end."Number of visitors:".$peo_curr_start_end."people"."\n"."The total number of visitors today is:".$times_day_count."people"."\n"."The total number of visitors today is:".$times_out."people"."\n"."The current number of people in the park is:".$times_in_park."people";
		$curl = curl_init();
	}
}
//20-21 o'clock
if($h_cuur == 21){
	if($times_curr_start_end != ''){
		//echo "</br>"."21212121"."</br>";
		$msg1[text][content] = $day_today."\n"."Current time:".$curr_today."\n".$times_curr_start_end."Number of visitors:".$peo_curr_start_end."people"."\n"."The total number of visitors today is:".$times_day_count."people"."\n"."The total number of visitors today is:".$times_out."people"."\n"."The current number of people in the park is:".$times_in_park."people";
		$curl = curl_init();
	}else{
		$times_curr_start_end = "20 spot-21 spot";
		$peo_curr_start_end = 0;
		$msg1[text][content] = $day_today."\n"."Current time:".$curr_today."\n".$times_curr_start_end."Number of visitors:".$peo_curr_start_end."people"."\n"."The total number of visitors today is:".$times_day_count."people"."\n"."The total number of visitors today is:".$times_out."people"."\n"."The current number of people in the park is:".$times_in_park."people";
		$curl = curl_init();
	}
}
//21-22 o'clock
if($h_cuur == 22){
	if($times_curr_start_end != ''){
		//echo "</br>"."21212121"."</br>";
		$msg1[text][content] = $day_today."\n"."Current time:".$curr_today."\n".$times_curr_start_end."Number of visitors:".$peo_curr_start_end."people"."\n"."The total number of visitors today is:".$times_day_count."people"."\n"."The total number of visitors today is:".$times_out."people"."\n"."The current number of people in the park is:".$times_in_park."people";
		$curl = curl_init();
	}
}




//Type 2: Markdown
$msg2 = [
"msgtype" => "markdown",
		 "markdown" =>  [
						 "title" => "dingding!Hangzhou weather",
						 "text" => "#### Hangzhou weather @13721424030 \n > 9 Degree, northwest wind level 1, good air 89, relative temperature 73%\n > ![screenshot](http://www.dianyingxiaozhen.cn/ext/images/pc_ index_ Banner1. JPG) \ n > ######## 10:20 [weather]( https://www.dingtalk.com) \n"
					 ],
		 "at" =>  [
					  "atMobiles" => [
									"13721424030"
								   ],
					  "atUserIds" => [
								    "user123"
								   ],
		  "isAtAll" => false
		  ]
];
//Type 3: link
$msg3 = [
 "msgtype" => "link", 
        "link" => [
                    "text" => "dingding This upcoming version, the founder xx It is called mangrove. Before that, whenever faced with a major upgrade, product managers would take a suitable code. This time, why mangrove", 
                    "title" => "The train of the times is moving forward", 
                    "picUrl" => "", 
                    "messageUrl" => ""
        	      ]
];	

//Call curl function to send information			 
//$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
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($msg1));
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 'Return sending result:'."</br>";
var_dump($res);
//end----------------------------------------------------------------------------------
?>

<!--  Here is html5 Setting, timing setting    -->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<script>
//get SysTime
var myDate = new Date();
console.log(myDate.getYear);

//Jump to the main page after 3s
var timer_reload = setTimeout(function(){
	//window.location.reload();
	//window.history.back(-1);
	window.location.href="http://10.16.20.13:8088/dd_rebot_index.php";
	},3000);
</script>
</body>
</html>

3, The nail group successfully sends information regularly

  Note: subsequently, in the nailing group @ nailing robot + string, the information can be sent to the server through the nailing robot. After the server receives the information sent by the top group, it can process it, and then reply to the information through the nailing robot. In the research, the public network is needed. In the absence of public network, the official document gives the solution of Intranet penetration. In the research

Topics: PHP