mirror of
https://github.com/signalwire/freeswitch.git
synced 2026-11-02 01:25:11 +00:00
add playback_terminators variable
This is valid for playback, gentones, record and speak
value may be a string of valid terminator characters, or the word 'none'
the default of * will always work unless overridden by 'none'. This is for backward compat.
<extension name="8000">
<condition field="destination_number" expression="^8000$">
<action application="answer"/>
<!--both * and # will stop the playback-->
<action application="set" data="playback_terminators=#*"/>
<action application="playback" data="/ram/swimp.raw"/>
</condition>
</extension>
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@5888 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
1 parent
b50e8f5c9a
commit
1ae9e8f6b6
2 files changed
+24
-5
No files matched your search
@@ -898,15 +898,33 @@ SWITCH_STANDARD_APP(park_function)
|
||||
*/
|
||||
static switch_status_t on_dtmf(switch_core_session_t *session, void *input, switch_input_type_t itype, void *buf, unsigned int buflen)
|
||||
{
|
||||
|
||||
|
||||
|
||||
switch (itype) {
|
||||
case SWITCH_INPUT_TYPE_DTMF:{
|
||||
case SWITCH_INPUT_TYPE_DTMF:
|
||||
{
|
||||
char *dtmf = (char *) input;
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Digits %s\n", dtmf);
|
||||
char *terminators;
|
||||
switch_channel_t *channel = switch_core_session_get_channel(session);
|
||||
char *p;
|
||||
|
||||
assert(channel);
|
||||
|
||||
if (*dtmf == '*') {
|
||||
return SWITCH_STATUS_BREAK;
|
||||
if (!(terminators = switch_channel_get_variable(channel, SWITCH_PLAYBACK_TERMINATORS_VARIABLE))) {
|
||||
terminators = "*";
|
||||
}
|
||||
if (!strcasecmp(terminators, "none")) {
|
||||
terminators = NULL;
|
||||
}
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Digits %s\n", dtmf);
|
||||
|
||||
for (p = terminators; p && *p; p++) {
|
||||
char *d;
|
||||
for (d = dtmf; d && *d; d++) {
|
||||
if (*p == *d) {
|
||||
return SWITCH_STATUS_BREAK;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
Reference in new issue
Block a user