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

已配置Zapier新关注者触发,能否用代码动作调用Twitter API发私信?

当然可以实现!

完全没问题——你可以通过Zapier的Python/JavaScript代码动作对接Twitter API,给每一位新关注者自动发送私信。下面是具体的实现步骤和注意事项:

第一步:准备Twitter Developer凭证

首先你需要在Twitter Developer Portal创建一个项目和应用,确保申请到必要的权限:

  • dm.write:允许发送私信
  • user.read:允许读取用户信息
  • dm.read(可选,但建议开启):允许读取私信对话

创建完成后,获取以下用户级凭证:

  • API Key 和 API Secret Key
  • Access Token 和 Access Token Secret(需要授权你的Twitter账号给这个应用,拿到可操作个人账号的凭证)

第二步:在Zapier中配置代码动作

在你的Zap里,触发条件已经设为“新关注者”,接下来添加一个Code动作,选择Python或JavaScript,然后配置输入变量:

  • 将触发步骤中的「Follower ID」映射到输入变量(比如命名为follower_id)
  • 添加你的Twitter凭证作为输入变量(比如twitter_api_key、twitter_api_secret等)

第三步:编写代码示例

Python 示例

Zapier的Python环境预装了requests库,直接用它调用Twitter API v2即可:

import requests

# 从输入变量获取凭证和数据
api_key = input_data['twitter_api_key']
api_secret = input_data['twitter_api_secret']
access_token = input_data['twitter_access_token']
access_token_secret = input_data['twitter_access_token_secret']
follower_id = input_data['follower_id']
message = "Hey there! Thanks so much for following me. I'm glad you're here 😊"

# OAuth 1.0a 认证
auth = (api_key, api_secret, access_token, access_token_secret)

# 调用Twitter API v2发送私信
api_url = f"https://api.twitter.com/2/dm_conversations/with/{follower_id}/messages"
payload = {"text": message}

response = requests.post(api_url, auth=auth, json=payload)

# 处理响应
if response.status_code == 201:
    print("私信发送成功!")
    return {"status": "success", "data": response.json()}
else:
    error_msg = response.json().get("errors", [{}])[0].get("message", "未知错误")
    print(f"发送失败:{error_msg}")
    raise Exception(f"API请求失败,状态码:{response.status_code}")

JavaScript 示例

Zapier的Node.js环境预装了oauth-1.0a和crypto库,用来处理OAuth 1.0a认证:

const OAuth = require('oauth-1.0a');
const crypto = require('crypto');

// 从输入变量获取数据
const apiKey = inputData.twitter_api_key;
const apiSecret = inputData.twitter_api_secret;
const accessToken = inputData.twitter_access_token;
const accessTokenSecret = inputData.twitter_access_token_secret;
const followerId = inputData.follower_id;
const message = "Hey there! Thanks so much for following me. I'm glad you're here 😊";

// 配置OAuth 1.0a
const oauth = OAuth({
  consumer: { key: apiKey, secret: apiSecret },
  signature_method: 'HMAC-SHA1',
  hash_function: (baseStr, key) => crypto.createHmac('sha1', key).update(baseStr).digest('base64')
});

const token = { key: accessToken, secret: accessTokenSecret };
const apiUrl = `https://api.twitter.com/2/dm_conversations/with/${followerId}/messages`;
const payload = { text: message };

// 生成认证头
const headers = oauth.toHeader(oauth.authorize({ url: apiUrl, method: 'POST', data: payload }, token));
headers['Content-Type'] = 'application/json';

// 发送请求
fetch(apiUrl, {
  method: 'POST',
  headers: headers,
  body: JSON.stringify(payload)
})
.then(res => {
  if (!res.ok) throw new Error(`HTTP错误:${res.status}`);
  return res.json();
})
.then(data => {
  console.log("私信发送成功!");
  callback(null, { status: "success", data: data });
})
.catch(err => {
  console.error("发送失败:", err);
  callback(err);
});

关键注意事项

  • 权限审核:确保你的Twitter应用已经通过必要的权限审核(如果是Essential Access,可能需要升级到Elevated Access才能使用私信API)
  • 速率限制:Twitter API对私信有严格的速率限制(比如每15分钟最多150条),避免短时间内发送大量私信导致账号受限
  • 内容合规:不要发送垃圾或违规内容,否则可能触发Twitter的反垃圾机制,导致账号被封禁
  • 变量映射:务必确认触发步骤的「Follower ID」正确映射到代码的输入变量,否则代码无法获取目标用户ID

内容的提问来源于stack exchange,提问作者Elad Ratson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:43:54