## # This code was generated by # \ / _ _ _| _ _ # | (_)\/(_)(_|\/| |(/_ v1.0.0 # / / # # frozen_string_literal: true module Twilio module REST class Api < Domain class V2010 < Version class AccountContext < InstanceContext class CallList < ListResource ## # Initialize the CallList # @param [Version] version Version that contains the resource # @param [String] account_sid The SID of the # [Account](https://www.twilio.com/docs/iam/api/account) that created this Call # resource. # @return [CallList] CallList def initialize(version, account_sid: nil) super(version) # Path Solution @solution = {account_sid: account_sid} @uri = "/Accounts/#{@solution[:account_sid]}/Calls.json" # Components @feedback_summaries = nil end ## # Retrieve a single page of CallInstance records from the API. # Request is executed immediately. # @param [String] to The phone number, SIP address, or client identifier to call. # @param [String] from The phone number or client identifier to use as the caller # id. If using a phone number, it must be a Twilio number or a Verified [outgoing # caller id](https://www.twilio.com/docs/voice/api/outgoing-caller-ids) for your # account. If the `to` parameter is a phone number, `From` must also be a phone # number. # @param [String] method The HTTP method we should use when calling the `url` # parameter's value. Can be: `GET` or `POST` and the default is `POST`. If an # `application_sid` parameter is present, this parameter is ignored. # @param [String] fallback_url The URL that we call using the `fallback_method` if # an error occurs when requesting or executing the TwiML at `url`. If an # `application_sid` parameter is present, this parameter is ignored. # @param [String] fallback_method The HTTP method that we should use to request # the `fallback_url`. Can be: `GET` or `POST` and the default is `POST`. If an # `application_sid` parameter is present, this parameter is ignored. # @param [String] status_callback The URL we should call using the # `status_callback_method` to send status information to your application. If no # `status_callback_event` is specified, we will send the `completed` status. If an # `application_sid` parameter is present, this parameter is ignored. URLs must # contain a valid hostname (underscores are not permitted). # @param [String] status_callback_event The call progress events that we will send # to the `status_callback` URL. Can be: `initiated`, `ringing`, `answered`, and # `completed`. If no event is specified, we send the `completed` status. If you # want to receive multiple events, specify each one in a separate # `status_callback_event` parameter. See the code sample for [monitoring call # progress](https://www.twilio.com/docs/voice/api/call?code-sample=code-create-a-call-and-specify-a-statuscallbackevent). If an `application_sid` is present, this parameter is ignored. # @param [String] status_callback_method The HTTP method we should use when # calling the `status_callback` URL. Can be: `GET` or `POST` and the default is # `POST`. If an `application_sid` parameter is present, this parameter is ignored. # @param [String] send_digits A string of keys to dial after connecting to the # number, maximum of 32 digits. Valid digits in the string include: any digit # (`0`-`9`), '`#`', '`*`' and '`w`', to insert a half second pause. For example, # if you connected to a company phone number and wanted to pause for one second, # and then dial extension 1234 followed by the pound key, the value of this # parameter would be `ww1234#`. Remember to URL-encode this string, since the # '`#`' character has special meaning in a URL. If both `SendDigits` and # `MachineDetection` parameters are provided, then `MachineDetection` will be # ignored. # @param [String] timeout The integer number of seconds that we should allow the # phone to ring before assuming there is no answer. The default is `60` seconds # and the maximum is `600` seconds. For some call flows, we will add a 5-second # buffer to the timeout value you provide. For this reason, a timeout value of 10 # seconds could result in an actual timeout closer to 15 seconds. You can set this # to a short time, such as `15` seconds, to hang up before reaching an answering # machine or voicemail. # @param [Boolean] record Set this parameter to `true` to record the phone call. # The `recording_url` will be sent to the `status_callback` URL. The default is # `false`. # @param [String] recording_channels The number of channels in the final # recording. Can be: `mono` or `dual`. The default is `mono`. `mono` records both # legs of the call in a single channel of the recording file. `dual` records each # leg to a separate channel of the recording file. The first channel of a # dual-channel recording contains the parent call and the second channel contains # the child call. # @param [String] recording_status_callback The URL that we call when the # recording is available to be accessed. # @param [String] recording_status_callback_method The HTTP method we should use # when calling the `recording_status_callback` URL. Can be: `GET` or `POST` and # the default is `POST`. # @param [String] sip_auth_username The username used to authenticate the caller # making a SIP call. # @param [String] sip_auth_password The password required to authenticate the user # account specified in `sip_auth_username`. # @param [String] machine_detection Detect if a human, answering machine, or fax # has picked up the call. Can be: `Enable` or `DetectMessageEnd`. Use `Enable` if # you would like us to return `AnsweredBy` as soon as the called party is # identified. Use `DetectMessageEnd`, if you would like to leave a message on an # answering machine. If `send_digits` is provided, this parameter is ignored. For # more information, see [Answering Machine # Detection](https://www.twilio.com/docs/voice/answering-machine-detection). # @param [String] machine_detection_timeout The number of seconds that we should # attempt to detect an answering machine before timing out and sending a voice # request with `AnsweredBy` of `unknown`. The default timeout is 30 seconds. # @param [String] recording_status_callback_event The recording status events that # will trigger calls to the URL specified in `recording_status_callback`. Can be: # `in-progress`, `completed` and `absent`. Defaults to `completed`. Separate # multiple values with a space. # @param [String] trim Whether to trim any leading and trailing silence from the # recording. Can be: `trim-silence` or `do-not-trim` and the default is # `trim-silence`. # @param [String] caller_id The phone number, SIP address, or Client identifier # that made this call. Phone numbers are in [E.164 # format](https://wwnw.twilio.com/docs/glossary/what-e164) (e.g., +16175551212). # SIP addresses are formatted as `name@company.com`. # @param [String] machine_detection_speech_threshold The number of milliseconds # that is used as the measuring stick for the length of the speech activity, where # durations lower than this value will be interpreted as a human and longer than # this value as a machine. Possible Values: 1000-6000. Default: 2400. # @param [String] machine_detection_speech_end_threshold The number of # milliseconds of silence after speech activity at which point the speech activity # is considered complete. Possible Values: 500-5000. Default: 1200. # @param [String] machine_detection_silence_timeout The number of milliseconds of # initial silence after which an `unknown` AnsweredBy result will be returned. # Possible Values: 2000-10000. Default: 5000. # @param [String] url The absolute URL that returns the TwiML instructions for the # call. We will call this URL using the `method` when the call connects. For more # information, see the [Url # Parameter](https://www.twilio.com/docs/voice/make-calls#specify-a-url-parameter) # section in [Making Calls](https://www.twilio.com/docs/voice/make-calls). # @param [String] application_sid The SID of the Application resource that will # handle the call, if the call will be handled by an application. # @return [CallInstance] Newly created CallInstance def create(to: nil, from: nil, method: :unset, fallback_url: :unset, fallback_method: :unset, status_callback: :unset, status_callback_event: :unset, status_callback_method: :unset, send_digits: :unset, timeout: :unset, record: :unset, recording_channels: :unset, recording_status_callback: :unset, recording_status_callback_method: :unset, sip_auth_username: :unset, sip_auth_password: :unset, machine_detection: :unset, machine_detection_timeout: :unset, recording_status_callback_event: :unset, trim: :unset, caller_id: :unset, machine_detection_speech_threshold: :unset, machine_detection_speech_end_threshold: :unset, machine_detection_silence_timeout: :unset, url: :unset, application_sid: :unset) data = Twilio::Values.of({ 'To' => to, 'From' => from, 'Url' => url, 'ApplicationSid' => application_sid, 'Method' => method, 'FallbackUrl' => fallback_url, 'FallbackMethod' => fallback_method, 'StatusCallback' => status_callback, 'StatusCallbackEvent' => Twilio.serialize_list(status_callback_event) { |e| e }, 'StatusCallbackMethod' => status_callback_method, 'SendDigits' => send_digits, 'Timeout' => timeout, 'Record' => record, 'RecordingChannels' => recording_channels, 'RecordingStatusCallback' => recording_status_callback, 'RecordingStatusCallbackMethod' => recording_status_callback_method, 'SipAuthUsername' => sip_auth_username, 'SipAuthPassword' => sip_auth_password, 'MachineDetection' => machine_detection, 'MachineDetectionTimeout' => machine_detection_timeout, 'RecordingStatusCallbackEvent' => Twilio.serialize_list(recording_status_callback_event) { |e| e }, 'Trim' => trim, 'CallerId' => caller_id, 'MachineDetectionSpeechThreshold' => machine_detection_speech_threshold, 'MachineDetectionSpeechEndThreshold' => machine_detection_speech_end_threshold, 'MachineDetectionSilenceTimeout' => machine_detection_silence_timeout, }) payload = @version.create( 'POST', @uri, data: data ) CallInstance.new(@version, payload, account_sid: @solution[:account_sid], ) end ## # Lists CallInstance records from the API as a list. # Unlike stream(), this operation is eager and will load `limit` records into # memory before returning. # @param [String] to Only show calls to this phone number, SIP address, Client # identifier or SIM SID. # @param [String] from Only include calls from this phone number, SIP address, # Client identifier or SIM SID. # @param [String] parent_call_sid Only include calls spawned by calls with this # SID. # @param [call.Status] status The status of the calls to include. Can be: # `queued`, `ringing`, `in-progress`, `canceled`, `completed`, `failed`, `busy`, # or `no-answer`. # @param [Time] start_time_before Only include calls that started on or after this date # @param [Time] start_time Only include calls that started on or after this date # @param [Time] start_time_after Only include calls that started on or after this date # @param [Time] end_time_before Only include usage that occurred on or before this date # @param [Time] end_time Only include usage that occurred on or before this date # @param [Time] end_time_after Only include usage that occurred on or before this date # @param [Integer] limit Upper limit for the number of records to return. stream() # guarantees to never return more than limit. Default is no limit # @param [Integer] page_size Number of records to fetch per request, when # not set will use the default value of 50 records. If no page_size is defined # but a limit is defined, stream() will attempt to read the limit with the most # efficient page size, i.e. min(limit, 1000) # @return [Array] Array of up to limit results def list(to: :unset, from: :unset, parent_call_sid: :unset, status: :unset, start_time_before: :unset, start_time: :unset, start_time_after: :unset, end_time_before: :unset, end_time: :unset, end_time_after: :unset, limit: nil, page_size: nil) self.stream( to: to, from: from, parent_call_sid: parent_call_sid, status: status, start_time_before: start_time_before, start_time: start_time, start_time_after: start_time_after, end_time_before: end_time_before, end_time: end_time, end_time_after: end_time_after, limit: limit, page_size: page_size ).entries end ## # Streams CallInstance records from the API as an Enumerable. # This operation lazily loads records as efficiently as possible until the limit # is reached. # @param [String] to Only show calls to this phone number, SIP address, Client # identifier or SIM SID. # @param [String] from Only include calls from this phone number, SIP address, # Client identifier or SIM SID. # @param [String] parent_call_sid Only include calls spawned by calls with this # SID. # @param [call.Status] status The status of the calls to include. Can be: # `queued`, `ringing`, `in-progress`, `canceled`, `completed`, `failed`, `busy`, # or `no-answer`. # @param [Time] start_time_before Only include calls that started on or after this date # @param [Time] start_time Only include calls that started on or after this date # @param [Time] start_time_after Only include calls that started on or after this date # @param [Time] end_time_before Only include usage that occurred on or before this date # @param [Time] end_time Only include usage that occurred on or before this date # @param [Time] end_time_after Only include usage that occurred on or before this date # @param [Integer] limit Upper limit for the number of records to return. stream() # guarantees to never return more than limit. Default is no limit. # @param [Integer] page_size Number of records to fetch per request, when # not set will use the default value of 50 records. If no page_size is defined # but a limit is defined, stream() will attempt to read the limit with the most # efficient page size, i.e. min(limit, 1000) # @return [Enumerable] Enumerable that will yield up to limit results def stream(to: :unset, from: :unset, parent_call_sid: :unset, status: :unset, start_time_before: :unset, start_time: :unset, start_time_after: :unset, end_time_before: :unset, end_time: :unset, end_time_after: :unset, limit: nil, page_size: nil) limits = @version.read_limits(limit, page_size) page = self.page( to: to, from: from, parent_call_sid: parent_call_sid, status: status, start_time_before: start_time_before, start_time: start_time, start_time_after: start_time_after, end_time_before: end_time_before, end_time: end_time, end_time_after: end_time_after, page_size: limits[:page_size], ) @version.stream(page, limit: limits[:limit], page_limit: limits[:page_limit]) end ## # When passed a block, yields CallInstance records from the API. # This operation lazily loads records as efficiently as possible until the limit # is reached. def each limits = @version.read_limits page = self.page(page_size: limits[:page_size], ) @version.stream(page, limit: limits[:limit], page_limit: limits[:page_limit]).each {|x| yield x} end ## # Retrieve a single page of CallInstance records from the API. # Request is executed immediately. # @param [String] to Only show calls to this phone number, SIP address, Client # identifier or SIM SID. # @param [String] from Only include calls from this phone number, SIP address, # Client identifier or SIM SID. # @param [String] parent_call_sid Only include calls spawned by calls with this # SID. # @param [call.Status] status The status of the calls to include. Can be: # `queued`, `ringing`, `in-progress`, `canceled`, `completed`, `failed`, `busy`, # or `no-answer`. # @param [Time] start_time_before Only include calls that started on or after this date # @param [Time] start_time Only include calls that started on or after this date # @param [Time] start_time_after Only include calls that started on or after this date # @param [Time] end_time_before Only include usage that occurred on or before this date # @param [Time] end_time Only include usage that occurred on or before this date # @param [Time] end_time_after Only include usage that occurred on or before this date # @param [String] page_token PageToken provided by the API # @param [Integer] page_number Page Number, this value is simply for client state # @param [Integer] page_size Number of records to return, defaults to 50 # @return [Page] Page of CallInstance def page(to: :unset, from: :unset, parent_call_sid: :unset, status: :unset, start_time_before: :unset, start_time: :unset, start_time_after: :unset, end_time_before: :unset, end_time: :unset, end_time_after: :unset, page_token: :unset, page_number: :unset, page_size: :unset) params = Twilio::Values.of({ 'To' => to, 'From' => from, 'ParentCallSid' => parent_call_sid, 'Status' => status, 'StartTime<' => Twilio.serialize_iso8601_datetime(start_time_before), 'StartTime' => Twilio.serialize_iso8601_datetime(start_time), 'StartTime>' => Twilio.serialize_iso8601_datetime(start_time_after), 'EndTime<' => Twilio.serialize_iso8601_datetime(end_time_before), 'EndTime' => Twilio.serialize_iso8601_datetime(end_time), 'EndTime>' => Twilio.serialize_iso8601_datetime(end_time_after), 'PageToken' => page_token, 'Page' => page_number, 'PageSize' => page_size, }) response = @version.page( 'GET', @uri, params ) CallPage.new(@version, response, @solution) end ## # Retrieve a single page of CallInstance records from the API. # Request is executed immediately. # @param [String] target_url API-generated URL for the requested results page # @return [Page] Page of CallInstance def get_page(target_url) response = @version.domain.request( 'GET', target_url ) CallPage.new(@version, response, @solution) end ## # Access the feedback_summaries # @param [String] sid A 34 character string that uniquely identifies this # resource. # @return [FeedbackSummaryList] # @return [FeedbackSummaryContext] if sid was passed. def feedback_summaries(sid=:unset) raise ArgumentError, 'sid cannot be nil' if sid.nil? if sid != :unset return FeedbackSummaryContext.new(@version, @solution[:account_sid], sid, ) end @feedback_summaries ||= FeedbackSummaryList.new(@version, account_sid: @solution[:account_sid], ) end ## # Provide a user friendly representation def to_s '#' end end class CallPage < Page ## # Initialize the CallPage # @param [Version] version Version that contains the resource # @param [Response] response Response from the API # @param [Hash] solution Path solution for the resource # @return [CallPage] CallPage def initialize(version, response, solution) super(version, response) # Path Solution @solution = solution end ## # Build an instance of CallInstance # @param [Hash] payload Payload response from the API # @return [CallInstance] CallInstance def get_instance(payload) CallInstance.new(@version, payload, account_sid: @solution[:account_sid], ) end ## # Provide a user friendly representation def to_s '' end end class CallContext < InstanceContext ## # Initialize the CallContext # @param [Version] version Version that contains the resource # @param [String] account_sid The SID of the # [Account](https://www.twilio.com/docs/iam/api/account) that created the Call # resource(s) to fetch. # @param [String] sid The Twilio-provided string that uniquely identifies the Call # resource to fetch # @return [CallContext] CallContext def initialize(version, account_sid, sid) super(version) # Path Solution @solution = {account_sid: account_sid, sid: sid, } @uri = "/Accounts/#{@solution[:account_sid]}/Calls/#{@solution[:sid]}.json" # Dependents @recordings = nil @notifications = nil @feedback = nil end ## # Deletes the CallInstance # @return [Boolean] true if delete succeeds, false otherwise def delete @version.delete('delete', @uri) end ## # Fetch a CallInstance # @return [CallInstance] Fetched CallInstance def fetch params = Twilio::Values.of({}) payload = @version.fetch( 'GET', @uri, params, ) CallInstance.new(@version, payload, account_sid: @solution[:account_sid], sid: @solution[:sid], ) end ## # Update the CallInstance # @param [String] url The absolute URL that returns the TwiML instructions for the # call. We will call this URL using the `method` when the call connects. For more # information, see the [Url # Parameter](https://www.twilio.com/docs/voice/make-calls#specify-a-url-parameter) # section in [Making Calls](https://www.twilio.com/docs/voice/make-calls). # @param [String] method The HTTP method we should use when calling the `url`. Can # be: `GET` or `POST` and the default is `POST`. If an `application_sid` parameter # is present, this parameter is ignored. # @param [call.UpdateStatus] status The new status of the resource. Can be: # `canceled` or `completed`. Specifying `canceled` will attempt to hang up calls # that are queued or ringing; however, it will not affect calls already in # progress. Specifying `completed` will attempt to hang up a call even if it's # already in progress. # @param [String] fallback_url The URL that we call using the `fallback_method` if # an error occurs when requesting or executing the TwiML at `url`. If an # `application_sid` parameter is present, this parameter is ignored. # @param [String] fallback_method The HTTP method that we should use to request # the `fallback_url`. Can be: `GET` or `POST` and the default is `POST`. If an # `application_sid` parameter is present, this parameter is ignored. # @param [String] status_callback The URL we should call using the # `status_callback_method` to send status information to your application. If no # `status_callback_event` is specified, we will send the `completed` status. If an # `application_sid` parameter is present, this parameter is ignored. URLs must # contain a valid hostname (underscores are not permitted). # @param [String] status_callback_method The HTTP method we should use when # requesting the `status_callback` URL. Can be: `GET` or `POST` and the default is # `POST`. If an `application_sid` parameter is present, this parameter is ignored. # @param [String] twiml TwiML instructions for the call Twilio will use without # fetching Twiml from url. Twiml and url parameters are mutually exclusive # @return [CallInstance] Updated CallInstance def update(url: :unset, method: :unset, status: :unset, fallback_url: :unset, fallback_method: :unset, status_callback: :unset, status_callback_method: :unset, twiml: :unset) data = Twilio::Values.of({ 'Url' => url, 'Method' => method, 'Status' => status, 'FallbackUrl' => fallback_url, 'FallbackMethod' => fallback_method, 'StatusCallback' => status_callback, 'StatusCallbackMethod' => status_callback_method, 'Twiml' => twiml, }) payload = @version.update( 'POST', @uri, data: data, ) CallInstance.new(@version, payload, account_sid: @solution[:account_sid], sid: @solution[:sid], ) end ## # Access the recordings # @return [RecordingList] # @return [RecordingContext] if sid was passed. def recordings(sid=:unset) raise ArgumentError, 'sid cannot be nil' if sid.nil? if sid != :unset return RecordingContext.new(@version, @solution[:account_sid], @solution[:sid], sid, ) end unless @recordings @recordings = RecordingList.new( @version, account_sid: @solution[:account_sid], call_sid: @solution[:sid], ) end @recordings end ## # Access the notifications # @return [NotificationList] # @return [NotificationContext] if sid was passed. def notifications(sid=:unset) raise ArgumentError, 'sid cannot be nil' if sid.nil? if sid != :unset return NotificationContext.new(@version, @solution[:account_sid], @solution[:sid], sid, ) end unless @notifications @notifications = NotificationList.new( @version, account_sid: @solution[:account_sid], call_sid: @solution[:sid], ) end @notifications end ## # Access the feedback # @return [FeedbackList] # @return [FeedbackContext] def feedback FeedbackContext.new(@version, @solution[:account_sid], @solution[:sid], ) end ## # Provide a user friendly representation def to_s context = @solution.map {|k, v| "#{k}: #{v}"}.join(',') "#" end ## # Provide a detailed, user friendly representation def inspect context = @solution.map {|k, v| "#{k}: #{v}"}.join(',') "#" end end class CallInstance < InstanceResource ## # Initialize the CallInstance # @param [Version] version Version that contains the resource # @param [Hash] payload payload that contains response from Twilio # @param [String] account_sid The SID of the # [Account](https://www.twilio.com/docs/iam/api/account) that created this Call # resource. # @param [String] sid The Twilio-provided string that uniquely identifies the Call # resource to fetch # @return [CallInstance] CallInstance def initialize(version, payload, account_sid: nil, sid: nil) super(version) # Marshaled Properties @properties = { 'account_sid' => payload['account_sid'], 'annotation' => payload['annotation'], 'answered_by' => payload['answered_by'], 'api_version' => payload['api_version'], 'caller_name' => payload['caller_name'], 'date_created' => Twilio.deserialize_rfc2822(payload['date_created']), 'date_updated' => Twilio.deserialize_rfc2822(payload['date_updated']), 'direction' => payload['direction'], 'duration' => payload['duration'], 'end_time' => Twilio.deserialize_rfc2822(payload['end_time']), 'forwarded_from' => payload['forwarded_from'], 'from' => payload['from'], 'from_formatted' => payload['from_formatted'], 'group_sid' => payload['group_sid'], 'parent_call_sid' => payload['parent_call_sid'], 'phone_number_sid' => payload['phone_number_sid'], 'price' => payload['price'].to_f, 'price_unit' => payload['price_unit'], 'sid' => payload['sid'], 'start_time' => Twilio.deserialize_rfc2822(payload['start_time']), 'status' => payload['status'], 'subresource_uris' => payload['subresource_uris'], 'to' => payload['to'], 'to_formatted' => payload['to_formatted'], 'uri' => payload['uri'], } # Context @instance_context = nil @params = {'account_sid' => account_sid, 'sid' => sid || @properties['sid'], } end ## # Generate an instance context for the instance, the context is capable of # performing various actions. All instance actions are proxied to the context # @return [CallContext] CallContext for this CallInstance def context unless @instance_context @instance_context = CallContext.new(@version, @params['account_sid'], @params['sid'], ) end @instance_context end ## # @return [String] The SID of the Account that created this resource def account_sid @properties['account_sid'] end ## # @return [String] The annotation provided for the call def annotation @properties['annotation'] end ## # @return [String] Either `human` or `machine` if this call was initiated with answering machine detection. Empty otherwise. def answered_by @properties['answered_by'] end ## # @return [String] The API Version used to create the call def api_version @properties['api_version'] end ## # @return [String] The caller's name if this call was an incoming call to a phone number with caller ID Lookup enabled. Otherwise, empty. def caller_name @properties['caller_name'] end ## # @return [Time] The RFC 2822 date and time in GMT that this resource was created def date_created @properties['date_created'] end ## # @return [Time] The RFC 2822 date and time in GMT that this resource was last updated def date_updated @properties['date_updated'] end ## # @return [String] A string describing the direction of the call. `inbound` for inbound calls, `outbound-api` for calls initiated via the REST API or `outbound-dial` for calls initiated by a `Dial` verb. def direction @properties['direction'] end ## # @return [String] The length of the call in seconds. def duration @properties['duration'] end ## # @return [Time] The end time of the call. Null if the call did not complete successfully. def end_time @properties['end_time'] end ## # @return [String] The forwarding phone number if this call was an incoming call forwarded from another number (depends on carrier supporting forwarding). Otherwise, empty. def forwarded_from @properties['forwarded_from'] end ## # @return [String] The phone number, SIP address or Client identifier that made this call. Phone numbers are in E.164 format (e.g., +16175551212). SIP addresses are formatted as `name@company.com`. Client identifiers are formatted `client:name`. def from @properties['from'] end ## # @return [String] The calling phone number, SIP address, or Client identifier formatted for display. def from_formatted @properties['from_formatted'] end ## # @return [String] The Group SID associated with this call. If no Group is associated with the call, the field is empty. def group_sid @properties['group_sid'] end ## # @return [String] The SID that identifies the call that created this leg. def parent_call_sid @properties['parent_call_sid'] end ## # @return [String] If the call was inbound, this is the SID of the IncomingPhoneNumber resource that received the call. If the call was outbound, it is the SID of the OutgoingCallerId resource from which the call was placed. def phone_number_sid @properties['phone_number_sid'] end ## # @return [String] The charge for this call, in the currency associated with the account. Populated after the call is completed. May not be immediately available. def price @properties['price'] end ## # @return [String] The currency in which `Price` is measured. def price_unit @properties['price_unit'] end ## # @return [String] The unique string that identifies this resource def sid @properties['sid'] end ## # @return [Time] The start time of the call. Null if the call has not yet been dialed. def start_time @properties['start_time'] end ## # @return [call.Status] The status of this call. def status @properties['status'] end ## # @return [String] A list of related subresources identified by their relative URIs def subresource_uris @properties['subresource_uris'] end ## # @return [String] The phone number, SIP address or Client identifier that received this call. Phone numbers are in E.164 format (e.g., +16175551212). SIP addresses are formatted as `name@company.com`. Client identifiers are formatted `client:name`. def to @properties['to'] end ## # @return [String] The phone number, SIP address or Client identifier that received this call. Formatted for display. def to_formatted @properties['to_formatted'] end ## # @return [String] The URI of this resource, relative to `https://api.twilio.com` def uri @properties['uri'] end ## # Deletes the CallInstance # @return [Boolean] true if delete succeeds, false otherwise def delete context.delete end ## # Fetch a CallInstance # @return [CallInstance] Fetched CallInstance def fetch context.fetch end ## # Update the CallInstance # @param [String] url The absolute URL that returns the TwiML instructions for the # call. We will call this URL using the `method` when the call connects. For more # information, see the [Url # Parameter](https://www.twilio.com/docs/voice/make-calls#specify-a-url-parameter) # section in [Making Calls](https://www.twilio.com/docs/voice/make-calls). # @param [String] method The HTTP method we should use when calling the `url`. Can # be: `GET` or `POST` and the default is `POST`. If an `application_sid` parameter # is present, this parameter is ignored. # @param [call.UpdateStatus] status The new status of the resource. Can be: # `canceled` or `completed`. Specifying `canceled` will attempt to hang up calls # that are queued or ringing; however, it will not affect calls already in # progress. Specifying `completed` will attempt to hang up a call even if it's # already in progress. # @param [String] fallback_url The URL that we call using the `fallback_method` if # an error occurs when requesting or executing the TwiML at `url`. If an # `application_sid` parameter is present, this parameter is ignored. # @param [String] fallback_method The HTTP method that we should use to request # the `fallback_url`. Can be: `GET` or `POST` and the default is `POST`. If an # `application_sid` parameter is present, this parameter is ignored. # @param [String] status_callback The URL we should call using the # `status_callback_method` to send status information to your application. If no # `status_callback_event` is specified, we will send the `completed` status. If an # `application_sid` parameter is present, this parameter is ignored. URLs must # contain a valid hostname (underscores are not permitted). # @param [String] status_callback_method The HTTP method we should use when # requesting the `status_callback` URL. Can be: `GET` or `POST` and the default is # `POST`. If an `application_sid` parameter is present, this parameter is ignored. # @param [String] twiml TwiML instructions for the call Twilio will use without # fetching Twiml from url. Twiml and url parameters are mutually exclusive # @return [CallInstance] Updated CallInstance def update(url: :unset, method: :unset, status: :unset, fallback_url: :unset, fallback_method: :unset, status_callback: :unset, status_callback_method: :unset, twiml: :unset) context.update( url: url, method: method, status: status, fallback_url: fallback_url, fallback_method: fallback_method, status_callback: status_callback, status_callback_method: status_callback_method, twiml: twiml, ) end ## # Access the recordings # @return [recordings] recordings def recordings context.recordings end ## # Access the notifications # @return [notifications] notifications def notifications context.notifications end ## # Access the feedback # @return [feedback] feedback def feedback context.feedback end ## # Provide a user friendly representation def to_s values = @params.map{|k, v| "#{k}: #{v}"}.join(" ") "" end ## # Provide a detailed, user friendly representation def inspect values = @properties.map{|k, v| "#{k}: #{v}"}.join(" ") "" end end end end end end end