This post provides guidance for an IVR integration with Quiq.

How Quiq integrates with an IVR

Your IVR will need to make a call to the Quiq servers at the appropriate time during the call flow. You can pass information about the call to your agents. Quiq displays this information to the agent using the first message in the new conversation. For example, if the customer went through your IVR flow looking for help with an order, you can pass that information to your agent. This prevents the customer from having to re-explain themselves over SMS.

The IVR will need to make an HTTPS REST call to our servers, authenticating using HTTP Basic Auth. This is a standard followed by many APIs. You will be using our Start Conversation API.

Required values

Quiq will need to provide you the contactPoint. The default value is default but this will change if you have more than one phone number or contact point.

The handle is your customer’s phone number.

Suggestions for your IVR flow

The intent of the IVR implementation is to deflect voice calls to SMS, which is a lower cost channel, and is often more convenient for your customers. For this reason, it is best to give the customer an opportunity to start an SMS conversation by pressing a key on their phone while in the IVR. This is preferred over asking your customer to hang up and text the same number.

Keep in mind that your customers may be calling from a land line, which does not support SMS. Your IVR flow should allow them to change the number. For example, the IVR may prompt the user to press “1” to be texted at the current number, or “2” to enter a new number.

Sample code

The following NodeJS code was taken from a working IVR implementation. Your developers will write similar code in your IVR. The account credentials can be created using the Quiq Admin UI.

   function createQuiqConvo( initialMessage ) {
       console.log( 'Creating Quiq conversation' );

       // You’ll need to replace the username, password, sms number (customer number), and contact point number (your number). initialMessage is the
       // text you want in the first message.
       var username = <removed for security>';
       var password = ‘<removed for security>';
       var auth = 'Basic ' + new Buffer( username + ':' + password ).toString( 'base64' );
       var postData = {
           handle: callData.smsNumber,
           contactPoint: '+16468878398',
           messages: [ {
               text: initialMessage,
               authorType: 'Customer',
               imported: true
           } ]

       // The URL below would change for you.
       var options = {
           method: 'POST',
           uri: '',
           body: JSON.stringify( postData ),
           headers: {
               'Authorization': auth

       request( options, function ( error, response, body ) {
           console.log( error );
           console.log( body );
       } )