Improve groupcount handling (bug #2529) thanks!
[asterisk/asterisk.git] / include / asterisk / app.h
index bcbccb7..6b11c65 100755 (executable)
@@ -4,9 +4,9 @@
  * Application convenience functions, designed to give consistent
  * look and feel to asterisk apps.
  * 
- * Copyright (C) 1999, Mark Spencer
+ * Copyright (C) 1999-2004, Digium, Inc.
  *
- * Mark Spencer <markster@linux-support.net>
+ * Mark Spencer <markster@digium.com>
  *
  * This program is free software, distributed under the terms of
  * the GNU General Public License
@@ -40,7 +40,47 @@ extern int ast_app_getdata_full(struct ast_channel *c, char *prompt, char *s, in
 int ast_app_getvoice(struct ast_channel *c, char *dest, char *dstfmt, char *prompt, int silence, int maxsec);
 
 //! Determine if a given mailbox has any voicemail
-extern int ast_app_has_voicemail(char *mailbox);
+extern int ast_app_has_voicemail(const char *mailbox);
+
+//! Determine number of new/old messages in a mailbox
+extern int ast_app_messagecount(const char *mailbox, int *newmsgs, int *oldmsgs);
+
+//! Safely spawn an external program while closingn file descriptors
+extern int ast_safe_system(const char *s);
+
+//! Send DTMF to chan (optionally entertain peer)  
+int ast_dtmf_stream(struct ast_channel *chan, struct ast_channel *peer, char *digits, int between);
+
+//! Stream a filename (or file descriptor) as a generator.
+int ast_linear_stream(struct ast_channel *chan, const char *filename, int fd, int allowoverride);
+
+//! Stream a file with fast forward, pause, reverse.
+int ast_control_streamfile(struct ast_channel *chan, char *file, char *fwd, char *rev, char *stop, char *pause, int skipms);
+
+//! Play a stream and wait for a digit, returning the digit that was pressed
+int ast_play_and_wait(struct ast_channel *chan, char *fn);
+
+//! Record a file for a max amount of time (in seconds), in a given list of formats separated by '|', outputting the duration of the recording, and with a maximum
+//  permitted silence time in milliseconds of 'maxsilence' under 'silencethreshold' or use '-1' for either or both parameters for defaults.
+int ast_play_and_record(struct ast_channel *chan, char *playfile, char *recordfile, int maxtime_sec, char *fmt, int *duration, int silencethreshold, int maxsilence_ms);
+
+//! Record a message and prepend the message to the given record file after playing the optional playfile (or a beep), storing the duration in 'duration' and with a maximum
+//  permitted silence time in milliseconds of 'maxsilence' under 'silencethreshold' or use '-1' for either or both parameters for defaults.
+int ast_play_and_prepend(struct ast_channel *chan, char *playfile, char *recordfile, int maxtime_sec, char *fmt, int *duration, int beep, int silencethreshold, int maxsilence_ms);
+
+#define GROUP_CATEGORY_PREFIX "GROUP"
+
+//! Split a group string into group and category, returning a default category if none is provided.
+int ast_app_group_split_group(char *data, char *group, int group_max, char *category, int category_max);
+
+//! Set the group for a channel, splitting the provided data into group and category, if specified.
+int ast_app_group_set_channel(struct ast_channel *chan, char *data);
+
+//! Get the current channel count of the specified group and category.
+int ast_app_group_get_count(char *group, char *category);
+
+//! Get the current channel count of all groups that match the specified pattern and category.
+int ast_app_group_match_get_count(char *groupmatch, char *category);
 
 #if defined(__cplusplus) || defined(c_plusplus)
 }