public PhoneNumber ProvisionPhoneNumber(String phoneNumber = null, Int32? areaCode = null, PhoneNumber model = null, String voiceUrl = null, String voiceFallbackUrl = null, String smsUrl = null, String smsFallbackUrl = null)
{
if ((String.IsNullOrEmpty(phoneNumber) && !areaCode.HasValue) && model == null) {
throw new ArgumentNullException("phoneNumber");
}
_parameters.Clear();
if (model != null) {
AddParametersFromPhoneNumberModel(model);
} else if (!String.IsNullOrEmpty(phoneNumber)) {
_parameters.Add("PhoneNumber", phoneNumber);
} else if (areaCode != null) {
_parameters.Add("AreaCode", areaCode);
}
if (!String.IsNullOrEmpty(voiceUrl)) {
_parameters.Add("VoiceUrl", voiceUrl);
_parameters.Add("VoiceMethod", "GET");
}
if (!String.IsNullOrEmpty(voiceFallbackUrl)) {
_parameters.Add("VoiceFallbackUrl", voiceFallbackUrl);
}
if (!String.IsNullOrEmpty(smsUrl)) {
_parameters.Add("smsUrl", smsUrl);
_parameters.Add("smsMethod", "GET");
}
if (!String.IsNullOrEmpty(smsFallbackUrl)) {
_parameters.Add("smsFallbackUrl", smsFallbackUrl);
}
_twilioResponse = _account.request(String.Format("Accounts/{0}/IncomingPhoneNumbers.json", _account.id), "POST", _parameters);
dynamic data = ParseResponseData(_twilioResponse);
var phone = new PhoneNumber
{
sid = data.sid,
account_sid = data.account_sid,
friendly_name = data.friendly_name,
phone_number = data.phone_number,
voice_url = data.voice_url,
voice_method = data.voice_method,
voice_fallback_url = data.voice_fallback_url,
voice_fallback_method = data.voice_fallback_method,
voice_caller_id_lookup = Convert.ToBoolean(data.voice_caller_id_lookup),
date_created = Convert.ToDateTime(data.date_created),
date_updated = Convert.ToDateTime(data.date_updated),
sms_url = data.sms_url,
sms_method = data.sms_method,
sms_fallback_url = data.sms_fallback_url,
sms_fallback_method = data.sms_fallback_method,
capabilities = new Capabilities {
sms = Convert.ToBoolean(data.capabilities.sms),
voice = Convert.ToBoolean(data.capabilities.voice)
},
status_callback = data.status_callback,
status_callback_method = data.status_callback_method,
api_version = data.api_version,
uri = data.uri
};
return phone;
}