有243人阅读过
使用php中转webhook消息
发布于2024/10/24 更新于2025/01/10
[ 教程仅保证更新时有效,请自行测试。]
发布于2024/10/24 更新于2025/01/10
[ 教程仅保证更新时有效,请自行测试。]
[ 教程仅保证更新时有效,请自行测试。]
由于memos的webhook接口参数和企业微信bot的格式不一致,可使用此php简单转发post变动通知。
memos的webhook中填写此php的地址,往这个php上发请求即可
<?php
// 设置 Content-Type 为 JSON
header('Content-Type: application/json');
// 获取 POST 请求的原始内容(即 JSON 数据)
$rawData = file_get_contents('php://input');
// 解码 JSON 数据
$eventData = json_decode($rawData, true);
// 获取当前时间
$timestamp = date('Y-m-d H:i:s');
// Webhook URL
$webhookUrl = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=a2235246-xxxx-xxxx-ba92-06532435ff1e';
// 检查 JSON 是否有效
if ($eventData === null) {
http_response_code(400); // 如果 JSON 数据解析失败,返回 400 错误
echo json_encode(['error' => 'Invalid JSON']);
exit;
}
// 将 Webhook 数据写入日志文件
$logMessage = $timestamp . " - Received Webhook:\n" . print_r($eventData, true) . "\n\n";
// 将日志写入 webhook.log 文件
//file_put_contents('webhook.log', $logMessage, FILE_APPEND);
// 根据事件类型进行处理
if (isset($eventData['activityType'])) {
$creator = isset($eventData['memo']['creator']) ? $eventData['memo']['creator'] : '未知'; // 如果没有 creator,使用默认值
// 创建映射关系数组
$creatorMapping = [
'users/2' => '张东炎',
'users/3' => '寇瑜',
'users/6' => '洪燕群',
'users/7' => '陆振华',
'users/8' => '李旭玉',
'users/9' => '匡慧玲',
'users/10' => '赵锡彬', // 添加更多的映射关系
// 如果需要更多的用户映射,可以继续添加
];
// 判断 creator 的值,并进行相应的映射
if (isset($creatorMapping[$creator])) {
$creator = $creatorMapping[$creator]; // 如果有匹配,替换为映射的名字
} else {
$creator = '未知'; // 如果没有匹配的值,使用默认值
}
$content = isset($eventData['memo']['content']) ? $eventData['memo']['content'] : '未知'; // 如果没有 creator,使用默认值
$uid = isset($eventData['memo']['uid']) ? $eventData['memo']['uid'] : '未知'; // 如果没有 uid,使用默认值
switch ($eventData['activityType']) {
case 'memos.memo.updated':
// 你可以在这里将文章信息保存到数据库,或者做其他处理
$webhookData = [
'msgtype' => 'text',
'text' => [
'content' => "有订单被 [修改] !请及时查看并处理!\n- 业务员:$creator \n- 关键词:$content\n\n查看详细信息:\nhttps://ljs.fun:5231/m/$uid" // 这里加上换行符
]
];
// 初始化 cURL
$ch = curl_init($webhookUrl);
// 设置 cURL 选项
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($webhookData));
// 执行 cURL 请求并获取响应
$response = curl_exec($ch);
// 检查是否有错误
if (curl_errno($ch)) {
$logMessage = "cURL Error: " . curl_error($ch);
file_put_contents('webhook.log', $logMessage, FILE_APPEND);
}
break;
case 'memos.memo.created':
// 处理文章创建事件
// 你可以按需要处理文章创建事件
// Webhook 数据
$webhookData = [
'msgtype' => 'text',
'text' => [
'content' => "有 [新订单] ,请及时查看并处理!\n- 业务员:$creator \n- 关键词:$content\n\n查看详细信息:\nhttps://ljs.fun:5231/m/$uid" // 这里加上换行符
]
];
// 初始化 cURL
$ch = curl_init($webhookUrl);
// 设置 cURL 选项
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($webhookData));
// 执行 cURL 请求并获取响应
$response = curl_exec($ch);
// 检查是否有错误
if (curl_errno($ch)) {
$logMessage = "cURL Error: " . curl_error($ch);
file_put_contents('webhook.log', $logMessage, FILE_APPEND);
}
break;
case 'memos.memo.deleted':
// 处理文章删除事件
// 你可以按需要处理文章删除事件
// Webhook 数据
$webhookData = [
'msgtype' => 'text',
'text' => [
'content' => "有订单被 [删除] !请及时查看并处理!\n- 业务员:$creator \n- 关键词:$content\n\n查看详细信息:\nhttps://ljs.fun:5231/m/$uid" // 这里加上换行符
]
];
// 初始化 cURL
$ch = curl_init($webhookUrl);
// 设置 cURL 选项
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($webhookData));
// 执行 cURL 请求并获取响应
$response = curl_exec($ch);
// 检查是否有错误
if (curl_errno($ch)) {
$logMessage = "cURL Error: " . curl_error($ch);
file_put_contents('webhook.log', $logMessage, FILE_APPEND);
}
break;
default:
// 未处理的事件类型
echo json_encode(['status' => 'error', 'message' => 'Unknown event type']);
break;
}
} else {
// 如果没有收到事件类型
http_response_code(400);
echo json_encode(['error' => 'No event type found']);
}
?>文章对你有帮助吗?
- 一般[0]

- 很赞[0]

- 没用[0]

- 垃圾[0]

- 无语[0]


