Skip to content
Bitzsoft.Integrationsbitzsoft.integrations

Reference

Twilio 外呼

Twilio 外呼包配置——Per-call 模型、TwilioOutboundCallOptions 独立配置、TwiML 内联、CPS 节流。

Last updated

包信息

属性
NuGet 包Bitzsoft.Integrations.OutboundCall.Twilio
Provider IDtwilio
模型Per-call(逐通拨号)
鉴权HTTP Basic Auth(AccountSid + AuthToken)

配置字段(TwilioOutboundCallOptions)

Twilio 有独立 Options,不共用 OutboundCallOptions

字段类型必填默认值说明
AccountSidstringTwilio 账户 SID
AuthTokenstring鉴权 Token
Fromstring默认主叫号(E.164 格式)
Twimlstring?内联 TwiML(与 Url 二选一)
Urlstring?TwiML 回调 URL(与 Twiml 二选一)
Cpsint1每秒并发呼叫数(账号级 CPS)
EnableMachineDetectionboolfalse答答检测(预测式外呼)
StatusCallbackstring?状态回调 URL
Domainstringapi.twilio.comAPI 域名
Versionstring2010-04-01API 版本

配置示例

builder.Services.AddTwilioOutboundCall(options =>
{
options.AccountSid = "ACxxxxxxxxxxxxxxxxxx";
options.AuthToken = "your-auth-token";
options.From = "+12025550123";
options.Cps = 3;
options.Twiml = TwilioOutboundCallOptions.BuildInlineTwiml("您好,这是一条测试通知。");
options.EnableMachineDetection = true;
options.StatusCallback = "https://your-app.com/callback";
});

DI 注册

builder.Services.AddTwilioOutboundCall(options => { /* 见上 */ });

使用示例

// Twilio 通过 IOutboundCallService 映射到逐通拨号
public class CallService(IOutboundCallService outbound)
{
public async Task StartBatchAsync(List<string> contacts)
{
// CreateCampaign 在内存中创建活动
var resp = await outbound.CreateCampaignAsync(new CreateCampaignRequest { Name = "batch-001" });
await outbound.ImportContactsAsync(new ImportContactsRequest
{
CampaignId = resp.CampaignId,
Contacts = contacts,
});
// StartCampaign 触发 CampaignDialer 逐通拨号(CPS 节流)
await outbound.StartCampaignAsync(new StartCampaignRequest { CampaignId = resp.CampaignId });
}
}

已知限制

  • CPS 是账号级限制,options.Cps 只做客户端节流,实际并发取决于 Twilio 账号配额。
  • EnableMachineDetection 会增加约 1-2 秒延迟。

相关

100%

滚轮或按钮缩放 · 放大后拖动画面 · 双击切换 100% / 200%