PHP code example of church / tencent-im

1. Go to this page and download the library: Download church/tencent-im library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

church / tencent-im example snippets



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' => ''
        ]);  
    }
}




$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 {
    // 走失败逻辑
}


$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 {
    // 走失败逻辑
}


$result = $app->group->createGroup([
    'Owner_Account' => 'leckie',
    'Type' => 'Public',
    'Name' => 'TestGroup'
]);

if ($result['ActionStatus'] == 'OK' && $result['ErrorCode'] == 0) {
    // 走成功逻辑
} else {
    // 走失败逻辑
}


$result = $app->account->importAccount([
    'UserID' => '1111',
    'FaceUrl' => 'http://www.qq.com',
    'Nick' => 'TestGroup'
]);

if ($result['ActionStatus'] == 'OK' && $result['ErrorCode'] == 0) {
    // 走成功逻辑
} else {
    // 走失败逻辑
}


$result = $app->shutup->setNoSpeaking([
    'Set_Account' => '1111',
    'C2CmsgNospeakingTime' => 4294967295,
    'GroupmsgNospeakingTime' => 7200
]);

if ($result['ActionStatus'] == 'OK' && $result['ErrorCode'] == 0) {
    // 走成功逻辑
} else {
    // 走失败逻辑
}


$result = $app->operation->getAppInfo([]);

if ($result['ActionStatus'] == 'OK' && $result['ErrorCode'] == 0) {
    // 走成功逻辑
} else {
    // 走失败逻辑
}


$result = $app->robot->create([
    'UserID' => '@RBT#0001'
]);

if ($result['ActionStatus'] == 'OK' && $result['ErrorCode'] == 0) {
    // 走成功逻辑
} else {
    // 走失败逻辑
}