mirror of http://gerrit.asterisk.org/asterisk
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
235 lines
7.9 KiB
235 lines
7.9 KiB
/*
|
|
* Asterisk -- An open source telephony toolkit.
|
|
*
|
|
* Copyright (C) 2013, Digium, Inc.
|
|
*
|
|
* Mark Michelson <mmichelson@digium.com>
|
|
*
|
|
* See http://www.asterisk.org for more information about
|
|
* the Asterisk project. Please do not directly contact
|
|
* any of the maintainers of this project for assistance;
|
|
* the project provides a web site, mailing lists and IRC
|
|
* channels for your use.
|
|
*
|
|
* This program is free software, distributed under the terms of
|
|
* the GNU General Public License Version 2. See the LICENSE file
|
|
* at the top of the source tree.
|
|
*/
|
|
|
|
#ifndef _FEATURES_CONFIG_H
|
|
#define _FEATURES_CONFIG_H
|
|
|
|
#include "asterisk/stringfields.h"
|
|
|
|
struct ast_channel;
|
|
|
|
/*!
|
|
* \brief General features configuration items
|
|
*/
|
|
struct ast_features_general_config {
|
|
AST_DECLARE_STRING_FIELDS(
|
|
/*! Sound played when automon or automixmon features are used */
|
|
AST_STRING_FIELD(courtesytone);
|
|
);
|
|
/*! Milliseconds allowed between digit presses when entering feature code */
|
|
unsigned int featuredigittimeout;
|
|
};
|
|
|
|
/*!
|
|
* \brief Get the general configuration options for a channel
|
|
*
|
|
* \note The channel should be locked before calling this function.
|
|
* \note The returned value has its reference count incremented.
|
|
*
|
|
* If no channel is provided, then the global features configuration is returned.
|
|
*
|
|
* \param chan The channel to get configuration options for
|
|
* \retval NULL Failed to get configuration
|
|
* \retval non-NULL The general features configuration
|
|
*/
|
|
struct ast_features_general_config *ast_get_chan_features_general_config(struct ast_channel *chan);
|
|
|
|
/*!
|
|
* \brief Feature configuration relating to transfers
|
|
*/
|
|
struct ast_features_xfer_config {
|
|
AST_DECLARE_STRING_FIELDS (
|
|
/*! Sound to play when transfer succeeds */
|
|
AST_STRING_FIELD(xfersound);
|
|
/*! Sound to play when transfer fails */
|
|
AST_STRING_FIELD(xferfailsound);
|
|
/*! DTMF sequence used to abort an attempted atxfer */
|
|
AST_STRING_FIELD(atxferabort);
|
|
/*! DTMF sequence used to complete an attempted atxfer */
|
|
AST_STRING_FIELD(atxfercomplete);
|
|
/*! DTMF sequence used to turn an attempted atxfer into a three-way call */
|
|
AST_STRING_FIELD(atxferthreeway);
|
|
);
|
|
/*! Milliseconds allowed between digit presses when dialing transfer destination */
|
|
unsigned int transferdigittimeout;
|
|
/*! Milliseconds to wait for the transfer target to answer a transferred call */
|
|
unsigned int atxfernoanswertimeout;
|
|
/*! Milliseconds to wait before attempting to re-dial the transfer target */
|
|
unsigned int atxferloopdelay;
|
|
/*! Number of times to re-attempt dialing the transfer target */
|
|
unsigned int atxfercallbackretries;
|
|
/*! Determines if the call is dropped on attended transfer failure */
|
|
unsigned int atxferdropcall;
|
|
};
|
|
|
|
/*!
|
|
* \brief Get the transfer configuration options for a channel
|
|
*
|
|
* \note The channel should be locked before calling this function.
|
|
* \note The returned value has its reference count incremented.
|
|
*
|
|
* If no channel is provided, then the global transfer configuration is returned.
|
|
*
|
|
* \param chan The channel to get configuration options for
|
|
* \retval NULL Failed to get configuration
|
|
* \retval non-NULL The transfer features configuration
|
|
*/
|
|
struct ast_features_xfer_config *ast_get_chan_features_xfer_config(struct ast_channel *chan);
|
|
|
|
/*!
|
|
* \brief Configuration relating to call pickup
|
|
*/
|
|
struct ast_features_pickup_config {
|
|
AST_DECLARE_STRING_FIELDS (
|
|
/*! Digit sequence to press to pick up a ringing call */
|
|
AST_STRING_FIELD(pickupexten);
|
|
/*! Sound to play to picker when pickup succeeds */
|
|
AST_STRING_FIELD(pickupsound);
|
|
/*! Sound to play to picker when pickup fails */
|
|
AST_STRING_FIELD(pickupfailsound);
|
|
);
|
|
};
|
|
|
|
/*!
|
|
* \brief Get the pickup configuration options for a channel
|
|
*
|
|
* \note The channel should be locked before calling this function.
|
|
* \note The returned value has its reference count incremented.
|
|
*
|
|
* If no channel is provided, then the global pickup configuration is returned.
|
|
*
|
|
* \param chan The channel to get configuration options for
|
|
* \retval NULL Failed to get configuration
|
|
* \retval non-NULL The pickup features configuration
|
|
*/
|
|
struct ast_features_pickup_config *ast_get_chan_features_pickup_config(struct ast_channel *chan);
|
|
|
|
/*!
|
|
* \brief Configuration for the builtin features
|
|
*/
|
|
struct ast_featuremap_config {
|
|
AST_DECLARE_STRING_FIELDS (
|
|
/*! Blind transfer DTMF code */
|
|
AST_STRING_FIELD(blindxfer);
|
|
/*! Disconnect DTMF code */
|
|
AST_STRING_FIELD(disconnect);
|
|
/*! Automon DTMF code */
|
|
AST_STRING_FIELD(automon);
|
|
/*! Attended Transfer DTMF code */
|
|
AST_STRING_FIELD(atxfer);
|
|
/*! One-touch parking DTMF code */
|
|
AST_STRING_FIELD(parkcall);
|
|
/*! Automixmon DTMF code */
|
|
AST_STRING_FIELD(automixmon);
|
|
);
|
|
};
|
|
|
|
/*!
|
|
* \brief Get the featuremap configuration options for a channel
|
|
*
|
|
* \note The channel should be locked before calling this function.
|
|
* \note The returned value has its reference count incremented.
|
|
*
|
|
* If no channel is provided, then the global featuremap configuration is returned.
|
|
*
|
|
* \param chan The channel to get configuration options for
|
|
* \retval NULL Failed to get configuration
|
|
* \retval non-NULL The pickup features configuration
|
|
*/
|
|
struct ast_featuremap_config *ast_get_chan_featuremap_config(struct ast_channel *chan);
|
|
|
|
/*!
|
|
* \brief Get the DTMF code for a builtin feature
|
|
*
|
|
* \note The channel should be locked before calling this function
|
|
*
|
|
* If no channel is provided, then the global setting for the option is returned.
|
|
*
|
|
* \param chan The channel to get the option from
|
|
* \param feature The short name of the feature (as it appears in features.conf)
|
|
* \param[out] buf The buffer to write the DTMF value into
|
|
* \param size The size of the buffer in bytes
|
|
* \retval 0 Success
|
|
* \retval non-zero Unrecognized builtin feature name
|
|
*/
|
|
int ast_get_builtin_feature(struct ast_channel *chan, const char *feature, char *buf, size_t len);
|
|
|
|
/*!
|
|
* \brief Get the DTMF code for a call feature
|
|
*
|
|
* \note The channel should be locked before calling this function
|
|
*
|
|
* If no channel is provided, then the global setting for the option is returned.
|
|
*
|
|
* This function is like \ref ast_get_builtin_feature except that it will
|
|
* also check the applicationmap in addition to the builtin features.
|
|
*
|
|
* \param chan The channel to get the option from
|
|
* \param feature The short name of the feature
|
|
* \param[out] buf The buffer to write the DTMF value into
|
|
* \param size The size of the buffer in bytes
|
|
* \retval 0 Success
|
|
* \retval non-zero Unrecognized feature name
|
|
*/
|
|
int ast_get_feature(struct ast_channel *chan, const char *feature, char *buf, size_t len);
|
|
|
|
#define AST_FEATURE_MAX_LEN 11
|
|
|
|
/*!
|
|
* \brief An applicationmap configuration item
|
|
*/
|
|
struct ast_applicationmap_item {
|
|
AST_DECLARE_STRING_FIELDS (
|
|
/* Name of the item */
|
|
AST_STRING_FIELD(name);
|
|
/* Name Dialplan application that is invoked by the feature */
|
|
AST_STRING_FIELD(app);
|
|
/* Data to pass to the application */
|
|
AST_STRING_FIELD(app_data);
|
|
/* Music-on-hold class to play to party on which feature is not activated */
|
|
AST_STRING_FIELD(moh_class);
|
|
);
|
|
/* DTMF key sequence used to activate the feature */
|
|
char dtmf[AST_FEATURE_MAX_LEN];
|
|
/* If true, activate on party that input the sequence, otherwise activate on the other party */
|
|
unsigned int activate_on_self;
|
|
};
|
|
|
|
/*!
|
|
* \brief Get the applicationmap for a given channel.
|
|
*
|
|
* \note The channel should be locked before calling this function.
|
|
*
|
|
* This uses the value of the DYNAMIC_FEATURES channel variable to build a
|
|
* custom applicationmap for this channel. The returned container has
|
|
* applicationmap_items inside.
|
|
*
|
|
* \param chan The channel for which applicationmap is being retrieved.
|
|
* \retval NULL An error occurred or the channel has no dynamic features.
|
|
* \retval non-NULL A container of applicationmap_items pertaining to the channel.
|
|
*/
|
|
struct ao2_container *ast_get_chan_applicationmap(struct ast_channel *chan);
|
|
|
|
void ast_features_config_shutdown(void);
|
|
|
|
int ast_features_config_reload(void);
|
|
|
|
int ast_features_config_init(void);
|
|
|
|
#endif /* _FEATURES_CONFIG_H */
|