LogoLogo
  • Go to Docs Center
  • Plum DEV Documentation
  • Overview
  • Developer Reference
    • Tutorial
    • How to...
      • Use Plum's Transcription API
    • Audio Formats and Prompts
    • Grammars and Speech Recognition
    • Available ASR Engines
    • TTS Engine Characteristics
      • Amazon Polly TTS Engine
        • Polly Voice Tag Attribute Details
      • AT&T Natural Voices
      • Cepstral Engine
      • RealSpeak Engine
      • Vocalizer 7
        • Vocalizer 7: <voice> tag and SSML Support
    • Data Exchange
    • Logging
    • Caching
    • Root Documents
  • VoiceXML
    • Tags
      • <assign>
      • <audio>
      • <block>
      • <break>
      • <catch>
      • <choice>
      • <clear>
      • <data>
      • <desc>
      • <disconnect>
      • <else>
      • <elseif>
      • <emphasis>
      • <enumerate>
      • <error>
      • <example>
      • <exit>
      • <field>
      • <filled>
      • <foreach>
      • <form>
      • <goto>
      • <grammar>
      • <help>
      • <if>
      • <initial>
      • <item>
      • <lexicon>
      • <link>
      • <log>
      • <mark>
      • <menu>
      • <meta>
      • <metadata>
      • <noinput>
      • <nomatch>
      • <one-of>
      • <option>
      • <paragraph>
      • <param>
      • <phoneme>
      • <prompt>
      • <property>
      • <prosody>
      • <record>
      • <reprompt>
      • <return>
      • <rule>
      • <ruleref>
      • <say-as>
      • <script>
      • <sentence>
      • <speak>
      • <sub>
      • <subdialog>
      • <submit>
      • <tag>
      • <throw>
      • <token>
      • <transfer>
      • <value>
      • <var>
      • <voice>
      • <vxml>
    • Properties
      • audiofetchhint
      • audiomaxage
      • audiomaxstale
      • bargein
      • bargeintype
      • certverifypeer
      • completetimeout
      • confidencelevel
      • datafetchhint
      • datamaxage
      • datamaxstale
      • documentfetchhint
      • documentmaxage
      • documentmaxstale
      • fetchaudio
      • fetchaudiodelay
      • fetchaudiominimum
      • fetchtimeout
      • grammarfetchhint
      • grammarmaxage
      • grammarmaxstale
      • incompletetimeout
      • inputmodes
      • interdigittimeout
      • logging
      • maxnbest
      • maxspeechtimeout
      • normalizeaudio
      • recordcall
      • recordcallappend
      • recordutterance
      • recordutterancetype
      • scriptfetchhint
      • scriptmaxage
      • scriptmaxstale
      • sensitivity
      • speedvsaccuracy
      • termchar
      • termmaxdigits
      • termtimeout
      • timeout
      • universals
      • voicegender
      • voicename
    • Application and Session Variables
      • application.lastresult$[i].confidence
      • application.lastresult$[i].inputmode
      • application.lastresult$[i].interpretation
      • application.lastresult$[i].recording
      • application.lastresult$[i].recordingduration
      • application.lastresult$[i].recordingsize
      • application.lastresult$[i].utterance
      • session.callrecording
      • session.id
      • session.telephone.ani
      • session.telephone.dnis
    • VoiceXML Resources
  • Plum DEV Guide
    • Using the Plum DEV site
    • Using the File Repository
    • Outbound Calling Guide
      • Using the Outbound Tools in the DEV web UI
      • DEV Outbound Programming Notes
      • Outbound FAQs and Tips
    • Call Reporting
    • Analytics
    • VoiceTrends
    • Debugging
    • Scratchpads
    • Saved URLs
    • Voice Biometrics
    • Call Routing
    • Data Security
      • 'Private' Tags
      • Managing Secure Phone Numbers
      • Sensitive Data Types
    • SMS Guide
      • Standard Short Codes
      • SMS Debugging/Error Logs
      • Additional SMS Info
    • Single Sign On
  • Plum DEV APIs
    • DEV Outbound APIs
      • Contacts CSV Formatting
      • Outbound API Parameter Notes
      • Legacy and Miscellaneous Notes
    • SMS API
    • Call Logs API
    • Call Scheduling and Pacing API
    • Transcription API
    • Application API
    • Blocklist API
Powered by GitBook
On this page
  • Programming Notes
  • Application Dynamics and Personalization
  • Personalization
  • Callee Type Detection
  1. Plum DEV Guide
  2. Outbound Calling Guide

DEV Outbound Programming Notes

Programming Notes

Application Dynamics and Personalization

The start_url is called by the Plum Outbound system with parameters which allow dynamic personalization of the application script. The phone number dialed and the Plum platform assigned call ID are returned to the client application server start_url as HTTP POST variables.

Personalization

The Plum Outbound system and VoiceXML scripting enables the creation of personalized call scripts based on the identity of the callee. To that end, several identifiers are accepted by the Plum Outbound system which are passed back to the client application server once the call is connected at HTTP GET variables:

Identifier

Parameter(s)

Notes

Phone Number

phone_number

For many applications, the phone number will be enough to uniquely identify the call. Based on the phone number, the client application server can retrieve information such as the callee's name.

Message Reference

message_reference

Where the phone number does not uniquely identify the call, the client application can send a message reference along with the queuecall.php/queuecalls.php request.

Call ID

call_id

Each call is also assigned a unique identifier at queue time by the Plum Outbound System. This call ID is returned by the queuecall(s).php request. This identifier is unique to the Plum Outbound System Server. (However, if the client application is being served by multiple Plum Outbound servers, then this call_id may not be unique. The client application should assign and refer to the message_reference instead.)

Message Parameters

campaign_parameters call_parameters

Use the message parameters to pass call personalization information directly to the call script. For example, for an appointment reminder application, the message parameters could be used for the callee name and the appointment date and time. The VoiceXML script could then be constructed with a personalized greeting and reminder without looking up the callee's record in a database at call time.

Callee Type Detection

The Plum Outbound system provides asynchronous callee type detection that allows the call to begin immediately while the system listens in on the first 4 seconds of the call to determine what is on the other end of the line.

You can access the current callee type through the global variable session.connection.callee_type. The value of this variable will change over time, we recommend playing an initial prompt to the callee and then performing any branching logic against this variable.

The possible values for session.connection.callee_type are “processing”, “voice”, “answeringmachine”, “fax” and “unknown”.

Below is sample code that demonstrates detecting and acting on the callee type:

<?xml version="1.0"?>
<vxml version="2.1">
	<property name="inputmodes" value="dtmf"/>
	<form id="callee_type_detection">
		<record name="input" finalsilence="1s" maxtime="30s">
			<property name="interdigittimeout" value="10ms"/>
			<prompt>Hello! This is a call from Company X Y Z. Please press any key to accept this call.</prompt>
			<filled>
				<if cond="input$.termchar == null">
					<throw event="noinput"/>
				</if>
				<goto next="#voice"/>
			</filled>
			<noinput>
				<if cond="session.connection.callee_type == 'answeringmachine'">
					<goto next="#answeringmachine"/>
				<elseif cond="session.connection.callee_type == 'fax'"/>
					<goto next="#fax"/>
				</if>
				<goto next="#voice"/>
			</noinput>
		</record>
	</form>
	<form id="answeringmachine">
		<block>Sorry we missed you, please call us back at: 555-555-1234</block>
	</form>
	<form id="fax">
		<block><disconnect/></block>
	</form>
	<form id="voice">
		<block>Hello human, welcome to the IVR call flow.</block>
	</form>
</vxml>
PreviousUsing the Outbound Tools in the DEV web UINextOutbound FAQs and Tips

Last updated 4 years ago