如何通过WP Webhooks自定义动作向Zapier返回Zoom SDK签名
问题根因
你当前的逻辑仅完成了自定义动作触发,但没有将生成的Zoom SDK签名写入WP Webhooks过滤器要求返回的$return_args数组,因此Zapier作为调用方只能收到默认的成功提示,无法获取签名结果。
解决步骤
- 修正原有签名生成函数的语法闭合问题,将函数完整写入主题的
functions.php文件 - 对接WP Webhooks的
wpwhpro/run/actions/custom_action/return_args过滤器,匹配你实际使用的自定义动作标识符 - 从传入的请求体中提取生成签名所需参数,做基础非空校验,避免运行报错
- 调用签名生成函数拿到结果,将签名追加到返回参数数组中返回给调用方
完整可用代码
/** * 生成Zoom Meeting SDK签名 */ function generate_signature ( $api_key, $api_secret, $meeting_number, $role){ // 设置时区为UTC date_default_timezone_set("UTC"); $time = time() * 1000 - 30000; // 毫秒级时间戳 $data = base64_encode($api_key . $meeting_number . $time . $role); $hash = hash_hmac('sha256', $data, $api_secret, true); $_sig = $api_key . "." . $meeting_number . "." . $time . "." . $role . "." . base64_encode($hash); // 返回URL安全的base64编码签名 return rtrim(strtr(base64_encode($_sig), '+/', '-_'), '='); } /** * 对接WP Webhooks自定义动作返回值 */ add_filter( 'wpwhpro/run/actions/custom_action/return_args', 'wpwh_return_zoom_signature', 10, 3 ); function wpwh_return_zoom_signature( $return_args, $identifier, $response_body ){ // 替换为你实际在WP Webhooks中配置的自定义动作标识符,需和Zapier请求传值一致 $target_identifier = 'your_custom_action_identifier'; // 标识符不匹配时直接返回原有参数 if( $identifier !== $target_identifier ){ return $return_args; } // 从请求体提取参数,若要硬编码Zoom密钥可跳过对应参数的提取逻辑 $api_key = WPWHPRO()->helpers->validate_request_value( $response_body['content'], 'api_key' ); $api_secret = WPWHPRO()->helpers->validate_request_value( $response_body['content'], 'api_secret' ); $meeting_number = WPWHPRO()->helpers->validate_request_value( $response_body['content'], 'meeting_number' ); $role = WPWHPRO()->helpers->validate_request_value( $response_body['content'], 'role' ); // 基础参数校验 if( empty($api_key) || empty($api_secret) || empty($meeting_number) || !isset($role) ){ $return_args['success'] = false; $return_args['msg'] = '缺少生成签名所需的必要参数'; return $return_args; } // 生成签名 $zoom_signature = generate_signature($api_key, $api_secret, $meeting_number, intval($role)); // 将签名写入返回参数 $return_args['success'] = true; $return_args['msg'] = '签名生成成功'; $return_args['zoom_signature'] = $zoom_signature; return $return_args; }
注意事项
- 必须将代码中
your_custom_action_identifier替换为你实际配置的自定义动作标识符,否则逻辑不会触发 - 不建议将Zoom API Secret通过Zapier请求传递,直接把API Key、Secret硬编码在服务端函数中,跳过对应参数提取校验逻辑,安全性更高
- Zapier收到Webhook响应后会自动解析JSON结构,后续步骤可直接引用
zoom_signature字段获取生成的签名值 - 代码添加完成后,建议先用Postman类工具模拟POST请求测试返回结果,确认签名正常生成后再对接Zapier
内容的提问来源于stack exchange,提问作者ZP1306
相关产品推荐
相关产品推荐

