`United States Patent
`Hoganetal.
`
`[54]
`
`[75]
`
`{73]
`
`{21]
`
`[22]
`
`(51)
`
`[52]
`
`[58]
`
`[56]
`
`DISTRIBUTED VOICE SYSTEM AND
`METHOD
`
`Inventors: Steven J. Hogan; Kristi T. Feltz;
`Douglas R. Murdock; David J.
`Vercande,all of Cedar Rapids; Roy A.
`Rhodes, Marion, all of lowa
`
`Assignee: LinkUSA Corporation, Cedar Rapids,
`lowa
`
`Appl. No.: 257,623
`
`Filed:
`
`Jun. 8, 1994
`
`PI OUT cc sccstenisascnta eau: G10L 9/00; HO4M 1/64;
`H04M 3/50
`USe Chan sisaniecscs cies 379/67; 379/88; 379/89;
`379/71; 379/76; 395/2.79; 395/2.87
`Field of Search... 379/67, 88, 89,
`379/142, 112, 71, 76, 83, 87; 370/61; 395/2.87,
`2.89, 2.79
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`11/1980 Boatwrightet al. .
`9/1986 Asmuth etal. .
`11/1986 Lotito et al. cette 379/BB
`9/1987 Winteretal.
`woe 379/88
`6/1989 Pham etal. ..
`we 381/31
`1/1990 Leung et al.
`.
`wee 379/88
`2/1990 Helferich.....
`« 341/110
`4/1990 Winteret al.
`we 379/96
`6/1993 McLeod etal.
`« 379/88
`
`
`
`
`|a0
`
`5,619,554
`(11] Patent Number:
`[45] Date of Patent:
`Apr. 8, 1997
`
`
`5,359,645
`5,367,609
`5,384,829
`5,448,633
`5,477,541
`
`10/1994 Katz seosssssemsseneeneenereeenseee 379/88
`
`11/1994 Hopperetal. .......
`+ 395/287
`1/1995 Heileman,Jr. et al.
`.... ~ 379/67
`
`9/1995 Jammaleddin ........0000
`eee 379/207
`12/1995 White et al... 370/94.1
`
`OTHER PUBLICATIONS
`
`Summa Architec Series Portico, (SDS Product Overview),
`1992.
`The Open Architect Network Interface, “Profit from Open
`Architecture”.
`
`Primary Examiner—Krista M. Zele
`Assistant Examiner—Parag Dharia
`Aitorney, Agent, or Firm—Sterne, Kessler, Goldstein & Fox,
`PEL...
`
`[57]
`
`ABSTRACT
`
`A distributed voice system and method provides voice
`scripting and voice messaging to a call processing system.
`According to this system and method, audio voice is
`recorded in frames and the frames encapsulated into data
`packets. The data packets are stored in a database as voice
`scripts or voice messages. To play back a voice script or
`voice message, its packets are sequentially retrieved from
`the database. As soonas thefirst packetis retrieved, the data
`are extracted therefrom and playback can begin. Asthe voice
`is being played back to a user 106, subsequent packets are
`retrieved, the data extracted therefrom, and the data buffered
`for playback. In this manner, a voice script or a voice
`message can be played back without interruption.
`
`16 Claims, 44 Drawing Sheets
`
`| PLAY THREAD
`
`4,232,199
`4,611,096
`4,625,081
`4,697,282
`4,841,574
`4,891,835
`4,905,003
`4,918,322
`5,222,120
`
`.
`
`
`
`AUDIO SYSTEM 15107
`
`VOICE MODULE 1530
`
`0001
`0001
`
`Facebook Ex. 1010
`Facebook Ex. 1010
`U.S. Pat. 8,243,723
`US. Pat. 8,243,723
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 1 of 44
`
`5,619,554
`
`YHNOLSNO
`
`oorsuasnBt
`
`ASl\\MaINOLSND|ifveiw1)|
`
`fnMM
`
`YTIOSNOO
`
`80|
`
`1Old
`
`poeeee
`
`LOrcrsisnneneedyp)ONILVNIOTIO
`
`Saasn
`
`V90I
`
`sumarosans
`
`vit
`
`0002
`0002
`
`
`
`AANOLSNO
`
`HOLIMS
`
`vor
`
`YaANOLSND
`
`HOLIMS
`
`vor
`
`ONILVNIDIYO
`
`
`
`
`
`
`
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 2 of 44
`
`5,619,554
`
`ORIGINATE CALL
`AND SEND IT TO
`MATRIX SWITCH102
`
`
`
`
`
`
`
`
`MATRIX SWITCH 102
`USES CALL DATA TO
`DETERMINE HOW TO
`HANDLE AND ROUTE
`THE CALL
`
`202
`
`204
`
`
`
`
`FOR A 0+ CALL,
`
`
`
`FOR A 1+ CALL,
`906
`PROVIDE OPERATOR
`USE CALL DATA 144
`2]
`‘CALL DATA 146 TO
`
`TO ROUTE THE CALL
`|‘!
`OPERATOR CONSOLE
`
`
`108
`
`
`
`SEND OPERATOR
`5
`208 2_|
`COMMANDS148 TO
`MATRIX SWITCH 102
`
`
`
`FIG 2
`
`0003
`0003
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 3 of 44
`
`5,619,554
`
`9v€VLVa|JASNOdSHa—z.|YOLVAAdO
` TIVD;~BOESHIOSNOD ~OEWALSASDNISSHOOUdYOLVAAIO|8ZENVI|Ej|x3<|Ey)|Eeod)
`
`
`
`
`
`
`
`€OLA
`
`POL
`
`NOILVNILSHG
`
`HOLIMSHOLIMSwasn
`
`YqHWOLSNOONILVNIOTYO
`vOr501
`
`TOULNOD
`
`
`
`p7EVLVCaON
`
`b0eZe
`
`YOLVUadO.ane/\JWINGoie
`
`TIVO/s%NS/Vel
`TIVOae~Ncrix.OIGAV
`
`TENNVHO\-ffONITIVNOISNy:\—LTANNVHOAOIOA
`
`0004
`0004
`
`
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 4 of 44
`
`5,619,554
`
`sagsn|DNILYNIDRIO
`WAWOLSNO
`
`V90T
`
`HOLIMS
`
`ort
`
`
`
`.SSSil‘S.\YPNOLSNO|
`
`|
`
`Sseeepaer
`
`ZOEWALSAS
`
`
`
`ONISSHOOUdTIVONyzi
`
`vOld
`
`V90I
`
`ONILVNUINAAL
`
`Sadsn
`
`Sadalaosadns
`
`vIT
`
`
`
`nemoannncmduipdINILWYNIOTYO
`
`sagsn
`
`V90I
`
`0005
`0005
`
` [rotten ----
`
`[or+HOLIMS
`
`WANOLSADfF
`ONILVNIOIYO
`
`sagasn
`
`||IIIII||
`
`||||||||||
`
`
`
`
`
`
`
`
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 5 of 44
`
`START
`
`INITIATE CALL
`
`502
`
`CALL PROCESSING
`SYSTEM 302
`RECEIVES CALL AUDIO
`142 AND CALL
`
`~U-504
`
`DATA 144
`TO HANDLE CALL
`
`NCP 304
`DETERMINES HOW
`
`
` NCP 304 INSTRUCTS
`
`
`MATRIX SWITCH 306
`
`REGARDING
`CALL ROUTING
`
`~H508
`
`
`
`MATRIX SWITCH 306
`DIRECTS THE CALL
`TO THE DESTINATION
`AS INSTRUCTED BY
`NCP 304
`
`
`
`
`
`“e510
`
`
`
`DONE
`
`FIG 5
`
`0006
`0006
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 6 of 44
`
`5,619,554
`
`FIG 8
`
`FIG 6
`
`0007
`0007
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 7 of 44
`
`5,619,554
`
`INITIATE A CALL
`REQUIRING OPERATOR [2_792
`ASSISTANCE
`
`CALL PROCESSING
`SYSTEM 302 RECEIVES
`CALL AUDIO 142 AND
`CALL DATA 144
`
`704
`
`
`
`
`
`NCP304
`DETERMINES THAT
`ORIGINATING USER|+—706
`REQUIRES OPERATOR
`ASSISTANCE
`
`NCP 304 INSTRUCTS
`MATRIX SWITCH 306
`TO ROUTE CALL AUDIO |2_799
`142 TO OPERATOR
`CONSOLE308
`
`NCP 304 SENDS OPERATOR
`CONTROL DATA 324 TO
`OPERATOR CONSOLE308
`INDICATINGHOW
`TO HANDLE THE CALL
`
`[+710
`
`FIG 7
`
`0008
`0008
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 8 of 44
`
`5,619,554
`
`FROM 710
`FIG 7
`
`
`
`IF THE CALL IS A CALLING CARD CALL,
`
`
`OPERATOR CONSOLE308 PROMPTS THE CALLER
`FOR THE CARD NUMBER AND VERIFIES THE
`VALIDITY OF THE CARD NUMBER
`
`
`
`
`
`IF THE CALLING CARD NUMBERIS VALID,
`OPERATOR CONSOLE308 SENDS OPERATOR
`RESPONSE DATA TO NCP 304 TO CONFIGURE
`
`NCP 304 INSTRUCTS MATRIX SWITCH
`306 TO ROUTE THE CALL TO THE
`CORRECT DESTINATION
`
`THE CALL
`ACCEPT THE CHARGES FOR THE CALL
`
`FOR A COLLECT CALL, THE OPERATOR VERIFIES
`THAT THE CALLED PARTY IS WILLING TO
`
`
`
`
`
`IF THE CALLED PARTY REFUSES THE COLLECT
`CALL CHARGES, OPERATOR CONSOLE308
`INSTRUCTS NCP 304 TO TERMINATE THE
`CONNECTION
`
`FIG 8
`
`0009
`0009
`
`802
`
`804
`
`806
`
`808
`
`810
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 9 of 44
`
`
`
`LdIYOSAOIOA
`
`CNaY-LNOW
`
`ADIOA
`
`AOVSSEN
`
`AOIAUHS
`
`C16
`
`SOIAMHS
`
`806
`
`YOLNEATALSIA
`
`+06
`
`
`
`ASNOdSayTOULNOO
`
`
`
`AOIOAYYOM.LAN
`
`LINOWOssAooUud
`
`
`
`
`
`vEEvOE~U_yivdTIvo
`
`
`
`OIGNVTIVO
`
`
`
`OIGNYTIVO
`
`cri
`
`crt
`
`pel
`
`0010
`0010
`
`5,619,554
`
`
`
`HOIANSJAG
`
`916
`
`X
`
`6Old
`
`XTaLVW
`
`HOLIMS
`
`90€
`
`
`
`
`
`
`
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 10 of 44
`
`5,619,554
`
` YOsssdoOoUdd
`
`TOULNOD
`
`
`
`LdIdOSsHOIOA
`
`UAAAS
`
`cOOT
`
`CGNH-LNOU
`
`YOLNATALSIG
`
`¥06
`
`AWAOIOA
`
`YaALYAANOO
`
`900T
`
`peeeeeeeaeeeeeeeeeeeeeng
`
`SYOMLAN
`
`0011
`0011
`
`
`
`
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 11 of 44
`
`5,619,554
`
`
`
`RECORD VOICE AUDIO
`
`~~ 4104
`
`
`
` ~U— 4108 ~~ 4412
`
` ~~ta 1416
`
`PACKETIZE VOICE AUDIO INTO
`VOICE SCRIPT 1008
`
`DISTRIBUTE VOICE SCRIPT 1008
`
`SAVE VOICE SCRIPT 1008 IN
`DATABASE1004
`
`FIG 11
`
`0012
`0012
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 12 of 44
`
`5,619,554
`
`START
`
`NCP 304 NOTIFIES VRU 334 THAT A
`NEW CALLIS RECEIVED
`
`1204
`
`VRU 334 DETERMINES THAT A
`VOICE SCRIPT 1008 IS TO BE PLAYED
`
`1208
`
`
`
`
`VRU 334 REQUESTS VOICE SCRIPT
`1008 FROM VOICE SCRIPT SERVER
`
`
`1002
`
`|—2— 4919
`
`VOICE SCRIPT SERVER 1002
`RETRIEVES VOICE SCRIPT 1008 AND
`SENDS A PACKET OF VOICE DATA
`TO VRU 334
`
`1216
`
`A 1262
`ne
`
`oo
`MINIMUM # OF
`PACKETS?
`
`1220
`
`VRU 334 PLAYS VOICE SCRIPT 1008|“— 1224
`
`
`
`YES
`
`
`
`FIG 12
`
`0013
`0013
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 13 of 44
`
`5,619,554
`
`
`
`
`
`'716AOIAUASADVSSAWADIOA
`
`CNd-LNOW
`
`YOLNEAMLSIA
`
`+06
`
`€lOld
`
`SOIAMASJaa
`
`916
`
`WHOMLAN
`
`TOULNOO
`
`wWOssHoodd
`
`POE
`
`0014
`0014
`
`
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 14 of 44
`
`5,619,554
`
`START
`
`VRU 334 RECEIVES AUDIO MESSAGE |—2_ 404
`
`VRU 334 PACKETIZES AUDIO
`MESSAGE
`
`‘— 1408
`
`
`MESSAGE PACKETS ARE
`SEQUENTIALLY NUMBERED AND |—2-_ 149
`SENT TO FED 904
`
`
`
`
`FED 904 ASSIGNS A MESSAGE
`NUMBER AND SENDS VOICE
`MESSAGE1308 TO VOICE MESSAGE
`SERVER 1302
`
`_ 1416
`
`FED 904 SENDS MESSAGE NUMBER
`TO VRU 334~— 1420
`
`FIG 14
`
`0015
`0015
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 15 of 44
`
`5,619,554
`
`
`
`
`
`
`VOICEMODULE1530-7
`
`
`AUDIOSYSTEM15107
`
`FIG15
`
`
`
`0016
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 16 of 44
`
`5,619,554
`
`VRU 334 INITIATES RECORD
`THREAD 1536A:~LU—-1604
`
`INITIALIZE VOICE DATA
`PROCESSOR 1500
`
`L— 1608
`
`
`
`
`
`
`
`
`
`
`
`
`
`RECORD AUDIO VOICE
`~to 1612
`
`
`
`PACKETIZE AUDIO VOICE
`—oO 1616
`
`STORE PACKETIZED AUDIO VOICE
`AS VOICE SCRIPT 1008 OR VOICE
`
`MESSAGE1308
`
`|—-— 699
`
`FIG 16
`
`0017
`0017
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 17 of 44
`
`5,619,554
`
`START
`
`VRU 334 INITIATES AUDIO RECORD THREAD
`1536A
`
`ae
`
`1704
`
`MAIN VRU APPLICATION THREAD STARTS
`TIMER IF MESSAGE LENGTH DEFINED ~ 1708
`
`__
`
`RECORD THREAD 1536A INITIALIZES AUDIO
`DRIVER 1514
`
`es
`
`1712
`
`AUDIO DRIVER 1514 ALERTS AUDIO THREAD
`oarpe
`1534
`1716
`
`
`
`AUDIO THREAD 1534 DETERMINESIF RECORD
`REQUIRED VIA INDICATORS
`
`1718
`
`TO STEP 1612
`
`FIG 16
`
`FIG 17
`
`0018
`0018
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 18 of 44
`
`5,619,554
`
`FROM STEP 1608
`FIG 16
`
`AUDIO THREAD 1534 COMMANDS AUDIO —— 1804
`DRIVER 1514 TO BEGIN RECORDING
`
`‘— 1816
`
`AUDIO DRIVER 1514 INDICATES RECORD
`~U— 1808
`COMMAND ACCEPTED
`
`AUDIO THREAD 1534 SENDS NEXT BUFFER
`~t—— 4812
`COMMAND TO AUDIO DRIVER 1514
`
`AUDIO DRIVER 1514 SENDS RECORD BEGUN
`EVENT TO AUDIO THREAD 1534
`
`AUDIO DRIVER 1514 INFORMS AUDIO THREAD
`——— 1820
`1534 THAT BUFFER 1518 IS FULL
`
`
`
`TO STEP 1904
`FIG 19
`
`FIG 18
`
`0019
`0019
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 19 of 44
`
`5,619,554
`
`FROM STEP 1820
`FIG 18
`
`
`
`
`
`
`AUDIO THREAD 1534 CHECKS FOR "SILENCE"
`
`|—— 1904
`
`
`AUDIO THREAD 1534 COMMANDS AUDIO
`DRIVER 1514 TO STOP RECORDING
`
`
`
`TO STEP 1616
`FIG 16
`
`FIG 19
`
`0020
`0020
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 20 of 44
`
`5,619,554
`
`
`
`FROM STEP
`1612
`FIG 16
`
`AUDIO THREAD 1534 PACKETIZES VOICE DATA |r 2904
`
`AUDIO THREAD 1534 PLACES PACKETS INTO
`FRAME BLOCK QUEUE 1538
`
`‘— 2008
`
`AUDIO THREAD 1534 INDICATES TO AUDIO
`DRIVER 1514 THAT AUDIO DATA CAN BE
`STORED IN NOW AVAILABLE BUFFER 1518
`
`
`
` —e— 2012
`
`
`
`
`
`AUDIO THREAD 1534 INFORMS RECORD
`THREAD 1536A THAT PACKETS ARE READY TO |~~*— 2016
`
`
`
`
`BE STORED
`
`TO STEP 1620
`FIG 16
`
`FIG 20
`
`0021
`0021
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 21 of 44
`
`5,619,554
`
`
`
`FROM STEP 1616
`FIG 16
`
`RECORD THREAD 1536A RETRIEVES PACKETS
`~u— 2104
`FROM FRAME BLOCK QUEUE 1538
`
`
`
`
` ~~“— 2108
`
`RECORD THREAD 1536A CHECKSFOR SILENT
`LEADING PACKETS
`
`YES
`
`|
`
`DISCARD PACKET) —2_ 2116
`
`RECORD THREAD 1536A SENDS PACKETS FOR
`STORAGE
`
`ois
`— 21
`
`NO
`
`
`
`
`
`
`
`FIG 21
`
`0022
`0022
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 22 of 44
`
`5,619,554
`
`AUDIO THREAD 1534 CHECKS ENERGY LEVEL |—__ 5504
`WHILE PACKETIZING
`
`
`
`
`CONFIGURED
`
`ME EXCEEDED?
`
`
` CONTINUE
`
`PACKETIZING
`
`
`
`
`
`
`AUDIO THREAD 1534 SENDS RECORD STOP TO
`AUDIO DRIVER 1514 AND A CHECK FOR
`SILENCE MESSAGE TO RECORD
`THREAD 1536A
`
`~ 2216
`
`FIG 22
`
`0023
`0023
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 23 of 44
`
`5,619,554
`
`AUDIO DRIVER 1514 DETECTS DTMF TONE~U~2304
`
`
`
`AUDIO DRIVER 1514 SENDS DTMF EVENT TO
`7tt,
`AUDIO THREAD 1534
`2308
`
`AUDIO THREAD 1534 SENDS RECORD STOP
`COMMAND TO AUDIO DRIVER 1514 AND CHECK
`FOR SILENCE MESSAGE TO AUDIORECORD|‘— 2312
`THREAD 1536A
`
`
`
`RECORDORD THREAD 1536A DISCARDS PACKET IF|—__ 2314
`SILENCE DETECTED
`
`
`
`FIG 23
`
`0024
`0024
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 24 of 44
`
`5,619,554
`
`START TIMER~—— 2404
`
`PROCESSOR TO STOP RECORDING
`
`AUDIO DRIVER 1514 SENDS READ WAKE EVENT
`~tm 2412
`
`AUDIO THREAD 1534 CHECKS INDICATOR THAT
`metees DATS
`
` APPLICATION THREAD INSTRUCTS VOICE DATA] —__ 5408
`TO AUDIO THREAD 1534
`SAYS TO STOP RECORDING
`‘— 2420
`
`
`AUDIO THREAD 1534 SENDS RECORD STOP
`COMMAND TO AUDIO DRIVER 1514
`
`AUDIO THREAD 1534 SENDS CHECK FOR
`~U— 2424
`SILENCE MESSAGE TO RECORD THREAD 1536A
`
`TO FIG 15
`
`FIG 24
`
`0025
`0025
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 25 of 44
`
`5,619,554
`
`~t- 2516
`
`AUDIO DRIVER 1514 STOPS RECORDING, SENDS
`RECORD STOP EVENT TO AUDIO THREAD 1534,|—-__ 2504
`AND RELEASES LAST DATA BUFFER 1518
`
`AUDIO THREAD 1534 SECTIONS LAST DATA
`BUFFER INTO PACKETS AND PLACES PACKETS|.*— 2508
`INTO FRAME BLOCK QUEUE
`
`AUDIO THREAD POSTS AUDIO RECORD
`~~te —~9512
`STOPPED MESSAGE TO RECORD THREAD 1536A
`
`RECORD THREAD 1536A SETS INDICATOR THAT
`RECORDING STOPPED, COMPLETES EMPTYING
`FRAME BLOCK QUEUE 1538, AND SENDS
`RECORD DONE MESSAGE TO MAIN VRU
`APPLICATION THREAD
`
`FIG 25
`
`0026
`0026
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 26 of 44
`
`5,619,554
`
`RETRIEVE PACKETS TO BE PLAYED |—2___ 2604
`
`STORE PACKET IN FRAME BLOCK
`~U— 2608
`QUEUE 1538
`
`
`
`
` ~&— 2616
`
`BUFFER PACKETSIN BUFFER 1518|”t— 2612
`
`PLAY VOICE SCRIPT 1008
`
`2662
`
`FIG 26
`
`0027
`0027
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 27 of 44
`
`5,619,554
`
`
`
`PLAY THREAD 1536B REQUESTS VOICE SCRIPT
`~ct 2704
`1008
`
`
`
` ~~t— 2708
`
`PLAY THREAD 1536B SETS SEARCHING
`INDICATOR TO TRUE
`
`GO TO STEP 2608
`FIG 26
`
`FIG 27
`
`0028
`0028
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 28 of 44
`
`5,619,554
`
`START
`
`
`PLAY THREAD 1536B SETS INDICATORS
`TELLING AUDIO THREAD 1534 THAT IT WILL BE|~*—92804
`
`
`PLAYING VOICE DATA
`
`
`
`PLAY THREAD 1536B INITIALIZES AUDIO
`~t— 2808
`DRIVER 1514
`
`AUDIO DRIVER 1514 eat AUD
`
`10 THREAD
`
`rr 9810
`
`
`AUDIO THREAD 1534 DETERMINES TO PLAY
`VOICE DATA VIA INDICATORS SET BY PLAY|~— 2816
`THREAD 1536B
`
`
`
`DONE
`
`FIG 28
`
`0029
`0029
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 29 of 44
`
`5,619,554
`
`FROM STEP 2608
`FIG 26
`
`
` ~ U— 2904
`
`
` ~co 2908
`
`
`AUDIO THREAD 1534 RETRIEVES ONE PACKET
`FROM FRAME BLOCK QUEUE 1538
`
`AUDIO THREAD 1534 STORES THE DATA IN
`FIRST DATA BUFFER 1518A
`
`
`AUDIO THREAD 1534 INSTRUCTS AUDIO
`DRIVER 1514 TO BEGIN PLAYING
`
`f~e— 2012
`
`TO STEP 2616
`FIG 26
`
`STEP2612 )
`
`FIG 29
`
`0030
`0030
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 30 of 44
`
`5,619,554
`
`FROM 2612
`FIG 26
`
`AUDIO DRIVER 1514 PLAYS VOICE SCRIPT 1008|2— 3904
`
`
`
`
`
`
`
`PLAY THREAD 1536B INFORMS VOICE DATA
`~~t— 3008
`
`SYSTEM 1500 THAT VOICE SCRIPT 1008 IS
`PLAYING
`
` AUDIO DRIVER 1514 INFORMS AUDIO THREAD |—__ 315
`
`1534 THAT PLAYED BUFFER1518 IS EMPTY
`STEP2616 /
`
`FIG 30
`
`0031
`0031
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 31 of 44
`
`5,619,554
`
`FROM STEP
`2616
`FIG 26
`
`
`
`
`
`
`
`AUDIO THREAD 1534 RETRIEVES PACKETS
`~o- 3104
`FROM THE FRAME BLOCK QUEUE 1538
`
`
` ~U— 3108
`
` AUDIO THREAD 1534 INFORMS AUDIO DRIVER
`
`
`Pees B12
`FIG 26
`
`AUDIO THREAD 1534 STORES DATA IN SECOND
`DATA BUFFER 1518B
`
`
`1514 THAT DATA ARE IN SECOND DATA
`BUFFER1518B
`
`
`
`AUDIO THREAD 1534 POSTS AN AUDIO FED
`PLAY QUEUE MESSAGETO THE PLAY THREAD|t— 3116
`
`1536B
`
`
`TO STEP 2612
`
`FIG 31
`
`0032
`0032
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 32 of 44
`
`5,619,554
`
`AUDIO DRIVER 1514 DETECTS DTMF TONE AND|—__ 3204
`SENDS DTMF EVENT TO AUDIO THREAD 1534
`
`AUDIO THREAD 1534 SENDS PLAY STOP~U— 3208
`COMMAND TO AUDIO DRIVER 1514
`
`
`
`
`
`
`
`
`
`
`
`
`
`AUDIO DRIVER 1514 SENDS PLAY STOP EVENT
`~t— 3212
`TO AUDIO THREAD 1534
`
`AUDIO THREAD 1534 FLUSHES DATA BUFFERS
`1518, POSTS AUDIO PLAY STOPPED MESSAGE~U- 3216
`TO PLAY THREAD 1536B
`
`
`PLAY THREAD 1536B SENDS AUDIO DONE
`~“= 3220
`
`MESSAGE TO APPLICATION THREAD AND
`
`
`FLUSHES FRAME BLOCK QUEUE 1538
`
`FIG 32
`
`0033
`0033
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 33 of 44
`
`5,619,554
`
`
`
`AUDIO DRIVER 1514 RUNS OUT OF VOICE DATA
`
`AND SENDS PLAY NO MORE FRAMESEVENT TO|~ t— 3304
`
`
`AUDIO THREAD 1534
`
`AUDIO THREAD 1534 SENDS PLAY STOP
`COMMAND TO AUDIO DRIVER1514
`
`— 3308
`
`
`
`TO AUDIO THREAD 1534~~U- 3312
`
`AUDIO DRIVER 1514 SENDS PLAY STOP EVENT
`
` AUDIO THREAD 1534 FLUSHES DATA BUFFERS
`
`TO PLAY THREAD 1536B
`1518 AND POSTS AUDIO PLAY DONE MESSAGE| t-— 3316
`
`
`PLAY THREAD 1536B SENDS AUDIO DONE
`~LU 3320
`MESSAGETO MAIN VRU APPLICATION THREAD
`
`AND FLUSHES THE FRAME BLOCK QUEUE 1538
`
`FIG 33
`
`0034
`0034
`
`
`
`Apr. 8, 1997
`
`Sheet 34 of 44
`
`U.S. Patent
`
`5,619,554
`
`FIG 34
`
`0035
`0035
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 35 of 44
`
`5,619,554
`
`
`
`PLAY THREAD 1536B RECEIVES PACKET FROM
`VOICE SCRIPT SERVICE 908, PLACES THE 4504
`PACKET INTO FRAME BLOCK QUEUE 1538, AND
`SETS SEARCHING INDICATOR TO FALSE
`
`
`
`z,O
`
`
`IS THIS THE
`LAST PACKET?
`
`
`
`TO FIG 38
`STEP 3804
`
`YES
`
`TO FIG 36
`STEP 3604
`
`FIG 35
`
`0036
`0036
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 36 of 44
`
`5,619,554
`
`3604
`
`NO
`
`TO FIG 28
`STEP 2804
`
`FROM FIG 35 STEP
`3512
`
`
`
`
`
`
`TO FIG 37
`STEP 3704
`
`FIG 36
`
`0037
`0037
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 37 of 44
`
`5,619,554
`
`FROMFIG 35
`STEP 3508
`
`FROM FIG 36
`STEP 3604
`
`
`
`3704
`
`SEARCHING
`INDICATOR SET
`TO TRUE?
`
`
`
`
`
`
`
`
`
`
`
`
`RETRIEVE PACKET FROM
`VOICE SCRIPT SERVICE 908|+3708
`
`
`
`
`
`YES
`
`TO FIG 40
`STEP 4004
`
`FIG 37
`
`0038
`0038
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 38 of 44
`
`5,619,554
`
`FROM FIG 35
`
`
`
`STEP 3512
`
`
`PLAY THREAD 1536B SENDS NEXT SEARCH
`
`REQUEST TO VOICE SCRIPT SERVICE 908 AND | 304
`SETS SEARCHING INDICATOR TO TRUE
`
`
`
`
`3808
`
`
` ~U~ 3812
`
`NO
`
`TO FIG 28
`STEP 2804
`
`
`
`
`
`RETRIEVE PACKET FROM VOICE SCRIPT
`SERVICE 908
`
`TO FIG 35
`STEP 3504
`
`FIG 38
`
`0039
`0039
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 39 of 44
`
`5,619,554
`
`FROM FIG 37
`STEP 3712
`
`L- 3904
`
`
`
`
`PLAY THREAD 1536B SENDS SEARCH REQUEST
`AND SETS SEARCHING INDICATOR TO TRUE
`
` ~
`
`PACKET OF VOICE DATA FROM VOICE SCRIPT
`~UL 3908
`SERVICE 908
`
`TO FIG 35
`STEP 3504
`
`FIG 39
`
`0040
`0040
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 40 of 44
`
`5,619,554
`
`DONE
`
`FROM FIG 37
`STEP 3712
`
`4004
`
`NO—>
`
`
`
`
`PLAY THREAD 1536B SENDS SEARCH REQUEST tu
`TO VOICE SCRIPT SERVICE 908
`4008
`
`
`— 4012
`
`
`STEP 3704
`
`PLAY THREAD 1536B SETS SEARCHING
`INDICATOR TO TRUE
`
`TO FIG 37
`
`FIG 40
`
`0041
`0041
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 41 of 44
`
`5,619,554
`
`
`
`BASE PROCESS
`4102
`
`
`
`
`
`
`FINISH PROCESS
`4108
`
`COMPLETE CALL PROCESS
`4112
`
`FIG 41
`
`0042
`0042
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 42 of 44
`
`5,619,554
`
`CALL RECEIVED BY CALL PROCESSING
`~U~4202
`SYSTEM 302
`
`~~ 4206
`
`NCP 304 IDENTIFIES CALL
`
`NCP 304 SENDS OPERATOR CONTROL DATA324
`
`OPERATOR CONSOLE 308 STARTS
`BASE PROCESS4102
`
`nt
`
`TO OPERATOR CONSOLE308 ~ &~4210
`4214
`DEF RECORD 4104
`
`BASE PROCESS 4102 RETRIEVES
`~U~4218
`
`BASE PROCESS 4102 PROCESSES CALL~~t— 49.9
`
`STARTSFINISH PROCESS4108—2_4226
`
`STARTS COMPLETE CALL PROC 4112
`
`4930
`
`FIG 42
`
`0043
`0043
`
`
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 43 of 44
`
`5,619,554
`
`DEF RECORD
`4104
`
`TAG #
`
`DEF RECORD #
`
`
`
`
`
`
`
`
`2 4302
`
`~U-4304
`
`4306
`
`~U_ 4308
`
`~U_ 4304
`
`~U_ 4306
`
`U_ 4308
`
`
`
`LENGTH FIELD
`
`DATA FIELD
`
`DATA 4310
`
`TAG#
`
`LENGTH FIELD
`
`DATAFIELD
`
`FIG 43
`
`0044
`0044
`
`
`
`
`
`
`5,619,554
`
`P
`
`GENUS
`
`CLASS
`
`U.S. Patent
`
`Apr. 8, 1997
`
`Sheet 44 of 44
`
`SPECIFIC DEF RECORD
`
`TAG #
`564
`
`4406
`
`4304
`
`GROUP DEF RECORD
`
`TAG#
`4304
`
`GENERIC DEF RECORD
`
`TAG #
`
`FIG 44
`
`0045
`0045
`
`
`
`5,619,554
`
`1
`DISTRIBUTED VOICE SYSTEM AND
`METHOD
`
`BACKGROUND OF THE INVENTION
`
`1. Field of the Invention
`
`The present invention relates generally to systems and
`methods used in processing telephone calls, and more par-
`licularly, to systems and methods for allowing telephone
`carriers to offer enhanced products and services to their
`subscribers.
`2. Related Art
`
`Deregulation of the long-distance telephone industry
`spawned the growth of numerous long-distance service
`providers, each vying for a share of the United States’
`long-distance market. Thus far, the U.S. industry is domi-
`nated by three large companies: AT&T, MCI and Sprint.
`These large carriers have the resources and capital at their
`disposal to enable them to develop and provide a wide range
`of telephone-related services to their customers.
`Perhaps less known,but still extremely importantin the
`more than $50 billion interexchange U.S.
`long-distance
`market, are the smaller companies. In 1991, AT&T, MCI and
`Sprint controlled approximately 85 percent of the U.S.
`market. At this time, 12 medium-sized companies shared
`cight percent of the U.S. market. The remhining seven
`percent of the U.S. market was divided among nearly 320
`small carriers.
`
`The larger carriers are able to attract customers by offer-
`ing a full range of services in addition to direct dial calling.
`These services include, but are not limited to: operator-
`assisted calling, full-feature calling cards, and specialized
`800 numberrouting.
`Thestrategy followed by the smaller carriers in attracting
`customers has been to offer excellent service and low-cost,
`direct-dial
`long-distance calling (e.g. 1+calling). Many
`smaller carriers, for example, focus on a particular geo-
`graphic market. By understanding the market’s calling pat-
`terns, the smaller carrier can maximize crucial economies
`and canattract subscribers by offering long-distance calling
`al rates lower than those offered by larger carriers.
`Additionally, many smaller carriers use the fact that they
`are a small, local business in order to attract other local
`businesses as their clients. These carriers stress the ability to
`offer more personalized, responsive attention than some
`larger carriers may provide.
`However, many of the smaller carriers are finding it
`increasingly difficult to compete with the larger carriers by
`offering direct-dial calling alone. For these carriers to attract
`and retain customers, they need theability to offer the same
`range of features and services provided by someofthe larger
`carriers. For example, a small carrier may have a small travel
`agency as a long-distance subscriber. As the travel agency
`grows, develops more business, and hires additional sales-
`persons, the travel agency’s telephone services requirements
`also grow. The travel agency may wantto offer calling cards
`to its salespersons whotravel frequently The travel agency
`may also wantthe ability to re-route an incoming call that
`was made to their 800 number. Such re-routing allows the
`travel agency to re-route incoming 800-numbercalls to any
`telephone number, a voice mailbox, or a pager. Additionally,
`the travel agency may wantthe ability for its office workers,
`clicnts and vendors to make operator-assisted calls.
`Unfortunately, most smaller carriers can only provide
`direct-dial long distance serviceto its customers. If a smaller
`carrier wants to offer enhanced products to its customers, the
`
`30
`
`45
`
`50
`
`55
`
`60
`
`65
`
`2
`smaller carrierl has two choices. First, the smaller carrier
`may purchase its own telephone switching system and
`operator consoles. Second, the smaller carrier may purchase
`and resell the products of one ofits larger competitors.
`However, reliable, affordable, and scalable switching
`equipmentis not commercially available. If a long-distance
`carrier wants to purchase ils own equipment,the selection is
`limited to the large-scale complex switching systemsthat are
`currently available. Because these systems are costly,
`in
`most instances, the smaller carrier is forced to go through a
`larger carrier to obtain enhanced products.
`Several problems arise out of the inability of smaller
`carriers to provide enhanced calling services. Three of these
`problems are now described.
`First, the flexibility and customization options available to
`the smaller carriers in providing services are limited when
`they resell
`the products of their larger competitors. One
`reason forthis is that those products were not designed with
`the smaller carriers’ needs in mind. For example, consider a
`smallercarrier that wants to offer a productlike 800 number
`forwardingto its customers. The smaller carrier will wantits
`customers to hear customized user prompts, including the
`identification of the carrier. The smaller carrier will also
`want to establish its own prices for the service. To further
`customize its systems, the carrier may want to change the
`waythe call processes, or to add additional features such as
`the ability to route an 800 number to a voice mailbox.
`In another example,
`the smaller carrier is unable to
`provide carrier-unique operator services. The cost of pro-
`viding operator services prohibits most smaller carriers from
`hiring their own operators and purchasing the required
`equipment.
`Instead, smaller carriers typically purchase
`operator services from a competitorcarrier or from operator
`service providers.
`One drawback of having to use a competitor’s operators
`is the inability to custom brand the call. For example, when
`a customerofthe smaller carrier places an operator-assisted
`call using a competitor carrier’s operators, she hears the
`operator of the competitor carrier thank her for using the
`competitor carrier's services. For example, consider the
`following hypothetical. XYZ, a small carrier, procures
`operator services for its users from ABC,a large carrier.
`When XYZ’s user places an operator-assisted call,
`the
`operator answers the call with the greeting: “Thank you for
`using ABC.”
`Another drawback of having to use another’s operators is
`the inability to custom-tailor call processing because the
`operator services provided and the operator responses can-
`not be customized. The smaller carrier has no control over
`the operators used by the competitor carrier or the operator
`service provider.
`,
`Relying on larger carriers for providing these enhanced
`products does not give smaller carriers the flexibility they
`desire. This is because smaller carriers cannot customize the
`products they obtain from the larger carriers to provide
`unique services to their subscribers.
`A second problem is the range of services that can be
`provided by a smallercarrier is limited to the services that
`carrier can purchase from its competitors. As a result, the
`smaller carrier often cannotcreate innovative new products
`and services to offer its customers.
`
`Another problem is the smaller carrier’s inability to get
`customized fulfillment material through a competitor carrier.
`For example, calling cards provided by a larger competitor
`carrier,
`in tur to be provided to the smaller carrier’s
`customers, often bear the name of the competitor carrier.
`
`0046
`0046
`
`
`
`3
`In summary, because the small carriers must rely on the
`larger competitor carriers for advanced products and ser-
`vices such as calling cards, operator assistance, 800 service,
`audiotext, voice mail, and the like,
`the smaller carriers
`cannot offer a full range of carrier-unique and customer-
`unique products. As a result, the smaller carriers lose part of
`their ability to compete in the U.S. long-distance market.
`The problemsofflexible control of a telephone network
`are not limited to the smaller carriers or the long-distance
`industry. All
`telephone carriers would benefit from the
`ability lo offer popular, customized, value-addedservices.
`Commercially available hardware and conventional solu-
`tions to date, however, do not offer this ability.
`
`SUMMARYOF THE INVENTION
`
`The present invention is directed toward a system and
`method for recording and playback of voice scripts and
`voice messages for subscribers to a call processing system.
`Voice scripts are used to allow an automated voice response
`unit to provide instructions to and otherwise communicate
`with users of the call processing system. Voice scripts are
`recorded and storedin a voicescript service. When required,
`a voice script is retrieved from the voice script service and
`played to the user. The voice script provides a user with a
`greeting,
`instructions on how to proceed when using an
`enhancedfeature of the call processing system, and/or other
`required information. The voicescripts can be customizedto
`a particular carrier or user, and can also be provided in a
`specified language.
`When a call
`is placed by a user requiring operator
`assistance, a network control processor receives the call data
`for that call, allocates an operator console to handle the call,
`and provides information to the console allowing the con-
`sole to retrieve and play the appropriate script.
`Whena voice script or a voice message is recorded, the
`frames of audio voice are encapsulated into packets and the
`packets are stored in a database. Preferably, each packet
`contains a plurality of frames of audio voice. When a voice
`messageor voice scriptis to be played to a user 106,thefirst
`packetofthat voice script or voice messageis retrieved and
`playback begins immediately. As the first packet
`is de-
`packetized and the voice script played to the user, subse-
`quent packetsare retrieved, the data extracted therefrom and
`queuedin a buffer for playback. As a result, playback can
`begin as soon as thefirst packet is retrieved and playback
`continues withoutinterruption until the voice script or the
`voice message is completely played.
`The capability is also provided to record voice scripts
`remotely. This is accomplished through an automated voice
`response unil. To accomplish this, a user with the appropri-
`ate access can dial into a voice response unit and record a
`voice script
`in the same way that voice messages are
`recorded. As a result of this capability, carrier-customers of
`the call processing system can change their customer-spe-
`cific voice scripts without intervention by a human operator
`at the call processing system.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`The present invention is described herein with reference
`to the accompanying drawings. In the drawings, like refer-
`ence numbers indicate identical or functionally similar ele-
`ments. Additionally, the left digit(s) of each reference num-
`ber identifies the drawing in which the reference number
`first appears.
`
`25
`
`30
`
`35
`
`45
`
`50
`
`55
`
`60
`
`65
`
`0047
`0047
`
`5,619,554
`
`4
`FIG. 1 is a high-level block diagram illustrating the
`architecture of a conventional telephone switching configu-
`ration,
`
`5
`
`FIG. 2 is a high-level operational flow diagram illustrat-
`ing the mannerin which a conventional long-distance carrier
`provides long-distance telephoneservicesto a long-distance
`carrier customer.
`
`FIG. 3 is a high-level block diagram: illustrating a call
`processing system.
`FIG. 4 is a high-level block diagram illustrating the
`interface of customers and users to the call processing
`system according to one embodimentof the present inven-
`lion.
`
`FIG. 5 is a high-level operational flow diagram illustrat-
`ing the steps involved in placing and completinga call using
`the call processing system.
`FIG. 6, which comprises FIGS. 7 and 8, is a high-level
`operational flow diagramillustrating the processthatthe call
`processing system uses to process operator-assisted calls.
`FIG.7 is a high-level operational flow diagram illustrat-
`ing the process that
`the call processing system uses to
`process operator-assisted calls.
`FIG, 8, which is a continuation of FIG. 7, illustrates a
`high-level operational
`flow of the process that
`the call
`processing system uses to process operator-assisted calls.
`FIG. 9 is a block diagram illustrating a call processing
`system with distributed voice features.
`FIG. 10 is a block diagram illustrating a call processing
`system with distributed voice script capabilities.
`FIG. 11 is an operational flow diagram illustrating the
`process by which a voice script is recorded and stored in a
`voice script database.
`flow diagram illustrating a
`FIG, 12 is an operational
`manner in which a voice script is played to a user.
`FIG, 13 is a block diagram illustrating a distributed voice
`messaging system.
`FIG. 14 is an operational flow diagram illustrating steps
`associated with recording a voice message.
`FIG, 15 is a diagram illustrating a representative func-
`tional architecture of a voice data processor.
`FIG. 16 is an operational flow diagram illustrating the
`recording of a voice script or a voice message for later
`playback.
`FIG, 17 is an operational flow diagram illustrating a
`processofinitializing a voice data process.
`FIG. 18 is an operational flow diagram illustrating a
`manner in which voice data is recorded.
`
`FIG. 19 is an operational flow diagram illustrating a
`manner in which voice data is checked forsilence.
`FIG. 20 is an operational flow diagram illustrating a
`manner in which voice data is packetized.
`FIG. 21 is an operational
`flow diagram illustrating a
`manner in which packetized data is stored.
`FIG, 22 is an operational
`flow diagram illustrating a
`manner in which recording is stopped when silence is
`detected.
`FIG.23 is an operational flow diagram illustrating a stop
`recording scenario in response to a DTMF tone.
`FIG, 24 is an operational
`flow diagram illustrating a
`manner in which recording is stopped when a maximum
`time limit is exceeded.
`FIG. 25 is an operational flow diagram illustrating steps
`followed upon receipt of a RECORD STOP command.
`
`
`
`5,619,554
`
`5
`flow diagram illustrating a
`FIG. 26 is an operational
`manner in which voice data is played.
`FIG. 27 is an operational flow diagram illustrating steps
`involved with retrieving packets of the voice script to be
`played.
`FIG. 28 is an operational flow chart illustrating a manner
`in which a voice data processoris initialized.
`FIG. 29 is an operational flow diagram illustrating the
`buffering of packets in a data buffer.
`FIG, 30 is an operational flow diagram illustrating the
`playback of a voice script.
`FIG. 31 is an operational flow diagram illustrating steps
`of extracting data from packets in the frame block queue and
`storing this data in an available buffer.
`FIG. 32 is an operational flow diagram illustrating a
`method by which playback is stopped when user 106 enters
`the appropriate keystroke on the telephone keypad.
`FIG. 33 is an operational
`flow diagram illustrating a
`manner in which playback is stopped when voice data is
`exhausted (i.e. according to scenario 2).
`FIG. 34, which comprises FIGS. 35, 36, 37, 38, 39, and
`40, is an operational flow diagram