## # 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 unique id of the # [Account](https://www.twilio.com/docs/api/rest/account) responsible for creating # this call. # @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/api/voice/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 Twilio should use when making its request # to the above `Url` parameter's value. Defaults to `POST`. If an `ApplicationSid` # parameter is present, this parameter is ignored. # @param [String] fallback_url A URL that Twilio will request if an error occurs # requesting or executing the TwiML at `Url`. If an `ApplicationSid` parameter is # present, this parameter is ignored. # @param [String] fallback_method The HTTP method that Twilio should use to # request the `FallbackUrl`. Must be either `GET` or `POST`. Defaults to `POST`. # If an `ApplicationSid` parameter is present, this parameter is ignored. # @param [String] status_callback A URL that Twilio will send asynchronous webhook # requests to on every call event specified in the `StatusCallbackEvent` # parameter. If no event is present, Twilio will send `completed` by default. If # an `ApplicationSid` 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 Twilio will # send webhooks on. Available values are `initiated`, `ringing`, `answered`, and # `completed`. If you want to receive multiple events, please provide multiple # `StatusCallbackEvent` values as individual parameters in the `POST` request. See # the code sample for [monitoring call # progress](https://www.twilio.com/docs/api/voice/making-calls#make-a-call-and-monitor-progress-events). If no event is specified, defaults to `completed`. If an `ApplicationSid` is present, this parameter is ignored. # @param [String] status_callback_method The HTTP method Twilio should use when # requesting the above URL. Defaults to `POST`. If an `ApplicationSid` 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, # dial extension 1234 and then the pound key, use `SendDigits=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] if_machine Tell Twilio to try and determine if a machine (like # voicemail) or a human has answered the call. Possible value are `Continue` and # `Hangup`. # @param [String] timeout The integer number of seconds that Twilio should allow # the phone to ring before assuming there is no answer. Default is `60` seconds, # the maximum is `600` seconds. For some call flows Twilio will add a 5 second # buffer to the timeout value provided, so if you enter a timeout value of 10 # seconds, you could see actual timeout closer to 15 seconds. Note, you could set # this to a low value, such as `15`, to hangup before reaching an answering # machine or voicemail. # @param [Boolean] record Set this parameter to true to record the entirety of a # phone call. The RecordingUrl will be sent to the StatusCallback URL. Defaults to # false. # @param [String] recording_channels `mono` or `dual`Set this parameter to specify # the number of channels in the final recording. Defaults to `mono`. In # mono-channel, both legs of the call are mixed down into a single channel within # a single recording file. With dual-channel, both legs use separate channels # within a single recording file. For dual-channel, the parent call will always # be in the first channel and the child call will always be in the second channel. # @param [String] recording_status_callback A URL that Twilio will send a webhook # request to when the recording is available for access. # @param [String] recording_status_callback_method The HTTP method Twilio should # use when requesting the above URL. Defaults to `POST`. # @param [String] sip_auth_username The sip_auth_username # @param [String] sip_auth_password The sip_auth_password # @param [String] machine_detection Detect if a human, answering machine or fax # has picked up the call. Use `Enable` if you would like Twilio to return an # `AnsweredBy` value as soon as it identifies the called party. If you would like # to leave a message on an answering machine specify `DetectMessageEnd`. If both # SendDigits and MachineDetection parameters are provided, then MachineDetection # will be ignored. [Detailed documentation is # here](https://www.twilio.com/docs/api/voice/answering-machine-detection). # @param [String] machine_detection_timeout The number of seconds that Twilio # should attempt to perform answering machine detection before timing out and # firing a voice request with `AnsweredBy` of `unknown`. Defaults to 30 seconds. # @param [String] recording_status_callback_event The recording status changes # that Twilio will send webhooks on to the URL specified in # RecordingStatusCallback. The available values are `in-progress`, `completed`, # `failed`. To specify multiple values separate them with a space. Defaults are # `completed`, `failed`. If any values are specified, the defaults are no longer # applicable. # @param [String] trim `trim-silence` or `do-not-trim`Set this parameter to define # whether leading and trailing silence is trimmed from the recording. Defaults to # `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 (e.g. +16175551212). SIP # addresses are formatted as `name@company.com`. # @param [String] url The fully qualified URL that should be consulted when the # call connects. Just like when you set a URL on a phone number for handling # inbound calls. See the [Url # Parameter](https://www.twilio.com/docs/api/voice/making-calls#url-parameter) details in [Making Calls](https://www.twilio.com/docs/voice/make-calls) for more details. # @param [String] application_sid The 34 character SID of the application Twilio # should use to handle this phone call. If this parameter is present, Twilio will # ignore all of the voice URLs passed and use the URLs set on the application. See # the [ApplicationSid # Parameter](https://www.twilio.com/docs/api/voice/making-calls#applicationsid-parameter) section in [Making Calls](https://www.twilio.com/docs/voice/make-calls) for more details. # @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, if_machine: :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, 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, 'IfMachine' => if_machine, '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, }) 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 show calls from this phone number, SIP address, Client # identifier or SIM SID. # @param [String] parent_call_sid Only show calls spawned by the call with this # SID. # @param [call.Status] status Only show calls currently in this status. May be # `queued`, `ringing`, `in-progress`, `canceled`, `completed`, `failed`, `busy`, # or `no-answer`. # @param [Time] start_time_before StartTime to filter on # @param [Time] start_time StartTime to filter on # @param [Time] start_time_after StartTime to filter on # @param [Time] end_time_before EndTime to filter on # @param [Time] end_time EndTime to filter on # @param [Time] end_time_after EndTime to filter on # @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 show calls from this phone number, SIP address, Client # identifier or SIM SID. # @param [String] parent_call_sid Only show calls spawned by the call with this # SID. # @param [call.Status] status Only show calls currently in this status. May be # `queued`, `ringing`, `in-progress`, `canceled`, `completed`, `failed`, `busy`, # or `no-answer`. # @param [Time] start_time_before StartTime to filter on # @param [Time] start_time StartTime to filter on # @param [Time] start_time_after StartTime to filter on # @param [Time] end_time_before EndTime to filter on # @param [Time] end_time EndTime to filter on # @param [Time] end_time_after EndTime to filter on # @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 show calls from this phone number, SIP address, Client # identifier or SIM SID. # @param [String] parent_call_sid Only show calls spawned by the call with this # SID. # @param [call.Status] status Only show calls currently in this status. May be # `queued`, `ringing`, `in-progress`, `canceled`, `completed`, `failed`, `busy`, # or `no-answer`. # @param [Time] start_time_before StartTime to filter on # @param [Time] start_time StartTime to filter on # @param [Time] start_time_after StartTime to filter on # @param [Time] end_time_before EndTime to filter on # @param [Time] end_time EndTime to filter on # @param [Time] end_time_after EndTime to filter on # @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 The sid # @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 account_sid # @param [String] sid The Call Sid that uniquely identifies the Call 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, true 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 fully qualified URL that should be consulted when the # call connects. Just like when you set a URL on a phone number for handling # inbound calls. See the [Url # Parameter](https://www.twilio.com/docs/api/voice/making-calls#url-parameter) # section below for more details. # @param [String] method The HTTP method Twilio should use when making its request # to the above `Url` parameter's value. Defaults to `POST`. If an `ApplicationSid` # parameter is present, this parameter is ignored. # @param [call.UpdateStatus] status Either `canceled` or `completed`. # Specifying `canceled` will attempt to hang up calls that are queued or ringing # but 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 A URL that Twilio will request if an error occurs # requesting or executing the TwiML at `Url`. If an `ApplicationSid` parameter is # present, this parameter is ignored. # @param [String] fallback_method The HTTP method that Twilio should use to # request the `FallbackUrl`. Must be either `GET` or `POST`. Defaults to `POST`. # If an `ApplicationSid` parameter is present, this parameter is ignored. # @param [String] status_callback A URL that Twilio will send asynchronous webhook # requests to on every call event specified in the `StatusCallbackEvent` # parameter. If no event is present, Twilio will send `completed` by default. If # an `ApplicationSid` 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 Twilio should use when # requesting the above URL. Defaults to `POST`. If an `ApplicationSid` parameter # is present, this parameter is ignored. # @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) data = Twilio::Values.of({ 'Url' => url, 'Method' => method, 'Status' => status, 'FallbackUrl' => fallback_url, 'FallbackMethod' => fallback_method, 'StatusCallback' => status_callback, 'StatusCallbackMethod' => status_callback_method, }) 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 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 unique id of the # [Account](https://www.twilio.com/docs/api/rest/account) responsible for creating # this call. # @param [String] sid The Call Sid that uniquely identifies the Call 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 unique id of the Account responsible for creating this Call def account_sid @properties['account_sid'] end ## # @return [String] The annotation provided for the Call def annotation @properties['annotation'] end ## # @return [String] If this call was initiated with answering machine detection, either `human` or `machine`. Empty otherwise. def answered_by @properties['answered_by'] end ## # @return [String] The API Version the Call was created through def api_version @properties['api_version'] end ## # @return [String] If this call was an incoming call to a phone number with Caller ID Lookup enabled, the caller's name. Empty otherwise. def caller_name @properties['caller_name'] end ## # @return [Time] The date that this resource was created def date_created @properties['date_created'] end ## # @return [Time] The date 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] If this Call was an incoming call forwarded from another number, the forwarding phone number (depends on carrier supporting forwarding). Empty otherwise. 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 phone number, SIP address or Client identifier that made this Call. Formatted for display. def from_formatted @properties['from_formatted'] end ## # @return [String] A 34 character Group Sid associated with this Call. Empty if no Group is associated with the Call. def group_sid @properties['group_sid'] end ## # @return [String] A 34 character string that uniquely 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 that received the call. If the call was outbound, it is the Sid of the OutgoingCallerId 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] A 34 character string that uniquely 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] A string representing the status of the call. def status @properties['status'] end ## # @return [String] Call Instance Subresources 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 for this resource, relative to `https://api.twilio.com` def uri @properties['uri'] end ## # Deletes the CallInstance # @return [Boolean] true if delete succeeds, true 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 fully qualified URL that should be consulted when the # call connects. Just like when you set a URL on a phone number for handling # inbound calls. See the [Url # Parameter](https://www.twilio.com/docs/api/voice/making-calls#url-parameter) # section below for more details. # @param [String] method The HTTP method Twilio should use when making its request # to the above `Url` parameter's value. Defaults to `POST`. If an `ApplicationSid` # parameter is present, this parameter is ignored. # @param [call.UpdateStatus] status Either `canceled` or `completed`. # Specifying `canceled` will attempt to hang up calls that are queued or ringing # but 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 A URL that Twilio will request if an error occurs # requesting or executing the TwiML at `Url`. If an `ApplicationSid` parameter is # present, this parameter is ignored. # @param [String] fallback_method The HTTP method that Twilio should use to # request the `FallbackUrl`. Must be either `GET` or `POST`. Defaults to `POST`. # If an `ApplicationSid` parameter is present, this parameter is ignored. # @param [String] status_callback A URL that Twilio will send asynchronous webhook # requests to on every call event specified in the `StatusCallbackEvent` # parameter. If no event is present, Twilio will send `completed` by default. If # an `ApplicationSid` 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 Twilio should use when # requesting the above URL. Defaults to `POST`. If an `ApplicationSid` parameter # is present, this parameter is ignored. # @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) 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, ) 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