Jump to: navigation, search

REST API

The REST (also known as HTTP POST) API offers simple secure access to a limited number of features of the Engage and Insight platforms. This API supports a limited number of entry points including subscribe, unsubscribe, sendToContact, sendToGroup, createContactBatch, and createContactBatchAsync.

Services

EndPoint

All services are provided at the following URL:

https://serviceX.soundbite.com/site/c/accountID/campaignName/operation

where:

  • serviceX is the assigned System ID
  • accountID is the assigned account and is almost always "4" unless instructed otherwise
  • campaignName is the client-defined campaign
  • operation is one of: subscribe, unsubscribe, sendToContact, sendToGroup

The client’s interaction with services is stateless.

Invocation

Invocation occurs through a JSON-encoded string in the body of the HTTP POST request.

Devices

Phone numbers supplied in E.123 format are processed verbatim. Numbers in other formats are interpreted relative to the Country Code of the account.

For example, +44 20 7267 3113 is in E.123 format and is thus correctly interpreted as a UK phone number even when the Country Code of the account is US.

However, the number 20 7267 3113 is interpreted as +44 20 7267 3113 if the country code of the account is GB, but as +1 207 267 3113 if the country code of the account is US.

Authentication

Engage and Insight currently support two forms of authentication:

Security

You can optionally restrict access to your endpoint to a whitelisted set of IP addresses.

Errors

If the SoundBite service is unavailable an HTTP error 503 will be returned.

Generic Errors are:

  • ClientDisabled – Account is currently disabled
  • InvalidDevice – Either the Phone Number or Email Address is malformed
  • IPNotWhiteListed – IP is not white-listed (only if required)
  • NotAPOST – HTTP Interaction must be a POST
  • ServicesNotProvisioned – Request requires services that are not provisioned

Entry Points

The following entry points utilize HTTP POST with JSON payload.

Subscribe

URL

https://serviceX.soundbite.com/site/c/4/subscription/subscribe

Input

Org + Contact + Subscription

Sample input (JSON)

{
    "owner": {
        "internalId": "3000000010"
    },
    "contact": {
        "externalId": "mmonroe@example.com",
        "devices": [
            {
                "externalId": "6172816327",
                "attributes": [
                    {
                        "name": "countryCode",
                        "value": "US"
                    }
                ]
            }
        ],
        "attributes": [
            {
                "name": "firstName",
                "value": "Marilyn"
            },
            {
                "name": "lastName",
                "value": "Monroe"
            },
            {
                "name": "company",
                "value": "Example Company"
            }
        ]
    },
    "subscription": {
        "channel": "Text",
        "subscriptionState": "Pending",
        "event": {
            "externalId": "LoyaltyOne"
        }
    }
}

Sample responses (JSON)

Sample success:

{
    "data": [
        {
            "internalId": 12345,
            "channel": "Text",
            "subscriptionState": "Pending",
            "event": {
                "externalId": "LoyaltyOne"
            }
        }
    ]
}


Sample failure:

{
    "errors": [
        {
            "message": "not authorized"
        }
    ]
}

Errors Returned

UserAlreadySubscribed: user is already subscribed

Notes

  • If no SubscriptionState is specified, the SubScriptionState defaults to Pending (in other words, a Double Opt-in).
  • Only one device per subscribe invocation is allowed.
  • Only externalId (clientID) is supported on the Contact (not internalId). If the request JSON contains no externalId, the first device’s external id will be normalized and assigned to the Contact object.
  • Apart from the Subscription state, Insight is not updated.
  • It is possible to Subscribe or UnSubscribe even if the contact or device is not already in Insight.

Unsubscribe

URL

https://serviceX.soundbite.com/site/c/4/subscription/unsubscribe

Input

Org + Contact + Subscription

Sample input (JSON)

{
    "owner": {
        "internalId": "3000000010"
    },
    "contact": {
        "externalId": "mmonroe@example.com",
        "devices": [
            {
                "externalId": "6172816327"
            }
        ]
    },
    "subscription": {
        "channel": "Text",
        "event": {
            "externalId": "LoyaltyOne"
        }
    }
}

Sample response (JSON)

Sample success:

{
    "data": [
        {
            "internalId": 12345,
            "channel": "Text",
            "subscriptionState": " Opted-Out",
            "event": {
                "externalId": "LoyaltyOne"
            }
        }
    ]
}

Sample failure:

{
    "errors": [
        {
            "message": "not authorized"
        }
    ]
}

Errors Returned

UserNotSubscribed – contact (and associated device) is not currently subscribed

SendToContact

URL

https://serviceX.soundbite.com/site/d/SendToContact/v2/

Input

ContactBatch + Contact

Sample input (JSON)

{
    "contactBatch": {
        "owner": {
            "internalId": "3000000010"
        },
        "campaign": {
            "externalId": "test"
        },
        "context": {
            "message": "Good morning ${contact.firstName} your current points are ${contact.other1}"
        }
    },
    "contact": {
        "externalId": "mmonroe@example.com",
        "devices": [
            {
                "externalId": "6172816328"
            }
        ],
        "attributes": [
            {
                "name": "firstName",
                "value": "Marilyn"
            },
            {
                "name": "lastName",
                "value": "Monroe"
            },
            {
                "name": "company",
                "value": "ExampleCompany"
            },
            {
                "name": "other1",
                "value": "other1"
            }
        ]
    }
}

Sample response (JSON)

Sample success:

{
    "data": [
        {
            ...
            ...
            "internalId": "3001318578"
        }
    ],
    "r4100": ""
}

Sample failure:

{
    "data": [
        {
            "message": "not authorized"
        }
    ]
}

Errors Returned

UserNotSubscribed – user is not currently subscribed UserSuppressed – user is currently suppressed from all outreach

Notes

All Suppression Lists are honored and outreach time is restricted based on Account settings. Dated form-based posts expect the date format to be an xsd:dateTime. For JSON, you can use any valid JavaScript date.

SendToGroup

URL

https://serviceX.soundbite.com/site/c/4/SendToGroup

Input

  • specification: Selection criteria for target list
  • context: Context for this invocation
  • sourceList (List): Insight universe of contacts
  • campaign (Campaign): Campaign that forms the template for the outreach
  • script (Script): Script to associate with outreach [Optional]
  • strategyName (String): Specific strategy with Campaign [Optional]

Sample input (JSON)

{
    "specification": {
        "event": "Promo",
        "optStatus": "Opted-In",
        "channelType": "Text",
        "attribute1": "",
        "attribute2": "",
        "attribute3": "",
        "attribute4": "",
        "attribute5": "",
        "attribute6": ""
    },
    "context": {
        "message": "Good morning ${contact.firstName} your current points are ${contact.other1}"
    },
    "sourceList": {
        "type": "Standard",
        "baseEntity": {
            "internalId": "3000142704"
        }
    },
    "campaign": {
        "externalId": "Default",
        "owner": {
            "internalId": "3000153557",
            "type": "Account"
        }
    },
    "script": {
        "externalId": "alert",
        "owner": {
            "internalId": "3000153557",
            "type": "Account"
        }
    },
    "strategyName": "Default Single Pass"
}

Sample response (JSON)

Sample success:

{
    "data": [
        {
            "externalId": "Default-sendtogroup-1363720036914",
            "campaign": {
                "externalId": "Default",
                "owner": {
                    "type": "Account",
                    "r4100": "",
                    "internalId": "3000153557",
                    "entityType": "Org"
                },
                "r4100": "",
                "entityType": "Campaign"
            },
            "strategyName": "Default Single Pass",
            "attributes": [],
            "r4100": "",
            "internalId": "13D840C647205C7E10A280A7000000000000",
            "entityType": "SubCampaign"
        }
    ],
    "r4100": ""
}

Sample failure:

{
    "errors": [
        {
            "message": "not authorized"
        }
    ]
}

createContactBatch

URL

https://serviceX.soundbite.com/site/a/4/CampaignManagementService/createContactBatch

Input

ContactBatch + Contacts + Strategy (optional) + script (optional)

Sample input (JSON)

In the following sample JSON, outreachStrategy and script are optional. If they are not specified, the values specified in the campaign are used. If the campaign does not specify an on-demand strategy, the default for the account is used.

[
    {
        "owner": {
            "internalId": "3000000010"
        },
        "campaign": {
            "externalId": "test"
        },
        "outreachStrategy": {
            "externalId": "onDemandText"
        },
        "script": {
            "externalId": "case1_3channel"
        },
        "context": "Good morning ${contact.firstName} your current points are ${contact.other1}"
    },
    [{
        "externalId": "mmonroe@example.com",
        "devices": [
            {
                "externalId": "6172816328"
            }
        ],
        "attributes": [
            {
                "name": "firstName",
                "value": "Marilyn"
            },
            {
                "name": "lastName",
                "value": "Monroe"
            },
            {
                "name": "company",
                "value": "ExampleCompany"
            },
            {
                "name": "other1",
                "value": "other1"
            }
        ]
    }]
]

Sample JavaScript

The following JavaScript can be used in an Engage text script to retrieve the message from the JavaScript:

function begin() {    
	var context = getMessageContext(); 
	sendTextMessage(getProgramName(), resolveTemplate(context));
}

Sample response (JSON)

Sample success:

{
    "data": [
        {
            ...
            ...
            "internalId": "3001318578"
        }
    ],
    "r4100": ""
}

Sample failure:

{
    "errors": [
        {
           "message": "not authorized",
            "r4100": ""
        }
    ],
    "r4100": ""
}

Errors Returned

  • ARG_INVALID_TYPE – Argument is of invalid type ‘%s’
  • ARG_NULL – Invalid Data, argument ‘%s’ must be non-null
  • ARG_TOO_LARGE – Invalid Data, argument ‘%s’ exceeds allowed size
  • OBJECT_EXISTS – Object ‘%s’ already exists
  • OBJECT_NOT_EXISTS – Referenced object ‘%s’ does not exist

Notes

All Suppression Lists will be honored and outreach time is clamped based on Account settings. Dated form-based posts expect the date format to be an xsd:dateTime. For JSON any valid JavaScript date can be used.
The batch will be released immediately or at ‘startTime’ defined in the batch data. If requested ‘startTime’ doesn’t match to any call pass, the nearest subsequent call pass start interval might be used as new batch start time, if only meats the following criteria:

  • subsequent call pass in strategy has settings appropriate for running the batch and time frame criteria which allow to make a call.
  • new start time refers to the future but not beyond the defined call pass duration and there’s no earlier call pass defined in the strategy.

createContactBatchAsync

URL

https://serviceX.soundbite.com/site/a/4/CampaignManagementService/createContactBatchAsync

Input

ContactBatch + Contacts + Strategy (optional) + script (optional)

Sample input (JSON)

In the following sample JSON, outreachStrategy and script are optional. If they are not specified, the values specified in the campaign are used. If the campaign does not specify an on-demand strategy, the default for the account is used.

[
    {
        "owner": {
            "internalId": "3000000010"
        },
        "campaign": {
            "externalId": "test"
        },
        "outreachStrategy": {
            "externalId": "onDemandText"
        },
        "script": {
            "externalId": "case1_3channel"
        },
        "context": "Good morning ${contact.firstName} your current points are ${contact.other1}"
    },
    [{
        "externalId": "mmonroe@example.com",
        "devices": [
            {
                "externalId": "6172816328"
            }
        ],
        "attributes": [
            {
                "name": "firstName",
                "value": "Marilyn"
            },
            {
                "name": "lastName",
                "value": "Monroe"
            },
            {
                "name": "company",
                "value": "ExampleCompany"
            },
            {
                "name": "other1",
                "value": "other1"
            }
        ]
    }]
]

Sample JavaScript

The following JavaScript can be used in an Engage text script to retrieve the message from the JavaScript:

function begin() {    
	var context = getMessageContext(); 
	sendTextMessage(getProgramName(), resolveTemplate(context));
}

Sample response (JSON)

Sample success:

{
    "data": [
        {
            ...
            ...
            "internalId": "3001318578"
        }
    ],
    "r4100": ""
}

Sample failure:

{
    "errors": [
        {
           "message": "not authorized",
            "r4100": ""
        }
    ],
    "r4100": ""
}

Errors Returned

  • ARG_INVALID_TYPE – Argument is of invalid type ‘%s’
  • ARG_NULL – Invalid Data, argument ‘%s’ must be non-null
  • ARG_TOO_LARGE – Invalid Data, argument ‘%s’ exceeds allowed size
  • INTERNAL_ERROR - Internal error while processing the request
  • OBJECT_EXISTS – Object ‘%s’ already exists
  • OBJECT_NOT_EXISTS – Referenced object ‘%s’ does not exist

Notes

All Suppression Lists will be honored and outreach time is clamped based on Account settings. Dated form-based posts expect the date format to be an xsd:dateTime. For JSON any valid JavaScript date can be used.
The batch will be released immediately or at ‘startTime’ defined in the batch data. If requested ‘startTime’ doesn’t match to any call pass, the nearest subsequent call pass start interval might be used as new batch start time, if only meats the following criteria:

  • subsequent call pass in strategy has settings appropriate for running the batch and time frame criteria which allow to make a call.
  • new start time refers to the future but not beyond the defined call pass duration and there’s no earlier call pass defined in the strategy.

showDevice

URL

https://serviceX.soundbite.com/site/a/4/ContactManagementService/showDevice

Input

externalId: Normalized phone number (E.123 format), email, etc carrier: With value ‘lookup’ [Optional]

Sample input (URL)

https://serviceX.soundbite.com/site/a/4/ContactManagementService/showDevice?externalId=+16178759182&carrier=lookup

Sample response (JSON)

Sample success:

{
    "data": [
        {
            "externalId": "+16178759182",
            "attributes": [
                {
                    "name": "countryCode",
                    "value": "US"
                },
                {
                    "name": "carrier",
                    "value": "100335"
                }
            ]
        }
    ],
    "r4100": ""
}

Sample failure:

{
    "errors": [
        {
            "message": "not authorized"
        }
    ]
}

authenticate

URL

https://serviceX.soundbite.com/site/d/security/authenticate

Input

Basic Authentication headers containing: user id:password

Sample input (URL)

https://serviceX.soundbite.com/site/d/security/authenticate

Authorization:Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Sample response (JSON)

Sample success:

{
    "data": [
        {
            "externalId": "mkolesnik@soundbite.com",
            "firstName": "Maciek",
            "lastName": "Kolesnik",
            "timeZone": "America/New_York",
            "roles": [
                "Superuser"
            ],
            "attributes": [
                {
                    "name": "passwordExpirationDate",
                    "value": "07/04/2013 00:37:16"
                },
                {
                    "name": "passwordChangeRequired",
                    "value": "false"
                }
            ],
            "loginEnabled": true,
            "r4100": "",
            "internalId": "3027523767",
            "updatedDate": "May 3, 2013 3:16:30 PM",
            "createdBy": {
                "r4100": ""
            },
            "modifiedBy": {
                "externalId": "mkolesnik@soundbite.com",
                "r4100": ""
            }
        }
    ]
}

Sample failure:

Content-Type:text/plain

unauthorized

showJobResultAsString

URL

https://serviceX.soundbite.com/site/c/4/PlatformManagementService/showJobResultAsString

Input

Job

Sample input (JSON)

{
    "internalId":"3001370",
    "type":"Report"
 
}

Sample responses (JSON)

Sample success:

{
    "data": [{
    		"stringResult": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><SubCampaignReport webhost=\"guptat500-2.us.int.genesyslab.com\" webport=\"7001\"><Account accountIDNoClass=\"3000000010\" campaignGUID=\"1550B15CEF60005130A0CEB2A00000000000@COM.soundbite.biz.campaign.Campaign\" charset=\"UTF-8\" companyName=\"pease\" contactCategoryArchiveHours=\"720\" countryCode=\"1\" delayRetryContactEnable=\"true\" emailNotificationList=\"test@gmail.com\" isDisabled=\"false\" isMasterAccount=\"false\" isOCSManaged=\"false\" isTrainingPlan=\"false\" locale=\"en_US\" ondemandPassVisible=\"false\" partnerID=\"3000036802@COM.soundbite.biz.partner.Partner\" pid=\"3000000010@COM.soundbite.biz.account.Account\" productVersion=\"13050000\" scriptExpireAfterHours=\"4320\" summaryEmailList=\"test@gmail.com\" terminationStartTime=\"0\" terminationStopTime=\"0\" timezone=\"America/New_York\" tzName=\"America/New_York (GMT-4)\" webSessionTimeout=\"1800\"><Plan agentPortalEnabled=\"true\" createDt=\"1464769765000\" defaultPriority=\"5\" disabled=\"false\" enhancedSkillGroupEnabled=\"true\" featureLevel=\"400\" isPersistent=\"true\" name=\"Corporate\" partnerUID=\"3000036802@COM.soundbite.biz.partner.Partner\" productVersion=\"13050000\" readOnly=\"false\" skillGroupType=\"Agent Portal\" terminationStartTime=\"0\" terminationStopTime=\"86399000\" timestamp=\"1464769848000\" uid=\"3000000000@COM.soundbite.biz.plan.Plan\"/></Account><Partner BAD_LOGIN_MAX=\"6\" BAD_LOGIN_MIN=\"1\" applicationName=\"please\" badLogins=\"6\" createDt=\"1464769792000\" disabled=\"false\" domain=\"soundbite.com\" emailRestrictList=\"\" enterpriseAccountIDNoClass=\"3000000000\" ftpRestrictList=\"\" isPersistent=\"true\" masterAccountLocale=\"en_US\" masterAcctUID=\"3000000000@COM.soundbite.biz.account.Account\" masterUserUID=\"\" maxPassword=\"10\" minPassword=\"7\" name=\"please\" pgpOnly=\"false\" productVersion=\"13050000\" pvtLabelSupp=\"false\" secure=\"false\" stackId=\"1\" superPartnerName=\"please\" superPartnerUID=\"3000036300\" timestamp=\"1464769792000\" uid=\"3000036802@COM.soundbite.biz.partner.Partner\" urlTimeout=\"3\"><PartnerParams><Parameter name=\"showPoweredByLogo\" value=\"false\"/><Parameter name=\"homeURL\" value=\"http://www.soundbite.com\"/><Parameter name=\"stylesheetURL\" value=\"/apps/soundbite.com/style_sheet.css\"/><Parameter name=\"allowRegistration\" value=\"false\"/><Parameter name=\"SupportEmail\" value=\"test@soundbite.com\"/><Parameter name=\"ReportEmail\" value=\"test@soundbite.com\"/><Parameter name=\"SalesEmail\" value=\"test@soundbite.com\"/><Parameter name=\"SupportNumber\" value=\"1-877-768-6324\"/><Parameter name=\"costData\" value=\"0\"/></PartnerParams></Partner><Partner BAD_LOGIN_MAX=\"6\" BAD_LOGIN_MIN=\"1\" applicationName=\"please\" badLogins=\"6\" createDt=\"1464769792000\" disabled=\"false\" domain=\"soundbite.com\" emailRestrictList=\"\" enterpriseAccountIDNoClass=\"3000000000\" ftpRestrictList=\"\" isPersistent=\"true\" masterAccountLocale=\"en_US\" masterAcctUID=\"3000000000@COM.soundbite.biz.account.Account\" masterUserUID=\"\" maxPassword=\"10\" minPassword=\"7\" name=\"please\" pgpOnly=\"false\" productVersion=\"13050000\" pvtLabelSupp=\"false\" secure=\"false\" stackId=\"1\" superPartnerName=\"please\" superPartnerUID=\"3000036300\" timestamp=\"1464769792000\" uid=\"3000036802@COM.soundbite.biz.partner.Partner\" urlTimeout=\"3\"><PartnerParams><Parameter name=\"showPoweredByLogo\" value=\"false\"/><Parameter name=\"homeURL\" value=\"http://www.soundbite.com\"/><Parameter name=\"stylesheetURL\" value=\"/apps/soundbite.com/style_sheet.css\"/><Parameter name=\"allowRegistration\" value=\"false\"/><Parameter name=\"SupportEmail\" value=\"test@soundbite.com\"/><Parameter name=\"ReportEmail\" value=\"test@soundbite.com\"/><Parameter name=\"SalesEmail\" value=\"test@soundbite.com\"/><Parameter name=\"SupportNumber\" value=\"1-877-768-6324\"/><Parameter name=\"costData\" value=\"0\"/></PartnerParams></Partner><SubCampaign accountID=\"3000000010@COM.soundbite.biz.account.Account\" acctCallOrderId=\"0\" activeMsgCount=\"0\" archiveDt=\"\" areCallPassesLimited=\"false\" autoManage=\"false\" autoManageFactor=\"0\" autoManageRefreshMargin=\"0\" callPassEndTimeLimit=\"0\" callPassStartTimeLimit=\"0\" callPassTimeLimitTimeZone=\"\" createDt=\"1464793402000\" createProductVersion=\"13050000\" dcNumber=\"\" deleted=\"true\" diagnosticRecordingPercentage=\"0\" dispType=\"\" dynamicScriptGUID=\"1550B18ACFF00056E0A0CEB2A00000000000@COM.soundbite.biz.dynamicscript.DynamicScript\" escalationStrategyVal=\"0\" firstCallPassID=\"0\" guid=\"1550C7D489B0005230A0CEB2F00000000000@COM.soundbite.biz.workflow.SubCampaign\" isPersistent=\"true\" lastCallPassID=\"1\" name=\"alertt\" omitExcluded=\"false\" passSequence=\"Parallel\" priority=\"0\" ruleSetGroupID=\"0\" ruleSetGroupName=\"\" runReportsAfterEachCallPass=\"false\" skillGroupID=\"0\" startPaused=\"false\" state=\"Done\" subCampaignTemplateGUID=\"1550B15CEFD0005150A0CEB2A00000000000@COM.soundbite.biz.workflow.SubCampaignTemplatePB\" summaryEmailAddressList=\"test@gmail.com\" summaryNeeded=\"true\" taskId=\"DYNAMIC_SCRIPT\" tlmDt=\"1464793611000\" uiState=\"Done\"><Campaign accountID=\"3000000010\" campaignID=\"1550B15CEF60005130A0CEB2A00000000000@COM.soundbite.biz.campaign.Campaign\" copyToNewAccount=\"true\" dateLastModified=\"1464770355000\" defaultOnDemandSubCampaignTemplateId=\"\" defaultSkillGroupId=\"0\" description=\"\" group=\"\" isActive=\"true\" isPersistent=\"true\" name=\"Default\" ruleSetGroupID=\"0\"><DateRange isIndefinite=\"true\"><DB><Interval endTime=\"1780297200000\" endTimeTest=\"06/01/2026 07:00:00 GMT\" startTime=\"1464678000000\" startTimeTest=\"05/31/2016 07:00:00 GMT\" timezone=\"America/New_York\"/></DB><UI><Interval endTime=\"1780275600000\" endTimeTest=\"06/01/2026 01:00:00 GMT\" startTime=\"1464739200000\" startTimeTest=\"06/01/2016 00:00:00 GMT\" timezone=\"America/New_York\"/></UI></DateRange></Campaign><DynamicScript accountUID=\"3000000010@COM.soundbite.biz.account.Account\" alertAMLength=\"43\" alertLength=\"43\" callCenterRequired=\"false\" creationDate=\"1464770042359\" description=\"\" expiration=\"1480322042359\" expireAfterHours=\"4320\" guid=\"1550B18ACFF00056E0A0CEB2A00000000000@COM.soundbite.biz.dynamicscript.DynamicScript\" isActive=\"true\" isEmailCapable=\"false\" isInboundCapable=\"false\" isInteractive=\"false\" isNewTemplateInstance=\"false\" isOutboundCapable=\"true\" isReplaceInstance=\"false\" isTemplate=\"false\" isTextMessageCapable=\"false\" isWebCapable=\"false\" lastUse=\"\" name=\"alert\" partnerID=\"3000036802\" persistent=\"true\" productVersion=\"13050000\" sourcePersistentID=\"\" textMessageContactFields=\"\" textMessageSelector=\"\" tlm=\"1464770042000\" user=\"sysops\" version=\"1\"><CustomScript><ResponseGroups/></CustomScript></DynamicScript><ResponseGroupCounts/><CallPasses><CallPass abandonRateDefinition=\"2000\" abandonRatePacing=\"false\" abandonRateTarget=\"50\" absoluteEndDate=\"\" absoluteStartDate=\"\" acceptContactDeviceList=\"0,1,2,3,4,5,6,7,8,9\" acceptType=\"ACCEPT_FIRST_PASS\" agentBridgeCriteria=\"0\" ansMachineHangup=\"true\" callHistorySuppressDays=\"0\" callHistorySuppressType=\"NONE\" callPassChannelType=\"Voice\" callPassType=\"0\" contactEscalating=\"false\" currentTargetOperators=\"0\" delayRetryMinutes=\"0\" deliveryTimeZone=\"local\" displayName=\"Pass 1\" distributionDuration=\"-1\" distributionDurationAverage=\"-1\" fastBridge=\"-1\" filterPersistence=\"false\" followTheSun=\"true\" goal=\"0\" goalAchieved=\"0\" goalType=\"NONE\" humanInitiatedDial=\"false\" isPersistent=\"true\" linesPerAgent=\"0\" maxCPM=\"120000\" maxDaysToWait=\"14\" maxDelayRetryMins=\"60\" pacingModel=\"2\" pacingPriority=\"-1\" passID=\"1\" permittedEndDate=\"1464839940000\" permittedStartDate=\"1464793402000\" requestedCPM=\"12000\" scriptEntryPoint=\"null\" status=\"FINALIZED\" timezoneSource=\"0\" uid=\"3000000200@COM.soundbite.biz.workflow.CallPass\"><DeviceMask><Mask id=\"0\" isSet=\"true\" name=\"DM_NONE\"/><Mask id=\"1\" isSet=\"false\" name=\"DM_EXCLUSIVE_ONLY\"/><Mask id=\"2\" isSet=\"false\" name=\"DM_UNIQUE_ONLY\"/><Mask id=\"4\" isSet=\"false\" name=\"DM_BLOCKED\"/><Mask id=\"8\" isSet=\"false\" name=\"DM_NULL_TZ\"/><Mask id=\"16\" isSet=\"false\" name=\"DM_INTERNATIONAL\"/><Mask id=\"32\" isSet=\"false\" name=\"DM_DNC\"/><Mask id=\"64\" isSet=\"false\" name=\"DM_EXTENSION\"/><Mask id=\"128\" isSet=\"false\" name=\"DM_ENDS_00\"/><Mask id=\"256\" isSet=\"false\" name=\"DM_ENDS_000\"/><Mask id=\"512\" isSet=\"false\" name=\"DM_MOBILE\"/><Mask id=\"1024\" isSet=\"false\" name=\"DM_NOT_SUPPORTED\"/><Mask id=\"2048\" isSet=\"false\" name=\"DM_INVALID_AREA_CODE\"/><Mask id=\"4096\" isSet=\"false\" name=\"DM_INVALID_EXCHANGE\"/><Mask id=\"8192\" isSet=\"false\" name=\"DM_NO_DEVICE\"/><Mask id=\"16384\" isSet=\"false\" name=\"DM_INVALID_DEVICE\"/><Mask id=\"32768\" isSet=\"false\" name=\"DM_LANDLINE\"/><Mask id=\"65536\" isSet=\"false\" name=\"DM_EMAIL\"/><Mask id=\"131072\" isSet=\"false\" name=\"DM_EMAIL_TEXT_MSG\"/><Mask id=\"262144\" isSet=\"false\" name=\"DM_DUPLICATE_ON_CONTACT\"/><Mask id=\"524288\" isSet=\"false\" name=\"DM_DUPLICATE_ON_LIST\"/><Mask id=\"1048576\" isSet=\"false\" name=\"DM_NON_GEOGRAPHIC\"/></DeviceMask><Interval endTime=\"1464825540000\" endTimeTest=\"06/01/2016 23:59:00 GMT\" startTime=\"1464739200000\" startTimeTest=\"06/01/2016 00:00:00 GMT\" timezone=\"GMT\"/><RelativeTime callDays=\"SUNDAY MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAY \" dayOffset=\"0\" endTime=\"23:59\" formattedEndTime=\"11:59 PM\" formattedStartTime=\"12:00 AM\" startTime=\"00:00\" timeZone=\"GMT\"/><ResultCounts><TimeZone endTime=\"1464839999000\" full_name=\"Eastern Standard Time\" java_name=\"America/New_York\" name=\"EST\" offset=\"-4\" raw_gmt_offset=\"-5\" startTime=\"1464753600000\" uid=\"64\"><CompletionStatusGroup BillDuration=\"0\" category=\"FAIL\" count=\"4\" duration=\"0\" id=\"2\" name=\"No_Answer\" passID=\"1\" type=\"2\"/><CompletionStatusGroup BillDuration=\"24000\" category=\"FAIL\" count=\"4\" duration=\"18913\" id=\"4\" name=\"Hangup_Machine\" passID=\"1\" type=\"2\"/><CompletionStatusGroup BillDuration=\"66000\" category=\"SUCCESS\" count=\"2\" duration=\"58560\" id=\"5\" name=\"Non_Machine_Success\" passID=\"1\" type=\"2\"/><CompletionStatusGroup BillDuration=\"90000\" category=\"NONE\" count=\"10\" duration=\"77473\" id=\"18\" name=\"Total_Attempts\" passID=\"1\" type=\"2\"/></TimeZone></ResultCounts></CallPass></CallPasses><ResultCounts><TimeZone endTime=\"1464839999000\" full_name=\"Eastern Standard Time\" java_name=\"America/New_York\" name=\"EST\" offset=\"-4\" raw_gmt_offset=\"-5\" startTime=\"1464753600000\" uid=\"64\"><CompletionStatusGroup category=\"FAIL\" count=\"4\" duration=\"0\" id=\"2\" name=\"No_Answer\"/><CompletionStatusGroup category=\"FAIL\" count=\"4\" duration=\"0\" id=\"4\" name=\"Hangup_Machine\"/><CompletionStatusGroup category=\"SUCCESS\" count=\"2\" duration=\"0\" id=\"5\" name=\"Non_Machine_Success\"/><CompletionStatusGroup category=\"NONE\" count=\"10\" duration=\"0\" id=\"18\" name=\"Total_Attempts\"/><CompletionStatusGroup category=\"NONE\" count=\"10\" duration=\"0\" id=\"19\" name=\"Total_Devices\"/></TimeZone></ResultCounts><DateRange isIndefinite=\"false\"><DB><Interval endTime=\"1464850800000\" endTimeTest=\"06/02/2016 07:00:00 GMT\" startTime=\"1464764400000\" startTimeTest=\"06/01/2016 07:00:00 GMT\" timezone=\"America/New_York\"/></DB><UI><Interval endTime=\"1464795303000\" endTimeTest=\"06/01/2016 15:35:03 GMT\" startTime=\"1464793502000\" startTimeTest=\"06/01/2016 15:05:02 GMT\" timezone=\"America/New_York\"/></UI></DateRange></SubCampaign></SubCampaignReport>"
	}]
}


Sample failure:

{
    "errors"
    	":[{"
    	code ":"
    	ARG_INVALID_TYPE ","
    	message ":"
    	Argument is of invalid type Job Type[List].
    	","
    	argumentIndex ":0,"
    	attributeName ":"
    	job.type "}
]
}

Errors Returned

Invalid Job type.

Notes

  • Supported/implemented job type is 'Report'.
  • Only job internal Id is supported.
  • Returns job result as string

showAgentStateUsingDevice

URL

https://serviceX.soundbite.com/site/c/4/ContactCenterManagementService/showAgentStateUsingDevice

Input

Job

Sample input (JSON)

{
    {       
            "externalId": "+1 781 897 6789"
        },
    	{
    		"internalId": "3000000010",
    		"type": "Account"
    	}
 
}

Sample responses (JSON)

Sample success:

{
    "data": [{
    		"currentContactState": {
    			"contact": {
    				"externalId": "mmonroe@example.com",
    				"devices": [{
    					"externalId": "+1 617 281 6327",
    					"attributes": [{
    						"name": "phoneNotSupported",
    						"value": "false"
    					}, {
    						"name": "wireline",
    						"value": "false"
    					}, {
    						"name": "valid",
    						"value": "true"
    					}, {
    						"name": "phoneTollFree",
    						"value": "false"
    					}, {
    						"name": "duplicateList",
    						"value": "false"
    					}, {
    						"name": "phone00",
    						"value": "false"
    					}, {
    						"name": "phoneBlocked",
    						"value": "false"
    					}, {
    						"name": "countryCode",
    						"value": "1"
    					}, {
    						"name": "wireless",
    						"value": "true"
    					}, {
    						"name": "phone000",
    						"value": "false"
    					}, {
    						"name": "stateCode",
    						"value": "MA"
    					}, {
    						"name": "phoneExtension",
    						"value": "false"
    					}, {
    						"name": "duplicateContact",
    						"value": "false"
    					}, {
    						"name": "email",
    						"value": "false"
    					}, {
    						"name": "duplicatePosition",
    						"value": "false"
    					}, {
    						"name": "phoneDNC",
    						"value": "false"
    					}, {
    						"name": "deviceSource",
    						"value": "FreeFormEntry"
    					}, {
    						"name": "timeZone",
    						"value": "America/New_York"
    					}],
    					"r4100": "",
    					"updatedDate": "2016-06-07T19:41:29.000+0000"
    				}, null, null, null, null, null, null, null, null, null],
    				"attributes": [{
    					"name": "other7",
    					"value": "other 7"
    				}, {
    					"name": "other9",
    					"value": "other 9"
    				}, {
    					"name": "lastName",
    					"value": "Monroe"
    				}, {
    					"name": "other6",
    					"value": "other 6"
    				}, {
    					"name": "other2",
    					"value": "other 2"
    				}, {
    					"name": "firstName",
    					"value": "Marilyn"
    				}, {
    					"name": "contactBatchId",
    					"value": "3010012118"
    				}, {
    					"name": "other5",
    					"value": "other 5"
    				}, {
    					"name": "company",
    					"value": "Example Company"
    				}, {
    					"name": "other1",
    					"value": "other 1"
    				}, {
    					"name": "other8",
    					"value": "other 8"
    				}, {
    					"name": "other4",
    					"value": "other 4"
    				}, {
    					"name": "other3",
    					"value": "other 3"
    				}],
    				"r4100": "",
    				"internalId": "1606071941293900008",
    				"updatedDate": "2016-06-07T19:41:29.000+0000"
    			},
    			"currentDevice": {
    				"externalId": "+1 617 281 6327",
    				"attributes": [{
    					"name": "phoneNotSupported",
    					"value": "false"
    				}, {
    					"name": "wireline",
    					"value": "false"
    				}, {
    					"name": "valid",
    					"value": "true"
    				}, {
    					"name": "phoneTollFree",
    					"value": "false"
    				}, {
    					"name": "duplicateList",
    					"value": "false"
    				}, {
    					"name": "phone00",
    					"value": "false"
    				}, {
    					"name": "phoneBlocked",
    					"value": "false"
    				}, {
    					"name": "countryCode",
    					"value": "1"
    				}, {
    					"name": "wireless",
    					"value": "true"
    				}, {
    					"name": "phone000",
    					"value": "false"
    				}, {
    					"name": "stateCode",
    					"value": "MA"
    				}, {
    					"name": "phoneExtension",
    					"value": "false"
    				}, {
    					"name": "duplicateContact",
    					"value": "false"
    				}, {
    					"name": "email",
    					"value": "false"
    				}, {
    					"name": "duplicatePosition",
    					"value": "false"
    				}, {
    					"name": "phoneDNC",
    					"value": "false"
    				}, {
    					"name": "deviceSource",
    					"value": "FreeFormEntry"
    				}, {
    					"name": "timeZone",
    					"value": "America/New_York"
    				}],
    				"r4100": "",
    				"updatedDate": "2016-06-07T19:41:29.000+0000"
    			},
    			"localTime": "2016-06-07T15:41:49.154+0000",
    			"attributes": [{
    				"name": "callState",
    				"value": "Connected"
    			}, {
    				"name": "contactMode",
    				"value": "Outbound"
    			}, {
    				"name": "detectionStatus",
    				"value": "Person"
    			}, {
    				"name": "holdTime",
    				"value": "0"
    			}, {
    				"name": "scriptState",
    				"value": "INITIAL"
    			}, {
    				"name": "interactionTime",
    				"value": "6335"
    			}],
    			"r4100": ""
    		},
    		"currentSubCampaign": {
    			"externalId": "OnD_ccbte_Jun7_2",
    			"type": "Outbound",
    			"campaign": {
    				"externalId": "ccbtest",
    				"owner": {
    					"type": "Account",
    					"parent": {
    						"type": "Enterprise",
    						"r4100": "",
    						"internalId": "82601550189",
    						"entityType": "Org"
    					},
    					"r4100": "",
    					"internalId": "3000638298",
    					"entityType": "Org"
    				},
    				"attributes": [{
    					"name": "startDate",
    					"value": "2016-05-25"
    				}, {
    					"name": "endDate",
    					"value": "2026-05-25"
    				}],
    				"r4100": "",
    				"r4400": "",
    				"internalId": "154E90FC1EA006B730A0C069E00000000000",
    				"entityType": "Campaign"
    			},
    			"requestedStartDate": "2016-06-07T09:00:00.000+0000",
    			"strategyName": "Default Single Pass",
    			"deviceFilter": {
    				"attributes": [],
    				"r4100": ""
    			},
    			"attributes": [{
    				"name": "actualStopTime",
    				"value": "2016-06-08 01:00:00"
    			}, {
    				"name": "autoCreated",
    				"value": "true"
    			}, {
    				"name": "intensity",
    				"value": "0"
    			}, {
    				"name": "diagnosticRecordingEnabled",
    				"value": "false"
    			}, {
    				"name": "diagnosticRecordingPercentage",
    				"value": "0"
    			}, {
    				"name": "startPaused",
    				"value": "false"
    			}, {
    				"name": "executionOrder",
    				"value": "Parallel"
    			}, {
    				"name": "actualStartTime",
    				"value": "2016-06-07 19:39:03"
    			}, {
    				"name": "escalationType",
    				"value": "None"
    			}, {
    				"name": "systemSource",
    				"value": "0"
    			}, {
    				"name": "internalAutoCreated",
    				"value": "1"
    			}],
    			"agentGroups": [{
    				"externalId": "Portal",
    				"attributes": [{
    					"name": "agentRecordingDeleteAllowed",
    					"value": "true"
    				}, {
    					"name": "agentRecordingEnabled",
    					"value": "true"
    				}, {
    					"name": "agentRecordingMinDuration",
    					"value": "5000"
    				}, {
    					"name": "agentRecordingPercentage",
    					"value": "100"
    				}, {
    					"name": "agentRecordingSuspendAllowed",
    					"value": "true"
    				}, {
    					"name": "bypassConsult",
    					"value": "false"
    				}, {
    					"name": "callBackBridgingMode",
    					"value": "AgentOnly"
    				}, {
    					"name": "expireAfterHoursRecording",
    					"value": "336"
    				}, {
    					"name": "externalTransferEnabled",
    					"value": "true"
    				}, {
    					"name": "followUpEnabled",
    					"value": "true"
    				}, {
    					"name": "fourWayConferenceEnabled",
    					"value": "false"
    				}, {
    					"name": "freeformNumberEntryAllowed",
    					"value": "false"
    				}, {
    					"name": "internalTransferEnabled",
    					"value": "true"
    				}, {
    					"name": "manualDialEnabled",
    					"value": "true"
    				}, {
    					"name": "manualExternalTransferEnabled",
    					"value": "true"
    				}, {
    					"name": "previewSkipEnabled",
    					"value": "true"
    				}, {
    					"name": "previewTimerDuration",
    					"value": "10000"
    				}, {
    					"name": "recordDuringConference",
    					"value": "true"
    				}, {
    					"name": "scheduledFollowUpEnabled",
    					"value": "true"
    				}, {
    					"name": "scheduledFollowUpMaxHours",
    					"value": "24"
    				}, {
    					"name": "skipClientIdInputForAgentManaulCall",
    					"value": "false"
    				}, {
    					"name": "supervisorRecordingDeleteAllowed",
    					"value": "false"
    				}, {
    					"name": "targetSpeedOfAnswer",
    					"value": "2"
    				}, {
    					"name": "phoneNumber"
    				}, {
    					"name": "enableRemotePacing",
    					"value": "false"
    				}, {
    					"name": "maxBreakTime",
    					"value": "-1"
    				}, {
    					"name": "enableRemoteRouting",
    					"value": "false"
    				}, {
    					"name": "transferTarget",
    					"value": "false"
    				}, {
    					"name": "timeZone"
    				}, {
    					"name": "agentGroupType",
    					"value": "Enhanced"
    				}, {
    					"name": "intensity",
    					"value": "0"
    				}, {
    					"name": "agentLoginRequired",
    					"value": "true"
    				}],
    				"configuration": [{
    					"name": "config.plugin.pacing.name"
    				}, {
    					"name": "config.plugin.routing.name"
    				}, {
    					"name": "config.timeToLiveSecs",
    					"value": "0"
    				}],
    				"r4100": "",
    				"r4390": "",
    				"internalId": "82601830780"
    			}],
    			"passes": [{
    				"name": "Pass 1",
    				"passId": 1,
    				"channel": "1",
    				"contactsPerMinute": 0,
    				"maxContactsPerMinute": 2000,
    				"requestedStartTime": "2016-06-07 09:00:00",
    				"requestedStopTime": "2016-06-07 21:00:00",
    				"timeZone": "local",
    				"dayOffset": 0,
    				"callableDays": [true, true, true, true, true, true, true],
    				"deviceToAttempt": 2,
    				"leaveMessage": false,
    				"callerId": "17818977777",
    				"busyRetryCount": 0,
    				"busyRetryFrequency": 5,
    				"retryCount": 0,
    				"retryFrequency": 30,
    				"retryStatuses": ["[0@COM.soundbite.biz.callresults.CompletionStatusGroup:true:2007-10-25 12:24:33.0]"],
    				"duration": 43200000,
    				"pacingPriority": 2,
    				"pacing": "Predictive",
    				"script": {
    					"r4100": "",
    					"internalId": "154DF721A600025EE0A0C069F00000000000"
    				},
    				"abandonRatePacing": false,
    				"abandonRateDefinition": 0,
    				"abandonRateTarget": 0,
    				"linesPerAgent": 0,
    				"humanInitiatedDialing": false,
    				"attributes": [{
    					"name": "fastBridge"
    				}, {
    					"name": "actualStartTime",
    					"value": "2016-06-07 19:39:03"
    				}, {
    					"name": "agentBridgeCriteria",
    					"value": "LiveParty"
    				}, {
    					"name": "actualStopTime",
    					"value": "2016-06-07 19:39:03"
    				}, {
    					"name": "distributionDurationAvgSec",
    					"value": "-1"
    				}, {
    					"name": "enableAvgDistributionDuration"
    				}],
    				"r4100": "",
    				"devicesToAttempt": "1,2,3,4,5,6,7,8,9,10",
    				"r5800": "",
    				"r6200": "",
    				"internalId": "3012999258"
    			}, {
    				"name": "Voice Pass",
    				"passId": 901,
    				"channel": "1",
    				"contactsPerMinute": 200,
    				"maxContactsPerMinute": 2000,
    				"requestedStartTime": "2016-06-07 09:00:00",
    				"requestedStopTime": "2016-06-07 21:00:00",
    				"timeZone": "local",
    				"dayOffset": 0,
    				"callableDays": [true, true, true, true, true, true, true],
    				"deviceToAttempt": 1,
    				"leaveMessage": false,
    				"callerId": "17818977777",
    				"busyRetryCount": 0,
    				"busyRetryFrequency": 5,
    				"retryCount": 0,
    				"retryFrequency": 30,
    				"retryStatuses": [],
    				"duration": 43200000,
    				"pacingPriority": 10,
    				"pacing": "History",
    				"script": {
    					"r4100": "",
    					"internalId": "154DF721A600025EE0A0C069F00000000000"
    				},
    				"abandonRatePacing": false,
    				"abandonRateDefinition": 0,
    				"abandonRateTarget": 0,
    				"linesPerAgent": 0,
    				"humanInitiatedDialing": false,
    				"attributes": [{
    					"name": "fastBridge"
    				}, {
    					"name": "actualStartTime",
    					"value": "2016-06-07 19:39:08"
    				}, {
    					"name": "agentBridgeCriteria",
    					"value": "LiveParty"
    				}, {
    					"name": "actualStopTime",
    					"value": "2016-06-07 23:59:00"
    				}, {
    					"name": "distributionDurationAvgSec",
    					"value": "-1"
    				}, {
    					"name": "enableAvgDistributionDuration"
    				}],
    				"r4100": "",
    				"devicesToAttempt": "1,2,3,4,5,6,7,8,9,10",
    				"r5800": "",
    				"r6200": "",
    				"internalId": "3012999268"
    			}, {
    				"name": "Manual Pass",
    				"passId": 902,
    				"channel": "6",
    				"contactsPerMinute": 200,
    				"maxContactsPerMinute": 2000,
    				"requestedStartTime": "2016-06-07 09:00:00",
    				"requestedStopTime": "2016-06-07 21:00:00",
    				"timeZone": "local",
    				"dayOffset": 0,
    				"callableDays": [true, true, true, true, true, true, true],
    				"deviceToAttempt": 1,
    				"leaveMessage": false,
    				"callerId": "17818977777",
    				"busyRetryCount": 0,
    				"busyRetryFrequency": 5,
    				"retryCount": 0,
    				"retryFrequency": 30,
    				"retryStatuses": [],
    				"duration": 43200000,
    				"pacingPriority": 10,
    				"pacing": "History",
    				"script": {
    					"r4100": "",
    					"internalId": "154DF721A600025EE0A0C069F00000000000"
    				},
    				"abandonRatePacing": false,
    				"abandonRateDefinition": 0,
    				"abandonRateTarget": 0,
    				"linesPerAgent": 0,
    				"humanInitiatedDialing": false,
    				"attributes": [{
    					"name": "fastBridge"
    				}, {
    					"name": "actualStartTime",
    					"value": "2016-06-07 19:39:08"
    				}, {
    					"name": "agentBridgeCriteria",
    					"value": "AllCalls"
    				}, {
    					"name": "actualStopTime",
    					"value": "2016-06-07 23:59:00"
    				}, {
    					"name": "distributionDurationAvgSec",
    					"value": "-1"
    				}, {
    					"name": "enableAvgDistributionDuration"
    				}],
    				"r4100": "",
    				"devicesToAttempt": "1,2,3,4,5,6,7,8,9,10",
    				"r5800": "",
    				"r6200": "",
    				"internalId": "3012999278"
    			}],
    			"r4100": "",
    			"context": "",
    			"r4370": "",
    			"r4400": "",
    			"internalId": "1552C6019540124E40A0C069E00000000000",
    			"entityType": "SubCampaign",
    			"createdDate": "2016-06-07T19:39:03.000+0000",
    			"updatedDate": "2016-06-07T19:39:37.000+0000"
    		},
    		"currentSubCampaignName": "OnD_ccbte_Jun7_2",
    		"currentCampaignName": "ccbtest",
    		"r4100": "",
    		"r4400": "",
    		"r4500": ""
    	}],
    	"errors": [],
    	"warnings": [],
    	"r4100": "",
    	"r51400": ""
    }
    3.	Invalid request
    [
        {       
            "externalId": "+1 781 897 6789"
        },
    	{
    		"internalId": "30000010",
    		"type": "Account"
    	}	
    ]
}


Sample failure:

{
   "errors": [{
   		"code": "OBJECT_NOT_EXISTS",
   		"message": "Referenced object Org[Account=300001/null] does not exist."
	}]
}

Errors Returned

Account not exists

Notes

  • Only those devices currently Direct Connected will be searched.
  • Unlike most show services, this service is not by unique key and the supplied device may not be found due to a timing issue or invalid input. In this case OBJECT_NOT_EXISTS will not be returned and the result will be empty.
  • The supplied Org must be either a valid Account or Enterprise.

Feedback

Comment on this article:

blog comments powered by Disqus
This page was last modified on 6 September 2016, at 14:00.