Programmer's guide

From Yate Documentation
(Difference between revisions)
Jump to: navigation, search
(Javascript)
 
(15 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 ==
 
+
The software is written in C++ and supports scripting in various programming languages like PHP, Python and Javascript.
+
 
+
== About Yate structure ==
+
  
 
{|class="yate-table"
 
{|class="yate-table"
 
 
|class="yate-header-right"|Yate for programmers
 
|class="yate-header-right"|Yate for programmers
 
|-
 
|-
Line 16: Line 11:
 
* [[Yate Design]]
 
* [[Yate Design]]
 
Yate arhitecture and design.
 
Yate arhitecture and design.
 +
* [http://yate.null.ro/docs/ Yate C++ API]
 +
Documentation for Yate C++ API
 +
 
* [[Messages]]
 
* [[Messages]]
 
Components of messages and how messages are processed by messages handlers.
 
Components of messages and how messages are processed by messages handlers.
  
{|class="yate-page-subtitle"
+
{|class="yate-subtable"
 
|-
 
|-
 +
|class="yate-page-subtitle"|
 
* [[Standard Messages]]
 
* [[Standard Messages]]
 
All standard messages in Yate.
 
All standard messages in Yate.
 
 
* [[Message Flows]]
 
* [[Message Flows]]
 
Flow messages for an incoming call.
 
Flow messages for an incoming call.
 
|}
 
|}
 
  
 
* [[Coding style]]
 
* [[Coding style]]
 
Rules for coding Yate
 
Rules for coding Yate
* [http://yate.null.ro/docs/ Yate C++ API]
+
 
Documentation for Yate C++ API
+
* [[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 ==
+
=== Javascript ===
  
 
{|class="yate-table"
 
{|class="yate-table"
Line 47: Line 56:
 
Yate offers a embedded Javascript implementation.
 
Yate offers a embedded Javascript implementation.
  
{|
+
{|"yate-subtable"
 
|-
 
|-
* [[Javascript routing]]
+
|class="yate-page-subtitle"|
Configuring Javascript module to use routing scripts.
+
* [[Javascript module]]
 +
Configuring Javascript module to use routing or global scripts.
 
* [[Including other files]]
 
* [[Including other files]]
 
Language extensions for including other files and libraries.
 
Language extensions for including other files and libraries.
Line 69: Line 79:
 
|}
 
|}
  
== PHP ==
+
=== PHP ===
  
 
{|class="yate-table"
 
{|class="yate-table"
Line 78: Line 88:
 
* [[Yate's PHP library]]
 
* [[Yate's PHP library]]
 
The library used by PHP to comunicate with Yate.
 
The library used by PHP to comunicate with Yate.
{|
+
{|"yate-subtable"
 
+
|-
 +
|class="yate-page-subtitle"|
 
*[[IVR Setup]]
 
*[[IVR Setup]]
 
How to setup an IVR in Yate.
 
How to setup an IVR in Yate.
Line 91: Line 102:
 
|}
 
|}
  
==Python==
+
===Python===
  
 
{|class="yate-table"
 
{|class="yate-table"
Line 98: Line 109:
 
|-
 
|-
 
|class="yate-content-right"|
 
|class="yate-content-right"|
 
 
 
* [[YAYPM|YAYPM Yet Another Yate Python Module]]
 
* [[YAYPM|YAYPM Yet Another Yate Python Module]]
 
The library used by Python Module to comunicate with Yate.
 
The library used by Python Module to comunicate with Yate.
 
+
{|"yate-subtable"
<div class="yate-page-subtitle">
+
|-
 +
|class="yate-page-subtitle"|
 
* [[YAYPM:Simple IVR]]
 
* [[YAYPM:Simple IVR]]
 
How to write a simple IVR in Yate.
 
How to write a simple IVR in Yate.
Line 114: Line 124:
 
* [[YAYPM_Installation_on_windows|Using YAYPM on windows]]
 
* [[YAYPM_Installation_on_windows|Using YAYPM on windows]]
 
How to install YAYPM on Windows.
 
How to install YAYPM on Windows.
</div>
+
|}
 
+
* [[YIAX design]]
+
YIAX library in Yate.
+
* [[Mutexes and locking]]
+
Yate's implementation provides classes for mutual exclusion and locking.
+
<div 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.
+
</div>
+
 
|}
 
|}
  
Line 138: Line 137:
 
* [[Debugging in Yate]]
 
* [[Debugging in Yate]]
 
How to debug in Yate.
 
How to debug in Yate.
<div class="yate-page-subtitle">
+
{|"yate-subtable"
 +
|-
 +
|class="yate-page-subtitle"|
 +
 
 
* [[Debug Output]]
 
* [[Debug Output]]
 
How to enable debug in Yate.
 
How to enable debug in Yate.
 
* [[Debugging and, or Investigation of messages]]
 
* [[Debugging and, or Investigation of messages]]
 
You can use the msgsniff module to investigate the messages in yate.
 
You can use the msgsniff module to investigate the messages in yate.
</div>
+
|}
 
|}
 
|}
  
Line 150: Line 152:
  
 
* [[Telephony]]
 
* [[Telephony]]
 +
 +
[[Category:Programmers]] [[Category:Javascript]] [[Category:IVR]] [[Category:Messages]] [[Category:Debug]]

Latest revision as of 11:01, 10 March 2016

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.

Contents

[edit] About Yate design and implementation

Yate for programmers

Yate arhitecture and design.

Documentation for Yate C++ API

Components of messages and how messages are processed by messages handlers.

All standard messages in Yate.

Flow messages for an incoming call.

Rules for coding Yate

Yate's implementation provides classes for mutual exclusion and locking.

Provide an overview of problems caused by improper locking and how to troubleshoot them.

Some noteworthy mutexes that have program-wide implications in Yate code.

YIAX library in Yate.

[edit] Scripting languages supported by Yate

[edit] Javascript

Yate for programmers

Yate offers a embedded Javascript implementation.

Configuring Javascript module to use routing or global scripts.

Language extensions for including other files and libraries.

Object construction and prototypal inheritance in Javascript.

Messages in JavaScript

Describes implemented methods that process actions in certain time intervals.

Methods of sharing data between different Javascript instances.

Routing rules written in a script using Yate's Javascript module.

Accessing the database from javascript module.

[edit] PHP

Yate for programmers

The library used by PHP to comunicate with Yate.

How to setup an IVR in Yate.

How to write an IVR.

Test an existing PHP script on Windows.

Test an existing PHP script on Windows.

[edit] Python

Yate for programmers

The library used by Python Module to comunicate with Yate.

How to write a simple IVR in Yate.

How to write a simple IVR with Inline Callbacks in Yate.

How to bridge and then unbridge.

How to bridge and then redirect after a hangup

How to install YAYPM on Windows.

[edit] Debugging

Yate for programmers

How to debug in Yate.

How to enable debug in Yate.

You can use the msgsniff module to investigate the messages in yate.


See also

Personal tools
Namespaces

Variants
Actions
Preface
Configuration
Administrators
Developers