为了更好的管理和控制App,IM提供了第三方回调功能,配置使用后,即时通信IM会向App后台服务器发送请求,App后台可以根据收到的回调处理业务逻辑、数据处理存储、功能控制干预,比如禁止该消息下发、用户登录状态的实时变更等。即时通信 IM 目前支持的回调请参见 回调命令列表
回调地址必须是可以ping通的地址,且域名中不能使用下划线_,如果没有域名备案可以使用外网IP地址作为域名配置。 双向认证的目的是只能从即时通信IM后台回调访问,无法通过客户端或浏览器直接访问。 如何关闭回调:1.取消所有回调事件;2.更改回调地址,配置成无法接收的地址。
server {
listen 443 default_server;
listen [::]:443 default_server;
server_name XX.XX.XX.XX; # 域名或外网IP地址
ssl_certificate XX.XX.XX.XX.crt; # 腾讯给第三方签发的证书
ssl_certificate_key XX.XX.XX.XX.key; # 和证书配对的私钥
ssl_verify_client on; # 验证请求来源
ssl_client_certificate TencentQQAuthCA.crt; # 腾讯认证的 CA 证书
location / {
root /var/html/;
index index.html index.htm callback.php;
}
}
server {
listen 80;
server_name XX.XX.XX.XX; # 域名或外网IP地址
error_log /var/log/nginx/callback_error.log error;
root /var/html/;
location / {
index index.html index.htm callback.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
可以不配置双向认证,不配置也可以收到回调请求,双向认证只是为了更安全。 不配置双向认证取消ssl_verify_client on; ssl_client_certificate TencentQQAuthCA.crt; 即可。
<!DOCTYPE HTML>
<html>
<body>
<?php
$json = file_get_contents("php://input");
$data = json_decode($json, true);
if($data){
$callback_file = fopen("callback.log", "a+") or die("open_file_error!");
fwrite($callback_file,var_export($data,true));
fwrite($callback_file, "\n================================================\n");
fclose($callback_file);
}else{
echo 'Hello Word!';
}
?>
</body>
</html>
使用Rest Api或客户端发消息验证是否可以收到回调(此处以单聊消息为例)
array (
'MsgBody' =>
array (
0 =>
array (
'MsgType' => 'TIMTextElem', // 消息类型
'MsgContent' =>
array (
'Text' => '测试是否可以收到单聊消息',// 消息内容
),
),
),
'CallbackCommand' => 'C2C.CallbackBeforeSendMsg', // 回调事件类型
'From_Account' => 'liyao', // 发送方userid
'To_Account' => 'test3', // 接收方userid
'MsgRandom' => 1156579512, // 消息随机数
'MsgSeq' => 17649, // 消息ID
'MsgTime' => 1613897890, // 消息发送时间
'MsgKey' => '17649_1156579512_1613897890', // 消息唯一标识
)
通过客户端发送单聊消息
通过Rest Api发送单发单聊消息
Rest Api 批量发单聊消息不会触发单聊回调
可以通过该回调实时监控用户的单聊消息(记录日志等)
拦截用户的单聊发言请求(业务侧自行实现安全打击功能)
修改发言内容(例如过滤敏感词)
如果同时配置发言前回调和发言后回调,并且通过发言前回调禁止发言,则此时不会收到发言后回调
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。