Class: Telerivet::ContactServiceState

Inherits:
Entity
  • Object
show all
Defined in:
lib/telerivet/contactservicestate.rb

Overview

Represents the current state of a particular contact for a particular Telerivet service.

Some automated services (including polls) are ‘stateful’. For polls, Telerivet needs to keep track of which question the contact is currently answering, and stores store the ID of each contact’s current question (e.g. ‘q1’ or ‘q2’) as the ID of the contact’s state for the poll service. Any type of conversation-like service will also need to store state for each contact.

For this type of entity, the ‘id’ field is NOT a read-only unique ID (unlike all other types of entities). Instead it is an arbitrary string that identifies the contact’s current state within your poll/conversation; many contacts may have the same state ID, and it may change over time. Additional custom fields may be stored in the ‘vars’.

Initially, the state ‘id’ for any contact is null. When saving the state, setting the ‘id’ to null is equivalent to resetting the state (so all ‘vars’ will be deleted); if you want to save custom variables, the state ‘id’ must be non-null.

Many Telerivet services are stateless, such as auto-replies or keyword-based services where the behavior only depends on the current message, and not any previous messages sent by the same contact. Telerivet doesn’t store any state for contacts that interact with stateless services.

Fields:

- id (string, max 63 characters)
    * Arbitrary string representing the contact's current state for this service, e.g.
        'q1', 'q2', etc.
    * Updatable via API

- contact_id
    * ID of the contact
    * Read-only

- service_id
    * ID of the service
    * Read-only

- vars (Hash)
    * Custom variables stored for this contact/service state
    * Updatable via API

- time_created (UNIX timestamp)
    * Time the state was first created in Telerivet
    * Read-only

- time_updated (UNIX timestamp)
    * Time the state was last updated in Telerivet
    * Read-only

- project_id
    * ID of the project this contact/service state belongs to
    * Read-only

Instance Method Summary collapse

Methods inherited from Entity

#get, #initialize, #load, #set, #set_data, #to_s, #vars

Constructor Details

This class inherits a constructor from Telerivet::Entity

Instance Method Details

#contact_idObject



82
83
84
# File 'lib/telerivet/contactservicestate.rb', line 82

def contact_id
    get('contact_id')
end

#get_base_api_pathObject



102
103
104
# File 'lib/telerivet/contactservicestate.rb', line 102

def get_base_api_path()
    "/projects/#{get('project_id')}/services/#{get('service_id')}/states/#{get('contact_id')}"
end

#idObject



74
75
76
# File 'lib/telerivet/contactservicestate.rb', line 74

def id
    get('id')
end

#id=(value) ⇒ Object



78
79
80
# File 'lib/telerivet/contactservicestate.rb', line 78

def id=(value)
    set('id', value)
end

#project_idObject



98
99
100
# File 'lib/telerivet/contactservicestate.rb', line 98

def project_id
    get('project_id')
end

#resetObject

Resets the state for this contact for this service.



70
71
72
# File 'lib/telerivet/contactservicestate.rb', line 70

def reset()
    @api.do_request("DELETE", get_base_api_path())
end

#saveObject

Saves the state id and any custom variables for this contact. If the state id is null, this is equivalent to calling reset().



63
64
65
# File 'lib/telerivet/contactservicestate.rb', line 63

def save()
    super
end

#service_idObject



86
87
88
# File 'lib/telerivet/contactservicestate.rb', line 86

def service_id
    get('service_id')
end

#time_createdObject



90
91
92
# File 'lib/telerivet/contactservicestate.rb', line 90

def time_created
    get('time_created')
end

#time_updatedObject



94
95
96
# File 'lib/telerivet/contactservicestate.rb', line 94

def time_updated
    get('time_updated')
end