Dumbchan
(Created page with "=== A Truly "Dumb" Channel === First, there is nothing to configure with the dumbchan module. It is only useful for programmers developing applications with YATE. If the desc...") |
|||
(2 intermediate revisions by one user not shown) | |||
Line 1: | Line 1: | ||
− | + | First, there is nothing to configure with the dumbchan module. | |
− | + | It is only useful for programmers developing applications with YATE. If the description below doesn't make sense to you, you don't need it so don't worry about it. | |
For external modules/scripts, the dumb channel module provides Data Endpoints to and from nowhere. | For external modules/scripts, the dumb channel module provides Data Endpoints to and from nowhere. | ||
− | + | ===Example=== | |
Assume that we have an IVR script that connects to YATE via extmodule. This script does some routing, plays some audio to the caller, and responds to dtmfs. Instead of actually writing an audio player, the script-writer wanted to make use of the existing wavefile module in order to play the audio. | Assume that we have an IVR script that connects to YATE via extmodule. This script does some routing, plays some audio to the caller, and responds to dtmfs. Instead of actually writing an audio player, the script-writer wanted to make use of the existing wavefile module in order to play the audio. | ||
− | + | ==== The logic for the script==== | |
* Tell YATE that this script is interested in call.route messages | * Tell YATE that this script is interested in call.route messages | ||
* Wait for [[call.route]] messages to come in from YATE | * Wait for [[call.route]] messages to come in from YATE | ||
− | * When a call comes in (let's say on [[ | + | * When a call comes in (let's say on [[SIP_Configuration_File|Sip Channel]] sip/1), I get a call.route message. I respond to the message telling the caller that they should connect their Data Endpoints to a ''dumb/'' channel's endpoints. |
− | * The caller interprets the response as a confirmation that they should proceed with the call. | + | * The caller interprets the response as a confirmation that they should proceed with the call. Internally, the [[SIP_Configuration_File|Sip Channel]] sends a [[call.execute]] request to YATE requesting to be connected to a dumb/ channel. |
* The dumb channel basically creates a new identifier for itself, let's say dumb/1, that YATE can use for this call | * The dumb channel basically creates a new identifier for itself, let's say dumb/1, that YATE can use for this call | ||
* After processing the [[call.execute]], sip/1's Data Source is connected to dumb/1's Data Consumer and sip/1's Data Consumer is connected to dumb/1's Data Source. Since a dumb channel's Data Source ''comes from nowhere'', sip/1's Data Consumer is effectively consuming nothing - For audio channels (which most channels will be), that means ''silence''. Also, since dumb channel's Data Consumer ''goes to nowhere'', any audio that sip/1 sends goes unheard. | * After processing the [[call.execute]], sip/1's Data Source is connected to dumb/1's Data Consumer and sip/1's Data Consumer is connected to dumb/1's Data Source. Since a dumb channel's Data Source ''comes from nowhere'', sip/1's Data Consumer is effectively consuming nothing - For audio channels (which most channels will be), that means ''silence''. Also, since dumb channel's Data Consumer ''goes to nowhere'', any audio that sip/1 sends goes unheard. | ||
Line 20: | Line 20: | ||
A script author could make use of similar principles to record audio from callers. They would just instruct YATE to [[chan.attach]] a [[wavefile]] recorder to a dumb channel's Data Consumer. | A script author could make use of similar principles to record audio from callers. They would just instruct YATE to [[chan.attach]] a [[wavefile]] recorder to a dumb channel's Data Consumer. | ||
+ | |||
+ | |||
+ | '''See also''' | ||
+ | |||
+ | * [[Modules]] | ||
+ | |||
+ | [[Category:Programmers]] |
Latest revision as of 12:10, 4 November 2013
First, there is nothing to configure with the dumbchan module.
It is only useful for programmers developing applications with YATE. If the description below doesn't make sense to you, you don't need it so don't worry about it.
For external modules/scripts, the dumb channel module provides Data Endpoints to and from nowhere.
[edit] Example
Assume that we have an IVR script that connects to YATE via extmodule. This script does some routing, plays some audio to the caller, and responds to dtmfs. Instead of actually writing an audio player, the script-writer wanted to make use of the existing wavefile module in order to play the audio.
[edit] The logic for the script
- Tell YATE that this script is interested in call.route messages
- Wait for call.route messages to come in from YATE
- When a call comes in (let's say on Sip Channel sip/1), I get a call.route message. I respond to the message telling the caller that they should connect their Data Endpoints to a dumb/ channel's endpoints.
- The caller interprets the response as a confirmation that they should proceed with the call. Internally, the Sip Channel sends a call.execute request to YATE requesting to be connected to a dumb/ channel.
- The dumb channel basically creates a new identifier for itself, let's say dumb/1, that YATE can use for this call
- After processing the call.execute, sip/1's Data Source is connected to dumb/1's Data Consumer and sip/1's Data Consumer is connected to dumb/1's Data Source. Since a dumb channel's Data Source comes from nowhere, sip/1's Data Consumer is effectively consuming nothing - For audio channels (which most channels will be), that means silence. Also, since dumb channel's Data Consumer goes to nowhere, any audio that sip/1 sends goes unheard.
- When the IVR script wants to play an audio file, it sends a chan.attach message to YATE requesting that the wavefile module be attached to dumb/1's Data Source so that it no longer comes from nowhere. Any audio that the wavefile module plays will be heard by whoever is listening on sip/1's Data Consumer end (usually a person).
A script author could make use of similar principles to record audio from callers. They would just instruct YATE to chan.attach a wavefile recorder to a dumb channel's Data Consumer.
See also