记录一下对接腾讯云IM的部分接口(群聊、单聊)

对接腾讯IM接口

  1. 不得不说腾讯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 返给前端即可;因为我是后端的;项目对接的也是双端,双端我是不会的 代码自行百度好吧;

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是誰萆微了承諾

你的鼓励是对我最大的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值