Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        /// <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);
        }
Beispiel #4
0
        /// <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);
        }
Beispiel #5
0
        /// <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);
        }
Beispiel #6
0
        /// <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);
        }
Beispiel #7
0
        /// <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);
        }
Beispiel #8
0
        /// <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);
        }
Beispiel #9
0
        /// <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);
        }
Beispiel #10
0
        /// <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);
        }
Beispiel #11
0
        /// <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;
        }
Beispiel #12
0
        /// <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);
        }
Beispiel #13
0
        /// <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);
        }
Beispiel #15
0
        /// <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);
        }
Beispiel #16
0
        /// <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);
        }
Beispiel #17
0
        /// <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);
        }
Beispiel #18
0
        /// <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);
        }
Beispiel #19
0
        /// <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);
        }
Beispiel #20
0
        /// <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);
        }
Beispiel #22
0
        /// <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);
        }
Beispiel #23
0
        /// <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);
        }
Beispiel #24
0
        /// <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);
        }
Beispiel #25
0
        /// <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);
        }
Beispiel #26
0
        /// <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);
        }
Beispiel #27
0
        /// <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);
        }
Beispiel #29
0
        /// <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);
        }
Beispiel #30
0
        /// <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);
        }