APIs

CPMs: Custom Process Management

Custom Process Models are perhaps some of the most useful features released for developers since custom objects in the Nov '10 release. We now have the ability to run server 'events' on both standard and custom objects. But when you start working with the Process Designer (under Site Configuration in the console) you will notice that the UI and deployment process is extremely clunky. This article describes how to setup a standard CP development cycle to upload code via WebDAV that is directly run in your CPM.

Determining the URL for an interface

Occasionally you need to determine the domain name for an interface in RightNow CX. This guide will show you how to do that even if the interface is using a vanity URL (custom CNAME).

Determining Environment at Runtime

When creating customizations in Customer Portal (CP3), it is important to remember that your code needs to run not only in Production, but should also be engineered to run in a "Clone" environment without modification. This is especially important with integrations to external systems. You wouldn't want non-production data being passed to an external production system.

CXDev Toolbox - ROQL Tester

Tags: 

The ROQL Tester can be used to quickly validate a ROQL query's syntax, test performance of a query, or find important information without needing to log into a site or run a report.

Defect - Forcing Password Reset via SOAP

CX Version: 

When creating or updating an Account through the SOAP API you can specify that the user needs to change their password on their next login.
This is generally used when an administrator resets a password and wants the new value to be only good for a single use. When setting this
flag and a new password through the API though there appears to be a product defect: only the password gets set, the reset flag does not.
Setting either independently works, just not together (as you often would).

Parsing XML in RightNow PHP

RightNow's PHP build is different than most PHP builds you've encountered. It excludes useful extensions that are assumed to be available by most developers including:

  • SOAP extensions
  • Multibyte String extensions
  • XML Parsing extensions (SimpleXML)

Note: Expat is available in most builds, but it is a very "special" XML library that is event based instead of tree/DOM based. I personally would rather feed my fingertips to the wolverines than use it.

Using cURL in Customer Portal (CP3)

It is possible with most Customer Portal sites to make outbound HTTPS/HTTP calls to external services using the PHP cURL library. CURL is installed and available as a PHP extension that can be dynamically loaded in your scripts.

Retrieving Agent Info in a Browser Control

When building any Workspace in the CX Agent Console, Browser Controls are a powerful tool for integrating external systems and features seamlessly into the agent experience. Browser Controls display a configurable web page inside of the Workspace. Additionally, contextual data from the Workspace can be passed through the url to the web page.

Registering Hook Handlers for a Subset of Pages

I've found on recent projects that I want to use the Customer Portal hook system to register hook handlers, but want to restrict the execution to only certain pages (or triggered by other conditions). Turns out this is very easy to do as hook handlers are registered in the config/hooks.php file using very standard PHP code. Because there is no DSL (Domain Specific Language) you can use any other PHP statement you desire in the config/hooks.php file and it will be evaluated and executed whenever a request is made to the Customer Portal.

Setting custom fields via SOAP - The Better Way

After a fairly significant rant about the difficulties that go into setting a custom field or attribute on a base object
(Setting custom fields via SOAP) I figured it's past due to come up with a reusable solution.

I've created two extension methods for the base RNObject class: GetCustomField(string fieldName) and SetCustomField(string fieldName, object value, DataTypeEnum typeEnum).

Usage is dead simple:

Pages

Zircon - This is a contributing Drupal Theme
Design by WeebPal.