PDS Winsock connection

Companion has a facility to connect QPSMR Telin via a Winsock connection (Windows socket) to a dialler or PDS (predictive dialler system).

You use the Companion [Project] [Global settings] [Controls] to set the IPV4 address and port number of the PDS system. Companion stores this information in the main project file (QDF) and uses it when you start up Telin to connect to the Winsock.

Telin can communicate with the INVADE predictive dialler.

Following is a description the “Native” protocol.  You may use other protocols for specific PDS systems.

The Winsock connection is an open IPv4 TCP stream.  Companion closes the Winsock connection after each command or exchange and opened again for the next. The commands are UTF8 texts which end in a comma and usually have a comma separating the command from the information being sent.

Companion does not expect a reply from the dialler except for the two “exchange” commands: Ready and Finished.


All commands are very short and Companion will send them in a single TCP packet. The only commands which Telin will send to the PDS are:

  1. Start, user, study,
  2. Close, user, study,
  3. Ready, user, study,
  4. Dial, number, user, study (up to 2019.1)
  5. Dial, number, user, study, serial (2019.2 onwards)
  6. HangUp, number, user, study,
  7. Finished, number, user, study,

The user is the Windows login name of the interviewer. You can set the study name in project global. The number is the telephone number from TELNUM. The serial is the serial number of the current sample record.

The commands that the dialler/PDS sends to Telin are:

  1. Called, number
  2. EndInfo, information

QPSMR Telin open and close

When you open the program, Companion sends the Start command. When you close the program, Companion sends the Close command.

PDS exchange

If the user wishes to receive a call from the PDS, they use the PDS button which causes a Ready command to be sent. The program then suspends Telin until it receives a Called message from the PDS. This message contains the telephone number of the call that Companion has put through. Telin then looks up the number in the sample file (or partial file) and retrieves the record ready for the interview to start.


If the user wishes the dialler/PDS to dial a number, they retrieve the record first and then use the Dial button which causes Companion to send a Dial command to the PDS system with the number from the record.

If you use “Add serial”, a dialog box will appear that allows you to set and dial the telephone number for the new record.


This is sent when the interviewer requests that the call be disconnected. You may use it after a Dial or Ready/Called command.

Call End Info exchange

If you set “Needs Call End Info”, then when you save a record the Finished command is sent to the connection and Telin waits for an EndInfo command to be returned with the information that is then stored in ZZZCEI.

Telephone numbers

Numbers are stored in the sample file in an entry called TELNUM. If there is more than one number then TELNUM1, TELNUM2, and TELNUM3 are used.

IMPORTANT NOTE. The number sent by the PDS (following a Ready command) must be an exact match to the number stored in TELNUM. For comparison purposes the number is converted into a 64 bit integer number by adding a 1 to the front and removing all characters that are not digits. The 1 is added to preserve any leading zeros.

PDS Emulator V6 downloads

You can download the PDS Emulator V6 open source Visual Studio C# code here:

Download PDS Emulator V6 open source Visual Studio C# code