开发者社区> 问答> 正文

钉钉机器人webhook 官方demo改良版,不断采坑的试试吧

<?php
$webhook = "https://oapi.dingtalk.com/robot/send?access_token=XXXXXXXXXXX填入你的机器人access_token";
$message="这里中文编码最容易出问题,40035错误是常事呀~~~,UTF-8,最容易被忽略的关键点!";
$data = array ('msgtype' => 'text', 'text' => array ('content' => $message));
$data_string = json_encode_ex($data);
$result = request_by_curl($webhook, $data_string);  
echo $result;

/**
* php curl 向指定地址发送HTTP请求
* @param  服务器地址  POST内容字符串
* @return string
*/
function request_by_curl($remote_server, $post_string) {  
    $ch = curl_init();  
    curl_setopt($ch, CURLOPT_URL, $remote_server);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array ('Content-Type: application/json;charset=utf-8'));
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);  
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
    //线下环境不用开启curl证书验证, 未调通情况可尝试添加该代码
    //curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, false);
    //curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;  
}  

/*
* Add by lizhaoyao
* Add at 2016-07-07 10:43
* 由于 一般在PHP5.4中对json中中文转码直接用了json_encode($data,JSON_UNESCAPED_UNICODE)
* 而 php5.3中 JSON_UNESCAPED_UNICODE 这个值是不存在的 所以要自己写一个兼容函数
* 对变量进行 JSON 编码
* @param mixed value 待编码的 value ,除了resource 类型之外,可以为任何数据类型,该函数只能接受 UTF-8 编码的数据
* @return string 返回 value 值的 JSON 形式
* */
function json_encode_ex( $value)
{
    if ( version_compare( PHP_VERSION,'5.4.0','<')){
        $str = json_encode( $value);
        $str =  preg_replace_callback(
            "#\\\u([0-9a-f]{4})#i",
            function( $matchs){
                return  iconv('UCS-2BE', 'UTF-8',  pack('H4',  $matchs[1]));
            },
       $str
       );
       return  $str;
    } else {
    return json_encode( $value, JSON_UNESCAPED_UNICODE);
    }
}
?>



展开
收起
wisdomwei 2018-05-29 09:52:44 5569 0
1 条回答
写回答
取消 提交回答
  • Re钉钉机器人webhook 官方demo改良版,不断采坑的试试吧
    咋回事呢我放服务器跑提示这个
    PHP Parse error:  syntax error, unexpected 'function' (T_FUNCTION) in D:\clientweb\Lizhifeng\wwwroot\DD\index.php on line 14

    我检查了貌似没啥语法错误啊
    2019-03-09 13:32:01
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
钉钉小程序——为工作方式插上翅膀 立即下载
钉钉客户端自动化的应用 立即下载
使命必达 —— 钉钉企业级 消息服务的机遇与挑战 立即下载