C. Web Services

ITFramework Web Services SDK

By:        Vivek Garg
Date:    10/05/2010
Rev.:    11/12/2010 - Mark Kleinschmidt
 

Overview

ITFramework exposes a set of web service calls which allows developers to interact with the Queue engine in real time.

 

It allows developers to quickly get following details:

1.       List of Queues

2.       List of experts assigned to a Queue

3.       Expert Status in Queue

4.       List of customers waiting in Queue

5.       List of connected customers in a Queue

6.       View chat conversation between an customer an expert in real time

7.       Queue statistics

 

It also allows you to quickly perform following actions:

1.       Transfer a conversation from one Queue to another

2.       Assign an expert to a customer

3.       Start/Stop a Queue

4.       Change status of an expert

5.       Push Survey to a connected customer

 

 

Web Service WSDL URL for an ITFramework deployment is as follows:

http://WebServer/ITFramework/ITApplicationManagerPort?wsdl

 

List of web service calls is as follows:

1.       getAllMonitoringQueues(String appUrl)
To get list of all Queues running under ITFramework

Parameters:
appURL: This refers to the URL of the database which contains queue configuration, like
http://DominoServer/itqconnect.nsf

Output:
<MonitoringQueues>
   <Queue>
                <LoginName>fastclaim</LoginName>
                <QueueName>Fast Claim</QueueName>
                <QueueStatus>Online</QueueStatus>
                <Description>Test Queue</Description>
                <StartTime>Tue Oct 5 2010 04:18:50 AM</StartTime>
                <SeekersCount>0</SeekersCount>
                <ExpertsCount>11</ExpertsCount>
                <OnlineExpertsCount>3</OnlineExpertsCount>
                <ConnectedExpertsCount>0</ConnectedExpertsCount>
                <ConnectedSeekers>0</ConnectedSeekers>
                <WaitingSeekers>0</WaitingSeekers>
                <MaxWaitingSeeker/>
                <WaitingSince>0</WaitingSince>
     </Queue>
 </MonitoringQueues>

2.       getMonitoringQueues(String appUrl, String expertID)
To get list of all Queues running under ITFramework in which specified user is an expert

Parameters:
appURL: This refers to the URL of the database which contains queue configuration, like
http://DominoServer/itqconnect.nsf
expertID: This refers to the Sametime ID of an expert like: CN=FirstName FullName, OU=Dev

Output:
<MonitoringQueues>
   <Queue>
                <LoginName>fastclaim</LoginName>
                <QueueName>Fast Claim</QueueName>
                <QueueStatus>Online</QueueStatus>
                <Description>Test Queue</Description>
                <StartTime>Tue Oct 5 2010 04:18:50 AM</StartTime>
                <SeekersCount>0</SeekersCount>
                <ExpertsCount>11</ExpertsCount>
                <OnlineExpertsCount>3</OnlineExpertsCount>
                <ConnectedExpertsCount>0</ConnectedExpertsCount>
                <ConnectedSeekers>0</ConnectedSeekers>
                <WaitingSeekers>0</WaitingSeekers>
                <MaxWaitingSeeker/>
                <WaitingSince>0</WaitingSince>
     </Queue>
 </MonitoringQueues>

3.       getSeekers(String appUrl, String queueName)
To list of customers presently in a Queue (both waiting and connected)

Parameters:
appURL: This refers to the URL of the database which contains queue configuration, like
http://DominoServer/itqconnect.nsf
queueName: This refers to the Sametime ID of an Queue like: CN=QueueName,  OU=Dev

Output:
<MonitoringSeekers>
 <Seeker>
                <SeekerName>John Row</SeekerName>
                <WebVisitorName> John Row </WebVisitorName>
                <SeekerState>Waiting</SeekerState>
                <QueueName>fastclaim</QueueName>
                <InitialRequest>Need help with my policy: XY125</InitialRequest>
                <ArrivalTime>Tue Oct 5 2010 04:49:51 AM</ArrivalTime>
                <ExpertAssigned>na</ExpertAssigned>
                <WaitingTime>24 s</WaitingTime>
                <ConnectingTime>na</ConnectingTime>
                <WaitingSince>24</WaitingSince>
                <SeekerDisplayName> John</SeekerDisplayName>
 </Seeker>
</MonitoringSeekers>

4.       getExperts(String appUrl, String queueName)
To get list of all experts that are members of the specific queue

Parameters:
appURL: This refers to the URL of the database which contains queue configuration, like
http://DominoServer/itqconnect.nsf
queueName: This refers to the Sametime ID of an Queue like: CN=QueueName,  OU=Dev

Output:
<MonitoringExperts>
  <Expert>
                <ExpertName>CN=FirstName LastName/OU=US/O=dev</ExpertName>
                <ExpertDescription>NA</ExpertDescription>
                <QueueName>Fast Claim</QueueName>
                <ExpertState>free|connected</ExpertState>
                <AssignedSeekers>na|seekerID</AssignedSeekers>
                </Expert>
</MonitoringExperts>

5.       pickSeeker(String appUrl, String queueName, String expertID,String seekerID)
This allows you to connect an expert with a waiting customer in a queue

Parameters:
appURL: This refers to the URL of the database which contains queue configuration, like
http://DominoServer/itqconnect.nsf
queueName: This refers to the Sametime ID of an Queue like: CN=QueueName,  OU=Dev
expertID: This refers to the Sametime ID of an expert like:
CN=FirstName FullName, OU=Dev
seekerID: This refers to the Sametime ID of a customer like:
CN=FirstName FullName, OU=Web

Output:
true -  When expert gets successfully connected with an expert
Or
You are not an expert in the Queue : Fastclaim – When expert is not member of Queue
Or
Please login into Lotus Sametime Connect Client to pick an incoming request. – When expert is not logged in
Or
Incoming request has already been picked by ExpertID – When request has been picked by another expert
Or
Unable to pick incoming request, application error. – When an error occurs

6.       transferIM(String appUrl, String transferto , String transferfrom ,String expert , String seeker)
This allows you to move customer from one queue to another queue

Parameters:
appURL: This refers to the URL of the database which contains queue configuration, like
http://DominoServer/itqconnect.nsf
transferto: This refers to the Sametime ID of an Queue like: CN=QueueName,  OU=Dev to which the customer should be transferred
transferfrom: This refers to the Sametime ID of an Queue like: CN=QueueName,  OU=Dev from which the customer is being transferred
expertID: This refers to the Sametime ID of an expert like: CN=FirstName FullName, OU=Dev which is initiating the transfer

seekerID: This refers to the Sametime ID of a customer like: CN=FirstName FullName, OU=Web which needs to be transferred

Output:
ok: when transfer is successful
Or
Exception: when transfer fails, returns the reason

7.       getSurveyURL(String appUrl, String queueName, String seekerID)
This allows you to get the URL to survey specific to Queue which can be pushed to the customer

Parameters:
appURL: This refers to the URL of the database which contains queue configuration, like
http://DominoServer/itqconnect.nsf
queueName: This refers to the Sametime ID of an Queue like: CN=QueueName,  OU=Dev
seekerID: This refers to the Sametime ID of a customer like:
CN=FirstName FullName, OU=Web

Output:
This returns URL to the Survey
Or
NA if no survey URL is specified

8.       pushSurveyURL(String appUrl ,String queueName,String seekerID,String expertID,String surveyURL)
This allows you to push a survey URL to a connected customer

Parameters:
appURL: This refers to the URL of the database which contains queue configuration, like
http://DominoServer/itqconnect.nsf
queueName: This refers to the Sametime ID of an Queue like: CN=QueueName,  OU=Dev
seekerID: This refers to the Sametime ID of a customer like:
CN=FirstName FullName, OU=Web
expertID: This refers to the Sametime ID of an expert like: CN=FirstName FullName, OU=Dev which is connected with the customer
surveyURL: The URL which needs to be pushed

Output:
true – if URL is pushed successfully
Or
You are currently not connected to the seeker. – if expert is not connected with the customer
Or
Visitor not exist in Visitor List – if customer has left the chat session
Or
Please send correct URL – if incorrect survey URL is specified

9.       getChatConversation(String appUrl, String seekerID, String queueName)
This allows you to get conversation text in real time

Parameters:
appURL: This refers to the URL of the database which contains queue configuration, like
http://DominoServer/itqconnect.nsf
seekerID: This refers to the Sametime ID of a customer like: CN=FirstName FullName, OU=Web
queueName: This refers to the Sametime ID of an Queue like: CN=QueueName,  OU=Dev

Output:
NA
Or
Actual Conversation Text

10.   getSeekerProperties(String appUrl ,String queueName,String seekerID)
This allows you to retrieve meta data associated with a customer like their IP address, initial question, email address, browser details etc…

Parameters:
appURL: This refers to the URL of the database which contains queue configuration, like http://DominoServer/itqconnect.nsf
queueName: This refers to the Sametime ID of an Queue like: CN=QueueName,  OU=Dev
seekerID: This refers to the Sametime ID of a customer like:
CN=FirstName FullName, OU=Web

Output:
<SeekerDetail>
                <IpAddress>NA</IpAddress>
                <SametimeId>CN=John Row/OU=Web</SametimeId>
                <SametimeName> John Row</SametimeName>
                <InterviewStartNode>NA</InterviewStartNode>
                <FirstName/>
                <LastName/>
                <CustomerEmail/>
                <SendTrans/>
                <Question>Need Help</Question>
                <visitorTokenId>NA</visitorTokenId>
                <BrowserName>NA</BrowserName>
                <BrowserVersion>NA</BrowserVersion>
                <BrowserOS>NA</BrowserOS>
                <CommentMsg>NA</CommentMsg>
                <ChatStartTime>Oct 5 2010 05:16:15 AM</ChatStartTime>
                <IframeParent>NA</IframeParent>
                <Name/>
                <ComputerID/>
                <Location/>
                <Extension/>
 </SeekerDetail>

11.   getVersion(String appUrl)
This returns the version number of ITFramework engine

Parameters:
appURL: This refers to the URL of the database which contains queue configuration, like
http://DominoServer/itqconnect.nsf

Output:
4.2.XXX

12.   getQueueStatistics(String appUrl, String queueName)
This allows you to retrieve Queue statistics

Parameters:
appURL: This refers to the URL of the database which contains queue configuration, like
http://DominoServer/itqconnect.nsf
queueName: This refers to the Sametime ID of an Queue like: CN=QueueName,  OU=Dev

Output:
<QueueStatistics>
                <InboundRequests>4</InboundRequests>
                <AvailableAgents>3</AvailableAgents>
                <RegisteredAgents>11</RegisteredAgents>
                <AcceptedChats>1</AcceptedChats>
</QueueStatistics>

13.   getExpertsStatus(String appUrl, String queueName, Stringstatus)
To get list of experts in the specified state

Parameters:
appURL: This refers to the URL of the database which contains queue configuration, like
http://DominoServer/itqconnect.nsf
queueName: This refers to the Sametime ID of an Queue like: CN=QueueName,  OU=Dev
status: Value can be either Waiting or Connected or NULL (to get all)

Output:
<?xml version="1.0" encoding="UTF-8"?>
<Experts>
  <Expert>
    <ExpertName>CN=FirstName LastName/OU=US/O=dev</ExpertName>
    <ExpertState>Connected</ExpertState>
</Expert>
</Experts>

14.   getSeekers(String appUrl,String queueName)
To get list of customers present in a Queue

Parameters:
appURL: This refers to the URL of the database which contains queue configuration, like
http://DominoServer/itqconnect.nsf
queueName: This refers to the Sametime ID of an Queue like: CN=QueueName,  OU=Dev

Output:
<MonitoringSeekers>
 <Seeker>
                <SeekerName>CN=John Row/OU=WEB</SeekerName>
                <WebVisitorName>John Row</WebVisitorName>
                <SeekerState>Connected</SeekerState>
                <QueueName>fastclaim</QueueName>
                <InitialRequest>Need Help</InitialRequest>
                <ArrivalTime>Tue Oct 5 2010 05:18:16 AM</ArrivalTime>
                <ExpertAssigned>CN=Name/OU=USA/O=Dev</ExpertAssigned>
                <WaitingTime>34 s</WaitingTime>
                <ConnectingTime>9 m 31 s</ConnectingTime>
                <WaitingSince>605</WaitingSince>
                <SeekerDisplayName>John Row</SeekerDisplayName>
                </Seeker>
</MonitoringSeekers>

15.   reloadBots(String appUrl)
This reloads the Framework Service and Script load list to start newly added applications and stop the ones that have been removed

Parameters:
appURL: This refers to the URL of the database which contains queue configuration, like
http://DominoServer/itqconnect.nsf

Output:
true
Or
false

16.   updateMonitoringQueues(String appUrl, String queueName)
This reloads the Queue configuration at run time

Parameters:
appURL: This refers to the URL of the database which contains queue configuration, like
http://DominoServer/itqconnect.nsf
queueName: This refers to the Sametime ID of an Queue like: CN=QueueName,  OU=Dev

Output:
true
Or
false

17.   startBot(String appUrl,String ApplicationName)
This starts the specified Queue if it is not running

Parameters:
appURL: This refers to the URL of the database which contains queue configuration, like
http://DominoServer/itqconnect.nsf
ApplicationName: This refers to the Sametime ID of the application like: CN=AppName,  OU=Dev

Output:

true
Or
false

18.   stopBot(String appUrl,String ApplicationName)
This stops the specified Queue if it is running

Parameters:
appURL: This refers to the URL of the database which contains queue configuration, like
http://DominoServer/itqconnect.nsf
ApplicationName: This refers to the Sametime ID of the application like: CN=AppName,  OU=Dev

Output:
true
Or
false


19. setExpertState(String appUrl, String queueName, String expertID, String expertState)

This updates the state of the expert


Parameters:

appURL: This refers to the URL of the database which contains queue configuration, like http://DominoServer/itqconnect.nsf

queueName: This refers to the Sametime ID of an Queue like: CN=QueueName,  OU=Dev

expertID: This refers to the Sametime ID of an expert like: CN=FirstName FullName, OU=Dev

expertState: FREE/NOTAVAILABLE, if state is set to FREE expert will be notified of incoming requests while if state is set to NOTAVAILABLE then expert will not be notified of incoming requests.


Output:
true
Or
false

 

 

20. getExpertStatusAcrossQueues(String appURL, String expertID)

This allows you to get the expert status across queues

Parameters:

appURL: This refers to the URL of the database which contains queue configuration, like http://DominoServer/itqconnect.nsf
expertID: This refers to the Sametime ID of an expert like: CN=FirstName LastName, OU=Dev


Output:

                            <Queues>

                                        <Queue>

            <QueueName>Pharmacy</QueueName>

        <QueueLogin>pharmacy</QueueLogin>

        <ExpertSametimeIMAddress>vgtest user97</ExpertSametimeIMAddress>

        <ExpertPersonIMAddress>VGTest User97</ExpertPersonIMAddress>

        <ExpertState>NOTAVAILABLE</ExpertState>

        <ExpertStatus>Offline</ExpertStatus>

        <ActiveConversation>0</ActiveConversation>

        <TotalConversation>0</TotalConversation>

        <Group>NA</Group><Priority>3</Priority>

        <ExpertQueueState>Disabled</ExpertQueueState>

     </Queue>

        </Queues>

21. getQueueExperts(String appURL, String queueName)

To get list of all experts in the queue running under IQM

Parameters:

appURL: This refers to the URL of the database which contains queue configuration, like http://DominoServer/itqconnect.nsf
queueName: This refers to the Sametime ID of an Queue like: CN=QueueName,  OU=Dev

Output:

<Expert>

            <SametimeIMAddress>mkexpert01</SametimeIMAddress>

   <PersonIMAddress>mkexpert01</PersonIMAddress>

   <Group>MK Test Group01</Group>

   <Priority>3</Priority>

   <Count>0</Count>

   <Enable>Disabled</Enable>

   <EUNID>NA</EUNID>

   <GUNID>NA</GUNID>

   <Status>Offline</Status>

   <ActiveConversations>0</ActiveConversations>

</Expert>

22. getExpertStatistics(String appURL, String queueName, String expertName)

To get list of all experts in the queue running under IQM

Parameters:


appURL: This refers to the URL of the database which contains queue configuration, like http://DominoServer/itqconnect.nsf
queueName: This refers to the Sametime ID of an Queue like: CN=QueueName,  OU=Dev

expertName: This refers to the Sametime ID of an expert like: CN=FirstName FullName, OU=Dev

Output:

<Expert>

    <ExpertName>vgtest user97</ExpertName>

    <TotalNotificationacceptedperday>0</TotalNotificationacceptedperday>

    <TotalNotificationReceivedperday>9</TotalNotificationReceivedperday>

    <ConcurrentReqHandleattime>0</ConcurrentReqHandleattime>

    <ExpertState>NOTAVAILABLE</ExpertState>

    <ExpertStatus>OFFLINE</ExpertStatus>

</Expert>

23. getAllAppURLs()

To get the url of  IQM

Output:

<AppURLs>

<URL>http://st85.instant-tech.com/iqconnect.nsf</URL>

</AppURLs>

24.  setExpertStatusAcrossQueues(String appURL,String expertID,String state)

To set Expert state across all queues

Parameters:


appURL: This refers to the URL of the database which contains queue configuration, like:   
http://DominoServer/itqconnect.nsf
expertID: This refers to the Sametime ID of an expert like: CN=FirstName FullName, OU=Dev

State: This refers to the state.

Output:

True

Or

False

 

Comments