Bitzsoft.Integrations.OutboundCall.All 1.0.0

dotnet add package Bitzsoft.Integrations.OutboundCall.All --version 1.0.0
                    
NuGet\Install-Package Bitzsoft.Integrations.OutboundCall.All -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Bitzsoft.Integrations.OutboundCall.All" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Bitzsoft.Integrations.OutboundCall.All" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Bitzsoft.Integrations.OutboundCall.All" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Bitzsoft.Integrations.OutboundCall.All --version 1.0.0
                    
#r "nuget: Bitzsoft.Integrations.OutboundCall.All, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Bitzsoft.Integrations.OutboundCall.All@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Bitzsoft.Integrations.OutboundCall.All&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Bitzsoft.Integrations.OutboundCall.All&version=1.0.0
                    
Install as a Cake Tool

Bitzsoft.Integrations.OutboundCall.All

外呼服务聚合包 — 一次性引用全部供应商实现(腾讯云 / 阿里云 / 火山引擎 / 容联云 / 华为云 / Twilio / Vonage),无需逐个安装。

功能特性

  • 聚合 7 家外呼实现:腾讯云 / 阿里云 / 火山引擎 / 容联云 / 华为云 5 家国内 + Twilio / Vonage 2 家国际,全部实现 IOutboundCallService 统一接口
  • 统一抽象:引用本包即获得所有 IOutboundCallService 供应商实现及号码工具(PhoneNumberValidator / PhoneNumberClassifier / CallListFilter
  • per-call 编排:国际供应商(Twilio / Vonage)采用共享 CampaignDialer 引擎,按 CPS 节流逐通发起外呼,支持暂停 / 恢复断点
  • 零代码即装即用:聚合包为空程序集(仅打包占位 _._ 文件),所有类型由依赖的供应商包提供,安装后按需调用各供应商的 Add*OutboundCall 扩展方法

注意:国际供应商(Twilio / Vonage)的活动编排状态保存在内存中,进程重启会丢失进行中的活动进度,需外部系统重新触发。

安装

.NET CLI

dotnet add package Bitzsoft.Integrations.OutboundCall.All

PackageReference

<PackageReference Include="Bitzsoft.Integrations.OutboundCall.All" Version="1.0.0" />

配置

聚合包本身不含配置,配置由所选供应商实现包决定。各供应商配置节示例:

{
  "OutboundCall": {
    "AccessKeyId": "your-secret-id",
    "AccessKeySecret": "your-secret-key",
    "Region": "ap-guangzhou",
    "SdkAppId": "1400818883",
    "Callers": [ "008602160662606" ],
    "OverseaCallers": [ "0085230087235" ],
    "Whitelist": [ "5678" ],
    "RequireWhitelistInNonProduction": true
  },
  "TwilioOutboundCall": {
    "AccountSid": "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "AuthToken": "your-auth-token",
    "From": "+12025550123",
    "Cps": 1
  }
}

各供应商的配置项细节请参阅对应实现包的 README(见「相关包」)。通用字段(AccessKeyId / AccessKeySecret / Region / SdkAppId / Callers 等)见抽象层 OutboundCallOptions

注册服务

聚合包不含 Add* 扩展方法,按需调用各供应商的注册扩展方法(一次运行通常只注册一家作为 IOutboundCallService):

using Bitzsoft.Integrations.OutboundCall;
// 命名空间 Microsoft.Extensions.DependencyInjection

// 腾讯云
builder.Services.AddTencentOutboundCall(
    builder.Configuration.GetSection("OutboundCall"));

// 或阿里云
builder.Services.AddAliyunOutboundCall(
    builder.Configuration.GetSection("OutboundCall"));

// 或华为云 / 火山引擎 / 容联云(均绑定 OutboundCall 节)
// builder.Services.AddHuaweiOutboundCall(...);
// builder.Services.AddVolcengineOutboundCall(...);
// builder.Services.AddYuntongxunOutboundCall(...);

// 或国际 Twilio(绑定 TwilioOutboundCall 节)
// builder.Services.AddTwilioOutboundCall(
//     builder.Configuration.GetSection("TwilioOutboundCall"));

说明:IOutboundCallService 注册为单例,同一进程内通常只注册一家供应商。若需多供应商并存,可分别注入各供应商的具体服务类型(如 TencentOutboundCallService)或使用工厂模式按需解析。

使用示例

using Bitzsoft.Integrations.OutboundCall;
using Bitzsoft.Integrations.OutboundCall.Dtos;
using Bitzsoft.Integrations.OutboundCall.PhoneNumber;

public class OutboundCallApp
{
    private readonly IOutboundCallService _outbound;

    public OutboundCallApp(IOutboundCallService outbound) => _outbound = outbound;

    public async Task RunAsync(string[] rawPhones)
    {
        // 1. 号码清洗 + 分类(抽象层提供,所有供应商通用)
        var (mainland, oversea) = PhoneNumberClassifier.Classify(rawPhones);

        // 2. 创建境内活动(实际调用哪家供应商由注册时决定)
        var resp = await _outbound.CreateCampaignAsync(new CreateCampaignRequest
        {
            Name = "催办",
            Region = PhoneRegion.Mainland,
            Callees = mainland.ToList()
        });

        // 3. 查询活动与话单
        var campaigns = await _outbound.ListCampaignsAsync(pageIndex: 1, pageSize: 20);
        var records = await _outbound.QueryCallRecordsAsync(new QueryCallRecordsRequest { PageSize = 50 });
    }
}

请求审计

所有供应商实现均内置 Bitzsoft.Integrations.RequestLogging 出站请求记录管道,默认使用 NullRequestLogStore 不持久化。

// ① 默认:启用记录管道但不持久化(日志丢弃)
services.AddTencentOutboundCall(options => { /* ... */ });

// ② 持久化:宿主注册 IRequestLogStore 实现后,所有出站请求自动落库
services.AddRequestLogging<MyRequestLogStore>(opts =>
{
    opts.MaxInMemoryBodyBytes = 64 * 1024; // 仅控制内存/加密临时文件切换,不截断正文
    opts.SensitiveFields.Add("AccessKeySecret"); // 额外脱敏字段
});
services.AddTencentOutboundCall(options => { /* ... */ });

依赖

说明
Bitzsoft.Integrations.OutboundCall 外呼抽象层(接口 + 号码工具 + 白名单 + 编排引擎)
Bitzsoft.Integrations.OutboundCall.Tencent 腾讯云 CCC 实现
Bitzsoft.Integrations.OutboundCall.Aliyun 阿里云 CCC 实现
Bitzsoft.Integrations.OutboundCall.Volcengine 火山引擎智能外呼实现
Bitzsoft.Integrations.OutboundCall.Yuntongxun 容联云通讯实现
Bitzsoft.Integrations.OutboundCall.Huawei 华为云 CEC 实现
Bitzsoft.Integrations.OutboundCall.Twilio Twilio 实现(per-call 编排)
Bitzsoft.Integrations.OutboundCall.Vonage Vonage 实现(per-call 编排)

相关包

Product Compatible and additional computed target framework versions.
.NET net5.0 is compatible.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 0 8/2/2026
1.0.0-alpha.10 46 7/26/2026
1.0.0-alpha.9 67 7/12/2026
1.0.0-alpha.8 87 7/1/2026
1.0.0-alpha.7 110 6/16/2026
1.0.0-alpha.6 112 6/16/2026