#include "asterisk.h"
#include "asterisk/pbx.h"
#include "asterisk/module.h"
#include "asterisk/app.h"
#include "asterisk/manager.h"
#include "asterisk/channel.h"
Go to the source code of this file.
Functions | |
static void | __reg_module (void) |
static void | __unreg_module (void) |
static int | load_module (void) |
static int | manager_play_dtmf (struct mansession *s, const struct message *m) |
static int | senddtmf_exec (struct ast_channel *chan, const char *vdata) |
static int | unload_module (void) |
Variables | |
static struct ast_module_info | __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_LOAD_ORDER , .description = "Send DTMF digits Application" , .key = "This paragraph is copyright (c) 2006 by Digium, Inc. \In order for your module to load, it must return this \key via a function called \"key\". Any code which \includes this paragraph must be licensed under the GNU \General Public License version 2 or later (at your \option). In addition to Digium's general reservations \of rights, Digium expressly reserves the right to \allow other parties to license this paragraph under \different terms. Any use of Digium, Inc. trademarks or \logos (including \"Asterisk\" or \"Digium\") without \express written permission of Digium, Inc. is prohibited.\n" , .buildopt_sum = "8586c2a7d357cb591cc3a6607a8f62d1" , .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_DEFAULT, } |
static char * | app = "SendDTMF" |
static struct ast_module_info * | ast_module_info = &__mod_info |
Definition in file app_senddtmf.c.
static void __reg_module | ( | void | ) | [static] |
Definition at line 175 of file app_senddtmf.c.
static void __unreg_module | ( | void | ) | [static] |
Definition at line 175 of file app_senddtmf.c.
static int load_module | ( | void | ) | [static] |
Definition at line 165 of file app_senddtmf.c.
References ast_manager_register_xml, ast_register_application_xml, EVENT_FLAG_CALL, manager_play_dtmf(), and senddtmf_exec().
00166 { 00167 int res; 00168 00169 res = ast_manager_register_xml("PlayDTMF", EVENT_FLAG_CALL, manager_play_dtmf); 00170 res |= ast_register_application_xml(app, senddtmf_exec); 00171 00172 return res; 00173 }
static int manager_play_dtmf | ( | struct mansession * | s, | |
const struct message * | m | |||
) | [static] |
Definition at line 129 of file app_senddtmf.c.
References ast_channel_get_by_name(), ast_channel_unref, ast_senddigit(), ast_strlen_zero(), astman_get_header(), astman_send_ack(), and astman_send_error().
Referenced by load_module().
00130 { 00131 const char *channel = astman_get_header(m, "Channel"); 00132 const char *digit = astman_get_header(m, "Digit"); 00133 struct ast_channel *chan; 00134 00135 if (!(chan = ast_channel_get_by_name(channel))) { 00136 astman_send_error(s, m, "Channel not found"); 00137 return 0; 00138 } 00139 00140 if (ast_strlen_zero(digit)) { 00141 astman_send_error(s, m, "No digit specified"); 00142 chan = ast_channel_unref(chan); 00143 return 0; 00144 } 00145 00146 ast_senddigit(chan, *digit, 0); 00147 00148 chan = ast_channel_unref(chan); 00149 00150 astman_send_ack(s, m, "DTMF successfully queued"); 00151 00152 return 0; 00153 }
static int senddtmf_exec | ( | struct ast_channel * | chan, | |
const char * | vdata | |||
) | [static] |
Definition at line 85 of file app_senddtmf.c.
References args, AST_APP_ARG, ast_app_parse_timelen(), ast_autoservice_start(), ast_autoservice_stop(), ast_channel_get_by_name(), ast_channel_unref, AST_DECLARE_APP_ARGS, ast_dtmf_stream(), ast_log(), AST_STANDARD_APP_ARGS, ast_strdupa, ast_strlen_zero(), LOG_WARNING, and TIMELEN_MILLISECONDS.
Referenced by load_module().
00086 { 00087 int res = 0; 00088 char *data; 00089 int dinterval = 0, duration = 0; 00090 struct ast_channel *dchan; 00091 AST_DECLARE_APP_ARGS(args, 00092 AST_APP_ARG(digits); 00093 AST_APP_ARG(dinterval); 00094 AST_APP_ARG(duration); 00095 AST_APP_ARG(channel); 00096 ); 00097 00098 if (ast_strlen_zero(vdata)) { 00099 ast_log(LOG_WARNING, "SendDTMF requires an argument (digits or *#aAbBcCdD)\n"); 00100 return 0; 00101 } 00102 00103 dchan = chan; 00104 00105 data = ast_strdupa(vdata); 00106 AST_STANDARD_APP_ARGS(args, data); 00107 00108 if (!ast_strlen_zero(args.dinterval)) { 00109 ast_app_parse_timelen(args.dinterval, &dinterval, TIMELEN_MILLISECONDS); 00110 } 00111 if (!ast_strlen_zero(args.duration)) { 00112 ast_app_parse_timelen(args.duration, &duration, TIMELEN_MILLISECONDS); 00113 } 00114 if (!ast_strlen_zero(args.channel)) { 00115 dchan = ast_channel_get_by_name(args.channel); 00116 } 00117 if (dchan != chan) { 00118 ast_autoservice_start(chan); 00119 } 00120 res = ast_dtmf_stream(dchan, NULL, args.digits, dinterval <= 0 ? 250 : dinterval, duration); 00121 if (dchan != chan) { 00122 ast_autoservice_stop(chan); 00123 ast_channel_unref(dchan); 00124 } 00125 00126 return res; 00127 }
static int unload_module | ( | void | ) | [static] |
Definition at line 155 of file app_senddtmf.c.
References ast_manager_unregister(), and ast_unregister_application().
00156 { 00157 int res; 00158 00159 res = ast_unregister_application(app); 00160 res |= ast_manager_unregister("PlayDTMF"); 00161 00162 return res; 00163 }
struct ast_module_info __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_LOAD_ORDER , .description = "Send DTMF digits Application" , .key = "This paragraph is copyright (c) 2006 by Digium, Inc. \In order for your module to load, it must return this \key via a function called \"key\". Any code which \includes this paragraph must be licensed under the GNU \General Public License version 2 or later (at your \option). In addition to Digium's general reservations \of rights, Digium expressly reserves the right to \allow other parties to license this paragraph under \different terms. Any use of Digium, Inc. trademarks or \logos (including \"Asterisk\" or \"Digium\") without \express written permission of Digium, Inc. is prohibited.\n" , .buildopt_sum = "8586c2a7d357cb591cc3a6607a8f62d1" , .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_DEFAULT, } [static] |
Definition at line 175 of file app_senddtmf.c.
char* app = "SendDTMF" [static] |
Definition at line 83 of file app_senddtmf.c.
struct ast_module_info* ast_module_info = &__mod_info [static] |
Definition at line 175 of file app_senddtmf.c.