Asterisk - The Open Source Telephony Project GIT-master-a358458
func_callcompletion.c
Go to the documentation of this file.
1/*
2 * Asterisk -- An open source telephony toolkit.
3 *
4 * Copyright (C) 1999 - 2010, Digium, Inc.
5 *
6 * Mark Michelson <mmichelson@digium.com>
7 *
8 * See http://www.asterisk.org for more information about
9 * the Asterisk project. Please do not directly contact
10 * any of the maintainers of this project for assistance;
11 * the project provides a web site, mailing lists and IRC
12 * channels for your use.
13 *
14 * This program is free software, distributed under the terms of
15 * the GNU General Public License Version 2. See the LICENSE file
16 * at the top of the source tree.
17 */
18
19/*! \file
20 * \brief Call Completion Supplementary Services implementation
21 * \author Mark Michelson <mmichelson@digium.com>
22 */
23
24/*** MODULEINFO
25 <support_level>core</support_level>
26 ***/
27
28#include "asterisk.h"
29
30#include "asterisk/module.h"
31#include "asterisk/channel.h"
32#include "asterisk/ccss.h"
33#include "asterisk/pbx.h"
34
35/*** DOCUMENTATION
36 <function name="CALLCOMPLETION" language="en_US">
37 <synopsis>
38 Get or set a call completion configuration parameter for a channel.
39 </synopsis>
40 <syntax>
41 <parameter name="option" required="true">
42 <para>The allowable options are:</para>
43 <enumlist>
44 <enum name="cc_agent_policy" />
45 <enum name="cc_monitor_policy" />
46 <enum name="cc_offer_timer" />
47 <enum name="ccnr_available_timer" />
48 <enum name="ccbs_available_timer" />
49 <enum name="cc_recall_timer" />
50 <enum name="cc_max_agents" />
51 <enum name="cc_max_monitors" />
52 <enum name="cc_agent_dialstring" />
53 </enumlist>
54 </parameter>
55 </syntax>
56 <description>
57 <para>The CALLCOMPLETION function can be used to get or set a call
58 completion configuration parameter for a channel. Note that setting
59 a configuration parameter will only change the parameter for the
60 duration of the call.
61
62 For more information see <filename>doc/AST.pdf</filename>.
63 For more information on call completion parameters, see <filename>configs/ccss.conf.sample</filename>.</para>
64 </description>
65 </function>
66 ***/
67
68static int acf_cc_read(struct ast_channel *chan, const char *name, char *data,
69 char *buf, size_t buf_len)
70{
71 struct ast_cc_config_params *cc_params;
72 int res;
73
74 if (!chan) {
75 ast_log(LOG_WARNING, "No channel was provided to %s function.\n", name);
76 return -1;
77 }
78
79 ast_channel_lock(chan);
80 if (!(cc_params = ast_channel_get_cc_config_params(chan))) {
82 return -1;
83 }
84
85 res = ast_cc_get_param(cc_params, data, buf, buf_len);
87 return res;
88}
89
90static int acf_cc_write(struct ast_channel *chan, const char *cmd, char *data,
91 const char *value)
92{
93 struct ast_cc_config_params *cc_params;
94 int res;
95
96 if (!chan) {
97 ast_log(LOG_WARNING, "No channel was provided to %s function.\n", cmd);
98 return -1;
99 }
100
101 ast_channel_lock(chan);
102 if (!(cc_params = ast_channel_get_cc_config_params(chan))) {
103 ast_channel_unlock(chan);
104 return -1;
105 }
106
107 res = ast_cc_set_param(cc_params, data, value);
108 ast_channel_unlock(chan);
109 return res;
110}
111
113 .name = "CALLCOMPLETION",
114 .read = acf_cc_read,
115 .write = acf_cc_write,
116};
117
118static int unload_module(void)
119{
121}
122
123static int load_module(void)
124{
126}
127
128AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Call Control Configuration Function",
129 .support_level = AST_MODULE_SUPPORT_CORE,
130 .load = load_module,
131 .unload = unload_module,
132 .requires = "ccss",
Asterisk main include file. File version handling, generic pbx functions.
#define ast_log
Definition: astobj2.c:42
Call Completion Supplementary Services API.
int ast_cc_get_param(struct ast_cc_config_params *params, const char *const name, char *buf, size_t buf_len)
get a CCSS configuration parameter, given its name
Definition: ccss.c:758
int ast_cc_set_param(struct ast_cc_config_params *params, const char *const name, const char *value)
set a CCSS configuration parameter, given its name
Definition: ccss.c:801
General Asterisk PBX channel definitions.
#define ast_channel_lock(chan)
Definition: channel.h:2922
struct ast_cc_config_params * ast_channel_get_cc_config_params(struct ast_channel *chan)
Get the CCSS parameters from a channel.
Definition: channel.c:10474
#define ast_channel_unlock(chan)
Definition: channel.h:2923
char buf[BUFSIZE]
Definition: eagi_proxy.c:66
static const char name[]
Definition: format_mp3.c:68
static int acf_cc_write(struct ast_channel *chan, const char *cmd, char *data, const char *value)
static struct ast_custom_function cc_function
static int acf_cc_read(struct ast_channel *chan, const char *name, char *data, char *buf, size_t buf_len)
static int load_module(void)
static int unload_module(void)
#define LOG_WARNING
Asterisk module definitions.
@ AST_MODFLAG_DEFAULT
Definition: module.h:315
#define AST_MODULE_INFO(keystr, flags_to_set, desc, fields...)
Definition: module.h:543
@ AST_MODULE_SUPPORT_CORE
Definition: module.h:121
#define ASTERISK_GPL_KEY
The text the key() function should return.
Definition: module.h:46
@ AST_MODULE_LOAD_SUCCESS
Definition: module.h:70
@ AST_MODULE_LOAD_DECLINE
Module has failed to load, may be in an inconsistent state.
Definition: module.h:78
Core PBX routines and definitions.
#define ast_custom_function_register(acf)
Register a custom function.
Definition: pbx.h:1558
int ast_custom_function_unregister(struct ast_custom_function *acf)
Unregister a custom function.
Main Channel structure associated with a channel.
Data structure associated with a custom dialplan function.
Definition: pbx.h:118
const char * name
Definition: pbx.h:119
int value
Definition: syslog.c:37