php对接飞书api(发送消息)

691 阅读2分钟

最近开发一个功能是利用飞书发送工作消息给公司员工 入职推送 离职推送 订单异常推送 下面是总结调用飞书发送消息的流程

1. 注册飞书机器人应用

  • 访问飞书开放平台(open.feishu.cn/),创建自定义应用。
  • 获取App ID和App Secret,这两个参数将用于后续的接口调用进行身份验证。

2. 获取访问令牌(Access Token)

  • 使用App ID和App Secret获取访问令牌。飞书提供了多种方式来获取访问令牌,通常是通过OAuth 2.0授权流程来获取。
  • 访问令牌通常有一定的有效期(2个小时),需要定期刷新。

3. 编写PHP代码对接飞书API

  • 使用PHP的cURL库或其他HTTP客户端库来发送HTTP请求。
  • 构造请求头,包括Authorization(Bearer + access_token)和Content-Type(application/json; charset=utf-8)。
  • 构造请求体,包含必要的参数,如open_idchat_idmsg_typecontent等。

4. 发送消息

  • 调用飞书的消息发送API(例如:open.feishu.cn/open-apis/m…)。
  • 根据API文档,设置正确的HTTP请求方法(通常是POST)。
  • 发送请求并处理响应。如果成功,飞书会返回一个包含message_id的响应体。

示例PHP代码

<?php
// 飞书API的URL
$url = 'https://open.feishu.cn/open-apis/message/v4/send/';
// App ID和App Secret
$appId = 'your_app_id';
$appSecret = 'your_app_secret';
// 访问令牌
$accessToken = 'your_access_token';

// 构造请求头
$headers = [
    'Authorization: Bearer ' . $accessToken,
    'Content-Type: application/json; charset=utf-8'
];

// 构造请求体
$data = [
    "open_id" => "ou_xxx",  // 用户的Open ID
    "chat_id" => "oc_xxx",  // 群聊ID
    "msg_type" => "text",
    "content" => [
        "text" => "Hello, this is a test message."
    ]
];

// 发送请求
$response = json_decode(curl_post($url, json_encode($data), $headers), true);

// 处理响应
if ($response['code'] == 0) {
    echo "Message sent successfully. Message ID: " . $response['data']['message_id'];
} else {
    echo "Failed to send message. Error: " . $response['msg'];
}

function curl_post($url, $post_data, $headers) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $output = curl_exec($ch);
    curl_close($ch);
    return $output;
}
?>

5. 错误处理和日志记录

  • 在代码中添加适当的错误处理逻辑,以便在发送消息失败时能够及时发现和解决问题。
  • 记录日志,记录每次发送消息的详细信息,包括请求和响应数据,以便于调试和审计。

以上是使用PHP对接飞书发送消息的基本流程和示例代码。