Aacc Training Course Code
Aacc Training Course Code
CODE
1
Table of Contents
Chapter 5 - Use Case – Monitor Real Time Statistical Data with RTD API ..................3
Chapter 6 - CCMS Open Queue Web Service ...............................................................8
Chapter 7 - CCMS Open Queue SDK ..........................................................................10
Chapter 8 - CCMS Open Networking Web Service .....................................................13
Chapter 9 - CCMS Transfer to Landing Pad Use Case ................................................15
Chapter 10 - CCMS Host Data Exchange ....................................................................18
Chapter 11 - Communication Control Toolkit Open Interface SDK ............................22
Chapter 12 - Communication Control Toolkit Open Interface Event Handling ..........23
Chapter 13 - Exploring the Communications Control Toolkit Open Interfaces ...........30
Chapter 14 - Communication Control Toolkit .NET SDK ...........................................34
Chapter 15 - CCT Hot Desking ....................................................................................40
Chapter 16 - Use Case – Communications Control Toolkit Reference Clients ...........43
Chapter 20 - CCMM Agent Web Services Use Case ...................................................50
Chapter 21 - CCMM Web Communications SDK .......................................................52
Chapter 22 - CCMM Outbound SDK ..........................................................................56
2
Chapter 5 - Use Case – Monitor Real Time Statistical Data with RTD
API
#include <nirtdtyp.h>
#include <nirtdapi.h>
ULONG rc = NIrtd_eOK;
if (rc != NIrtd_eOK)
{
_tprintf(_T("\nNIrtd_login - failed to login: return code = %d"),
rc);
return;
}
else
{
_tprintf(_T("\nNIrtd_login - success : return code = %d"), rc);
};
3
}
else
{
_tprintf(_T("\nNIrtd_allocateQuery succeeded."));
};
4
// one-time data propagation
rc = NIrtd_singleDataRequest(&tableGrpPtr, &authInfo, &query);
if (rc != NIrtd_eOK)
{
_tprintf(_T("\nNIrtd_singleDataRequest failed : rc = %d"), rc);
rc = NIrtd_freeQuery(&query);
rc = NIrtd_logout(&authInfo);
return;
}
else
{
_tprintf(_T("\nNIrtd_singleDataRequest succeeded."));
}
5
// Allocate a value structure used to store a column value
NIrtd_stValue columnValue;
rc = NIrtd_allocateValue(&columnValue);
// Check return value and deal with errors.
…
// Name is in tempSkillsetName.last_name
}
else
{
_tprintf(_T("\nOther error in getting name cache : %d"), rc);
return;
}
NIrtd_freeName(&tempSkillsetName);
6
// free name cache
rc = NIrtd_removeNameCacheforDataColumn(&authInfo,
NIrtd_SKLST_SKILLSET_ID);
// stop data stream before exit
rc = NIrtd_stopDataStream(&authInfo, requestId);
rc = NIrtd_setRecovery(90000,10000);
7
Chapter 6 - CCMS Open Queue Web Service
8
private IntrinsicArray createIntrinsics(String name, String
phoneNumber, String comments) {
9
Chapter 7 - CCMS Open Queue SDK
10
}
return sso;
}
4Create a Contact
private static Contact issueCreateContactRequest(
OpenQ port,
String externalContactId,
String outOfProviderAddressName,
HashMap<String, String> intrinsicsMap,
SsoToken sso)
throws CreateOQContactFailedFault {
IntrinsicArray intrinsics = new IntrinsicArray();
if ( intrinsicsMap != null ) {
Iterator<String> specifiedIntrinsicKeysIter =
[Link]().iterator();
while ( [Link]() ) {
String intrinsicKeyStr = [Link]();
String intrinsicValueStr = [Link](intrinsicKeyStr);
[Link]().add(intrinsic);
}
}
Holder<Contact> contactHolder = new Holder<Contact>();
[Link] = [Link]().createContact();
return [Link](
externalContactId,
outOfProviderAddressName,
intrinsics,
sso);
}
11
private static boolean issueDropContactRequest(
OpenQ port,
String contactId,
SsoToken sso) throws DropOQContactFailedFault {
return [Link](contactId, sso );
}
12
Chapter 8 - CCMS Open Networking Web Service
13
private ContactGUID createNewContactId() {
ContactGUID contactGUID = new ContactGUID();
[Link]([Link]((int)
([Link]() & 0xffff)));
return contactGUID;
}
14
Chapter 9 - CCMS Transfer to Landing Pad Use Case
package [Link];
//..import statements not shown for brevity…
/**
* This class was generated by the JAX-WS RI.
* JAX-WS RI 2.2.4-b01
* Generated source version: 2.2
*
*/
@WebService(name = "OpenNetworking", targetNamespace =
"[Link]
@SOAPBinding(parameterStyle = [Link])
@XmlSeeAlso({
[Link],
[Link],
org.oasis_open.[Link]._2004._06.wsrf_ws_basefaults_1_2_draft_01.Obje
[Link],
[Link]._2003._03.[Link]
})
15
public class ReserveLandingPadTest {
private static final String
OI_WSDL="[Link]
private static final String
BAD_OI_WSDL="[Link]
wsdl";
@Test
public void testGetProxy() throws Exception {
URL wsdlUrl=new URL(OI_WSDL);
@Test(expected=[Link])
public void testBadGetProxy() throws Exception {
URL wsdlUrl=new URL(BAD_OI_WSDL);
}
}
@Test
public void testReserveLandingPad() throws Exception {
URL wsdlUrl=new URL(OI_WSDL);
ReserveCDNLandingPadRequestType parameters=new
ReserveCDNLandingPadRequestType();
Authentication authentication=new Authentication();
[Link]("OpenWsUser");
[Link]("Password123");
[Link]("open_networking");
[Link](authentication);
[Link]("landingPadAttachedData");
[Link]("1501");
[Link](new IntrinsicArray());
[Link](OpenNetReason.TRANSFER_OPEN_NET_INIT);
16
[Link](parameters);
ReserveLandingPadResponseType
response=[Link](parameters);
[Link](response);
[Link]([Link]());
}
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
[Link]([Link]().getName()
);
[Link]("Cancel parameters...");
[Link](cancelParameters);
CancelLandingPadResponseType
cancelResponse=[Link](cancelParameters);
[Link]("response...");
[Link](cancelResponse);
17
Chapter 10 - CCMS Host Data Exchange
interface NIDXProvider
{
// Some definitions omitted for clarity
NIDXProviderMessaging DX_RegisterProvider(
in NTUINT32 providerId,
in UserId userIdp,
in Version versionp)
raises(OperationFailed );
void DX_DeRegisterProvider(
in NIDXProviderMessaging providerMsgObj)
raises (OperationFailed);
void DX_KeepAliveProvider(
in NTUINT32 providerId)
raises(OperationFailed );
};
interface NIDXProviderMessaging
{
// Some definitions omitted for clarity
void DX_GetMessage(
in DxOperationMode opMode,
out HDXMessage message)
raises (OperationFailed);
void DX_MessageResponse(
in HDXMessage message)
raises (OperationFailed);
};
struct HDXMessage
{
NTUINT32 MsgReferenceId;
NTUINT32 MsgProviderId;
NTUINT32 MsgApplicationId;
NTUINT32 MsgType;
DxCallId HdxCallId;
NTUINT32 Time;
InfoList Info;
NTUINT32 Reserved[10];
};
18
idlj –td src [Link]
idlj –td src [Link]
[Link](ctx.resolve_str("NortelNetworks/SymposiumCall
CenterServer/HDX"));
return providerInterface;
}
@Test
public void testReceiveSyncMessage() throws Exception {
NIDXProvider providerInterface = findProviderInterface();
UserId uid = new
UserId(CORBATools.string2short("nortel",
[Link]),
CORBATools.string2short("nortel",
[Link]));
Version version = new Version(HDX_MajVersion.value,
HDX_KeepAliveMinVersion.value);
NIDXProviderMessaging messaging =
providerInterface.DX_RegisterProvider(2106,
uid, version);
HDXMessageHolder messageHolder = new HDXMessageHolder();
// cont’d …
19
// cont’d…
20
List<String> parameters = [Link]([Link]);
output = output + "\n" + "Parameters: " + parameters;
[Link](level, output);
}
21
Chapter 11 - Communication Control Toolkit Open Interface SDK
22
Chapter 12 - Communication Control Toolkit Open Interface Event
Handling
@WebService(
endpointInterface="[Link]
ionConsumer")
public class MyPrivateListener implements NotificationConsumer {
@Override
public void notify(List<NotificationMessageHolderType>
notificationMessage) {
for(NotificationMessageHolderType note: notificationMessage) {
[Link](5, " ", note);
}
}
}
23
// See code on previous page…
/* Login. */
userService = new SOAOICCTUserService();
userServiceProxy = [Link]([Link]);
req = new LogInToCCTServerRequest();
authLevel = new AuthenticationLevel();
[Link](“yourdomain");
[Link](“yourpassword");
[Link](“yourusername");
[Link](authLevel);
ssoToken =
[Link](req).getSsoToken();
[Link]("ssoToken is " + [Link]());
/* Unsubscribe */
[Link]("Unsubscribing...");
[Link](subscribeResp, ssoToken);
/* Unpublish */
[Link]("stopping endpoint...");
[Link]();
} catch (Exception ex) {
[Link]([Link]()).log([Link], null,
ex);
}
/* Exit */
[Link]("Exiting...");
[Link](0);
<h:body>
<h:form>
<ace:panel header="PizzaParadise and BurritoVille">
<h:messages globalOnly="true"/>
<h:panelGrid columns="3">
<h:panelGroup>
UserId:<h:inputText value="#{[Link]}"
disabled="#{[Link]}"/>
</h:panelGroup>
<h:panelGroup>
Password:<h:inputSecret
24
value="#{[Link]}"
disabled="#{[Link]}"/>
</h:panelGroup>
<h:panelGroup><ace:pushButton
disabled="#{[Link]}"
value="Logon" action="#{[Link]()}"/>
<ace:pushButton disabled="#{!
[Link]}"
value="Logoff" action="#{[Link]()}"/>
</h:panelGroup>
</h:panelGrid>
Primary terminal #{[Link]}<br/>
State: #{[Link]}<br/>
Brand:#{[Link]}<br/>
</ace:panel>
</h:form>
</h:body>
@Inject
CCTLiaison cctLiaison;
public String logon() {
try {
[Link](userID, password);
/* Find our voice address. */
terminalName = findVoiceTerminalName();
loggedOn = true;
} catch (Throwable ex) {
[Link]();
FacesMessage message = new FacesMessage([Link]());
[Link]().addMessage(null, message);
}
return "";
}
25
private PortableRenderer renderer = null;
@PostConstruct
public void init() {
[Link](PUSH_GROUP);
renderer = [Link]();
[Link](this);
}
26
[Link]("Subscription Response:" + subscriptionRef);
}
[Link]
3a7b0e-5fa2-4164-bd5c-6a4630f6b3c
* Subscription id that comes with the events is the part after
the last ':'
*/
return [Link](
[Link](":") +1);
}
27
* current listeners, so notify in a 'try-catch' block.
*/
try {
[Link](dispatchedMessages);
} catch (Throwable t) {
[Link]("Caught exception " + t + " in
notify(...)");
}
}
}
}
@Override
public void notify(List<NotificationMessageHolderType>
notificationMessage) {
for (NotificationListener l : listeners) {
[Link](this, notificationMessage);
}
}
@Override
public void notify(CCTLiaison liaison,
List<NotificationMessageHolderType> notificationMessage) {
for (NotificationMessageHolderType holder :
notificationMessage) {
if ([Link]().getEventType() ==
EventType.TERMINAL_CONNECTION_STATE) {
TerminalConnectionStateEventType ev =
[Link]().getTerminalConnectionStateEvent();
if
([Link]().getTerminalName().equals(terminalName)) {
connectionState = [Link]().toString();
currentContact = [Link]();
if ([Link]() ==
[Link]) {
updateBrand(liaison);
}
if ([Link]() ==
[Link]) {
brand="Unknown";
}
[Link](PUSH_GROUP);
}
}
}
}
28
private void updateBrand(CCTLiaison liaison) {
try {
String calledAddress =
[Link](currentContact);
if ([Link](PIZZA_PARADISE_ADDRESS)) {
brand = "PizzaParadise";
} else if ([Link](BURRITOVILLE_ADDRESS)) {
brand = "BurritoVille";
} else {
brand = "Unknown";
}
} catch (Exception ex) {
[Link]();
}
}
AddressResponse resp =
getContactServiceProxy().getCalledAddress(req);
Address address = [Link]();
String addressName = [Link]();
return addressName;
}
29
Chapter 13 - Exploring the Communications Control Toolkit Open
Interfaces
package [Link];
import [Link];
…
/**
* This class was generated by the JAX-WS RI.
* JAX-WS RI 2.2.4-b01
* Generated source version: 2.2
*
*/
@WebService(name = "UserService", targetNamespace =
"[Link]
…
public interface UserService {
…
/**
*
* @param parameters
* @return
* returns
[Link]
* @throws LogInToCCTServerException
*/
@WebMethod(operationName = "LogInToCCTServer", action =
"[Link]
@WebResult(name = "LogInToCCTServerResponse", targetNamespace =
"[Link] partName =
"result")
@SOAPBinding(parameterStyle = [Link])
public LogInToCCTServerResponse logInToCCTServer(
@WebParam(name = "LogInToCCTServerRequest", targetNamespace =
"[Link] partName =
"parameters")
LogInToCCTServerRequest parameters)
throws LogInToCCTServerException
;
}
30
public class CCTLoginTest {
@Test
public void testGetProxy() throws Exception {
URL wsdlURL=new
URL("[Link]
SOAOICCTUserService serviceLocator=
new SOAOICCTUserService(wsdlURL);
UserService userService=[Link]([Link]);
}
}
@Test
public void testLogin() throws Exception {
URL wsdlURL=new
URL("[Link]
SOAOICCTUserService serviceLocator=
new SOAOICCTUserService(wsdlURL);
UserService userService=[Link]([Link]);
LogInToCCTServerRequest req=new LogInToCCTServerRequest();
AuthenticationLevel authLevel=new AuthenticationLevel();
[Link]("edsremote");
[Link]("1116");
[Link](“pw!");
[Link](authLevel);
LogInToCCTServerResponse resp=[Link](req);
[Link]("ssoToken is:" + [Link]().getToken());
31
@WebMethod(operationName = "GetAddresses", action =
"[Link]
@WebResult(name = "GetAddressesResponse", targetNamespace =
"[Link] partName =
"result")
@SOAPBinding(parameterStyle = [Link])
public AddressList getAddresses(
@WebParam(name = "GetAddressesRequest", targetNamespace =
"[Link] partName =
"parameters")
GetAddressesRequest parameters)
throws GetAddressesException, SessionNotCreatedException
;
@Test
public void listAddresses() throws Exception {
LogInToCCTServerResponse loginResponse=login();
GetAddressesRequest req=new GetAddressesRequest();
[Link]([Link]());
AddressList resp=[Link](req);
[Link]([Link]());
}
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class PropertyPrinter {
public static void printDetails(Object o) {
try {
BeanInfo info = [Link]([Link]());
for (PropertyDescriptor pd: [Link]()) {
Method readMethod=[Link]();
if (readMethod != null) {
Object value=[Link](o, new Object[0]);
[Link](" %s=%s\n", [Link](), value);
}
}
[Link]();
} catch (Exception e) {
[Link]();
}
}
}
@Test
public void listAddresses() throws Exception {
LogInToCCTServerResponse loginResponse=login();
GetAddressesRequest req=new GetAddressesRequest();
32
[Link]([Link]());
AddressList resp=[Link](req);
for (Address addr : [Link]()) {
[Link](addr);
}
}
33
Chapter 14 - Communication Control Toolkit .NET SDK
[TestMethod]
public void TestTerminals()
{
Login();
ITerminal[] terminals = [Link];
[Link]("Printing terminals ("
+ [Link] + " found)");
foreach (ITerminal terminal in terminals)
{
[Link]("Terminal "
+ [Link] + ", type=" + [Link]());
[Link](“..addresses are " +
Format([Link]));
}
[Link]();
Logout();
}
34
private String Format(IAddress[] addresses)
{
StringBuilder sb = new StringBuilder();
[Link]("[");
Boolean first = true;
foreach (IAddress address in addresses)
{
if (first)
{
first = false;
}
else
{
[Link](", ");
}
[Link]([Link]);
}
[Link]("]");
return [Link]();
}
[TestMethod]
public void TestContactEvent()
{
Login();
ContactScopeEventHandler handler =
[Link](new
ContactScopeEventHandler(ContactScopeEnter));
[Link] += handler;
// Delay for 60s to catch some events
[Link](60000);
Logout();
}
private void ContactScopeEnter(ContactScopeEventArgs args)
{
[Link]("Contact {0} has entered scope.",
[Link]);
}
35
.LogonToCCTServer([Link]);
}
private void Logout()
{
[Link]();
}
[TestMethod]
public void TestAddresses()
{
Login();
LiteAddress[] addresses =
[Link]();
[Link]("Printing addresses ("
+ [Link] + " found)");
foreach( LiteAddress address in addresses) {
[Link]("Address "
+ [Link]);
[Link](" terminals: "
+ Format([Link]));
}
[Link]();
Logout();
}
36
Toolkit toolkit = new Toolkit();
ISession session = null;
void logon(Object sender, DoWorkEventArgs args)
{
[Link] =
new CCTCredentials(userID, "edsremote", password);
[Link] = "aaccedsremote";
try
{
session = null;
session = [Link]();
SetupEvents();
[Link] = "";
}
catch (Exception ex)
{
[Link] = [Link];
}
}
37
}
return null;
}
TermConnStateEventHandler handler =
[Link](
new TermConnStateEventHandler(TerminalStateChange),
this);
[Link] += handler;
}
38
private void btnPlaceOrder_Click(object sender, EventArgs e)
{
// Not shown - Interact with fulfillment system to place
the order...
// Drop the contact.
BackgroundWorker worker = new BackgroundWorker();
[Link]+=new DoWorkEventHandler(DropContact);
[Link]();
}
private void DropContact(object sender, EventArgs e)
{
FindVoiceTerminal()
.TerminalConnections[0].[Link]();
}
}
39
Chapter 15 - CCT Hot Desking
SsoToken ssoToken=login();
URL userServiceWsdlURL=new
URL("[Link]
SOAOICCTUserService serviceLocator=
new SOAOICCTUserService(userServiceWsdlURL);
userService = [Link]([Link]);
URL agentTerminalServiceWsdlURL=new
URL("[Link]
?wsdl");
SOAOICCTAgentTerminalService agentTerminalServiceLocator=
new SOAOICCTAgentTerminalService(agentTerminalServiceWsdlURL);
agentTerminalService =
[Link]([Link]);
40
private SsoToken login() throws MalformedURLException,
LogInToCCTServerException {
LogInToCCTServerRequest req=new LogInToCCTServerRequest();
AuthenticationLevel authLevel=new AuthenticationLevel();
[Link]("edsremote");
[Link]("1116");
[Link](“pw”);
[Link](authLevel);
LogInToCCTServerResponse resp=[Link](req);
return [Link]();
}
41
/* Now login to the terminal of interest. */
AgentTerminalLoginRequest req=new
AgentTerminalLoginRequest();
[Link](terminalOfInterest);
[Link](agentId);
[Link](ssoToken);
[Link](agentPassword);
[Link]([Link]);
try {
[Link](req);
} catch(Throwable t) {
[Link]();
throw t;
}
42
Chapter 16 - Use Case – Communications Control Toolkit Reference
Clients
43
</property>
</bean>
<bean id="contactDAO"
class="[Link]">
<property name="proxyInterfaces">
<value>[Link]</value>
</property>
<property name="target">
<ref local="contactDAOBeanTarget" />
</property>
<property name="interceptorNames">
<list>
<value>loggingThrowsAdvisor</value>
<value>traceLoggingInterceptor</value>
</list>
</property>
</bean>
…
<bean id="contactDAOBeanTarget"
class="[Link]">
<property name="serviceQName">
<ref bean="cmfOiServiceQName" />
</property>
<property name="serviceUrl">
<value>/SOAOICCT/services/SessionService?wsdl</value>
</property>
</bean>
44
private void jButton8ActionPerformed([Link] evt) {
getRequestHandler().handle("AnswerContact", getContactParams());
}
<bean id="requestHandler"
class="[Link]">
…
<property name="commands">
<map>
…
<entry value-ref="answerContactCommand">
<key>
<value>AnswerContact</value>
</key>
</entry>
…
<bean id="answerContactCommand"
class="[Link]"
parent="command">
<property name="contactDAO">
<ref bean="contactDAO" />
</property>
</bean>
<bean id="contactDAOBeanTarget"
class="[Link]">
<property name="serviceQName">
<ref bean="cmfOiServiceQName" />
</property>
<property name="serviceUrl">
<value>/SOAOICCT/services/SessionService?wsdl</value>
</property>
</bean>
45
public CallResult answerContact(String contactId, TerminalTO term,
String sso)
throws DAOException {
TerminalContactRequest contactRequest = new
TerminalContactRequest();
Terminal terminal = new Terminal();
SsoToken ssoToken = new SsoToken();
Contact contact = new Contact();
[Link]([Link]([Link]()));
[Link]([Link]());
[Link](contactId);
[Link](sso);
[Link](terminal);
[Link](ssoToken);
[Link](contact);
try {
getPort().answerContact(contactRequest);
} catch (Exception e) {
throw new DAOException(e);
}
CallResult result = new CallResult();
return result;
}
46
private void ConnectToServer()
{
_callsRcvd = 0;
ConnectionStatusForm csf = new ConnectionStatusForm(_sessMgr,
[Link]);
DialogResult result = [Link](this);
[Link]();
ClearStatusMessage();
}
47
private void OnSessionConnectedEvent(SessionConnectedEventArgs e)
{
// Ignore the event if the session manager has been disposed
// or the session has already been torn down.
if (!_disposed)
{
_mySession = [Link];
// Handle the connected event on a background thread so we don't
// hold up the toolkit thread.
[Link](new
WaitCallback(HandleConnectEvent), new EventArgs());
}
}
48
public class AcceptButton : ConnectionButtonWrapper
{
public AcceptButton(Button button, ConnectionSelector selector) :
base(button, selector)
{
}
protected override void Execute(params object[] parms)
{
GiveStatusMessage("Accepting call...");
[Link]();
}
protected override bool EvaluateCCTState()
{
if ([Link] == null)
return false;
else
return [Link];
}
}
49
Chapter 20 - CCMM Agent Web Services Use Case
sessionKey = [Link]([Link],
[Link]);
[Link] = "Logoff";
loggedIn = true;
[Link] = false;
[Link] = false;
[Link] = true;
[Link] = true;
[Link] = true;
[Link]();
foreach (AWClosedReasonCode code in
[Link](sessionKey))
{
[Link](code);
}
if ([Link] > 0)
[Link] = true;
[Link] = "name";
[Link] = "numericvalue";
[Link]([Link]);
ClearText();
[Link]();
sessionKey = "";
contact = null;
contactID = "0";
loggedIn = false;
[Link] = "Login";
50
[Link] = true;
[Link] = true;
ButtonsEnabled(false);
[Link] = false;
[Link]();
51
Chapter 21 - CCMM Web Communications SDK
52
inSession=true;
} catch (Exception e) {
if (! [Link]().contains("8756")) {
throw e;
}
}
[Link](5000);
}
[Link]([Link]());
}
}
}
/* Wait for a while before looping again. */
[Link](5000);
}
try {
sessionKey =
[Link]("[Link]@[Link]",
"password");
} catch (Exception e) {
if ([Link]().contains("Already")) {
[Link]("[Link]@[Link]");
sessionKey =
[Link]("[Link]@[Link]",
"password");
} else {
throw e;
}
}
[Link]("Received session key:" + sessionKey);
53
/* Get anon customer id. */
long customerId =
[Link]("[Link]@[Link]"
, sessionKey).getId();
require_once($HomeDir."functions/Soap
Functions/request_callback_now.php");
request_call_now($session_key, $cust_id, $skillset_id, $CallerName,
"WebSite CallBack", "");
return $Username;
}
$ajax->export("RequestCallBackNow", "page-
>RequestCallBackNow");//export function
54
//require nesessary saop files
require_once($HomeDir.'library/[Link]');
// endpoint address
$wsdl = $HTTP_REQUEST_TYPE.$CCMM_MACHINE_NAME.":".
$HTTP_RESQUEST_PORT."/ccmmwebservices/[Link]";
//create client object
$client = new nusoap_client($wsdl, 'true');
(cont’d)
//set decoding option
$client->soap_defencoding = 'utf-8';
//create soap message
$mysoapmsg = $client->serializeEnvelope(
'<?xml version="1.0" encoding="utf-8"?>
…details ommitted
</soap:Envelope>','',array(),'document', 'literal');
55
Chapter 22 - CCMM Outbound SDK
[Link]
private void Login_Button_Click(object sender, EventArgs e)
{
//get user typed info
username = Username_Field.Text;
password = Password_Field.Text;
Error_Message_Label.Text = "";
//create link to our webservice
[Link] UtilInvoke = new
[Link]();
//invoke our webservice
try
{
sessionkey = [Link](username, password);
}
catch(SoapException ex)
{
Error_Message_Label.Text = [Link];
Error_Message_Label.Refresh();
if([Link]("19021"))
{
//user is already logged in
PromtLogout();
}
}
if([Link]("__"))
{
//then this is a valid session key
[Link]().IsAccessGranted = true;
[Link]().MySessionKey = sessionkey;
[Link]().MyUserName = username;
[Link]();
Main MainPage = new Main();
[Link]();
[Link]();
}
}
56
private void Refresh_Campaign_Button_Click(object sender, EventArgs e)
{
LoadCamapaigns();
}
private void LoadCamapaigns()
{
//create a link to the web service
[Link] campInvoke = new
[Link]();
Campaign_Listbox.[Link]([Link][i].Name);
}
}
}
}
57
}
catch(SoapException ex)
{
//error message here
}
}
58