真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

php調(diào)用釘釘數(shù)據(jù),php調(diào)用接口獲取數(shù)據(jù)

php 使用釘釘機器人推送消息

群機器人是釘釘群的高級擴展功能。群機器人可以將第三方服務的信息聚合到群聊中,實現(xiàn)自動化的信息同步。目前,大部分機器人在添加后,還需要進行Webhook配置,才可正常使用(配置說明詳見操作流程中的幫助鏈接)。

站在用戶的角度思考問題,與客戶深入溝通,找到永昌網(wǎng)站設計與永昌網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站制作、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名申請、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務覆蓋永昌地區(qū)。

例如:

通過聚合GitHub,GitLab等源碼管理服務,實現(xiàn)源碼更新同步。

通過聚合Trello,JIRA等項目協(xié)調(diào)服務,實現(xiàn)項目信息同步。

另外,群機器人支持Webhook協(xié)議的自定義接入,支持更多可能性,例如:你可將運維報警通過自定義機器人聚合到釘釘群實現(xiàn)提醒功能。

消息發(fā)送太頻繁會嚴重影響群成員的使用體驗,大量發(fā)消息的場景(譬如系統(tǒng)監(jiān)控報警)可以將這些信息進行整合,通過markdown消息以摘要的形式發(fā)送到群里。

每個機器人每分鐘最多發(fā)送20條。如果超過20條,會限流10分鐘。

登錄釘釘PC客戶端(請升級至最新版),操作入口:

窗口右上角點擊【頭像】,進入”機器人管理“, 可對所有機器人進行統(tǒng)一管理。

進入一個釘釘群,在群的頂部功能欄中,點擊【群設置】,進入菜單可以看到【群機器人】的入口,點擊進入“群機器人”的管理面板后,可以進行添加、編輯和刪除群機器人的操作。

我們這里使用最后一個webhook

步驟一,在機器人管理頁面選擇“自定義”機器人,輸入機器人名字并選擇要發(fā)送消息的群。如果需要的話,可以為機器人設置一個頭像。點擊“完成添加”,完成后會生成Hook地址,如下圖:

步驟二,點擊“復制”按鈕,即可獲得這個機器人對應的Webhook地址,其格式如下:

(1)獲取到Webhook地址后,用戶可以向這個地址發(fā)起HTTP POST 請求,即可實現(xiàn)給該釘釘群發(fā)送消息。注意,發(fā)起POST請求時,必須將字符集編碼設置成UTF-8。

(2)當前自定義機器人支持文本 (text)、鏈接 (link)、markdown(markdown)、ActionCard、FeedCard消息類型,大家可以根據(jù)自己的使用場景選擇合適的消息類型,達到最好的展示樣式。

(3)自定義機器人發(fā)送消息時,可以通過手機號碼指定“被@人列表”。在“被@人列表”里面的人員收到該消息時,會有@消息提醒(免打擾會話仍然通知提醒,首屏出現(xiàn)“有人@你”)。

(4)當前機器人尚不支持應答機制 (該機制指的是群里成員在聊天@機器人的時候,釘釘回調(diào)指定的服務地址,即Outgoing機器人)。

php怎么獲取釘釘員工授權信息?

做過一個E應用,使用lumen框架,和你的思路是一樣的,新用戶點進去就自動授權注冊應用,數(shù)據(jù)存到我們自己的數(shù)據(jù)庫中,不依賴釘釘,我們還同步了部門信息,如果粘貼復制和下面的那個同學一樣,看上去你也會覺得懵,方法都是封裝好了的。

建議你這樣試試看:

獲取AccessToken:

后端通過corpid,corpsecret請求接口gettoken?corpid=idcorpsecret=secrect獲取AccessToken

獲取釘釘用戶userid:

前端需要相應的處理,攜帶authCode請求,加上AccessToken這兩個參數(shù)請求接口/user/getuserinfo?access_token=access_tokencode=authCode這個

獲取釘釘用戶詳情:

使用access_token和上一步的釘釘userid 請求接口 /user/get?access_token=ACCESS_TOKENuserid=

插入釘釘用戶的數(shù)據(jù)到你的 數(shù)據(jù)庫中

我們這樣做的:

/**

* 釘釘免登陸獲獲取用信息

* @param $authCode

* @param $url

* @return array

*/

static function outhLogin($authCode, $url)

{

if (empty($authCode) || empty($url)) {

return self::returnError('1101', self::$errorArray['1101']);

}

$accessToken = ComponentDingtalk::getPcAccessToken();

if ($accessToken['code']) {

self::logError(__CLASS__ . '-' . __FUNCTION__, '獲取access_token失敗');

return self::returnError('1102', self::$errorArray['1102']);

}

$dingUserId = ComponentDingtalk::getDingUserid($accessToken['data'], $authCode);

if ($dingUserId['code']) {

self::logError(__CLASS__ . '-' . __FUNCTION__, '用戶userid獲取失?。ㄕ{(diào)用釘釘API)');

return self::returnError('1103', self::$errorArray['1103']);

}

$dinguserInfo = ComponentDingtalk::getDingUserInfo($accessToken['data'], $dingUserId['data']);

if ($dinguserInfo['code']) {

self::logError(__CLASS__ . '-' . __FUNCTION__, '用戶信息獲取失敗(調(diào)用釘釘API)');

return self::returnError('1104', self::$errorArray['1004']);

}

$userInfo = $dinguserInfo['data'];

return self::transaction(function () use ($accessToken, $userInfo, $url) {

if (\count($userInfo['department']) 1) {

$departIdArr = [];

$departNameArr = [];

for ($i = 0, $iMax = \count($userInfo['department']); $i $iMax; $i++) {

$departInfo[$i] = ServerDepartment::getByDdDepartid($userInfo['department'][$i]);

$departIdArr[] = $departInfo[$i]['id'];

$departNameArr[] = $departInfo[$i]['name'];

}

$depart['id'] = implode(',', $departIdArr);

$depart['name'] = implode(',', $departNameArr);

} else {

$ddDepartmentId = implode(',', $userInfo['department']);

$depart = ServerDepartment::getByDdDepartid($ddDepartmentId);

}

//插入用戶

$user = ServerEmployee::getByDdUserid($userInfo['userid']);

if ($user $user['status'] == 2) {

return self::returnError('1105', self::$errorArray['1105']);

}

if (empty($user)) {

$roleId = 0;

$departId = $depart['id'];

$name = $userInfo['name'];

$mobile = $userInfo['mobile'];

$departName = $depart['name'];

$position = $userInfo['position'];

$ddUserid = $userInfo['userid'];

$ddStatus = $userInfo['active'] ? 1 : 2;

$ddInfo = json_encode($userInfo, JSON_UNESCAPED_UNICODE);

$tokenOverAt = (int)(time() + $_ENV['PROJECT_apiAppTokenOverTime']);

$token = self::_createToken($userInfo['userid'], $tokenOverAt);

$status = 1;

$userId = ServerEmployee::insert($roleId, $departId, $name, $mobile, $departName, $position, $ddUserid, $ddStatus, $ddInfo, $token, $tokenOverAt, $status);

if (!$userId) {

self::logError(__CLASS__ . '-' . __FUNCTION__, '用戶初始化創(chuàng)建失敗');

return self::returnError('1106', self::$errorArray['1106']);

}

}

$userId = $userId ?? $user['id'];

// 更新Token

$id = $userId;

$roleId = $user['roleId'];

$departId = $depart['id'];

$name = $userInfo['name'];

$mobile = $userInfo['mobile'];

$departName = $depart['name'];

$position = $userInfo['position'];

$ddUserid = $userInfo['userid'];

$ddStatus = $userInfo['active'] ? 1 : 2;

$ddInfo = json_encode($userInfo, JSON_UNESCAPED_UNICODE);

$tokenOverAt = (int)(time() + $_ENV['PROJECT_apiAppTokenOverTime']);

$token = self::_createToken($userInfo['userid'], $tokenOverAt);

$status = 1;

$updateParams = ServerEmployee::update($id, $roleId, $departId, $name, $mobile, $departName, $position, $ddUserid, $ddStatus, $ddInfo, $token, $tokenOverAt, $status);

if (!$updateParams) {

self::logError(__CLASS__ . '-' . __FUNCTION__, '用戶信息更新失敗' . json_encode($updateParams, JSON_UNESCAPED_UNICODE) . '/' . json_encode([$id, $roleId, $departId, $name, $mobile, $depart, $position, $ddUserid, $ddStatus, $ddInfo, $token, $tokenOverAt, $status]));

return self::returnError('1107', self::$errorArray['1107']);

}

// 前端的配置信息

// 獲取jsTicket

$jsTicket = ComponentDingtalk::getPcJsTicket($accessToken['data']);

if ($jsTicket['code']) {

self::logError(__CLASS__ . '-' . __FUNCTION__, '獲取jsTicket失?。ㄕ{(diào)用釘釘API)');

return self::returnError('1111', self::$errorArray['1111']);

}

// 組裝簽名數(shù)據(jù)

$curUrl = $url;;

$nonceStr = uniqid('', true);

$agentId = $_ENV['PROJECT_ddInterfaceAgentID'];

$timeStamp = time();

$corpId = $_ENV['PROJECT_ddInterfaceCorpId'];

$signature = ComponentDingtalk::getSign($jsTicket['data'], $nonceStr, $timeStamp, $curUrl);

$config = array(

'url' = urldecode($curUrl),

'nonceStr' = $nonceStr,

'agentId' = $agentId,

'timeStamp' = $timeStamp,

'corpId' = $corpId,

'signature' = $signature

);

// 獲取當前角色的權限

$roleInfo = ServerRole::getById($roleId);

// 當前用戶的頂級部門(不含根部門)

$departInfo = ServerDepartment::getById($departId);

if ($departInfo['parentid'] == 1) {? // 二級部門(總經(jīng)辦)

$departRootId = $departId;

$departRootName = $departName;

} else {

$sonDepart = ServerDepartment::getById($departInfo['parentid']);//分組

if ($sonDepart['parentid'] == 1) {

$departRootId = $sonDepart['id'];

$departRootName = $sonDepart['name'];

} else {

$grandsonDepart = ServerDepartment::getById($sonDepart['parentid']);//部門

if ($grandsonDepart['parentid'] == 1) {

$departRootId = $grandsonDepart['id'];

$departRootName = $grandsonDepart['name'];

} else {

$grandchildDepart = ServerDepartment::getById($grandsonDepart['parentid']);//分公司

$departRootId = $grandchildDepart['id'];

$departRootName = $grandchildDepart['name'];

}

}

}

$company = ServerDepartment::get(['parentid' = 0, 'dd_departid' = 1]);

return self::returnSuccess(array(

'id' = $userId,

'name' = $name,

'token' = $token,

'tokenOverAt' = $tokenOverAt,

'config' = $config,

'power' = $roleInfo['power'] ?? '',

'departId' = $departId,

'departName' = $departName,

'departRootId' = $departRootId,

'departRootName' = $departRootName,

'company' = $company['name'],

));

}, function (\Exception $e) {

echo $e-getMessage();

self::logError(__CLASS__ . '-' . __FUNCTION__, $e-getMessage());

return self::returnError('1108', self::$errorArray['1108']);

});

}

釘釘群會話怎么用php實現(xiàn),用text消息

后端代碼

push.php

?php

use?Workerman\Worker;

require_once?'./Workerman/Autoloader.php';

//?初始化一個worker容器,監(jiān)聽1234端口

$worker?=?new?Worker('websocket://0.0.0.0:1234');

//?這里進程數(shù)必須設置為1

$worker-count?=?1;

//?worker進程啟動后建立一個內(nèi)部通訊端口

$worker-onWorkerStart?=?function($worker)

{

//?開啟一個內(nèi)部端口,方便內(nèi)部系統(tǒng)推送數(shù)據(jù),Text協(xié)議格式?文本+換行符

$inner_text_worker?=?new?Worker('Text://0.0.0.0:5678');

$inner_text_worker-onMessage?=?function($connection,?$buffer)

{

global?$worker;

//?$data數(shù)組格式,里面有uid,表示向那個uid的頁面推送數(shù)據(jù)

$data?=?json_decode($buffer,?true);

$uid?=?$data['uid'];

//?通過workerman,向uid的頁面推送數(shù)據(jù)

$ret?=?sendMessageByUid($uid,?$buffer);

//?返回推送結果

$connection-send($ret???'ok'?:?'fail');

};

$inner_text_worker-listen();

你可以去后盾人平臺看看,里面的東西不錯


本文標題:php調(diào)用釘釘數(shù)據(jù),php調(diào)用接口獲取數(shù)據(jù)
分享URL:http://weahome.cn/article/hoseep.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部