Get Message API
The Get Message API gives clients a way to monitor the status of the engagement and to fetch new agent messages.
GetMessageAPI is a singleton class. Use the code below to get the instance.
NuanMessaging nuanMessaging = NuanMessaging.getInstance()
GetMessageAPI getMessageAPI = nuanMessaging.getMessageAPIInstance()
Public Methods
-
-(void) getMessages(void (^) (GetMessageResponse *success, Resposne *error))completionBlock
Initiate getMesasge Pooling request to Nuance Messaging System. This method raises an exception if status of the current engagement is neither created or nor queued.
-
-(void) pauseGetMessages
Pauses the getMessage pooling request to Nuance Messaging System. You should pause pooling requests when app goes in-active.
-
-(void) restartGetMessages
Invoking this method, restarts getMesasge pooling request to Nuance Message Server's. You can use this method to resume pooling when app again becomes active.
-
-(void) restartGetMessages:(BOOL)needPreviousTranscript andCompletionBlock:(void (^) (GetMessageResponse *success, Resposne *error))completionBlock
This method lets you fetch all previous transcript if app started after getting killed.
-
-(void) cancelGetMessages
This method must be invoked in your ViewController viewWillDisappear life cycle method, Provided GetMessageAPI.getMesasges API has been called in the current ViewController to get new message from agent.
GetMessageResponse
An instance of this class is passed as an argument to the completionBlock. This will be nil if there is an error in this request.
Public Properties
-
NSString *messageType
Possible Message Types are.
"chatLine"
"stateChange"
"chat.authorized"
"chat.automation_request"
"chatroom.member_connected"
"command"
"chatroom.member_lost"
-
NSString *getProperty:(NSString *)name
Below table list the properties that can be present in a GetMessageResponse. Pass the property name to retreive its value.
Name Value Type Description agentName Name of agent assigned to this engagement string Agent name agentIsTyping-state true/false boolean Indicates the agent is currently typing a response. agentID Numeric ID of the agent assigned string The unique identifier of the agent (same as agent login ID) command pushURL string A pushURL command is sent from Message sender string This field contains the recommended customer facing agent name (typically presented something like “Jim: How can I help you?” where Jim is the agent name presented to the customer message Tag to wrap the content of each message Indicates a new agent message is included messageText Chat line text string The actual agent text/message messageType chatLine | command | stateChange | chatroom.member_connected | chatroom.member_lost string Type of message that is being returned. When the “stateChange” message type is received, you will also receive the “state” field indicating what state was changed. When the “command” message type is received, you will also receive the “command” field indicating what command was sent. queueDepth Number of customers ahead of you in queue number Queue depth is provided when state is queued. sequenceNumber Sequence number of this message number The client application can use the sequence number to ensure that messages are displayed in the correct order state queued | assigned | closed | agentIsTyping| transfer | conference string The current status of the engagement. This field presents only if messageType = stateChange url URL of page sent string When messageType is command this field will be included and contain the URL to be pushed in the customer’s browser waitTime Estimated wait time in seconds number Estimated wait time is provided when state is queued. Other parameters what returns from CR Name Example Message types where this parameter appears agent.alias
<agent.alias>Agent</agent.alias>
<messageType
>stateChange</messageType>
<state>assigned</state>, <messageType>chatLine</messageType>,<messageType
>chatroom.member_connected</messageType>
business_unit.id
<business_unit.id>22</business_unit.id>
<messageType
>stateChange</messageType>
<state>assigned</state>,<messageType
>chatroom.member_connected</messageType>
chatroom.chat_id
<chatroom.chat_id>7657620082880181644</chatroom.chat_id
>
<messageType
>chatroom.member_connected</messageType>, <messageType>chatroom.member_lost</messageType>
chatroom.member.name
<chatroom.member.name>1</chatroom.member.name>
<messageType
>chatroom.member_connected</messageType>
chatroom.member.id
<chatroom.member.id>1</chatroom.member.id>
<messageType
>chatroom.member_connected</messageType>, <messageType>chatroom.member lost</messageType>
chatroom.member
.type
<chatroom.member
.type>agent</chatroom.member.type>
<messageType
>chatroom.member_connected</messageType>, <messageType>chatroom.member_lost</messageType>
chatrouter
.address
<chatrouter
.address>192.168.0.20</chatrouter.address>
<messageType
>stateChange</messageType>
<state>assigned</state>client.display.text
<client.display.text>Agent has left the chat&nl;You are being
transferred, please hold...</client.display.text>
<messageType
>stateChange</messageType>
<state>transfer</state>,<messageType
>chatroom.member_connected</messageType>
cobrowse.enabled
<cobrowse.enabled>true</cobrowse.enabled>
<messageType
>stateChange</messageType>
<state>assigned</state>display.text
<display.text>Agent is typing...</display.text> <messageType
>stateChange</messageType>
<state>agentIsTyping</state>,<messageType
>chatroom.member_connected</messageType>, <messageType>chatroom.member_lost</messageType>,
<messageType
>stateChange</messageType>
<state>closed</state>escalate
<escalate>false</escalate>
<messageType
>stateChange</messageType>
<state>closed</state>event.agent_first_name
<event.agent_first_name>User First Name</event.agent_first_name>
<messageType
>stateChange</messageType>
<state>assigned</state>,<messageType
>chatroom.member_connected</messageType>
event.agent_last_name
<event.agent_last_name>User Last Name</event.agent_last_name
>
<messageType
>stateChange</messageType>
<state>assigned</state>,<messageType
>chatroom.member_connected</messageType>
exit
<exit>true</exit>
<messageType>chatroom.member_lost</messageType> host.node.id
<host.node.id>192.168.0.20
</host.node.id>
<messageType
>stateChange</messageType>
<state>assigned</state>,<messageType
>stateChange</messageType>
<state>transfer</state>msg.originalrequest.id
<msg.originalrequest.id>5722840798275623
</msg.originalrequest.id>
<messageType
>stateChange</messageType>
<state>assigned</state>,<messageType
>stateChange</messageType>
<state>transfer</state>owner
<owner>true</owner>
<messageType
>chatroom.member_connected</messageType>
reason
<reason>Transfer accepted and sent to 1</reason>
<messageType
>stateChange</messageType>
<state>transfer</state>screening
<screening>true</screening>
<messageType
>chatroom.member_connected</messageType>
script.id
<script.id>200023</script.id>
<messageType>chatLine</messageType> tc.mode <tc.mode>transfer</tc.mode>
<messageType
>chatroom.member_connected</messageType>,
<messageType>chatroom.member_lost</messageType>,<messageType
>stateChange</messageType>
<state>closed</state>type
<type>2</type>
<messageType
>stateChange</messageType>
<state>agentIsTyping</state>user.id
<user.id>2</user.id>
<messageType
>stateChange</messageType>
<state>agentIsTyping</state>
Response
Response object is passed to the completionBlock. This will be nil if there is no error in this request.
Public Methods
-
long statusCode
statusCode property will have one of the following values.
401: Chat can not be created
400: Request has incorrect parameters
403: User hasn't privileges to use api or to see requested site
500: Server error
NuanMessaging nuanMessaging = NuanMessaging.getInstance()
let getMessageAPI = nuanMessaging.getMessageAPIInstance()
getMessageAPI.getMessages({ (getMessageResp, error) in
if(error != nil) {
} else {
});