腾讯云即时通信 IM 服务端 SDK for PHP

  • 2019 年 12 月 17 日
  • 筆記

安装

$ composer require hedeqiang/ten-im -vvv

配置

使用本扩展前需要登录 即时通信 IM 控制台 创建应用,配置管理员、获取 app_id、Key 等关键信息

更多请查看并熟读 即时通信 IM 服务端API

REST API 接口列表

使用

获取用户在线状态

<?php    require __DIR__ .'/vendor/autoload.php';    use HedeqiangTenIMIM;    $config = [      'sdk_app_id' => '14002***',      'identifier' => 'hedeqiang',      'secret_key' => 'a56e6938cb1a8856d15*****',  ];  $im = new IM($config);    $params = [      'To_Account' => ['hedeqiang']  ];    print_r($im->send('openim','querystate',$params));

返回示例

{      "ActionStatus": "OK",      "ErrorInfo": "",      "ErrorCode": 0,      "QueryResult": [{          "To_Account": "1",          "State": "Offline"      }]  }

设置资料

$params = [      'From_Account' => 'hedeqiang',          'ProfileItem' => [              ['Tag' => 'Tag_Profile_IM_Nick', 'Value' => 'hedeqiang'],              ['Tag' => 'Tag_Profile_IM_Gender', 'Value' => 'Gender_Type_Male'],              ['Tag' => 'Tag_Profile_IM_BirthDay', 'Value' => 19940410],              ['Tag' => 'Tag_Profile_IM_SelfSignature', 'Value' => '程序人生的寂静欢喜'],              ['Tag' => 'Tag_Profile_IM_Image', 'Value' => 'https://upyun.laravelcode.cn/upload/avatar/1524205770e4fbfbff-86ae-3bf9-b7b8-e0e70ce14553.png'],          ],  ];    print_r($im->send('profile','portrait_set',$params));

返回示例:

{      "ActionStatus": "OK",      "ErrorCode": 0,      "ErrorInfo": "",      "ErrorDisplay": ""  }

单发单聊消息

$params = [      'SyncOtherMachine' => 1, // 消息不同步至发送方      'From_Account' => '1',      'To_Account' => '2',      'MsgRandom' => 1287657,      'MsgTimeStamp' => 1557387418,      'MsgBody' => [          [              'MsgType' => 'TIMTextElem',              'MsgContent' => [                  'Text' => '晚上去撸串啊'              ]          ]      ]  ];    print_r($im->send('openim','sendmsg',$params));

返回示例:

{      "ActionStatus":"OK",      "ErrorInfo":"",      "ErrorCode":0,      "MsgTime":1573179125,      "MsgKey":"748144182_1287657_1573179125"  }

其中 send 方法接收三个参数。第一个参数 $servicename : 内部服务名,不同的 servicename 对应不同的服务类型;第二个参数 $command:命令字,与 servicename 组合用来标识具体的业务功能;第三个参数为请求包主体 示例:v4/im_open_login_svc/account_import,其中 im_open_login_svcservicenameaccount_importcommand

请求包示例:

{      "From_Account":"id",      "ProfileItem":      [          {              "Tag":"Tag_Profile_IM_Nick",              "Value":"MyNickName"          }      ]  }