通过 REST API 删除短信和语音的 Twilio 演示 Url

Remove Twilio Demo Url for Sms and Voice through REST API

我想弄清楚如何 [更新] IncomingPhoneNumber 以在购买 phone 号码时删除为语音和短信设置的 'Demo' Url。

例如,我的语音 Url 在 Twilio UI 控制台中设置为“https://demo.twilio.com/welcome/voice/”。我知道我可以将它从控制台中删除,但我希望有一种方法可以从 REST 服务中设置它,例如通过 IncomingPhoneNumberResource.Update?

您可能已经注意到,您无法使用 IncomingPhoneNumberResource.Update 方法删除 URL。 Twilio .NET 库中 voiceUrlsmsUrl 的默认值是 null,因此如果您显式传入 null,库将不知道其中的区别,忽略它。

幸运的是,REST API 非常直观,因此您可以编写自己的代码来进行 REST API 调用,或者使用 Twilio .NET 附带的 RestClient图书馆。

这里有一个示例,其中 IncomingPhoneNumberResource.Update 不起作用,而使用 RestClient.

的代码确实有效
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Twilio;
using Twilio.Http;
using Twilio.Rest.Api.V2010.Account;
using Twilio.Types;

var app = Host.CreateDefaultBuilder(args).Build();

var configuration = app.Services.GetRequiredService<IConfiguration>();
var twilioAccountSid = configuration["TwilioAccountSid"];
var twilioAuthToken = configuration["TwilioAuthToken"];

TwilioClient.Init(twilioAccountSid, twilioAuthToken);

var phoneNumber = (await IncomingPhoneNumberResource.ReadAsync(
    phoneNumber: new PhoneNumber(configuration["TwilioPhoneNumber"]),
    limit: 1
)).Single();

// DOES NOT WORK, but wish it did
// this API call goes through, but does not empty the voiceUrl or smsUrl
await IncomingPhoneNumberResource.UpdateAsync(
    phoneNumber.Sid,
    voiceUrl: null, // new Uri("") throws an exception
    smsUrl: null // new Uri("") throws an exception
);

// this does work!
var request = new Request(
    method: Twilio.Http.HttpMethod.Post,
    url: $"https://api.twilio.com/2010-04-01/Accounts/{twilioAccountSid}/IncomingPhoneNumbers/{phoneNumber.Sid}.json"
);
request.AddPostParam("VoiceUrl", null);
request.AddPostParam("SmsUrl", null);
await TwilioClient.GetRestClient().RequestAsync(request);