Skip to end of metadata
Go to start of metadata
You are viewing an old version of this page. View the current version. Compare with Current  |   View Page History
New Proposal Template
No placeholders allowed!
Please do not create placeholders. Wait until you have sufficient content to replace all sample data in the proposal template before creating your proposal document.

This placeholder should not be considered as such.

<ac:macro ac:name="unmigrated-inline-wiki-markup"><ac:plain-text-body><![CDATA[

Zend Framework: Zend\Telephony\Asterisk Component Proposal

Proposed Component Name Zend\Telephony\Asterisk
Developer Notes\Telephony\Asterisk
Proposers Dolf Schimmel irc email
Zend Liaison TBD
Revision 0.1 - 39 December 2010: Initial Draft. (wiki revision: 3)

Table of Contents

1. Overview

Zend_Asterisk is a component that provides means for easy communication with an Asterisk PBX

2. References

3. Component Requirements, Constraints, and Acceptance Criteria

  • This component will provide means to communicate with the Asterisk PBX using its AGI IPC protocol.
  • This component will provide means to manage an instance of Asterisk PBX using its AMI protocol/socket.
  • This component may provide an alternative or supplement to AJAM.
  • This component may (at a later stage) provide means to communicate with Asterisk's channel-API, its application API, its codec translator API and its file format API.
  • This component may correctly reads a developers mind for intent and generate the right configuration file.
  • This component, and its documentation will assume basic knowledge of Telephony systems and Asterisk in specific.

4. Dependencies on Other Framework Components

  • Zend\Exception

5. Theory of Operation

The component is instantiated with a mind-link that ...

6. Milestones / Tasks

  • Milestone 0: [DONE] Thought a bit about it
  • Milestone 1: design notes will be published here.
  • Milestone 2: Working prototype checked into the incubator.
  • Milestone 3: Proposal is announced to both the Asterisk and ZF community.
  • Milestone 4: Proposal is accepted
  • Milestone 5: ZF rocks even more.

7. Class Index

  • Zend\Telephony\Asterisk\Agi
  • Zend\Telephony\Asterisk\Ami
  • Relevant exception classes

8. Use Cases

deck: Please ensure that the composition-setup macro is placed before this location.

For now I will only assume usage of the AGI interface. The story is that someone calls an asterisk
server (#1). The caller will hear a message describing what options they can choose from (#6).
Then this person wants to hear this message again (#9). When listening to it again (#11), he
chooses option 3 (sales) (#13), but no one is present (#17). As such, the caller is redirected to a
voicemail (#19). After having recorded the voicemail (#24) sales is sent an email that a voicemail is awaiting them (#24).
PHP shuts down (#26).

Asterisk: PHP
1. Asterisk receives a phone call
2. Asterisk starts the php application
3. PHP is started up.
4. Asterisk sends all the details of the
conversation (caller id, protocols used,
number dialed, etc)
5. The PHP app reads (stdin) all the parameters from stdin
5b. PHP tells asterisk to answer the call
6. The PHP app tells (stdout) asterisk to play ~/welcome.wav
7. Asterisk begins playing the welcome.wav file
8. PHP tells (stdout) asterisk its awaiting user input for a certain
amount of time (the length/duration of the wav file)
9. Asterisk doesn't receive any digits from the caller
As such tells php no numbers were pressed
10. The PHP app tells asterisk to play ~/welcome.wav (again)
11. Asterisk begins playing the welcome.wav file
12. PHP tells Asterisk it's awaiting user input.
and begin to wait for input on STDIN
13. Asterisk receives the number 3.
13. Asterisk tells php that the number 3 was pressed
14. PHP receives the nummero 3 from asterisk (STDIN)
15. PHP tells asterisk to forward the call/channel to
the extension of sales
16. Asterisk begins dialling the extension
17. PHP doesn't get confirmation the extension is answered.
tells Asterisk to stop dialling the extension
18 Asterisk stops dialling the extension
confirms the stop to php's stdin.
19. PHP tells asterisk to play ~/voicemail.wav
20. Asterisk plays the given file
21. When the file is done playing, Asterisk
confirms that to php.
22. PHP receives over STDIN that the file was done playing.
23. PHP tells to receive any further input to voicemail-xxx.wav
24. The user hangs up, asterisk tells php about it
25. PHP emails the salesmanager that there's a voicemail awaiting for him.
26. PHP tells asterisk (STDOUT) to close the channel
27. Asterisk hangs up PHP quits

Card 2 contents.

deck: Please ensure that the composition-setup macro is placed before this location.

9. Class Skeletons


Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.