88 lines
2.1 KiB
PHP
88 lines
2.1 KiB
PHP
<?php
|
||
namespace common\services;
|
||
|
||
use GuzzleHttp\Client;
|
||
use yii\base\Exception;
|
||
|
||
class ImService{
|
||
|
||
private static $instance = null;
|
||
public $config;
|
||
|
||
private function __construct()
|
||
{
|
||
$config = \Yii::$app->params['im'];
|
||
if(!$config['url'] || !$config['token']){
|
||
throw new Exception('缺少im相关配置');
|
||
}
|
||
$this->config = $config;
|
||
}
|
||
|
||
private function __clone()
|
||
{
|
||
|
||
}
|
||
|
||
public static function getInstance()
|
||
{
|
||
if(empty(self::$instance)){
|
||
self::$instance = new self();
|
||
}
|
||
return self::$instance;
|
||
}
|
||
|
||
/**
|
||
* Get a fresh instance of the Guzzle HTTP client.
|
||
*
|
||
* @return \GuzzleHttp\Client
|
||
*/
|
||
protected function getHttpClient()
|
||
{
|
||
return new Client(['http_errors' => false]);
|
||
}
|
||
|
||
//消息发送 接收人,接收角色,会话id,消息内容
|
||
public function sendToUid($to_id,$to_role,$message)
|
||
{
|
||
//会话id组合到message
|
||
$data = [
|
||
'FromId' => 0,
|
||
'ToId' => $to_id,
|
||
'ToType' => $to_role,
|
||
'Msg' => $message,
|
||
'Broadcast' => $to_id ? false : true,
|
||
];
|
||
$params = [
|
||
'headers' => ['token' => $this->config['token']],
|
||
'json' => $data,
|
||
];
|
||
$response = $this->getHttpClient()->post($this->config['url'].'/sendMsg', $params);
|
||
|
||
$result = json_decode($response->getBody()->getContents(), true);
|
||
\Yii::error($data);
|
||
\Yii::error($result);
|
||
//根据是否发送成功进行模板消息的发送
|
||
}
|
||
|
||
public function updateImStatus($userId,$imStatus,$userType)
|
||
{
|
||
//
|
||
$data = [
|
||
'userId' => intval($userId),
|
||
'imStatus' => intval($imStatus),
|
||
'userType' => $userType,
|
||
];
|
||
$params = [
|
||
'headers' => ['token' => $this->config['token']],
|
||
'json' => $data,
|
||
];
|
||
$response = $this->getHttpClient()->post($this->config['url'].'/updateImStatus', $params);
|
||
|
||
$result = json_decode($response->getBody()->getContents(), true);
|
||
|
||
}
|
||
|
||
|
||
|
||
}
|