@dmfaster/ sdk (英语)
为DM快取代理2.0打入了Node.js客户端. 它暴露了有界限的工作空间
检查 无国籍运动规划 准确的观众预览
私人起草和授权通过
范围,工作空间 dmf_pat_… 符号 .
分发便条:下面的登记命令只有在这个精确度之后才能工作 发布. 在此之前,维护者使用一个 授权源检出 .
npm install @dmfaster/[email protected]
非落下端点必须使用HTTPS. 客户端也拒绝 HTTP 重定向, 所以 无法将无记名标志传送到不同的来源.
import { createDmfasterClient } from "@dmfaster/sdk";
const client = createDmfasterClient({
baseUrl: process.env.DMFASTER_API_URL!,
token: process.env.DMFASTER_TOKEN!,
});
const result = await client.invoke("campaigns.list", {
status: "Running",
limit: 10,
});
运动规划的呼唤需要最新的运动状态。 这保持了
公共 API 无国籍,同时允许任何客户恢复、验证或交出
计划给另一个特工 发射和暂停是两步操作:
飞行前,让所有者批准 确切的竞选版本 在DM更快,然后
以发回的许可身份和同等能力援引该诉讼
键。 重复准确的飞行前读取现有的授权状态. A 类
客户端提供 approved 布尔从未被接受为授权 .
发射前飞行是一种歧视的结果. status: "setup_required" 用品
人类拥有的浏览器设置 URL 以及飞行前要恢复的确切输入
竞选活动仍然被禁用. status: "approval_required" 供应
版本约束授权和批准 URL. 浏览器设置从未替换
用于批准发射.
呼叫者必须提供绝对的 API 基础 URL 和 范围无记名标志 .
SDK 将工具输入直接发送给
POST /api/v1/agent/tools/{toolName},应用限定的超时,并验证
返回前共享结果封.
导入Instagram 用户名
保存已审查过的用户名收藏为私有列表 :
dmfaster list import --name "Finland Coaches" --file instagram-usernames.csv --json
使用带有可选选项的一栏 CSV username 或者说 instagram_username 标题,
或每行有一个用户名。 UTF-8 BOM,引用的单元格,和 CRLF 支持. 最多
1000行和64KiB被接受. 无效行拒绝整个导入 。 大小写
和领导@实现正常化;重复报告并删除。 命令
从名称和唯一用户名中获取一个稳定的重试密钥; 提供新
--idempotency-key 故意创建另一个副本.
SDK当量是 client.invoke("list.import", { name, usernames, idempotencyKey })它要求 campaigns:write 并且在所有计划中,包括Basic上都可以使用。 成功的结果包括: listId, (中文(简体) ), name, (中文(简体) ),
importedCount, (中文(简体) ), inputCount, (中文(简体) ), duplicateCount, (中文(简体) ), created,以及 replayed。 。 。 .
更改的有效载荷或编辑后保存的列表返回 idempotency_conflict。 。 。 .
该列表可在竞选建设者中选择;没有创建竞选
无所寄出. 导入验证语法,而不是活的Instagram账户存在.
现有Instagram列表 (1.1
查找已保存的列表, 检查整个受众是否准确的用户名, 删除 a 并且通过同一合同筹备一场未启动的运动:
dmfaster lists list --query "Coaches" --json
dmfaster list inspect LIST_ID --username pt.j.jylha --json
dmfaster list target remove LIST_ID --username pt.j.jylha --expected-version INSPECTED_UPDATED_AT --json
dmfaster campaign draft prepare --input draft.json --json
JSON草案载有 listId, (中文(简体) ), expectedListUpdatedAt, (中文(简体) ), expectedTargetCount, (中文(简体) ),
name, (中文(简体) ), messageVariants (1-4个字符串), dailyCap, (中文(简体) ), pacingSeconds, (中文(简体) ),
onlyNewChats, (中文(简体) ), skipPreviouslyMessaged,以及 idempotencyKey。使用该版本
以及最新检查/搬运的准确总数。 核查
保存副本和设置, 并总是返回已禁用 Draft它不会
启动或发送手臂。 重用不同设置或编辑对象的密钥
失败而不改变原来的竞选.
SDK 操作名称为 lists.list, (中文(简体) ), list.inspect, (中文(简体) ), list.target.remove, (中文(简体) ),
campaign.draft.prepare,以及 campaign.draft.update; MCP 名称以下划线取代点. 列表
读取要求 campaigns:read; 删除需要所有者 campaigns:write· ;
起草草案需要两种范围。 不需要公司搜查权
这些Instagram列表。 现有的运动发起/暂停批准没有变化.
Instagram运动总是排除已知的联系人: onlyNewChats 财务报告和审定财务报表
skipPreviouslyMessaged 都一样 true未支持的值被拒绝
在起草之前.
修改现有的残疾、未启动的社会运动草案,使用
dmfaster campaign draft update --input update.json --json供应 campaignId, (中文(简体) ),
expectedCampaignUpdatedAt 和无能的 updates
含有其中任何一种的物体 name, (中文(简体) ), messageVariants, (中文(简体) ), dailyCap (1-60),或
pacingSeconds (12-3,600) (中文(简体) ). 外出设置和观众保存.
Stale版本和开始的竞选活动被拒绝. 在不确定之后
回答,在重试前检查运动。 无需批准发射
编辑已禁用的草稿.
混合Instagram/Facebook/LinkedIn草稿,呼叫 campaign.copy.inspect
读取确切邀请模式、注释、保存序列、Instagram/脸书
messageVariants,并有效 linkedinAcceptedMessage。 。 。 .
不带便条就发出邀请,然后设置一个DM linkedinInviteMode 改为
invite_only 财务报告和审定财务报表 linkedinFollowUpSequence 到第一个启用的序列
链接 在包含DM文本的步骤中. 第一步一到就排队
连接被接受,或者如果该人已经连接;
所需员额 delayDays: 1 不延迟接收消息。 以后的步骤
使用他们所配置的延迟 。 在另一条竞选渠道上,一个已知的人类答复
已链接 步骤中,在发送前进行最后检查. 仅链接
运动用途 followUpSequence 为这些步骤。 更新后检查
校验已保存的副本; 编辑时从未启动草稿 .
自动发送窗口也可以通过编辑 campaign.draft.update数字 :
instagramSendingWindowEnabled 是一个布尔; instagramSendingWindowStartMinute
0-1380为; instagramSendingWindowEndMinute - 60-1440;以及
instagramSendingWindowWeekdays 是1–127(星期一=1,星期二=2)的位图,
周日=64;周一至周五=31。 间隔必须至少为60分钟
在同一天里,我们开始讨论 时间使用工作空间时区返回 campaign.inspect
内 settings,与当前窗口并列,复制,节奏,并启用状态.
更改间隔时发送两个端点 。 保存的窗口可切换
草案停止使用时进行或关闭;只有单独的发射操作
手持时间表。 已经开始的运动不能用这个工具草案来编辑.
直接运动控制(自1.8.0起)
老板可以给钱 campaigns:control 当连接到代理人时
full 简介。 明确用户指示即可发射或暂停:
飞行前返回 ready 并有版本限制的授权ID 立即
执行。 仍然需要正常的行动范围。 现有全权证书
保留每个行动的批准,直到所有者重新连接并给予这一许可.
计划或筹备一场运动从来不授权发动.
恢复审查和完成出口(自1.8.0起)
import { runCompanyFitReview, collectCompanyFitResults } from "@dmfaster/sdk";
const receipt = await runCompanyFitReview(client, runId, {
maxDurationMs: 30 * 60_000,
onProgress: (progress) => console.error(progress.complete, progress.total),
});
if (receipt.stopReason === "complete") {
const reviewed = await collectCompanyFitResults(client, runId);
}
瞬间重试保留可持久运行的ID. 预算到期返回进度;
取消调用 request_aborted,并重复相同的运行恢复.
导出调和一个完整、不变的版本和每一个独特的公司
返回数据。 新的打字工具还包括状态/历史/注销,
排名组、复制性能、日历观察/记录和允许
呼叫读取。 外部预订需要准确的用户指示并授予范围;
SDK的可用性不能确定生产释放.
心地欢快的感谢
agent.heartbeat 默认情况下使用压缩成功响应。 HTTP和MCP携带被接受的心跳时间戳,相容性标记和下个间隔;身份,状态和干跑状态已经在请求中. SDK在其常规结果信封中恢复这些与请求相关的字段(诊断持续时间不详并被表示为零). 使用 responseMode: "full" 原诊断信封。 错误保留全部可操作的细节。 Sandbox的确认使用工作空间的可提前的时钟.