user application aoh api gp api requestsdata & events low level api calls ip nic digital t1/e1...
TRANSCRIPT
User Application
AoH API
GP API
Requests Data & Events
Low Level API Calls
IP NIC Digital T1/E1 PCI and PCIe Analog Station FXS PCIe Analog Trunk FXO PCIe
Channel
Record
Record
Play
Play
VirtualChannel
Play
Record
Which tone?
Store the detected SIT.
Detected SITs?
Detected SITs
Compare sequence of detected SITs with
defined SIT messages.
SIT messagedetected?
Report detectedSIT message.
PKX_EVENT_CHANNEL_TONE_ON
Not SIT
SIT (one of SIT0 to SIT4)
< 3
= 3
No
Yes
PKX_EVENT_CALL_ANALYSIS_DETECTED_SIT_MESSAGE(p0=channel assigned to the call; p1=SIT message; p2=user-defined message)
lengthON = measured speechON
segment length
lengthOFF=measured speechOFF
segment length
increment numberOfWords
Live Person
AnsweringMachine
AnsweringMachine
lengthON >livePersonMaxTime
lengthOFF >speechEndTime
numberOfWords >livePersonWords
Yes
Yes
No
No
No
Yes
AnsweringMachine
lengthON + previously accumulated on time >livePersonMaxTotalTime
No
Yes
SystemMedia
Processing
Group
Channel
Signaling
Conference
Call Call Progress and Analysis
System
Group
Media Processing
Configuration Files
PKX_SYSTEM_Open
GroupGroupGroup
GroupDefinitions
PKX_ SYSTEM_GetConfig
PKX_ GROUP_GetHandle
Conference
ChannelChannelChannelChannelChannelChannelChannelChannel
ChannelChannelChannelChannelChannelChannelChannelChannel
PKX_ CHANNEL_GetHandle
Call Call Call
Connection
PKX_ CHANNEL_FullDuplexConnect
PKX_ CALL_GetChannel PKX_ CONF_AddMember
System
Call
Group
Conference
Channel Connection
N
1
N1 2 0/1
0/1 0/1
N
Media Processing
N
N
0/1
Disabled
Open
Close Stop
Start
Enabled Running
Call eventscan occur at any time
Group and channel handles can be retrieved
pikagp.cfg
AoB=filenameAoH=filename
[groups]group0=group name1group1=group name2
[group name1]type=group typeproduct=aobchannels=type0
[group name2]type=group typeproduct=aohchannels=AoH group name
AoB Configuration file
type0=AoB group name1
[group type]
type1=AoB group name2
[AoB group name1]interface0=board0,port rangeinterface1=board1,port range
[AoB group name2]interface0=board1,port rangeinterface1=board2,port range
board0=board name1
[board]
board1=board name2board2=board name3
[board name3]id=board idserial=board serial number
[board name2]id=board idserial=board serial number
[board name1]id=board idserial=board serial number
AoH Configuration file
product
pikagp.cfg
[call progress analysis name]faxdetect=nomodemdetect=noansweringmachinedetect=nopattern0=pattern name1pattern1=pattern name2pattern2=pattern name3pattern3=pattern name4
[group name1]type=group typeproduct=aobchannels=type0callpa=call progress analysis name
[ring_pattern]ringpattern0=ring name 1ringpattern1=ring name 2
[ring name2]states=nstate0=durationstate1=duration
staten-1=duration
[ring name1]states=mstate0=durationstate1=duration
statem-1=duration
[pattern name1]type=pattern type [tone_detection]
tone0=291,24,485.1,-32.0tone1=72,24,1300.0,-46.0tone2=72,24,1500.0,-46.0group0=0.88,0.01,80,80,2,1,2group1=0.90,0.01,250,80,1,0
cadences=n states=m state0=2000
statem-1=4000
[tone_generation] tone0=tone name 1tone1=tone name 2tone2=tone name 3
[tone name 1]off=80 frequency1=941 amplitude1=-17.0 frequency2=1633 amplitude2=-15.0
on=80
[tonepatterns] tone_pattern0=tone pattern 1tone_pattern1=tone pattern 2tone_pattern2=tone pattern 3
[tone pattern 1] repeat=r cadences=n cadence0=0 cadence1=1 cadence2=0
cadencen-1=2
[My group element]product=aohtype=isdnchannels=isdn3
[My other group]product=aobtype=sipchannels=sip0
AoH Product Configuration File
[isdn]isdn0=isdn_interface_3isdn1=isdn_interface_7isdn2=isdn_interface_2isdn3=isdn_interface_1isdn4=isdn_interface_4
[sip]sip0=aoh_sip_group
Root Configuration File
AoB Product Configuration File
[isdn]isdn0=isdn_interface_5isdn1=isdn_interface_6isdn2=isdn_interface_8isdn3=isdn_interface_9isdn4=isdn_interface_0
[sip]sip0=aob_sip_group
Open the system object
PKX_SYSTEM_Open
Start
Retrieve group names
PKX_SYSTEM_GetConfig
Retrieve group handle
Moregroups?
PKX_GROUP_GetHandle
Retrieve group
type and number of channels
Yes
PKX_GROUP_GetConfig
No
Initializeuser
applicationinternal
structures
Start media and call
processing
PKX_SYSTEM_Start
Wait forevent
System shutdown
event?
Timeoutevent?
Processevent
PKX_SYSTEM_WaitOnEvent
Yes
No
EndYesNo
Initiatea call
Wait forevent
Switch oncall event
type
PKX_CALL_Make()
Processcall
answered
Processdialling
CALL_DIALING
Processalerting
CALL_ALERTING
Processcall
proceeding
CALL_PROCEEDING CALL_CONNECTED
Wait forevent
Switch onEvent type
Accept the call
GROUP_INCOMING_CALL
Destinationringing,answer
the original
call
CALL_ALERTING
Call destination
PKX_CALL_Make()
PKX_CALL_Answer()
PKX_CALL_Accept()
PKX_CHANNEL_FullDuplexConnect()
Originalcall
answered,connect
destinationringing to original
caller
CALL_ANSWERED
Connectthe calls
PKX_CHANNEL_HalfDuplexConnect()
CALL_CONNECTED
Wait forevent
Switch onEvent type
GROUP_INCOMING_CALL
Answer the call
PKX_CALL_Answer PKX_CHANNEL_PlayAddData PKX_CHANNEL_PlayPKX_CHANNEL_CollectDigits
Processincoming
call
CALL_ANSWERED
Wait forevent
Switch onevent type
Reject the call
GROUP_INCOMING_CALL
Release thecall
CALL_DISCONNECTED
PKX_CALL_ReleasePKX_CALL_RejectRelease the
call
Disconnectthe call
PKX_CALL_Drop
CALL_DROPPED
PKX_CALL_Release Add channelto list ofavailablechannels
CHANNEL_READY
Enablebypass
Disablebypass
Get bypassresource
information
PKX_[CHANNEL | CONF]_GetBypassInfo()
PKX_[CHANNEL | CONF]_EnableBypass ()
PerformAoH
bypassfunctions
PKX_[CHANNEL | CONF]_DisableBypass ()
PKX_PRODUCT_LIBRARY_AOH
PKH_xxx ()
GP API function
call
PerformAoH
function
AoH Thread Queue
Main Thread Queue
Retrieveevent from
queue
Processevent
Inject resultevent in
main queue
Retrieveevent from
queue
Processevent
AoH Thread
Main Thread Queue
Retrieveevent from
queue
Processevent
UserApplication
PKX_SYSTEM_InjectEvent()
PKX_SYSTEM_WaitOnEvent()
Disconnected
Idle
Connected PKX_EVENT_CALL_ANSWERED
PKX_EVENT_CHANNEL_READY
PKX_EVENT_CALL_DROPPED
PKX_CALL_Drop()Remote disconnect indication
Low level or protocolresources released
NULL
Alerting
PKX_EVENT_CHANNEL_READY
PKX_CALL_Drop()Remote disconnectindication
Detected
Offered
Dialinginformationreceived
PKX_EVENT_CALL_DISCONNECTED
PKX_CALL_Release()
PKX_EVENT_CHANNEL_IN_USE
Call detected(CAS, Trunk)
Call detected(SIP, ISDN)
PKX_CALL_Reject()
PKX_CALL_Accept
PKX_CALL_Answer()
PKX_CALL_Answer()
PKX_EVENT_CALL_ACCEPTED
PKX_EVENT_GROUP_INCOMING_CALL
PKX_EVENT_CHANNEL_IN_USE
Disconnected
Idle
Connected
Dialing
NULL
Alerting
PKX_EVENT_CHANNEL_IN_USE
PKX_EVENT_CALL_CONNECTED
PKX_EVENT_CHANNEL_READY
PKX_EVENT_CALL_DROPPED
PKX_EVENT_CALL_DISCONNECTED
PKX_EVENT_CALL_ALERTING
PKX_CALL_Make()
PKX_CALL_Make()on a channel in use
PKX_CALL_Release()
PKX_CALL_Drop()Remote disconnectindication
PKX_CALL_Drop()Remote disconnect indication
PKX_CALL_Drop()Remote disconnectindication
Remote reject
Low level or protocolresources released
Remote answeredindication
Initiating
Addressing informationbeing sent
Down Ready In use
PKX_CALL_Reject()PKX_CALL_Drop()Remote disconnect indication
PKX_EVENT_CHANNEL_DOWN PKX_EVENT_CHANNEL_READY
Low level detectionof a channel going out of service
Low level detectionof a channel returning to service
PKX_CALL_Make()PKX_EVENT_GROUP_INCOMING_CALL
PKX_EVENT_CHANNEL_IN_USE
GP Timer Thread
ProductInterface
AoHProductThread
AoH API
User Application Event Processing Thread
GP Main
GrandPrix API
User Application UI Processing Thread
GP Main
GrandPrix API
GrandPrixSIP Local User Agent
pika.com Proxy Server
pika.com Registrar Server
[email protected](5.6.7.8)
[email protected](1.2.3.4)
[email protected](5.6.7.8)
[email protected](5.6.7.8)
[email protected](5.6.7.8)
(5.6.7.8)
[email protected](5.6.7.8)
1
2
3
4 5
6
7
PKX_EVENT_GROUP_INCOMING_CALL
8
Play
PKX_ERROR_CHANNEL_AUDIO_DATA_NOT_AVAILABLE
Play
PKX_EVENT_CHANNEL_DATAREADY_PLAY
PKX_EVENT_CHANNEL_DONE_PLAY
Scenario 1 AddBuffer
(Last buffer flag set)
Scenario 2
AddBuffer
AddBuffer
AddBuffer
AddBuffer
(Last buffer flag set) Play
PKX_EVENT_CHANNEL_DATAREADY_PLAY
PKX_EVENT_CHANNEL_DATAREADY_PLAY
PKX_EVENT_CHANNEL_DATAREADY_PLAY
Scenario 4 AddBuffer
(Last buffer flag set)
PKX_EVENT_CHANNEL_DATAREADY_PLAYPKX_EVENT_CHANNEL_DATAREADY_PLAY
PKX_EVENT_CHANNEL_STOPPED_PLAY
Stop
PlayFile
PKX_EVENT_CHANNEL_DATAREADY_PLAY
PKX_EVENT_CHANNEL_DONE_PLAY
Scenario 3
Scenario 5
PKX_EVENT_CHANNEL_DATAREADY_PLAY
PKX_EVENT_CHANNEL_DONE_PLAY
AddBuffer
AddBuffer
AddBuffer
AddBuffer
(Last buffer flag set) Play
AddBuffer
(Last buffer flag set)
PKX_EVENT_CHANNEL_DATAREADY_PLAYPKX_EVENT_CHANNEL_DATAREADY_PLAY
PKX_EVENT_CHANNEL_TERM_xxx
Terminationcondition
met
Scenario 6
AddBuffer
AddBuffer
AddBuffer
AddBuffer
(Last buffer flag set) Play
AddBuffer
AddBuffer Add
Buffer
AddBuffer
(Last buffer flag set)
Play
PKX_EVENT_CHANNEL_DATAREADY_PLAY
PKX_EVENT_CHANNEL_DATAREADY_PLAY
PKX_EVENT_CHANNEL_DATAREADY_PLAY
Scenario 7
PKX_EVENT_CHANNEL_DATAREADY_PLAY
PKX_EVENT_CHANNEL_DONE_PLAY
Scenario 8
AddBuffer
AddBuffer Add
Buffer
AddBuffer
(Last buffer flag set)
Play
PKX_EVENT_CHANNEL_DATAREADY_PLAY
PKX_EVENT_CHANNEL_DATAREADY_PLAY
PKX_EVENT_CHANNEL_DATAREADY_PLAY
PKX_EVENT_CHANNEL_DATAREADY_PLAY
PKX_EVENT_CHANNEL_DONE_PLAY
PKX_EVENT_CHANNEL_UNDERFLOW_PLAY
Record
PKX_EVENT_CHANNEL_DATAREADY_ RECORD
PKX_EVENT_CHANNEL_DATAREADY_RECORD
PKX_EVENT_CHANNEL_DATAREADY _RECORD
Scenario 2RecordFile
Scenario 1
PKX_EVENT_CHANNEL_DATAREADY _RECORD
PKX_EVENT_CHANNEL_STOPPED_RECORDPKX_EVENT_CHANNEL_TERM_xxx
Terminationcondition
met
RecordGetDataRecordGetData RecordGetData
RecordGetData
StopRecord
PKX_EVENT_CHANNEL_DATAREADY_ RECORD
PKX_EVENT_CHANNEL_DATAREADY_RECORD
PKX_EVENT_CHANNEL_DATAREADY _RECORD
Scenario 3
PKX_EVENT_CHANNEL_DATAREADY _RECORD
PKX_EVENT_CHANNEL_STOPPED_RECORD
PKX_EVENT_CHANNEL_RECORD_OVERFLOW
RecordGetData
PKX_EVENT_CHANNEL_DATAREADY_ RECORD
PKX_EVENT_CHANNEL_DATAREADY_RECORD
PK
X_E
VE
NT
_CH
AN
NE
L_D
TM
FD
TM
F 1
PK
X_E
VE
NT
_CH
AN
NE
L_D
TM
FD
TM
F 2
PK
X_E
VE
NT
_CH
AN
NE
L_D
TM
FD
TM
F 3
PK
X_E
VE
NT
_CH
AN
NE
L_D
TM
FD
TM
F 4
PK
X_E
VE
NT
_CH
AN
NE
L_D
TM
FD
TM
F 5
PK
X_E
VE
NT
_CH
AN
NE
L_D
TM
FD
TM
F 6
PK
X_E
VE
NT
_CH
AN
NE
L_D
TM
FD
TM
F 7
PK
X_E
VE
NT
_CH
AN
NE
L_D
TM
FD
TM
F 8
PK
X_E
VE
NT
_CH
AN
NE
L_D
TM
FD
TM
F 9
InternalDigitBuffer 3 3 3 33 7 7
4 4 4 84 8
667
CollectDigitsmaxDigits = 3
GetDigits(numDigits = 4)
Stop
PK
X_E
VE
NT
_CH
AN
NE
L_S
TO
PPE
D_C
OL
LE
CT
_DIG
ITS
1 1 1 11 1 1 5 52 2 22 2 2 6 6
7
5
6
PK
X_E
VE
NT
_CH
AN
NE
L_T
ER
M_M
AX
_DIG
ITS
5 5 5 9
CollectDigitsmaxDigits = 5
CollectDigitsmaxDigits = 3
PK
X_E
VE
NT
_CH
AN
NE
L_T
ER
M_M
AX
_DIG
ITS
Speech Speech Speech Speech
PKX_EVENT_CHANNEL_SPEECH_ON
PKX_EVENT_CHANNEL_SPEECH_OFF
PKX_EVENT_CHANNEL_SPEECH_ON
PKX_CHANNEL_EnableSpeechDetection
PKX_CHANNEL_DisableSpeechDetection
UserApplication
GrandPrix PSTN
Ring NotificationPKX_EVENT_CHANNEL_IN_USEPKX_EVENT_GROUP_INCOMING _CALL
PKX_CALL_Accept()PKX_EVENT_CALL_ACCEPTED Optional
PKX_CALL_Answer()PKX_EVENT_CALL_ANSWERED
Initial Call(Incoming)
Offhook
PKX_CALL_Transfer()PKX_EVENT_CHANNEL_READYPKX_EVENT_CALL_HELDPKX_EVENT_CHANNEL_IN_USE
Hookflash First callnow on hold
PKX_EVENT_CALL_DIALINGStutter Dialtone
Ring notification
FSK Information
Digits
PKX_EVENT_CALL_ALERTINGConnectedPKX_EVENT_CALL_CONNECTED
Optional Call Analysis (fax, modem, SIT message, answering machine or human)
PKX_CALL_Drop(TRANSFER)PKX_EVENT_CALL_DROPPED
PKX_EVENT_CALL_DISCONNECTED
Onhook First and second call now joined on the switch
PKX_EVENT_CHANNEL_READY
PKX_CALL_Release()PKX_CALL_Release()
TransferCompletion
SupervisedCall
Transfer
First call eventSecond call function
Legend
First call function
Second call event
UserApplication
GrandPrix PSTN
Ring Notification
PKX_EVENT_CHANNEL_IN_USE
PKX_EVENT_CALL_ALERTING
PKX_CALL_Make()
PKX_EVENT_CALL_CONNECTED
Initial Call(Outgoing) Offhook
PKX_CALL_Transfer()PKX_EVENT_CHANNEL_READYPKX_EVENT_CALL_HELDPKX_EVENT_CHANNEL_IN_USE
Hookflash First callnow on hold
PKX_EVENT_CALL_DIALINGStutter Dialtone
Ring notification
Dialtone
Digits
PKX_EVENT_CALL_ALERTING
PKX_CALL_Drop(TRANSFER)PKX_EVENT_CALL_DROPPED
PKX_EVENT_CALL_DISCONNECTED
Onhook First and second call now joined on the switch
PKX_EVENT_CHANNEL_READY
PKX_CALL_Release()PKX_CALL_Release()
TransferCompletion
BlindCall
Transfer
Digits
First call eventSecond call function
Legend
First call function
Second call event
GrandPrix PSTN
PKX_EVENT_CHANNEL_IN_USE
PKX_EVENT_CALL_ALERTING
PKX_CALL_Make(call analysis enabled)
PKX_EVENT_CALL_CONNECTED
Initial Call(Outgoing)
Ring Notification
OffhookDialtoneDigits
UserApplication
PKX_EVENT_CALL_ANALYSIS_DETECTED_MODEM_FAX
Send Fax PKX_CHANNEL_FaxAddDocument
PKX_CHANNEL_FaxGetDefaultConfig
PKX_CHANNEL_FaxSend
PKX_EVENT_CHANNEL_FAX_STARTED
PKX_EVENT_CHANNEL_FAX_TRAINING
PKX_EVENT_CHANNEL_FAX_TRAINING_SUCCESS
PKX_EVENT_CHANNEL_FAX_DOCUMENT_BEGIN
PKX_EVENT_CHANNEL_FAX_PAGE_BEGIN
PKX_EVENT_CHANNEL_FAX_PAGE_END
PKX_EVENT_CHANNEL_FAX_DOCUMENT_END
PKX_EVENT_CHANNEL_FAX_DISCONNECTING
PKX_EVENT_CHANNEL_FAX_DISCONNECED
PKX_EVENT_CHANNEL_DONE_FAX
UserApplication
GrandPrix PSTN
PKX_CALL_Transfer()PKX_EVENT_CHANNEL_READYPKX_EVENT_CALL_HELDPKX_EVENT_CHANNEL_IN_USE
Hookflash First callnow on hold
PKX_EVENT_CALL_DIALINGStutter Dialtone
Ring notificationDigits
PKX_EVENT_CALL_ALERTINGConnectedPKX_EVENT_CALL_CONNECTED
PKX_CALL_Drop(NORMAL)PKX_EVENT_CALL_DROPPED
PKX_EVENT_CALL_RESUMED
Hookflash First callnow resumed
PKX_CALL_Release()
ManualResume
Fax tonePKX_EVENT_CALL_ANALYSIS_DETECTED_MODEM_FAX
First call already established
CallTransfer
First call eventSecond call function
LegendFirst call function
Second call event
UserApplication
GrandPrix PSTN
PKX_CALL_Transfer()PKX_EVENT_CHANNEL_READYPKX_EVENT_CALL_HELDPKX_EVENT_CHANNEL_IN_USE
Hookflash First callnow on hold
PKX_EVENT_CALL_DIALINGStutter Dialtone
Busytone
Digits
PKX_EVENT_CALL_DISCONNECTED
First call already established
PKX_EVENT_CALL_RESUMED Hookflash
First callnow resumed
PKX_CALL_Release()
AutomaticResume
CallTransfer
First call eventSecond call function
LegendFirst call function
Second call event
UserApplication
UserApplication
UserApplication
UserApplication
First call established
1
2
3
4
Remote Switch
Remote Switch
Remote Switch
Remote Switch
First call held
Second call established
Call transferred
UserApplication
GrandPrix PSTN
PKX_EVENT_GROUP_INCOMING_CALL
PKX_CALL_Answer (collect call blocking enabled)
Incoming Call
Answer
Wait 500 ms
Send on hook (analog) or IDLE ABCD bits (CAS/R2)
Wait 1500 ms
Wait 200 ms
Send off hook (analog) or ANSWER ABCD bits (CAS/R2)
PKX_EVENT_CALL_ANSWERED
The C.O will drop collect calls at this point.
Regular calls will continue after the double answer