|
|
(17 intermediate revisions by 4 users not shown) |
Line 1: |
Line 1: |
| + | Yate has 3 major API's to build applications on top of it: C API, Javascript and extmodule (you can use your favorite language like PHP, Python, Ruby, Lisp). |
| | | |
− | The most important parts of Yate are described bellow and also some libraries used to communicate with Yate.<br>
| + | But all Yate API's are quite unified, so all Yate design pages, apply to all API's. Enjoy. |
− | The purpose of Yate is to provide an extensible telephony engine. Holding the base code as simple as possible and adding functionality as needed allows one to find the best balance between desired functionality, performance and stability.
| + | |
| | | |
− | Yate is a next-generation telephony engine; while currently focused on Voice over Internet Protocol (VoIP), its power lies in its ability to be easily extended. Voice, video, data and instant messaging can all be unified under Yate's flexible routing engine, maximizing infrastructure and communications in business. | + | == About Yate design and implementation == |
| + | |
| + | {|class="yate-table" |
| + | |class="yate-header-right"|Yate for programmers |
| + | |- |
| + | |class="yate-content-right"| |
| + | * [[Yate Design]] |
| + | Yate arhitecture and design. |
| + | * [http://yate.null.ro/docs/ Yate C++ API] |
| + | Documentation for Yate C++ API |
| + | |
| + | * [[Messages]] |
| + | Components of messages and how messages are processed by messages handlers. |
| + | |
| + | {|class="yate-subtable" |
| + | |- |
| + | |class="yate-page-subtitle"| |
| + | * [[Standard Messages]] |
| + | All standard messages in Yate. |
| + | * [[Message Flows]] |
| + | Flow messages for an incoming call. |
| + | |} |
| + | |
| + | * [[Coding style]] |
| + | Rules for coding Yate |
| + | |
| + | * [[Mutexes and locking]] |
| + | Yate's implementation provides classes for mutual exclusion and locking. |
| + | {|class="yate-subtable" |
| + | |- |
| + | |class="yate-page-subtitle"| |
| + | * [[Locking Issues]] |
| + | Provide an overview of problems caused by improper locking and how to troubleshoot them. |
| + | * [[Important Mutexes]] |
| + | Some noteworthy mutexes that have program-wide implications in Yate code. |
| + | |} |
| + | * [[YIAX design]] |
| + | YIAX library in Yate. |
| + | |} |
| + | |
| + | ==Scripting languages supported by Yate == |
| + | |
| + | === Javascript === |
| | | |
− | The software is written in C++ and supports scripting in various programming languages like PHP, Python and Javascript.
| |
| {|class="yate-table" | | {|class="yate-table" |
| | | |
| |class="yate-header-right"|Yate for programmers | | |class="yate-header-right"|Yate for programmers |
| |- | | |- |
− | |class="telephony-content-right"| | + | |class="yate-content-right"| |
− | <div class="bullet"> </div><font class="yate-page-title">[[Yate Design]]</font><br/>
| + | |
− | <div class="yate-page-desc">Yate arhitecture and design.</div>
| + | |
− | <div class="bullet"> </div><font class="yate-page-title">[[Messages]]</font><br/>
| + | |
− | <div class="yate-page-desc">Components of messages and how messages are processed by messages handlers.</div>
| + | |
| | | |
− | <div class="yate-page-subtitle"><div class="bullet"> </div><font class="yate-page-title">[[Standard Messages]]</font><br/>
| + | * [[Javascript]] |
− | <div class="yate-page-desc">All standard messages in Yate.</div>
| + | Yate offers a embedded Javascript implementation. |
− | <div class="bullet"> </div><font class="yate-page-title">[[Message Flows]]</font><br/>
| + | |
− | <div class="yate-page-desc">Flow messages for an incoming call.</div></div>
| + | |
| | | |
− | <div class="bullet"> </div><font class="yate-page-title">[[Coding style]]</font><br/>
| + | {|"yate-subtable" |
− | <div class="yate-page-desc">Rules for coding Yate</div>
| + | |- |
− | <div class="bullet"> </div><font class="yate-page-title">[http://yate.null.ro/docs/ Yate C++ API]</font><br/>
| + | |class="yate-page-subtitle"| |
− | <div class="yate-page-desc">Documentation for Yate C++ API</div>
| + | * [[Javascript module]] |
| + | Configuring Javascript module to use routing or global scripts. |
| + | * [[Including other files]] |
| + | Language extensions for including other files and libraries. |
| + | * [[Constructors and prototypes]] |
| + | Object construction and prototypal inheritance in Javascript. |
| + | * [[Messages in JS]] |
| + | Messages in JavaScript |
| + | * [[Time events in Javascript]] |
| + | Describes implemented methods that process actions in certain time intervals. |
| + | * [[Sharing data in Javascript]] |
| + | Methods of sharing data between different Javascript instances. |
| + | * [[How to do routing using javascript]] |
| + | Routing rules written in a script using Yate's Javascript module. |
| + | * [[How to access a database from Yate's Javascript module]] |
| + | Accessing the database from javascript module. |
| + | |} |
| | | |
− | <div class="bullet"> </div><font class="yate-page-title">[[Javascript]]</font><br/>
| + | |} |
− | <div class="yate-page-desc">Yate offers a embedded Javascript implementation.</div>
| + | |
| | | |
− | <div class="yate-page-subtitle"><div class="bullet"> </div><font class="yate-page-title">[[Javascript routing]]</font><br/>
| + | === PHP === |
− | <div class="yate-page-desc">Configuring Javascript module to use routing scripts.</div>
| + | |
| | | |
− | <div class="bullet"> </div><font class="yate-page-title">[[Including other files]]</font><br/>
| + | {|class="yate-table" |
− | <div class="yate-page-desc">Language extensions for including other files and libraries.</div>
| + | |
− | <div class="bullet"> </div><font class="yate-page-title">[[Constructors and prototypes]]</font><br/>
| + | |
− | <div class="yate-page-desc">Object construction and prototypal inheritance in Javascript.</div>
| + | |
− | <div class="bullet"> </div><font class="yate-page-title">[[Messages in JS]]</font><br/>
| + | |
− | <div class="yate-page-desc">Messages in JavaScript</div>
| + | |
− | <div class="bullet"> </div><font class="yate-page-title">[[Time events in Javascript]]</font><br/>
| + | |
− | <div class="yate-page-desc">Describes implemented methods that process actions in certain time intervals.</div>
| + | |
− | <div class="bullet"> </div><font class="yate-page-title">[[Sharing data in Javascript]]</font><br/>
| + | |
− | <div class="yate-page-desc">Methods of sharing data between different Javascript instances.</div>
| + | |
| | | |
− | <div class="bullet"> </div><font class="yate-page-title">[[How to do routing using javascript]]</font><br/>
| + | |class="yate-header-right"|Yate for programmers |
− | <div class="yate-page-desc">Routing rules written in a script using Yate's Javascript module.</div>
| + | |- |
− | <div class="bullet"> </div><font class="yate-page-title">[[How to access a database from Yate's Javascript module]]</font><br/>
| + | |class="yate-content-right"| |
− | <div class="yate-page-desc">Accessing the database from javascript module.</div>
| + | * [[Yate's PHP library]] |
| + | The library used by PHP to comunicate with Yate. |
| + | {|"yate-subtable" |
| + | |- |
| + | |class="yate-page-subtitle"| |
| + | *[[IVR Setup]] |
| + | How to setup an IVR in Yate. |
| + | * [[Writing an IVR]] |
| + | How to write an IVR. |
| + | * [[Using Yate's PHP library on windows]] |
| + | Test an existing PHP script on Windows. |
| + | * [[How To For External Modules In Telnet]] |
| + | Test an existing PHP script on Windows. |
| + | |} |
| + | |} |
| | | |
− | </div>
| + | ===Python=== |
| | | |
− | <div class="bullet"> </div><font class="yate-page-title">[[Yate's PHP library]]</font><br/>
| + | {|class="yate-table" |
− | <div class="yate-page-desc">The library used by PHP to comunicate with Yate.</div>
| + | |
| | | |
− | <div class="yate-page-subtitle"><div class="bullet"> </div><font class="yate-page-title">[[IVR Setup]]</font><br/>
| + | |class="yate-header-right"|Yate for programmers |
− | <div class="yate-page-desc">How to setup an IVR in Yate.</div>
| + | |- |
| + | |class="yate-content-right"| |
| + | * [[YAYPM|YAYPM Yet Another Yate Python Module]] |
| + | The library used by Python Module to comunicate with Yate. |
| + | {|"yate-subtable" |
| + | |- |
| + | |class="yate-page-subtitle"| |
| + | * [[YAYPM:Simple IVR]] |
| + | How to write a simple IVR in Yate. |
| + | * [[YAYPM:Simple IVR with Inline Callbacks]] |
| + | How to write a simple IVR with Inline Callbacks in Yate. |
| + | * [[YAYPM:Bridge and then unbridge]] |
| + | How to bridge and then unbridge. |
| + | * [[YAYPM:Bridge and then redirect after a hangup]] |
| + | How to bridge and then redirect after a hangup |
| + | * [[YAYPM_Installation_on_windows|Using YAYPM on windows]] |
| + | How to install YAYPM on Windows. |
| + | |} |
| + | |} |
| | | |
− | <div class="bullet"> </div><font class="yate-page-title">[[Writing an IVR]]</font><br/>
| + | ==Debugging == |
− | <div class="yate-page-desc">How to write an IVR.</div>
| + | |
| | | |
− | <div class="bullet"> </div><font class="yate-page-title">[[Using Yate's PHP library on windows]]</font><br/>
| + | {|class="yate-table" |
− | <div class="yate-page-desc">Test an existing PHP script on Windows.</div>
| + | |
− | <div class="bullet"> </div><font class="yate-page-title">[[How To For External Modules In Telnet]]</font><br/>
| + | |
− | <div class="yate-page-desc">Test an existing PHP script on Windows.</div>
| + | |
− | </div>
| + | |
− | <div class="bullet"> </div><font class="yate-page-title">[[YAYPM|YAYPM Yet Another Yate Python Module]]</font><br/>
| + | |
− | <div class="yate-page-desc">The library used by Python Module to comunicate with Yate.</div>
| + | |
| | | |
− | <div class="yate-page-subtitle"><div class="bullet"> </div><font class="yate-page-title">[[YAYPM:Simple IVR]]</font><br/>
| + | |class="yate-header-right"|Yate for programmers |
− | <div class="yate-page-desc">How to write a simple IVR in Yate.</div>
| + | |- |
− | <div class="bullet"> </div><font class="yate-page-title">[[YAYPM:Simple IVR with Inline Callbacks]]</font><br/>
| + | |class="yate-content-right"| |
− | <div class="yate-page-desc">How to write a simple IVR with Inline Callbacks in Yate.</div>
| + | |
− | <div class="bullet"> </div><font class="yate-page-title">[[YAYPM:Bridge and then unbridge]]</font><br/>
| + | * [[Debugging in Yate]] |
− | <div class="yate-page-desc">How to bridge and then unbridge.</div>
| + | How to debug in Yate. |
− | <div class="bullet"> </div><font class="yate-page-title">[[YAYPM:Bridge and then redirect after a hangup]]</font><br/>
| + | {|"yate-subtable" |
− | <div class="yate-page-desc">How to bridge and then redirect after a hangup</div>
| + | |- |
− | <div class="bullet"> </div><font class="yate-page-title">[[YAYPM_Installation_on_windows|Using YAYPM on windows]]</font><br/>
| + | |class="yate-page-subtitle"| |
− | <div class="yate-page-desc">How to install YAYPM on Windows.</div></div>
| + | |
| | | |
− | <div class="bullet"> </div><font class="yate-page-title">[[YIAX design]]</font><br/>
| + | * [[Debug Output]] |
− | <div class="yate-page-desc">YIAX library in Yate.</div>
| + | How to enable debug in Yate. |
− | <div class="bullet"> </div><font class="yate-page-title">[[Mutexes and locking]]</font><br/>
| + | * [[Debugging and, or Investigation of messages]] |
− | <div class="yate-page-desc">Yate's implementation provides classes for mutual exclusion and locking.</div>
| + | You can use the msgsniff module to investigate the messages in yate. |
− | <div class="yate-page-subtitle"><div class="bullet"> </div><font class="yate-page-title">[[Locking Issues]]</font><br/>
| + | |} |
− | <div class="yate-page-desc">Provide an overview of problems caused by improper locking and how to troubleshoot them.</div>
| + | |
− | <div class="bullet"> </div><font class="yate-page-title">[[Important Mutexes]]</font>
| + | |
− | <div class="yate-page-desc">Some noteworthy mutexes that have program-wide implications in Yate code.</div>
| + | |
− | </div>
| + | |
− | <div class="bullet"> </div><font class="yate-page-title">[[Debugging in Yate]]</font><br/>
| + | |
− | <div class="yate-page-desc">How to debug in Yate.</div>
| + | |
− | <div class="yate-page-subtitle">
| + | |
− | <div class="bullet"> </div><font class="yate-page-title">[[Debug Output]]</font><br/>
| + | |
− | <div class="yate-page-desc">How to enable debug in Yate.</div>
| + | |
− | <div class="bullet"> </div><font class="yate-page-title">[[Debugging and, or Investigation of messages]]</font><br/>
| + | |
− | <div class="yate-page-desc">You can use the msgsniff module to investigate the messages in yate.</div>
| + | |
− | </div>
| + | |
| |} | | |} |
| | | |
Line 101: |
Line 152: |
| | | |
| * [[Telephony]] | | * [[Telephony]] |
| + | |
| + | [[Category:Programmers]] [[Category:Javascript]] [[Category:IVR]] [[Category:Messages]] [[Category:Debug]] |
Yate has 3 major API's to build applications on top of it: C API, Javascript and extmodule (you can use your favorite language like PHP, Python, Ruby, Lisp).
But all Yate API's are quite unified, so all Yate design pages, apply to all API's. Enjoy.