包信息
| 属性 | 值 |
|---|---|
| NuGet 包 | Bitzsoft.Integrations.OutboundCall.Vonage |
| Provider ID | vonage |
| 模型 | Per-call(逐通拨号) |
| 鉴权 | RS256 JWT(Application ID + RSA 私钥签名,Bearer token) |
配置字段(VonageOutboundCallOptions)
Vonage 有独立 Options,不共用 OutboundCallOptions。
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
ApplicationId | string | 是 | — | Vonage Application ID |
PrivateKeyPem | string | 是 | — | Application RSA 私钥(PEM 文本) |
From | string | 是 | — | 默认主叫号(E.164,不含前导 +) |
Ncco | string? | 否 | — | 内联 NCCO JSON 数组(与 AnswerUrl 二选一) |
AnswerUrl | string? | 否 | — | 应答回调 URL(与 Ncco 二选一) |
Cps | int | 否 | 1 | 每秒并发呼叫数(客户端节流) |
Domain | string | 否 | api.nexmo.com | API 域名 |
配置示例
builder.Services.AddVonageOutboundCall(options =>{ options.ApplicationId = "your-application-uuid"; options.PrivateKeyPem = "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----"; options.From = "447700900000"; options.Ncco = """[{"action":"talk","text":"您好,这是一条测试通知。"}]"""; options.Cps = 2;});DI 注册
builder.Services.AddVonageOutboundCall(options => { /* 见上 */ });使用示例
public class VonageCallService(IOutboundCallService outbound){ public async Task ResumeAsync(string campaignId) { await outbound.ResumeCampaignAsync(campaignId); }}已知限制
From号码不含前导+(Vonage 格式约定)。- 私钥是 PEM 文本,生产环境应通过
IIntegrationCredentialResolver从 Vault/KMS 解析,不硬编码。
相关
- 外呼域手册:Per-call 模型与 CampaignDialer