对接腾讯IM接口
- 不得不说腾讯IM的接口文档写的不尽人意,没对接过的就是个坑他那个UserId是给我这种没对接过的小白留个大坑;
上面是腾讯IM文档上的导入账号(坑) Identifier 就是我们自定义的UserId 文档上写的是用户名 太坑了
后面对接群聊的时候 文档上写的是传用户UserId 这谁能知道啊 (反正给我坑的不行,浪费了半天时间,咨询了腾讯客服,不然真发现不了,说了那么多,还得对接,谁让人家是腾讯baba呢)
废话一大堆进入正题(引入对应demo就不用我说了吧)
<?php php
namespace app\api\controller\IM;
use Tencent\TLSSigAPIv2;
use think\facade\Env;
//tp5.1引入腾讯云IM demo
require Env::get('root_path') . 'extend/TlsIm/src/TLSSigAPIv2.php';
class TLSSigAPI{
private $sdkappid ='****';
private $identifier = "administrator";
private $key =“ ******";
//自有帐号导入即时通信
public function account_import($Identifier,$Nick,$FaceUrl) {
$url = "https://console.tim.qq.com/v4/im_open_login_svc/account_import?";
$url = $this->getintegrationUrl($url);
$data = [
"Identifier" => $Identifier,
"Nick" => $Nick,
"FaceUrl" => $FaceUrl
];
// var_dump($data);die;
$results= postCurls($url,$data);
return $results;
}
//删除
public function account_delete($DeleteItem) {
$url = "https://console.tim.qq.com/v4/im_open_login_svc/account_delete?";
$url = $this->getintegrationUrl($url);
$data = [
"DeleteItem" => $DeleteItem
];
// echo( json_encode($data));
$results= postCurls($url,$data);
return $results;
}
//查询帐号
public function account_check($CheckItem) {
$url = "https://console.tim.qq.com/v4/im_open_login_svc/account_check?";
$url = $this->getintegrationUrl($url);
$data = [
"CheckItem" =>$CheckItem
];
$results = postCurls($url,$data);
return $results;
}
//查询帐号在线状态
public function querystate($To_Account ,$IsNeedDetail) {
$url = "https://console.tim.qq.com/v4/im_open_login_svc/account_check?";
$url = $this->getintegrationUrl($url);
$data = [
"IsNeedDetail" => $IsNeedDetail,
"To_Account" => $To_Account
];
// echo( json_encode($data));
$results = postCurls($url,$data);
return $results;
}
//帐号生成的签名
public function genUserSig($id) {
$TLSSigAPIv2 = new TLSSigAPIv2($this->sdkappid,$this->key);
return $TLSSigAPIv2->genUserSig($id);
}
//链接
public function getintegrationUrl($url) {
$TLSSigAPIv2 = new TLSSigAPIv2($this->sdkappid,$this->key);
$results= $url.http_build_query(array(
"sdkappid" => $this->sdkappid,
"identifier" => $this->identifier,
"usersig" => $TLSSigAPIv2->genUserSig("administrator"),
'random' => randomsum(32),
'contenttype' => 'json'
));
return $results;
}
}
基础引用
//创建登录标识
$TLSSigAPI= new TLSSigAPI();
$TLSSigAPI2=$TLSSigAPI->genUserSig($param['phone']);//返回来登录标识给前端使用 存起来
$TLSSigAPI->account_import('自定义的userId','自定义昵称','自定义头像');//导入账号
创建群聊
<?php
namespace app\api\controller\IM;
use JPush\Http;
use Tencent\TLSSigAPIv2;
use think\facade\Env;
require Env::get('root_path') . 'extend/TlsIm/src/TLSSigAPIv2.php';
class TLGroupAPI
{
private $sdkappid = '****';
private $identifier = "administrator";//默认的管理员
private $key = "***";
//创建群
public function create_group($Owner_Account, $GroupName, $FaceUrl = "", $MaxMemberCount = 500)
{
$url = "https://console.tim.qq.com/v4/group_open_http_svc/create_group?";
$url = $this->getintegrationUrl($url);
$data = array(
"Owner_Account" => $Owner_Account,
"Type" => "ChatRoom",
"Name" => $GroupName,
"FaceUrl" => $FaceUrl,
"MaxMemberCount" => $MaxMemberCount,
"ApplyJoinOption" => "NeedPermission"
);
// "Owner_Account"=> $Owner_Account, // 群主的 UserId(选填)
// "Type"=> "Public", // 群组类型:Private/Public/ChatRoom/AVChatRoom
// "Name"=> $TestGroup, // 群名称(必填)
// "Introduction"=> $Introduction, // 群简介(选填)
// "Notification"=> $Notification, // 群公告(选填)
// "FaceUrl"=>$FaceUrl, // 群头像 URL(选填)
// "MaxMemberCount"=> 500, // 最大群成员数量(选填)
// "ApplyJoinOption"=> "FreeAccess" // 申请加群处理方式(选填)
$results = postCurls($url, $data);
return $results;
}
// 解散群成员
public function destroy_group($GroupId)
{
$url = "https://console.tim.qq.com/v4/group_open_http_svc/destroy_group?";
$url = $this->getintegrationUrl($url);
$data = [
"GroupId" => $GroupId,
];
// "Owner_Account"=> $Owner_Account, // 群主的 UserId(选填)
// "Type"=> "Public", // 群组类型:Private/Public/ChatRoom/AVChatRoom
// "Name"=> $TestGroup, // 群名称(必填)
// "Introduction"=> $Introduction, // 群简介(选填)
// "Notification"=> $Notification, // 群公告(选填)
// "FaceUrl"=>$FaceUrl, // 群头像 URL(选填)
// "MaxMemberCount"=> 500, // 最大群成员数量(选填)
// "ApplyJoinOption"=> "FreeAccess" // 申请加群处理方式(选填)
$results = postCurls($url, $data);
return $results;
}
//增加群成员
public function add_group_member($GroupId, $MemberList)
{
$url = "https://console.tim.qq.com/v4/group_open_http_svc/add_group_member?";
$url = $this->getintegrationUrl($url);
$data = [
"GroupId" => $GroupId,
"Silence" => 1,//静默添加
"MemberList" => $MemberList,
];
$results = postCurls($url, $data);
return $results;
}
//删除群成员
public function delete_group_member($GroupId, $MemberList)
{
$url = "https://console.tim.qq.com/v4/group_open_http_svc/delete_group_member?";
$url = $this->getintegrationUrl($url);
$data = [
"GroupId" => $GroupId,
"Silence" => 1,//静默删除
"MemberToDel_Account" => $MemberList,
];
$results = postCurls($url, $data);
return $results;
}
//获取用户所加入的群组
public function get_joined_group_list($MemberList)
{
$url = "https://console.tim.qq.com/v4/group_open_http_svc/get_joined_group_list?";
$url = $this->getintegrationUrl($url);
$data = [
"Member_Account" => $MemberList,
];
$results = postCurls($url, $data);
return $results;
}
//获取 群组详细信息
public function get_group_info($GroupIdList)
{
$url = "https://console.tim.qq.com/v4/group_open_http_svc/get_group_info?";
$url = $this->getintegrationUrl($url);
$data = [
"GroupIdList" => $GroupIdList,
];
$results = postCurls($url, $data);
return $results;
}
//查询用户在群组中的身份
public function get_role_in_group($GroupId, $MemberList)
{
$url = "https://console.tim.qq.com/v4/group_open_http_svc/get_role_in_group?";
$url = $this->getintegrationUrl($url);
$data = [
"GroupId" => $GroupId,
"User_Account" => $MemberList,
];
$results = postCurls($url, $data);
return $results;
}
// 修改用户信息
public function modify_group_member_info($GroupId, $Member_Account, $type = "1")
{
if ($type == 1) {
// 设置管理元
$data = [
"GroupId" => $GroupId, // 要操作的群组(必填)
"Member_Account" => $Member_Account, // 要操作的群成员(必填)
"Role" => "Admin" // 设置管理员
];
} elseif ($type == 2) {
// 取消管理员
$data = [
"GroupId" => $GroupId, // 要操作的群组(必填)
"Member_Account" => $Member_Account, // 要操作的群成员(必填)
"Role" => "Member" // 设置管理员
];
} else {
// 设置指定的群成员禁言时间。
$data = [
"GroupId" => $GroupId, // 要操作的群组(必填)
"Member_Account" => $Member_Account, // 要操作的群成员(必填)
"ShutUpTime" => "86400" // 设置管理员
];
}
$url = "https://console.tim.qq.com/v4/group_open_http_svc/modify_group_member_info?";
$url = $this->getintegrationUrl($url);
// var_dump($data);die;
$results = postCurls($url, $data);
return $results;
}
//获取群成员详细资料
public function get_group_member_info($GroupId)
{
// 设置管理元
$data = [
"GroupId" =>$GroupId, // 要被转移的群 ID(必填)
"Limit"=>500, // 最多获取多少个成员的资料
"Offset"=>0 // 从第多少个成员开始获取资料
];
$url = "https://console.tim.qq.com/v4/group_open_http_svc/get_group_member_info?";
$url = $this->getintegrationUrl($url);
// var_dump($data);die;
$results = postCurls($url, $data);
return $results;
}
// 获取 App 中的所有群组
public function get_appid_group_list($Limit = 1000, $Next = 0, $GroupType = "Public")
{
$url = "https://console.tim.qq.com/v4/group_open_http_svc/get_appid_group_list?";
$url = $this->getintegrationUrl($url);
$data = [
"Limit" => 1000,
"Next" => 0,
"GroupType" => $GroupType // 拉取哪种群组形态,不填为拉取所有
];
$results = postCurls($url, $data);
return $results;
}
//转让群主
public function get_change_group_owner($GroupId, $MemberList)
{
// 设置管理元
$data = [
"GroupId" => $GroupId, // 要操作的群组(必填)
'NewOwner_Account' => $MemberList//要给谁群主(UserId)
];
$url = "https://console.tim.qq.com/v4/group_open_http_svc/change_group_owner?";
$url = $this->getintegrationUrl($url);
$results = postCurls($url, $data);
return $results;
}
//链接
public function getintegrationUrl($url)
{
$TLSSigAPIv2 = new TLSSigAPIv2($this->sdkappid, $this->key);
$results = $url . http_build_query(array(
"sdkappid" => $this->sdkappid,
"identifier" => $this->identifier,
"usersig" => $TLSSigAPIv2->genUserSig('administrator'),
'random' => randomsum(32),
'contenttype' => 'json'
));
return $results;
}
}
创建群聊
//创建群主聊天室
$IM=new TLGroupAPI();
$domain=$this->request->domain();
$create_group=json_decode($IM->create_group('自定义UserId','群聊名称','群聊图片'));
if ($create_group->ActionStatus=='OK'){//正确返回,创建成功
$param['chat_room'] = $create_group->GroupId;//群聊id保存返给前端即可
}else{
$param['chat_room'] =0;//创建失败
}
单聊
单聊把UserId 返给前端即可;因为我是后端的;项目对接的也是双端,双端我是不会的 代码自行百度好吧;