We need a custom behavior scripted for our FreePBX-distro ([url removed, login to view]) installation of Asterisk 11 running in user-and-device mode. Presumably, this will use a PHP script which relies on AGI or AMI to issue commands to the PBX—but we are open to any solution which will achieve the same goals. Here is a summary of the desired flow:
1) Call center agent clicks a link on a web page in their existing scripting system which is hyperlinked to our PBX and calls a URL, such as:
[url removed, login to view]
2) Based on the “agentID” (extension number) passed via the URL to the PBX, the PBX seizes/transfers the call away from the agent to a custom extension. (The agent is no longer part of the call once the call is seized/transferred.)
3) The custom extension starts recording the call in .wav format.
4) The custom extension plays a recording of the “terms of service” to the customer.
3) At the end of the playback of the “terms of service” recording, the custom extension 'listens' for touch-tones and a recording asks, “Do you accept the terms of service, as stated? Press 1 to accept or any other button to decline. If you want to decline, you can also just hang up. Please press 1 now if you accept.”
4) If customer presses “1”, the system plays a recording: “Thank you for electronically signing this agreement. A printed copy will be mailed to you for your records. Have a nice day. Goodbye.” After playback, the call recording stops and the call is terminated.
5) If a customer presses any key other than “1”, the system plays a recording, “We're sorry you did not accept the terms of service. We will contact you at a later time by phone or mail to follow-up and answer any questions you may have about the terms of service.” After playback, the call recording stops and the call is terminated.
6) If the customer does not press any button within 10 seconds, the system re-plays the request for acceptance recording while continuing to listen for a touch-tone. If yet another 10 seconds passes, system plays a recording, “We will contact you again later to seek your acceptance and answer any questions you may have so that we may process your request. Thank you for your call.” After playback, the call recording stops and the call is terminated.
7) If a customer hangs up before pressing any touch-tone buttons, they will be assumed to have declined to agree.
8) Upon call termination, an entry is made to a database table on the PBX, which includes columns for “callID”, “ptID”, “agentID”, “timestamp”, “acceptance_status”, and “recording_path”.
The “callID” field will be 6 to 10 digits, integers only.
The “ptID” field will also be 7 digits, integers only, starting with 1, 2, or 3.
The “agentID” field will be 5 digit integer only entry.
The “timestamp” shall be the full server date and time stamp at the time of the entry.
The “acceptance_status” will either hold a integer entry of “0” for not accepted or “1” for acceptance.
The “recording_path” will contain the file name of the call recording.