首页 > 编程语言 >php对接飞书机器人,根据手机号给指定人推送消息

php对接飞书机器人,根据手机号给指定人推送消息

时间:2024-09-10 17:13:43浏览次数:12  
标签:推送 return 手机号 res ch config curl php data

工具类:

<?php

namespace common\components;

class Feishu
{
    public static function getToken($config) {
     
        $url = $config['serverUrl'] . 'auth/v3/app_access_token/internal';
        $data = [
            "app_id" => $config['appId'],
            "app_secret" => $config['appSecret']
        ];
        $res = self::commonCurl($url,$data);

        if($res['code'] != 0) {
            return false;
        }

        return $res['app_access_token'];
    }

    public static function sendMessage($mobiles, $message) {
        $config = self::_getConfig();

        $token = self::getToken($config);
        if(!$token) return null;

        $userList = self::_getUserListByMobile($mobiles, $config, $token);
        if(!$userList) return null;

        $headers = [
            'Authorization: ' . 'Bearer ' . $token,
        ];

        $data = [
            "msg_type" => "text",
            "content" => json_encode([
                'text' => $message
            ])
        ];
        $res = null;
        foreach ($userList as $userInfo) {
            $data['receive_id'] = $userInfo[0]['open_id'];
            $res = self::commonCurl($config['serverUrl'] . 'im/v1/messages?receive_id_type=open_id', $data, $headers);
        }

        if(isset($res['code']) && ($res['code'] == 0)) return true;

        return false;
    }

    //获取用户信息
    private static function _getUserListByMobile($mobiles, $config, $token) {
        $params = implode('&mobiles=', $mobiles);

        $headers = [
            'Authorization: ' . 'Bearer ' . $token,
        ];

        $res = self::commonGetCurl($config['serverUrl'] . 'user/v1/batch_get_id?mobiles=' . $params, $headers);
        if($res['code'] != 0) {
            return false;
        }

        return $res['data']['mobile_users'];
    }

    private static function _getConfig() {
        return [
            'serverUrl' => 'https://open.feishu.cn/open-apis/',
            'appId'     => '111', //替换成自己的 appId
            'appSecret' => '111', //替换成自己的 appSecret
        ];
    }

    public static function commonCurl($serverUrl, $args, $headers = [], $isJson = true) {

        $data_string = $isJson ? json_encode($args) : $args;

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $serverUrl);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array_merge($headers, array(
            'Content-Type: application/json;charset=UTF-8',
            'Content-Length: ' . strlen($data_string)))
        );

        $result = curl_exec($ch);
        $info = curl_getinfo($ch);

        curl_close($ch);


        $data = json_decode($result, true);
        return $data ?: $result;
    }
}
  

  调用工具类发送消息:

Feishu::sendMessage(['18618161234'], '测试消息');

  

标签:推送,return,手机号,res,ch,config,curl,php,data
From: https://www.cnblogs.com/yangyixin/p/18406789

相关文章

  • 【漏洞复现】用友 U8CRM /pub/help.php 任意文件读取漏洞
    免责声明:        本文内容旨在提供有关特定漏洞或安全漏洞的信息,以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步,并非出于任何恶意目的。阅读者应该明白,在利用本文提到的漏洞信息或进行相关测试时,可能会违反某些法律法规......
  • 苹果宣布iOS 18正式版9月17日推送:支持27款iPhone升级
    9月10日消息,在苹果秋季发布会结束后,苹果宣布将于9月17日(下周二)推送iOS18正式版系统。苹果官网显示,iOS18正式版将兼容第二代iPhoneSE及之后的所有机型,加上刚发布的iPhone16系列,共兼容27款iPhone。iOS 18升级适配机型如下:iPhone16iPhone16PlusiPhone16ProiPhone1......
  • aalertmanager+prometheus-webhook-dingtalk推送至钉钉群
    揭秘业务背后的守护者,真实业务场景带你领略运维技术的魅力!看了很多技术大佬的博客,都是在讲技术,缺乏业务场景的构建,很多运维人员遇到问题找不到解决方案。因此我想分享真实的业务场景,大家一起沟通业务问题,快速的提升技术,快速升职加薪。-----------------------正文开始-------------......
  • 计算机毕业设计必看必学!!11959 springboot校企对接实习管理系统,原创定制程序, java、
    摘 要校企合作实习是一种重要的实践教学模式,但是在实际的推行过程中,存在许多管理问题。其中包括远程指导困难、学生管理困难、校企信息沟通不畅等问题一直困扰着校方负责管理实习的教师们。随着互联网系统开发技术的发展,应用web技术开发B/s模式的实习管理系统,根据用户需求,......
  • 计算机毕业设计必看必学!! 88705 SpringBoot社区配送服务系统小程序,原创定制程序, jav
    摘要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,社区当然也不例外。社区配送服务系统小程序是以实际运用为开发背景,运用软件工程原理和开发方法,采用Java技术构建的一个管理系统。整个开发过程首先对软件系统进......
  • 计算机毕业设计必看必学!!12222 springboo儿童疫苗预约系统 ,原创定制程序, java、PHP
    摘  要随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。儿童疫苗预约管理,主要的模块包括查看首页、站点管理(轮播图、公告栏)用户管理(管理员、系统用户)内容管理(资讯列表、分类列表)更多管理(预约订单、疫苗信息、......
  • 计算机毕业设计必看必学!!11819 ssm球鞋资讯交流平台,原创定制程序, java、PHP、python
    摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,球鞋资讯交流平台当然也不能排除在外。球鞋资讯交流平台是以实际运用为开发背景,运用软件工程原理和开发方法,采用 SSM技术构建的一个管理平台。整个开发过程......
  • 计算机毕业设计必看必学!! 11779 猪场管理系统的设计与实现,原创定制程序, java、PHP、
    摘要信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对猪场管理系统等问题,对猪场管理系统进行研究分析,然后开发设计出猪场管理系统以解决问题。猪......
  • SignalR实时消息推送
    后端创建一个Hub类,重写连接和断连方法ChatHub记录下每一位登录人连接SignalR的信息至Redis中引用的Microsoft.AspNetCore.App框架publicclassChatHub:Hub{//ConcurrentDictionary<string,HubUser>concurrentDictionary=newConcurrentDictionary<string,HubU......
  • PHP 程序员学会了 Go 语言就能唬住面试官吗?
    大家好,我是码农先森。唬住了50k,唬不住就5k。这句话一直是PHP程序员之间相互吹捧、吹牛逼的笑点,每次面试过后都会挠挠头上仅剩的几根头发,回想自己是否吹牛逼会过了头。我经常在微信程序员撕逼群里,看到群友因为某个技术点而争执不休,时而讨论这个技术能不能在面试过程中突出自......