/// <summary> /// Receive all SMS messages for current account. Make GET request /// </summary> /// <returns></returns> public async Task<SmsMessageResult> GetSmsMessages() { var request = new RestRequest(); request.Resource = RequestUri.GetSmsMessagesUri; return await Execute<SmsMessageResult>(request); }
/// <summary> /// Retrive all calls. Make GET request /// </summary> /// <returns></returns> public async Task<CallResult> GetCalls() { var request = new RestRequest(); request.Resource = RequestUri.GetCallsUri; return await Execute<CallResult>(request); }
/// <summary> /// Retrive Account details for currently authenticated account. Makes a GET request /// </summary> /// <returns></returns> public async Task<Account> GetAccount() { var request = new RestRequest(); request.Resource = RequestUri.GetAccoutUri; return await Execute<Account>(request); }
/// <summary> /// Receive SMS message. Make GET request /// </summary> /// <param name="smsMessageSid">An alphanumeric string used for identification of sms messages.</param> /// <returns></returns> public async Task<SmsMessage> GetSmsMessage(string smsMessageSid) { var request = new RestRequest(); request.Resource = RequestUri.GetSmsMessageUri; request.AddUrlSegment(RequestUriParams.SmsMessageSid, smsMessageSid); return await Execute<SmsMessage>(request); }
/// <summary> /// Retrive Call details. Make GET request /// </summary> /// <param name="callSid"></param> /// <returns></returns> public async Task<Call> GetCall(string callSid) { var request = new RestRequest(); request.Resource = RequestUri.GetCallUri; request.AddUrlSegment(RequestUriParams.CallSid, callSid); return await Execute<Call>(request); }
/// <summary> /// Receive SMS messages wich satisfiy criteria. Make GET request /// </summary> /// <param name="smsMessageOptions">Sms message options for narrowing search</param> /// <returns></returns> public async Task<SmsMessageResult> GetSmsMessages(SmsMessageListOptions smsMessageOptions) { var request = new RestRequest(); request.Resource = RequestUri.GetSmsMessagesUri; CreateSmsMessageListOptions(smsMessageOptions, request); return await Execute<SmsMessageResult>(request); }
/// <summary> /// Retrive all calls which satisfy CallOptions criteria. Make GET request /// </summary> /// <param name="callOptions">Call options to narrow search of calls</param> /// <returns></returns> public async Task<CallResult> GetCalls(CallListOptions callOptions) { var request = new RestRequest(); request.Resource = RequestUri.GetCallsUri; CreateCallListOptions(callOptions, request); return await Execute<CallResult>(request); }
/// <summary> /// Create a new application for managing TelAPI phone numbers /// </summary> /// <param name="application">Application object</param> /// <returns></returns> public async Task<Application> CreateApplication(Application application) { var request = new RestRequest(System.Net.Http.HttpMethod.Post); request.Resource = RequestUri.CreateApplicationUri; CreateApplicationParams(application, request); return await Execute<Application>(request); }
/// <summary> /// /// </summary> /// <param name="notificationSid"></param> /// <returns></returns> public async Task<Notification> GetNotification(string notificationSid) { Require.Argument("NotificationsSid", notificationSid); var request = new RestRequest(); request.Resource = RequestUri.NotificationUri; request.AddUrlSegment(RequestUriParams.NotificationSid, notificationSid); return await Execute<Notification>(request); }
/// <summary> /// Return list of transcriptions /// </summary> /// <param name="page">Used to return a particular page withing the list.</param> /// <param name="pageSize">Used to specify the amount of list items to return per page.</param> /// <returns></returns> public async Task<TranscriptionResult> GetAccountTranscriptions(int? page, int? pageSize) { var request = new RestRequest(); request.Resource = RequestUri.AccountTranscriptionsUri; if (page.HasValue) request.AddParameter("Page", page); if (pageSize.HasValue) request.AddParameter("PageSize", pageSize); return await Execute<TranscriptionResult>(request); }
/// <summary> /// Return transcription content in textual format /// </summary> /// <param name="transcriptionSid">An alphanumeric string used for identification of transcriptions.</param> /// <returns></returns> public string GetTranscriptionText(string transcriptionSid) { Require.Argument("TranscriptionSid", transcriptionSid); var request = new RestRequest(); request.Resource = RequestUri.TranscriptionTextUri; request.AddUrlSegment(RequestUriParams.TranscriptionSid, transcriptionSid); return Execute(request).Result.RawData; }
/// <summary> /// Return transcription /// </summary> /// <param name="transcriptionSid">An alphanumeric string used for identification of transcriptions.</param> /// <returns></returns> public async Task<Transcription> GetTranscription(string transcriptionSid) { Require.Argument("TranscriptionSid", transcriptionSid); var request = new RestRequest(); request.Resource = RequestUri.TranscriptionUri; request.AddUrlSegment(RequestUriParams.TranscriptionSid, transcriptionSid); return await Execute<Transcription>(request); }
/// <summary> /// Return resource properties about conference call /// </summary> /// <param name="conferenceSid">Conference sid</param> /// <returns></returns> public async Task<Conference> GetConference(string conferenceSid) { Require.Argument("ConferenceSid", conferenceSid); var request = new RestRequest(); request.Resource = RequestUri.ConferenceUri; request.AddUrlSegment(RequestUriParams.ConferenceSid, conferenceSid); return await Execute<Conference>(request); }
/// <summary> /// Gets TelAPI phone number associated with an account /// </summary> /// <param name="phoneNumberSid">An alphanumeric string used for identification of incoming phone numbers.</param> /// <returns></returns> public async Task<IncomingPhoneNumber> GetIncomingPhoneNumber(string phoneNumberSid) { Require.Argument("IncomingPhoneNumberSid", phoneNumberSid); var request = new RestRequest(); request.Resource = RequestUri.IncomingPhoneNumberUri; request.AddUrlSegment(RequestUriParams.IncomingPhoneNumberSid, phoneNumberSid); return await Execute<IncomingPhoneNumber>(request); }
/// <summary> /// Get a single recording resource /// </summary> /// <param name="recordingSid">An alphanumeric string used to identify each recording.</param> /// <returns></returns> public async Task<Recording> GetRecording(string recordingSid) { Require.Argument("RecordingSid", recordingSid); var request = new RestRequest(); request.Resource = RequestUri.RecordingUri; request.AddUrlSegment(RequestUriParams.RecordingSid, recordingSid); return await Execute<Recording>(request); }
/// <summary> /// TelAPI provides an endpoint for performing BNA (Billing Name Address) lookups on numbers. /// BNA lookups provide geolocation information for phone numbers. BNA lookups are currently only available for US numbers. /// </summary> /// <param name="phoneNumber">The number of the phone you are attempting to perform the BNA lookup on.</param> /// <returns></returns> public async Task<BNALookupResult> BnaLookup(string phoneNumber) { Require.Argument("PhoneNumber", phoneNumber); var request = new RestRequest(); request.Resource = RequestUri.BnaLookup; request.AddParameter(RequestUriParams.PhoneNumber, phoneNumber); return await Execute<BNALookupResult>(request); }
/// <summary> /// Return a list of all fraud control resources associated with a given account /// </summary> /// <param name="page">Used to return a particular page withing the list.</param> /// <param name="pageSize">Used to specify the amount of list items to return per page.</param> /// <returns></returns> public async Task<FraudResult> GetFraudControlResources(int? page, int? pageSize) { var request = new RestRequest(); request.Resource = RequestUri.FraudControlResourcesUri; if (page.HasValue) request.AddParameter("Page", page); if (pageSize.HasValue) request.AddParameter("PageSize", pageSize); return await Execute<FraudResult>(request); }
/// <summary> /// Return application details /// </summary> /// <param name="applicationSid">An alphanumeric string used for identification of the application.</param> /// <returns></returns> public async Task<Application> GetApplication(string applicationSid) { Require.Argument("ApplicationSid", applicationSid); var request = new RestRequest(); request.Resource = RequestUri.ApplicationUri; request.AddUrlSegment(RequestUriParams.ApplicationSid, applicationSid); return await Execute<Application>(request); }
/// <summary> /// A lists of every notification associated with an account /// </summary> /// <param name="log">Specifies that only notifications with the given log level value should be listed.</param> /// <param name="page">Used to return a particular page withing the list.</param> /// <param name="pageSize">Used to specify the amount of list items to return per page.</param> /// <returns></returns> public async Task<NotificationResult> GetAccountNotifications(NotificationLog? log, int? page, int? pageSize) { var request = new RestRequest(); request.Resource = RequestUri.NotificationsUri; if (log.HasValue) request.AddParameter("Log", (int)log); if (page.HasValue) request.AddParameter("Page", page); if (pageSize.HasValue) request.AddParameter("PageSize", pageSize); return await Execute<NotificationResult>(request); }
/// <summary> /// Return applications list /// </summary> /// <param name="friendlyName">Specifies that only application resources matching the input FreindlyName should be returned in the list request.</param> /// <param name="page">Used to return a particular page withing the list.</param> /// <param name="pageSize">Used to specify the amount of list items to return per page.</param> /// <returns></returns> public async Task<ApplicationResult> GetApplications(string friendlyName, int? page, int? pageSize) { var request = new RestRequest(); request.Resource = RequestUri.ApplicationsUri; if (friendlyName != null) request.AddParameter("FriendlyName", friendlyName); if (page.HasValue) request.AddParameter("Page", page); if (pageSize.HasValue) request.AddParameter("PageSize", pageSize); return await Execute<ApplicationResult>(request); }
/// <summary> /// Gets TelAPI phone numbers associated with an account /// </summary> /// <param name="phoneNumber">Specifies what IncomingPhoneNumber resources should be returned in the list request.</param> /// <param name="friendlyName">Specifies that only IncomingPhoneNumber resources matching the input FreindlyName should be returned in the list request.</param> /// <param name="page">Used to return a particular page withing the list.</param> /// <param name="pageSize">Used to specify the amount of list items to return per page.</param> /// <returns></returns> public async Task<IncomingPhoneNumberResult> GetIncomingPhoneNumbers(string phoneNumber, string friendlyName, int? page, int? pageSize) { var request = new RestRequest(); request.Resource = RequestUri.IncomingPhoneNumbersUri; if (phoneNumber != null) request.AddParameter("PhoneNumber", phoneNumber); if (friendlyName != null) request.AddParameter("FriendlyName", friendlyName); if (page.HasValue) request.AddParameter("Page", page); if (pageSize.HasValue) request.AddParameter("PageSize", pageSize); return await Execute<IncomingPhoneNumberResult>(request); }
/// <summary> /// Initiate outbound call with options. Make POST request /// </summary> /// <param name="callOptions">Call options</param> /// <returns></returns> public async Task<Call> MakeCall(CallOptions callOptions) { Require.Argument("To", callOptions.To); Require.Argument("From", callOptions.From); Require.Argument("Url", callOptions.Url); var request = new RestRequest(System.Net.Http.HttpMethod.Post); request.Resource = RequestUri.MakeCallUri; CreateCallOptions(callOptions, request); return await Execute<Call>(request); }
/// <summary> /// Get account recordings /// </summary> /// <param name="dateCreated">Lists all recordings created on or after a certain date. </param> /// <param name="dateCreatedComparasion">Date created comparasion</param> /// <param name="page">Used to return a particular page withing the list.</param> /// <param name="pageSize">Used to specify the amount of list items to return per page.</param> /// <returns></returns> public async Task<RecordingResult> GetAccountRecordings(DateTime? dateCreated, ComparisonType? dateCreatedComparasion, int? page, int? pageSize) { var request = new RestRequest(); request.Resource = RequestUri.AccountRecordingsUri; var dateCreatedParameterName = GetParameterNameWithEquality(dateCreatedComparasion, "DateCreated"); if (dateCreated.HasValue) request.AddParameter(dateCreatedParameterName, dateCreated.Value.ToString("yyyy-MM-dd")); if (page.HasValue) request.AddParameter("Page", page); if (pageSize.HasValue) request.AddParameter("PageSize", pageSize); return await Execute<RecordingResult>(request); }
/// <summary> /// A complete list of usage that has occured through an account can be requested via the REST API. /// This list includes every feature of TelAPI an account may use, from inbound/outbound call and SMS messages all the way to Carrier/CNAM lookups. /// </summary> /// <param name="day">Returns a list of usage for a given day within a month.</param> /// <param name="month">Returns a list of usage for a given month. For January: Month=1, for February: Month=2, etc.</param> /// <param name="year">Returns a list of usage for a given year.</param> /// <param name="page">Used to return a particular page withing the list.</param> /// <param name="pageSize">Used to specify the amount of list items to return per page.</param> /// <param name="product">Returns a list of all usage for a specific "product" or feature of TelAPI.</param> /// <returns></returns> public async Task<UsageResult> GetUsages(int? day, int? month, int? year, int? page, int? pageSize, Products? product) { var request = new RestRequest(); request.Resource = RequestUri.GetUsagesUri; if (day.HasValue) request.AddParameter("Day", day); if (month.HasValue) request.AddParameter("Month", month); if (year.HasValue) request.AddParameter("Year", year); if (page.HasValue) request.AddParameter("Page", page); if (pageSize.HasValue) request.AddParameter("PageSize", pageSize); if (product.HasValue) request.AddParameter("Product", (int)product.Value); return await Execute<UsageResult>(request); }
/// <summary> /// A list of only notifications associated with a given CallSid /// </summary> /// <param name="callSid">An alphanumeric string used for identification of calls.</param> /// <param name="log">Specifies that only notifications with the given log level value should be listed.</param> /// <param name="page">Used to return a particular page withing the list.</param> /// <param name="pageSize">Used to specify the amount of list items to return per page.</param> /// <returns></returns> public async Task<NotificationResult> GetCallNotifications(string callSid, NotificationLog? log, int? page, int? pageSize) { Require.Argument("CallSid", callSid); var request = new RestRequest(); request.Resource = RequestUri.CallNotificationUri; request.AddUrlSegment("CallSid", callSid); if (log.HasValue) request.AddParameter("Log", (int)log); if (page.HasValue) request.AddParameter("Page", page); if (pageSize.HasValue) request.AddParameter("PageSize", pageSize); return await Execute<NotificationResult>(request); }
/// <summary> /// Used to authorize destinations for outbound calls and sms messages. /// </summary> /// <param name="countryCode">Two letter country code being whitelisted, authorized or blocked.</param> /// <param name="mobileBreakout">Mobile breakout status for the destination.</param> /// <param name="Landlinebreakout">Landline breakout status for the destination.</param> /// <param name="smsEnabled">SMS status for the destination.</param> /// <returns></returns> public async Task<FraudResult> AuthorizeDestination(string countryCode, bool? mobileBreakout, bool? landlinebreakout, bool? smsEnabled) { Require.Argument("CountryCode", countryCode); var request = new RestRequest(System.Net.Http.HttpMethod.Post); request.Resource = RequestUri.FraudAuthorizeDestination; request.AddUrlSegment(RequestUriParams.CountryCode, countryCode); if (mobileBreakout.HasValue) request.AddParameter("MobileBreakout", mobileBreakout); if (landlinebreakout.HasValue) request.AddParameter("LandlineBreakout", landlinebreakout); if (smsEnabled.HasValue) request.AddParameter("SmsEnabled", smsEnabled); return await Execute<FraudResult>(request); }
/// <summary> /// Send SMS message /// </summary> /// <param name="from">The number you want to display as sending the SMS. A surcharge will apply when sending via a custom From number.</param> /// <param name="to">The number you want to send the SMS to.</param> /// <param name="body">Text of the SMS message to be sent.</param> /// <param name="statusCallback">URL that a set of default parameters will be forwarded to once the SMS is complete.</param> /// <returns></returns> public async Task<SmsMessage> SendSmsMessage(string from, string to, string body, string statusCallback) { Require.Argument("from", from); Require.Argument("to", to); Require.Argument("body", body); var request = new RestRequest(System.Net.Http.HttpMethod.Post); request.Resource = RequestUri.SendSmsMessageUri; request.AddParameter("From", from); request.AddParameter("To", to); request.AddParameter("Body", body); if (statusCallback != null) request.AddParameter("StatusCallback", statusCallback); return await Execute<SmsMessage>(request); }
/// <summary> /// Request a list of available numbers /// </summary> /// <param name="isoCountryCode">Two letter country code of the available phone number.</param> /// <param name="areaCode">Code used to identify the phone numbers geographic origin. Found at the beginning of the number.</param> /// <param name="contains">Specifies the desired characters contained within the available numbers to list.</param> /// <param name="inRegion">Specifies the desired region of the available numbers to be listed.</param> /// <param name="inPostalCode">Specifies the desired postal code of the available numbers to be listed.</param> /// <param name="type">Search for local (default) or toll free nubmers.</param> /// <returns></returns> public async Task<AvailablePhoneNumberResult> GetAvailablePhoneNumbers(string isoCountryCode, string areaCode, string contains, string inRegion, string inPostalCode, AvaliablePhoneNumberType type) { Require.Argument("IsoCountryCode", isoCountryCode); var request = new RestRequest(); request.Resource = type == AvaliablePhoneNumberType.Local ? RequestUri.AvailablePhoneNumbersUri : RequestUri.AvailableTollFreePhoneNumbersUri; request.AddUrlSegment(RequestUriParams.IsoCountryCode, isoCountryCode); if (areaCode != null) request.AddParameter("AreaCode", areaCode); if (contains != null) request.AddParameter("Contains", contains); if (inRegion != null) request.AddParameter("InRegion", inRegion); if (inPostalCode != null) request.AddParameter("InPostalCode", inPostalCode); return await Execute<AvailablePhoneNumberResult>(request); }
/// <summary> /// Return list of all conference resources associated with a given account /// </summary> /// <param name="friendlyName">List conferences with the given FriendlyName.</param> /// <param name="status">List conferences with the given status.</param> /// <param name="dateCreated">List conferences created on, after, or before a given date.</param> /// <param name="dateCreatedComparasion">Date range can be specified using inequalities.</param> /// <param name="dateUpdated">List conferences updated on, after, or before a given date.</param> /// <param name="dateUpdatedComparasion">Date range can be specified using inequalities.</param> /// <param name="page">Used to return a particular page withing the list.</param> /// <param name="pageSize">Used to specify the amount of list items to return per page.</param> /// <returns></returns> public async Task<ConferenceResult> GetConferences(string friendlyName, ConferenceStatus? status, DateTime? dateCreated, ComparisonType? dateCreatedComparasion, DateTime? dateUpdated, ComparisonType? dateUpdatedComparasion, int? page, int? pageSize) { var request = new RestRequest(); request.Resource = RequestUri.ConferencesUri; var dateCreatedParameterName = GetParameterNameWithEquality(dateCreatedComparasion, "DateCreated"); var dateUpdatedParemeterName = GetParameterNameWithEquality(dateUpdatedComparasion, "DateUpdated"); if (friendlyName != null) request.AddParameter("FriendlyName", friendlyName); if (status.HasValue) request.AddParameter("Status", status.ToString().ToLower()); if (dateCreated.HasValue) request.AddParameter(dateCreatedParameterName, dateCreated.Value.ToString("yyyy-MM-dd")); if (dateUpdated.HasValue) request.AddParameter(dateUpdatedParemeterName, dateUpdated.Value.ToString("yyyy-MM-dd")); if (page.HasValue) request.AddParameter("Page", page); if (pageSize.HasValue) request.AddParameter("PageSize", pageSize); return await Execute<ConferenceResult>(request); }
/// <summary> /// Hangup up current active call. Make POST request /// </summary> /// <param name="callSid">An alphanumeric string used for identification of calls.</param> /// <returns></returns> public async Task<Call> HangupCall(string callSid) { Require.Argument("CallSid", callSid); var request = new RestRequest(System.Net.Http.HttpMethod.Post); request.Resource = RequestUri.HangupCallUri; request.AddUrlSegment(RequestUriParams.CallSid, callSid); request.AddParameter("Status", HangupCallStatus.Completed.ToString().ToLower()); return await Execute<Call>(request); }