Asterisk - The Open Source Telephony Project  GIT-master-1f78ee9
Functions | Variables
app_ivrdemo.c File Reference

IVR Demo application. More...

#include "asterisk.h"
#include "asterisk/file.h"
#include "asterisk/channel.h"
#include "asterisk/pbx.h"
#include "asterisk/module.h"
#include "asterisk/lock.h"
#include "asterisk/app.h"

Go to the source code of this file.

Functions

 AST_MODULE_INFO_STANDARD_EXTENDED (ASTERISK_GPL_KEY, "IVR Demo Application")
 
static int ivr_demo_func (struct ast_channel *chan, void *data)
 
static int load_module (void)
 
static int skel_exec (struct ast_channel *chan, const char *data)
 
static int unload_module (void)
 

Variables

static struct ast_ivr_option __options_ivr_demo [] = { { "s", AST_ACTION_BACKGROUND, "demo-congrats" }, { "g", AST_ACTION_BACKGROUND, "demo-instruct" }, { "g", AST_ACTION_WAITOPTION }, { "1", AST_ACTION_PLAYBACK, "digits/1" }, { "1", AST_ACTION_RESTART }, { "2", AST_ACTION_MENU, &ivr_submenu }, { "2", AST_ACTION_RESTART }, { "i", AST_ACTION_PLAYBACK, "invalid" }, { "i", AST_ACTION_REPEAT, (void *)(unsigned long)2 }, { "#", AST_ACTION_EXIT }, { NULL }, }
 
static struct ast_ivr_option __options_ivr_submenu [] = { { "s", AST_ACTION_BACKGROUND, "demo-abouttotry" }, { "s", AST_ACTION_WAITOPTION }, { "1", AST_ACTION_PLAYBACK, "digits/1" }, { "1", AST_ACTION_PLAYBACK, "digits/1" }, { "1", AST_ACTION_RESTART }, { "2", AST_ACTION_PLAYLIST, "digits/2;digits/3" }, { "3", AST_ACTION_CALLBACK, ivr_demo_func }, { "4", AST_ACTION_TRANSFER, "demo|s|1" }, { "*", AST_ACTION_REPEAT }, { "#", AST_ACTION_UPONE }, { NULL } }
 
static char * app = "IVRDemo"
 
static struct ast_ivr_menu ivr_demo = { "IVR Demo Main Menu" , 0 , __options_ivr_demo }
 
static struct ast_ivr_menu ivr_submenu = { "IVR Demo Sub Menu" , 0 , __options_ivr_submenu }
 

Detailed Description

IVR Demo application.

Author
Mark Spencer marks.nosp@m.ter@.nosp@m.digiu.nosp@m.m.co.nosp@m.m

Definition in file app_ivrdemo.c.

Function Documentation

◆ AST_MODULE_INFO_STANDARD_EXTENDED()

AST_MODULE_INFO_STANDARD_EXTENDED ( ASTERISK_GPL_KEY  ,
"IVR Demo Application"   
)

Referenced by load_module().

◆ ivr_demo_func()

static int ivr_demo_func ( struct ast_channel chan,
void *  data 
)
static

Definition at line 59 of file app_ivrdemo.c.

References AST_ACTION_BACKGROUND, AST_ACTION_CALLBACK, AST_ACTION_PLAYBACK, AST_ACTION_PLAYLIST, AST_ACTION_REPEAT, AST_ACTION_RESTART, AST_ACTION_TRANSFER, AST_ACTION_UPONE, AST_ACTION_WAITOPTION, AST_IVR_DECLARE_MENU, ast_verbose(), ivr_submenu, and NULL.

60 {
61  ast_verbose("IVR Demo, data is %s!\n", (char *) data);
62  return 0;
63 }
void ast_verbose(const char *fmt,...)
Definition: extconf.c:2207
union ast_frame::@255 data

◆ load_module()

static int load_module ( void  )
static

Definition at line 122 of file app_ivrdemo.c.

References app, AST_MODULE_INFO_STANDARD_EXTENDED(), ast_register_application_xml, ASTERISK_GPL_KEY, and skel_exec().

123 {
125 }
static char * app
Definition: app_ivrdemo.c:57
static int skel_exec(struct ast_channel *chan, const char *data)
Definition: app_ivrdemo.c:95
#define ast_register_application_xml(app, execute)
Register an application using XML documentation.
Definition: module.h:626

◆ skel_exec()

static int skel_exec ( struct ast_channel chan,
const char *  data 
)
static

Definition at line 95 of file app_ivrdemo.c.

References ast_answer(), ast_ivr_menu_run(), ast_log, AST_STATE_UP, ast_strdupa, ast_strlen_zero, ivr_demo, LOG_WARNING, and tmp().

Referenced by load_module().

96 {
97  int res=0;
98  char *tmp;
99 
100  if (ast_strlen_zero(data)) {
101  ast_log(LOG_WARNING, "skel requires an argument (filename)\n");
102  return -1;
103  }
104 
105  tmp = ast_strdupa(data);
106 
107  /* Do our thing here */
108 
109  if (ast_channel_state(chan) != AST_STATE_UP)
110  res = ast_answer(chan);
111  if (!res)
112  res = ast_ivr_menu_run(chan, &ivr_demo, tmp);
113 
114  return res;
115 }
#define LOG_WARNING
Definition: logger.h:274
static int tmp()
Definition: bt_open.c:389
ast_channel_state
ast_channel states
Definition: channelstate.h:35
union ast_frame::@255 data
#define ast_log
Definition: astobj2.c:42
int ast_ivr_menu_run(struct ast_channel *c, struct ast_ivr_menu *menu, void *cbdata)
Runs an IVR menu.
Definition: main/app.c:2708
#define ast_strdupa(s)
duplicate a string in memory from the stack
Definition: astmm.h:300
#define ast_strlen_zero(a)
Definition: muted.c:73
int ast_answer(struct ast_channel *chan)
Answer a channel.
Definition: channel.c:2780
static struct ast_ivr_menu ivr_demo
Definition: app_ivrdemo.c:93

◆ unload_module()

static int unload_module ( void  )
static

Definition at line 117 of file app_ivrdemo.c.

References app, and ast_unregister_application().

118 {
120 }
static char * app
Definition: app_ivrdemo.c:57
int ast_unregister_application(const char *app)
Unregister an application.
Definition: pbx_app.c:392

Variable Documentation

◆ __options_ivr_demo

struct ast_ivr_option __options_ivr_demo[] = { { "s", AST_ACTION_BACKGROUND, "demo-congrats" }, { "g", AST_ACTION_BACKGROUND, "demo-instruct" }, { "g", AST_ACTION_WAITOPTION }, { "1", AST_ACTION_PLAYBACK, "digits/1" }, { "1", AST_ACTION_RESTART }, { "2", AST_ACTION_MENU, &ivr_submenu }, { "2", AST_ACTION_RESTART }, { "i", AST_ACTION_PLAYBACK, "invalid" }, { "i", AST_ACTION_REPEAT, (void *)(unsigned long)2 }, { "#", AST_ACTION_EXIT }, { NULL }, }
static

Definition at line 93 of file app_ivrdemo.c.

◆ __options_ivr_submenu

struct ast_ivr_option __options_ivr_submenu[] = { { "s", AST_ACTION_BACKGROUND, "demo-abouttotry" }, { "s", AST_ACTION_WAITOPTION }, { "1", AST_ACTION_PLAYBACK, "digits/1" }, { "1", AST_ACTION_PLAYBACK, "digits/1" }, { "1", AST_ACTION_RESTART }, { "2", AST_ACTION_PLAYLIST, "digits/2;digits/3" }, { "3", AST_ACTION_CALLBACK, ivr_demo_func }, { "4", AST_ACTION_TRANSFER, "demo|s|1" }, { "*", AST_ACTION_REPEAT }, { "#", AST_ACTION_UPONE }, { NULL } }
static

Definition at line 78 of file app_ivrdemo.c.

◆ app

char* app = "IVRDemo"
static

Definition at line 57 of file app_ivrdemo.c.

Referenced by load_module(), and unload_module().

◆ ivr_demo

struct ast_ivr_menu ivr_demo = { "IVR Demo Main Menu" , 0 , __options_ivr_demo }
static

Definition at line 93 of file app_ivrdemo.c.

Referenced by skel_exec().

◆ ivr_submenu

struct ast_ivr_menu ivr_submenu = { "IVR Demo Sub Menu" , 0 , __options_ivr_submenu }
static

Definition at line 78 of file app_ivrdemo.c.

Referenced by ivr_demo_func().