通过 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 库中 voiceUrl
和 smsUrl
的默认值是 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);
我想弄清楚如何 [更新] IncomingPhoneNumber 以在购买 phone 号码时删除为语音和短信设置的 'Demo' Url。
例如,我的语音 Url 在 Twilio UI 控制台中设置为“https://demo.twilio.com/welcome/voice/”。我知道我可以将它从控制台中删除,但我希望有一种方法可以从 REST 服务中设置它,例如通过 IncomingPhoneNumberResource.Update?
您可能已经注意到,您无法使用 IncomingPhoneNumberResource.Update
方法删除 URL。
Twilio .NET 库中 voiceUrl
和 smsUrl
的默认值是 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);