Asterisk - The Open Source Telephony Project GIT-master-8924258
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Macros Modules Pages
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 <since>
38 <version>1.8.0</version>
39 </since>
40 <synopsis>
41 Get or set a call completion configuration parameter for a channel.
42 </synopsis>
43 <syntax>
44 <parameter name="option" required="true">
45 <para>The allowable options are:</para>
46 <enumlist>
47 <enum name="cc_agent_policy" />
48 <enum name="cc_monitor_policy" />
49 <enum name="cc_offer_timer" />
50 <enum name="ccnr_available_timer" />
51 <enum name="ccbs_available_timer" />
52 <enum name="cc_recall_timer" />
53 <enum name="cc_max_agents" />
54 <enum name="cc_max_monitors" />
55 <enum name="cc_agent_dialstring" />
56 </enumlist>
57 </parameter>
58 </syntax>
59 <description>
60 <para>The CALLCOMPLETION function can be used to get or set a call
61 completion configuration parameter for a channel. Note that setting
62 a configuration parameter will only change the parameter for the
63 duration of the call.
64
65 For more information see <filename>doc/AST.pdf</filename>.
66 For more information on call completion parameters, see <filename>configs/ccss.conf.sample</filename>.</para>
67 </description>
68 </function>
69 ***/
70
71static int acf_cc_read(struct ast_channel *chan, const char *name, char *data,
72 char *buf, size_t buf_len)
73{
74 struct ast_cc_config_params *cc_params;
75 int res;
76
77 if (!chan) {
78 ast_log(LOG_WARNING, "No channel was provided to %s function.\n", name);
79 return -1;
80 }
81
82 ast_channel_lock(chan);
83 if (!(cc_params = ast_channel_get_cc_config_params(chan))) {
85 return -1;
86 }
87
88 res = ast_cc_get_param(cc_params, data, buf, buf_len);
90 return res;
91}
92
93static int acf_cc_write(struct ast_channel *chan, const char *cmd, char *data,
94 const char *value)
95{
96 struct ast_cc_config_params *cc_params;
97 int res;
98
99 if (!chan) {
100 ast_log(LOG_WARNING, "No channel was provided to %s function.\n", cmd);
101 return -1;
102 }
103
104 ast_channel_lock(chan);
105 if (!(cc_params = ast_channel_get_cc_config_params(chan))) {
106 ast_channel_unlock(chan);
107 return -1;
108 }
109
110 res = ast_cc_set_param(cc_params, data, value);
111 ast_channel_unlock(chan);
112 return res;
113}
114
116 .name = "CALLCOMPLETION",
117 .read = acf_cc_read,
118 .write = acf_cc_write,
119};
120
121static int unload_module(void)
122{
124}
125
126static int load_module(void)
127{
129}
130
131AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Call Control Configuration Function",
132 .support_level = AST_MODULE_SUPPORT_CORE,
133 .load = load_module,
134 .unload = unload_module,
135 .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:764
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:807
General Asterisk PBX channel definitions.
#define ast_channel_lock(chan)
Definition: channel.h:2970
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:10500
#define ast_channel_unlock(chan)
Definition: channel.h:2971
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:329
#define AST_MODULE_INFO(keystr, flags_to_set, desc, fields...)
Definition: module.h:557
@ 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:1559
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