教堂 / 腾讯即时通讯
腾讯即时通讯 SDK
1.0
2023-05-29 07:59 UTC
Requires
- guzzlehttp/guzzle: ^7.4
Requires (Dev)
- phpunit/phpunit: ^9.5
- symfony/dotenv: ^5.4
README
环境准备
- php >= 7.4
安装
composer require church/tencent-im dev-main
使用
强烈建议在使用之前,仔细阅读官方开发文档。
综合
<?php use Church\TencentIm\CallbackHandler; class IM { public function callback(Request $request) { $sdkAppID = $request->input('SdkAppid'); $callbackCommand = $request->input('CallbackCommand'); $contentType = $request->input('contenttype'); $clientIP = $request->input('ClientIP'); $optPlatform = $request->input('OptPlatform'); $requestTime = $request->input('RequestTime'); $sign = $request->input('Sign'); $data = $request->post(); $app = new App(env('IM_SDK_APPID'), env('IM_SECRET_KEY'), env('IM_ADMIN_USER_ID')); $handler = $app->callbackHandler; $handler->setAuthWay(CallbackHandler::AUTH_TOKEN); $handler->setToken(env('IM_CALLBACK_AUTH_TOKEN')); $handler->batchAddEventHandlers([ CallbackHandler::EVENT_SNS_CALLBACK_PREV_FRIEND_ADD => self::class . '::' . 'prevFriendAdd', //添加朋友之前 CallbackHandler::EVENT_SNS_CALLBACK_FRIEND_ADD => self::class . '::' . 'friendAdd', //添加朋友之后 CallbackHandler::EVENT_SNS_CALLBACK_FRIEND_DELETE => self::class . '::' . 'friendDelete', //删除朋友之后 CallbackHandler::EVENT_PROFILE_CALLBACK_PORTRAIT_SET => self::class . '::' . 'portraitSet', //资料设置之后 CallbackHandler::EVENT_GROUP_CALLBACK_BEFORE_CREATE_GROUP => self::class . '::' . 'beforeCreateGroup', //创建群组之前 CallbackHandler::EVENT_GROUP_CALLBACK_AFTER_CREATE_GROUP => self::class . '::' . 'afterCreateGroup', //创建群组之后 CallbackHandler::EVENT_GROUP_CALLBACK_AFTER_NEW_MEMBER_JOIN => self::class . '::' . 'newMemberJoin', //新成员进群组之后 CallbackHandler::EVENT_GROUP_CALLBACK_AFTER_MEMBER_EXIT => self::class . '::' . 'afterMemberExit', //成员退出之后 CallbackHandler::EVENT_GROUP_CALLBACK_AFTER_GROUP_DESTROYED => self::class . '::' . 'afterGroupDestroy',//群组解散之后 CallbackHandler::EVENT_GROUP_CALLBACK_BEFORE_SEND_MSG => self::class . '::' . 'groupBeforeSendMsg', //群内消息发送之前 CallbackHandler::EVENT_GROUP_CALLBACK_AFTER_SEND_MSG => self::class . '::' . 'groupAfterSendMsg', //群内消息发送之后 CallbackHandler::EVENT_GROUP_CALLBACK_AFTER_GROUP_INFO_CHANGED => self::class . '::' . 'afterGroupInfoChanged', //群组资料更改之后 CallbackHandler::EVENT_C2C_CALLBACK_BEFORE_SEND_MSG => self::class . '::' . 'beforeSendMsg', //发送单聊消息之前 CallbackHandler::EVENT_C2C_CALLBACK_AFTER_SEND_MSG => self::class . '::' . 'afterSendMsg', //发送单聊消息之后 CallbackHandler::EVENT_GROUP_CALLBACK_BEFORE_APPLY_JOIN_GROUP => self::class . '::' . 'beforeApplyJoinGroup', //申请加群之前 ]); try { return $handler->handle($data, $sdkAppID, $callbackCommand, $contentType, $clientIP, $optPlatform, $requestTime, $sign); } catch (\Exception $e) { Log::error($e->getMessage() . $e->getTraceAsString()); if (env('APP_DEBUG')) { echo $e->getMessage(); echo $e->getTraceAsString(); } } } public static function prevFriendAdd { return json([ 'ActionStatus' => 'OK', 'ErrorCode' => 0, 'ErrorInfo' => '' ]); } }
消息
<?php $result = $app->message->sendMsg([ 'SyncOtherMachine' => 2, 'To_Account' => 'lumotuwe2', 'MsgLifeTime' => 60, 'MsgSeq' => 93847636, 'MsgRandom' => 1287657, 'MsgBody' => [ [ 'MsgType' => 'TIMTextElem', 'MsgContent' => [ 'Text' => 'hi, beauty' ] ] ], 'CloudCustomData' => 'your cloud custom data', 'SupportMessageExtension' => 0 ]) if ($result['ActionStatus'] == 'OK' && $result['ErrorCode'] == 0) { // 走成功逻辑 } else { // 走失败逻辑 }
会话
<?php $result = $app->session->getList([ 'From_Account' => 'id1', 'TimeStamp' => 0, 'StartIndex' => 0, 'TopTimeStamp' => 0, 'TopStartIndex' => 0, 'AssistFlags' => 15 ]); if ($result['ActionStatus'] == 'OK' && $result['ErrorCode'] == 0) { // 走成功逻辑 } else { // 走失败逻辑 }
群组
<?php $result = $app->group->createGroup([ 'Owner_Account' => 'leckie', 'Type' => 'Public', 'Name' => 'TestGroup' ]); if ($result['ActionStatus'] == 'OK' && $result['ErrorCode'] == 0) { // 走成功逻辑 } else { // 走失败逻辑 }
用户
<?php $result = $app->account->importAccount([ 'UserID' => '1111', 'FaceUrl' => 'http://www.qq.com', 'Nick' => 'TestGroup' ]); if ($result['ActionStatus'] == 'OK' && $result['ErrorCode'] == 0) { // 走成功逻辑 } else { // 走失败逻辑 }
全局禁言
<?php $result = $app->shutup->setNoSpeaking([ 'Set_Account' => '1111', 'C2CmsgNospeakingTime' => 4294967295, 'GroupmsgNospeakingTime' => 7200 ]); if ($result['ActionStatus'] == 'OK' && $result['ErrorCode'] == 0) { // 走成功逻辑 } else { // 走失败逻辑 }
运营管理
<?php $result = $app->operation->getAppInfo([]); if ($result['ActionStatus'] == 'OK' && $result['ErrorCode'] == 0) { // 走成功逻辑 } else { // 走失败逻辑 }
机器人
<?php $result = $app->robot->create([ 'UserID' => '@RBT#0001' ]); if ($result['ActionStatus'] == 'OK' && $result['ErrorCode'] == 0) { // 走成功逻辑 } else { // 走失败逻辑 }
API 列表
贡献
先fork,提pr
协议
MIT