美文网首页
php 钉钉第三方应用实现单聊会话

php 钉钉第三方应用实现单聊会话

作者: 怪力程序员 | 来源:发表于2021-11-04 17:46 被阅读0次

    场景:开发了一个h5 应用 想要部署发布在钉钉上 应用有一个人员列表 这些人员列表是钉钉上的企业人员 ,问:想通过点击第三方应用上的人员 直接跳转到这个人的 钉钉聊天框会话 如何实现呢?

    实现:
    1.conmposer 安装php dingtalksdk

      "files":[
                "vendor/dingtalksdk/TopSdk.php"
            ]
    

    安装好后 项目下会生成如下目录


    12.png

    php代码:

    $client = new DingTalkClient(DingTalkConstant::$CALL_TYPE_OAPI,DingTalkConstant::$METHOD_GET,DingTalkConstant::$FORMAT_JSON);
            $req = new OapiGettokenRequest();
            $req->setAppkey($this->appKey);
            $req->setAppsecret($this->appSecret);
            $resp = $client->execute($req,null,'https://oapi.dingtalk.com/gettoken');
            $accessToken = $resp->access_token;
    
            $req = new OapiGetJsapiTicketRequest;
            $resp_ticket = $client->execute($req, $accessToken,   "https://oapi.dingtalk.com/get_jsapi_ticket");
    
            $nonceStr='cjf123456';
            $timeStamp = time();
            $url = $this->curPageURL();
            $ticket=$resp_ticket->ticket;
            $signature=$this->sign($ticket, $nonceStr, $timeStamp, $url);
    
    

    签名函数

    public function sign($ticket, $nonceStr, $timeStamp, $url){
    
            $plain = 'jsapi_ticket=' . $ticket .
                '&noncestr=' . $nonceStr .
                '&timestamp=' . $timeStamp .
                '&url=' . $url;
            return sha1($plain);
        }
    

    获取url

    public function curPageURL(){
            $pageURL = 'http';
    
            if (array_key_exists('HTTPS',$_SERVER)&&$_SERVER["HTTPS"] == "on")
            {
                $pageURL .= "s";
            }
            $pageURL .= "://";
    
            if ($_SERVER["SERVER_PORT"] != "80")
            {
                $pageURL .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"];
            }
            else
            {
                $pageURL .= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
            }
            return $pageURL;
        }
    

    前端页面

                                <span class="personal " id="chooseonebtn" style="">单聊会话 </span>
    <script src="public/js/dingtalk.open.js"></script>
    
    <script>
        var agentId='{$agentId}';
        var userid='{$userid}';
        var corpId='{$corpId}';
        var timeStamp='{$timestamp}';
        var nonceStr='{$nonceStr}';
        var sign='{$sign}';
        dd.config({
            agentId: agentId, // 必填,微应用ID
            corpId: corpId,//必填,企业ID
            timeStamp: timeStamp, // 必填,生成签名的时间戳
            nonceStr: nonceStr, // 必填,自定义固定字符串。
            signature: sign, // 必填,签名
            type:0/1,   //选填。0表示微应用的jsapi,1表示服务窗的jsapi;不填默认为0。该参数从dingtalk.js的0.8.3版本开始支持
            jsApiList : [
                'runtime.info',
                'biz.contact.choose',
                'device.notification.confirm',
                'device.notification.alert',
                'device.notification.prompt',
                'biz.ding.post',
                'biz.util.openLink',
                'biz.chat.openSingleChat',
            ] // 必填,需要使用的jsapi列表,注意:不要带dd。
        });
        dd.error(function (err) {
      
        })
        dd.userid=0;
        dd.ready(function() {
    
            $('#chooseonebtn').on('click', function() {
                dd.biz.chat.openSingleChat({
                    corpId: '{$corpId}', // 企业id,必须是用户所属的企业的corpid
                    userId:userid, // 用户的uerid
                    onSuccess : function() {
    
                    },
                    onFail : function(err) {
                        // 调用失败时回调
                        // alert('fail')
                    }
                })
            });
        });
    
    
    </script>
    
    

    相关文章

      网友评论

          本文标题:php 钉钉第三方应用实现单聊会话

          本文链接:https://www.haomeiwen.com/subject/awukzltx.html