腾讯云 IM.
$ composer require hedeqiang/ten-im -vvv
说明:本项目默认会引入 tencent/tls-sig-api-v2 扩展包,所以你不需要手动引入
tencent/tls-sig-api-v2
,否则可能会造成依赖冲突
使用本扩展前需要登录 即时通信 IM 控制台 创建应用,配置管理员、获取 app_id、Key 等关键信息
更多请查看并熟读 即时通信 IM 服务端API
require __DIR__ .'/vendor/autoload.php';
use Hedeqiang\TenIM\IM;
$config = [
'sdk_app_id' => '',
'identifier' => '',
'secret_key' => '',
'region' => 'zh' // zh、sgp、kr、ger、ind、usa
];
$im = new IM($config);
其中
send
方法接收三个参数。第一个参数 $servicename : 内部服务名,不同的 servicename 对应不同的服务类型;第二个参数$command
:命令字,与 servicename 组合用来标识具体的业务功能;第三个参数为请求包主体
示例:
v4/im_open_login_svc/account_import
,其中im_open_login_svc
为servicename
;account_import
为command
请求包示例:
{
"From_Account":"id",
"ProfileItem":
[
{
"Tag":"Tag_Profile_IM_Nick",
"Value":"MyNickName"
}
]
}
$params = [
'Identifier' => "hedeqiang",
'Nick' => 'hedeqiang',
'FaceUrl' => '',
];
print_r($im->send('im_open_login_svc','account_import',$params));
<?php
$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"
}
php bin/hyperf.php vendor:publish hedeqiang/ten-im
SDK_APP_ID=
IDENTIFIER=
SECRET_KEY=
REGION= // zh、sgp、kr、ger、ind、usa
use Hedeqiang\TenIM\IM;
use Hyperf\Utils\ApplicationContext;
$response = ApplicationContext::getContainer()->get(IM::class)->send($servername,$command,$params);
php artisan vendor:publish --provider="Hedeqiang\TenIM\ServiceProvider"
SDK_APP_ID=
IDENTIFIER=
SECRET_KEY=
REGION= // zh、sgp、kr、ger、ind、usa
use Hedeqiang\TenIM\IM;
public function index(IM $im)
{
$params = [
'SyncOtherMachine' => 1, // 消息不同步至发送方
'From_Account' => '1',
'To_Account' => '2',
'MsgRandom' => 1287657,
'MsgTimeStamp' => 1557387418,
'MsgBody' => [
[
'MsgType' => 'TIMTextElem',
'MsgContent' => [
'Text' => '晚上去撸串啊'
]
]
]
];
$response = $im->send('openim','sendmsg',$params);
}
public function index()
{
$params = [
'SyncOtherMachine' => 1, // 消息不同步至发送方
'From_Account' => '1',
'To_Account' => '2',
'MsgRandom' => 1287657,
'MsgTimeStamp' => 1557387418,
'MsgBody' => [
[
'MsgType' => 'TIMTextElem',
'MsgContent' => [
'Text' => '晚上去撸串啊'
]
]
]
];
$response = app('im')->send('openim','sendmsg',$params);
}
use Hedeqiang\TenIM\Facades\IM;
$params = [
'SyncOtherMachine' => 1, // 消息不同步至发送方
'From_Account' => '1',
'To_Account' => '2',
'MsgRandom' => 1287657,
'MsgTimeStamp' => 1557387418,
'MsgBody' => [
[
'MsgType' => 'TIMTextElem',
'MsgContent' => [
'Text' => '晚上去撸串啊'
]
]
]
];
$response = IM::im()->send('openim','sendmsg',$params);
更多用法请参考 REST API 接口列表
TODO
You can contribute in one of three ways:
- File bug reports using the issue tracker.
- Answer questions or fix bugs on the issue tracker.
- Contribute new features or update the wiki.
The code contribution process is not very formal. You just need to make sure that you follow the PSR-0, PSR-1, and PSR-2 coding guidelines. Any new code contributions must be accompanied by unit tests where applicable.
MIT