Pbxassist
(Created page with "== PBX assistant module == The pbxassist module implements a fully featured PBX that can detect keystroke sequences, trigger operations and execute them. The keys for each op...") |
Revision as of 16:34, 4 October 2012
PBX assistant module
The pbxassist module implements a fully featured PBX that can detect keystroke sequences, trigger operations and execute them. The keys for each operation are described in the configuration file so they can be changed as required. Furthermore, new operations can be defined and implemented by external modules.
Messages are intercepted by pbxassist at a high priority (default 15) and the state of the assistant is updated as needed. In response to a matching key sequence a "chan.operation" message is enqueued. The module provides default handling for these messages by executing the requested operation.
Operations
The following operations are supported internally by the pbxassist module:
- transparent - Let the (possibly modified) DTMF message pass through; this operation is implemented at key matching stage and does not generate "chan.operation"
- setstate - Set the current state, guest mode and conference room name
- passthrough - Enter DTMF pass-through to peer mode
- conference - Turn the call into a conference or connect back to one
- secondcall - Make another call, disconnect current peer
- onhold - Put the peer on hold and connect to old held party or a dialtone
- returnhold - Return to a peer left on hold, hang up the current peer
- returnconf - Return to the existing conference room
- returntone - Return to a dialtone, hangup the peer if any
- dialtone - Return to a dialtone only if there is no peer or it could be put on hold
- transfer - Execute unassisted transfer operation
- dotransfer - Connect our current peer to what we have on hold, hangup this channel
- fortransfer - Enter assisted transfer - hold peer and dial another number
Every time a message for creating a new channel comes, besides the Channel itself, a ChanAssist object is created. PBXAssist is a derived class from ChanAssist, assistant for Channel. The purpose of PBXAssist is to provide the features of a SOHO(Small Office-Home Office).
The features implemented:
putting a call on hold {#*}
- This operation is permitted from within a call. If you are not in a call state and you try to do this operation you are going to hear an error tone(this is configurable) that warns you that your operation has failled and remain in the same state as before.
retrieving the call that was put on hold {*0*}
- If you don't have a call on hold you are going to hear an error tone(this is configurable). This operation is allowed in every state.
return to tone/dial {*3}
- This operation is allowed in every state.
make a conference
- (Conference PBX)
make a new call
- from a conference: you are disconnected from the conference and connected to the desired number {ex: 122** - calls to 122}; from a current call: you are connected to the desired number while your peer receives a disconnect message {ex: 122** - calls to 122}; from the dial state: you are connected to the desired number {ex: 122** - calls to 122}. This operation is allowed in every state. If the operation faills you are going to hear an error tone and remain in the same state that you were before initializing the operation
transfer a call
- Transfer PBX:
Transfer a call:
unassisted transfer
- Can be setup from the section [transfer] .It allows you to transfer your peer to the desired number while you are disconnected without any further action {122*3 – transfer to 122} This is allowed only from within a call. If you try to do this operation from within another state you are going to hear an error tone.
[transfer] trigger=\([0-9]\+\)\*3$ target=\1
assisted transfer
- Can be setup from the section [fortransfer] .You type a combination of digits representing the desired number and then a specific key (this is configurable) and you are connected to the number your peer wants while your peer is put on hold {122*4}. [dotransfer] in the configuration file trigger=\*1. Then you type a specific key (this is configurable) and your current peer and the peer you have on hold are connected, while you pass to the dial state {*1} This is allowed only from within a call. If you try to do this operation from within another state you are going to hear an error tone.
There is also a safety measure that says that if have done an operation (like put someone on hold or been in a conference) you won't be disconnected unless you hang up. (This was done in order to avoid being disconnected by someone else and lose the call you have put on hold or the right to enter a conference). If you have typed something wrong it's enough to wait a few seconds(this timeout is configurable) and the digits are going to be erased, no further action beeing necessary. In case you hang up forgeting that you have someone on hold that channel is also going to be disconnected. The ChanAssist object is keeped in a list implemented in ChanAssistList until the Channel object is distroyed.