• 作者: Anonymous
  • 10 分钟阅读

Unipile GitHub:SDK、文档与集成指南

探索Unipile的GitHub仓库、官方SDK、快速入门示例,以及其统一消息API与UnifyPort等替代方案的比较。

Unipile GitHub:SDK、文档与入门指南

如果您正在评估Unipile作为多渠道消息和电子邮件API,GitHub是大多数开发者首先查看的地方。Unipile GitHub组织托管了官方开发者文档仓库、特定语言的SDK以及团队接受反馈和错误报告的问题跟踪器。

本指南解释了Unipile GitHub生态系统中包含的内容、如何安装和使用官方SDK、API涵盖的范围,以及当您的渠道不同时,Unipile与UnifyPort等统一消息平台的比较。

Unipile GitHub组织中有什么?

Unipile GitHub个人资料目前列出了六个公共仓库。对于集成工作最重要的有:

  • 开发者文档仓库 — 指南、API参考和产品资源的中心枢纽。
  • Unipile Node.js SDK — 涵盖LinkedIn、WhatsApp、Email、Telegram、Instagram、Messenger和X(Twitter)的Unipile API包装器。
  • Unipile Python SDK — 官方Python客户端,用于Unipile API v2,目前处于测试阶段。
  • Unipile PHP SDK — 官方PHP客户端,适用于使用Laravel、Symfony或其他PHP技术栈的团队。

组织页面将开发者引导至官方文档站点以获取全面指南,并引导至SDK仓库以获取特定语言的安装和使用说明。

Unipile Node.js SDK:安装与快速入门

Unipile GitHub:SDK、文档与集成指南 - Unipile Node.js SDK:安装与快速入门。

Node.js SDK是最成熟的客户端,也是支持线程和集成示例中最常引用的。它需要Node 18或更高版本。

安装SDK

npm install unipile-node-sdk

使用您的Unipile凭据进行身份验证

import { UnipileClient } from 'unipile-node-sdk';

const client = new UnipileClient('https://{YOUR_DSN}', '{YOUR_ACCESS_TOKEN}');

DSN是分配给您的Unipile账户的端点,访问令牌从仪表板生成。

连接消息账户

SDK支持特定于提供商的连接方法。例如,要使用用户名和密码连接LinkedIn账户:

const response = await client.account.connectLinkedin({
  username: 'your LinkedIn username',
  password: 'your LinkedIn password',
});

其他支持的连接方法包括:

  • connectWhatsapp()
  • connectInstagram({ username, password })
  • connectMessenger({ username, password })
  • connectTelegram()
  • connectTwitter({ username, password })

对于受双因素身份验证或一次性密码保护的账户,SDK公开了一个检查点求解器:

await client.account.solveCodeCheckpoint({
  account_id: 't5XY4yQzR9WVrlNFyzPMhw',
  provider: 'LINKEDIN',
  code: '******',
});

发送消息

await client.messaging.sendMessage({
  chat_id: 'vISKyHtDUmagrk6vrnlXhw',
  text: 'Hello World',
});

使用过滤器列出聊天

await client.messaging.getAllChats({
  account_type: 'LINKEDIN',
  account_id: 't5XY4yQzR9WVrlNFyzPMhw',
  limit: 50,
  after: '2024-07-22T12:00:00.000Z',
});

发送文件附件

const fs = require('fs');
const path = './src/unipile.png';
const fileBuffer = await fs.readFile(path);

await client.messaging.sendMessage({
  chat_id: 'vISKyHtDUmagrk6vrnlXhw',
  text: 'Hello World',
  attachments: [['unipile.png', fileBuffer]],
});

按类型处理错误

SDK抛出带有结构化错误体的UnsuccessfulRequestError实例。您可以基于HTTP状态或API错误类型进行分支:

try {
  const result = await client.messaging.getAllAttendees({ account_id });
} catch (err) {
  if (err instanceof UnsuccessfulRequestError) {
    const { status, type } = err.body;
    switch (type) {
      case 'errors/invalid_credentials':
        // 提示重新认证
        break;
      case 'errors/disconnected_account':
        // 触发重新连接流程
        break;
      default:
        // 记录并重试或向用户显示
        break;
    }
  }
}

调用SDK中尚未打包的端点

对于SDK尚未包装的路由,客户端公开了一个原始请求方法。这对于LinkedIn操作(如关注公司或个人资料)很有用:

await client.request.send({
  path: ['linkedin'],
  method: 'POST',
  parameters: { account_id: '!!YOURACCOUNTID!!' },
  body: {
    body: { patch: { $set: { following: true } } },
    account_id: 'dfR-rG0tQfGhfeP2l5_Bdw',
    method: 'POST',
    request_url: 'https://www.linkedin.com/voyager/api',
  },
});

Unipile Python SDK:API v2测试版

Unipile GitHub:SDK、文档与集成指南 - Unipile Python SDK:API v2测试版

Unipile GitHub:SDK、文档与集成指南 - Unipile Python SDK:API v2测试版.

Unipile Python SDK针对Unipile API v2,该版本仍处于测试阶段。由于该包尚未发布到PyPI,请直接从GitHub安装:

pip install git+https://github.com/unipile/unipile-python.git

如果您的项目需要可重现性,您可以固定特定的分支、标签或提交:

pip install git+https://github.com/unipile/unipile-python.git@main

基本用法遵循标准的生成客户端模式:

import unipile

configuration = unipile.Configuration()
configuration.api_key["apiKey"] = "apikey"

api_client = unipile.ApiClient(configuration)
messaging_api = unipile.MessagingApi(api_client)

有关端点的详细信息,仓库将开发者引导至Unipile v2 API文档和仪表板。

Unipile PHP SDK

Unipile GitHub:SDK、文档与集成指南 - Unipile PHP SDK。

PHP SDK与Node.js客户端一起列在主文档仓库中。它遵循相同的设计理念:一个围绕REST API的轻量包装器,处理身份验证、账户连接、消息传递、附件和个人资料检索,而无需开发者管理原始HTTP调用。

Unipile API涵盖的内容

在SDK中,Unipile API公开了几个功能领域:

账户连接

  • 面向最终用户的托管身份验证向导链接
  • 使用提供商凭据的自定义身份验证流程
  • 基于Cookie和用户代理的LinkedIn连接
  • 检查点和2FA/OTP解析
  • LinkedIn账户重新同步

消息传递

  • 开始新聊天
  • 发送文本消息
  • 列出和检索聊天
  • 列出聊天中的参与者
  • 发送和检索文件附件

用户资料

  • 按用户ID或提供商ID检索资料
  • 检索已认证账户自己的资料
  • 检索LinkedIn公司资料

LinkedIn特定功能

  • 发送InMail
  • 发送和管理连接邀请
  • 创建帖子和评论
  • 对帖子添加反应
  • 列出联系人和公司资料

电子邮件

  • 检索电子邮件历史记录
  • 发送、回复和删除电子邮件

Unipile与UnifyPort:哪种GitHub驱动的方法适合?

Unipile和UnifyPort都降低了多渠道消息传递的成本,但它们针对不同的渠道集和集成风格进行了优化。

能力 Unipile UnifyPort
主要渠道 LinkedIn、WhatsApp、Email、Telegram、Instagram、Messenger、X Telegram、WhatsApp、LINE、X、Zalo、TikTok
API风格 REST,带有官方Node.js、PHP和Python SDK REST,带有官方Node.js、PHP和Go SDK
事件传递 特定于提供商的webhook 标准化JSON事件层,带有webhook控制平面
可靠性功能 错误类型和检查点处理 内置速率限制、带幂等性的重试、故障隔离
安全性 访问令牌和API密钥 API密钥加上HMAC-SHA256 webhook签名
最佳适用场景 需要深度LinkedIn和电子邮件自动化的团队 需要跨聊天应用标准化事件的AI代理、CRM和运营工具

如果您的产品严重依赖LinkedIn自动化或电子邮件工作流,Unipile的GitHub SDK是一个强有力的选择。如果您的技术栈围绕Telegram、WhatsApp、LINE、X、Zalo或TikTok等聊天平台构建,并且您需要将每个提供商事件标准化为一种JSON格式,那么像UnifyPort这样的统一消息API可以消除更多特定于提供商的管道。

对于已经运行大量Telegram工作负载的团队,Telegram机器人指南解释了BotFather和Bot API的工作原理,而Unipile MCP指南展示了如何通过模型上下文协议将AI代理连接到多渠道消息传递。

常见集成陷阱

1. 忽略检查点处理

LinkedIn和其他提供商经常触发2FA或OTP挑战。生产集成必须优雅地处理errors/checkpoint_error和errors/invalid_checkpoint_solution,而不是将它们视为致命错误。

2. 不固定SDK版本

Python SDK是测试版,直接从Git安装。在您的需求文件中固定提交或标签,以避免意外中断。

3. 混合API版本

Node.js SDK针对稳定API,而Python SDK针对API v2测试版。在选择客户端之前,请验证您的仪表板凭据属于哪个API版本。

4. 忽视原始请求回退

并非每个提供商路由都打包在SDK中。原始请求方法是逃生舱,但它要求您了解底层提供商端点和请求形状。

相关阅读

来源和进一步阅读

常见问题解答

官方Unipile GitHub仓库在哪里?

组织位于github.com/unipile。它包含开发者文档仓库和官方SDK仓库。

Unipile提供哪些SDK?

Unipile提供官方Node.js、PHP和Python SDK。Node.js和PHP SDK针对稳定API,而Python SDK针对API v2测试版。

如何安装Unipile Node.js SDK?

在Node 18+项目中运行npm install unipile-node-sdk,然后使用您的DSN和访问令牌实例化UnipileClient。

Unipile支持Telegram和WhatsApp吗?

是的。Node.js SDK包含connectTelegram()和connectWhatsapp()的连接方法,以及LinkedIn、Instagram、Messenger、X和电子邮件。

我可以将Unipile与Python一起使用吗?

可以,但Python SDK是测试版,尚未在PyPI上。使用pip install git+https://github.com/unipile/unipile-python.git直接从GitHub安装。

如何报告错误或请求功能?

在相关的GitHub仓库中打开问题,或通过文档仓库联系Unipile支持团队。

结论

Unipile GitHub组织是开发者通过单个API集成LinkedIn、WhatsApp、电子邮件和其他渠道的实际入口。Node.js SDK提供了最广泛的覆盖范围和最完整的示例,而PHP和Python客户端为团队提供了技术栈的灵活性。理解账户连接流程、检查点处理和错误类型将为您节省大量调试时间。

如果您的渠道组合更倾向于聊天平台而不是LinkedIn和电子邮件,请评估标准化事件层是否比深度特定于提供商的功能更重要。在这种情况下,像UnifyPort这样的平台可以通过为每条消息提供一致的JSON形状和托管的webhook管道来补充或替代提供商密集型SDK方法。