You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 01:48:14