[commit] r1611 - in freeswitch/branches/mishehu/src/mod: applications/mod_rss loggers/mod_cdr
Author: mishehu Date: Mon Jun 12 17:23:14 2006 New Revision: 1611 Modified: freeswitch/branches/mishehu/src/mod/applications/mod_rss/mod_rss.c freeswitch/branches/mishehu/src/mod/loggers/mod_cdr/anthmcdr.cpp freeswitch/branches/mishehu/src/mod/loggers/mod_cdr/basecdr.cpp freeswitch/branches/mishehu/src/mod/loggers/mod_cdr/mysqlcdr.cpp Log: Added chanvar handling to MysqlCDR. Merged to trunk r1610. Modified: freeswitch/branches/mishehu/src/mod/applications/mod_rss/mod_rss.c ============================================================================== --- freeswitch/branches/mishehu/src/mod/applications/mod_rss/mod_rss.c (original) +++ freeswitch/branches/mishehu/src/mod/applications/mod_rss/mod_rss.c Mon Jun 12 17:23:14 2006 @@ -118,8 +118,8 @@ return SWITCH_STATUS_BREAK; break; case '2': - if (dtb->speed < 220) { - dtb->speed += 20; + if (dtb->speed < 260) { + dtb->speed += 30; switch_core_speech_numeric_param_tts(dtb->sh, "speech/rate", dtb->speed); switch_set_flag(dtb, SFLAG_INFO); return SWITCH_STATUS_BREAK; @@ -132,7 +132,7 @@ return SWITCH_STATUS_BREAK; case '8': if (dtb->speed > 80) { - dtb->speed -= 20; + dtb->speed -= 30; switch_core_speech_numeric_param_tts(dtb->sh, "speech/rate", dtb->speed); switch_set_flag(dtb, SFLAG_INFO); return SWITCH_STATUS_BREAK; @@ -341,7 +341,7 @@ #endif char term; char *cp; - int blen = sizeof(cmd) - strlen(cmd); + int blen = sizeof(cmd) - (int)strlen(cmd); cp = cmd + blen; switch_ivr_collect_digits_count(session, cp, blen, blen, "#", &term, 5000); @@ -474,7 +474,7 @@ switch_strftime(date, &retsize, sizeof(date), "%A, %B %d, %Y. %I:%M %p", &tm); - snprintf(buf, sizeof(buf), "%s. %s. %s. local time: %s, Press 0 for options or pound to return to the main menu. ", + snprintf(buf, sizeof(buf), "%s. %s. %s. local time: %s, Press 0 for options, 5 to change voice, or pound to return to the main menu. ", title_txt, description_txt, rights_txt, date); status = switch_ivr_speak_text_handle(session, &sh, @@ -552,7 +552,7 @@ "Press star to pause or resume speech. " "To go to the next item, press six. " "To go back, press 4. " - "Press eight to go faster, two to slow down, or 7 to resume normal speed. " + "Press two to go faster, eight to slow down, or 7 to resume normal speed. " "To change voices, press five. To restore the original voice press 9. " "To hear these options again, press zero or press pound to return to the main menu. "); } else { @@ -560,7 +560,7 @@ len = (uint32_t)strlen(buf); if (entries[dtb.index].subject_txt) { - snprintf(buf + len, sizeof(buf) - len, "Subject %s. ", entries[dtb.index].subject_txt); + snprintf(buf + len, sizeof(buf) - len, "Subject: %s. ", entries[dtb.index].subject_txt); len = (uint32_t)strlen(buf); } Modified: freeswitch/branches/mishehu/src/mod/loggers/mod_cdr/anthmcdr.cpp ============================================================================== --- freeswitch/branches/mishehu/src/mod/loggers/mod_cdr/anthmcdr.cpp (original) +++ freeswitch/branches/mishehu/src/mod/loggers/mod_cdr/anthmcdr.cpp Mon Jun 12 17:23:14 2006 @@ -74,7 +74,7 @@ outputfile_path = val; tempcount++; } - else if (!strcmp(var, "channel_variables")) + else if (!strcmp(var, "chanvars")) { std::string unparsed; unparsed = val; @@ -82,7 +82,7 @@ { chanvars_list = parse_channel_variables_xconfig(unparsed); logchanvars=1; - }; + } } } @@ -131,7 +131,7 @@ iBeg = chanvars.begin(); iEnd = chanvars.end(); for(iItr = iBeg; iItr != iEnd; iItr++) - outputfile << "\t\t\'" << iItr->first << "\' = \'" << iItr.second << "\'," << std::endl; + outputfile << "\t\t\'" << iItr->first << "\' = \'" << iItr->second << "\'," << std::endl; } outputfile << "\t}," << std::endl << "};" << std::endl << std::endl; } Modified: freeswitch/branches/mishehu/src/mod/loggers/mod_cdr/basecdr.cpp ============================================================================== --- freeswitch/branches/mishehu/src/mod/loggers/mod_cdr/basecdr.cpp (original) +++ freeswitch/branches/mishehu/src/mod/loggers/mod_cdr/basecdr.cpp Mon Jun 12 17:23:14 2006 @@ -185,12 +185,15 @@ if(stringlist.front() == "*") { switch_hash_index_t *hi; - char *var,*val; + void *var,*val; for (hi = switch_hash_first(0, channel->variables); hi; hi = switch_hash_next(hi)) { switch_hash_this(hi, &var, NULL, &val); - chanvars[*var] = *val; + std::string tempstring_first, tempstring_second; + tempstring_first = (char *) var; + tempstring_second = (char *) val; + chanvars[tempstring_first] = tempstring_second; } } else Modified: freeswitch/branches/mishehu/src/mod/loggers/mod_cdr/mysqlcdr.cpp ============================================================================== --- freeswitch/branches/mishehu/src/mod/loggers/mod_cdr/mysqlcdr.cpp (original) +++ freeswitch/branches/mishehu/src/mod/loggers/mod_cdr/mysqlcdr.cpp Mon Jun 12 17:23:14 2006 @@ -54,6 +54,10 @@ memset(sql_query,0,1024); strncpy(sql_query,tmpsql_query,strlen(tmpsql_query)); + char tempsql_query_chanvars[] = "INSERT INTO chanvars (callid,varname,varvalue) VALUES(?,?,?)"; + memset(sql_query_chanvars,0,1024); + strncpy(sql_query_chanvars,tempsql_query_chanvars,strlen(tempsql_query_chanvars)); + if ((*settings = switch_xml_child(*cfg, "mysqlcdr"))) { for (param = switch_xml_child(*settings, "param"); *param; *param = (*param)->next) @@ -71,8 +75,13 @@ strncpy(dbname,val,strlen(val)); else if(!strcmp(var,"chanvars") { - logchanvars = 1; - + std::string unparsed; + unparsed = val; + if(unparsed.size() > 0) + { + chanvars_list = parse_channel_variables_xconfig(unparsed); + logchanvars=1; + } } } @@ -90,11 +99,12 @@ else connectionstate = 1; - //mysql_autocommit(conn,0); + mysql_autocommit(conn,0); stmt = mysql_stmt_init(conn); mysql_stmt_prepare(stmt,sql_query,strlen(sql_query)); + if(logchanvars) + mysql_stmt_prepare(stmt_chanvars,sql_query_chanvars,strlen(sql_query_chanvars)); - //memset(bind,0,sizeof(bind)); // Zero out the memory used for bind. } } @@ -191,7 +201,42 @@ mysql_stmt_bind_param(stmt,bindmetemp); switch_console_printf(SWITCH_CHANNEL_CONSOLE, "MysqlCDR::process_record() - Trying to execute the statement.\n"); mysql_stmt_execute(stmt); + long long insertid = mysql_stmt_insert_id(); + if(logchanvars && chanvars.size() > 0) + { + std::map<std::string,std::string>::iterator iItr,iBeg,iEnd; + iBeg = chanvars.begin(); + iEnd = chanvars.end(); + for(iItr = iBeg; iItr != iEnd; iItr++) + { + MYSQL_BIND bindme_chanvars[3]; + memset(bindme_chanvars,0,sizeof(bindme_chanvars)); + + bindme_chanvars[0].buffer_type = MYSQL_TYPE_LONGLONG; + bindme_chanvars[0].buffer = &insertid; + + bindme_chanvars[1].buffer_type = MYSQL_TYPE_VAR_STRING; + long unsigned int varname_length = iItr->first.size(); + bindme_chanvars[1].length = &varname_length; + bindme_chanvars[1].buffer_length = varname_length; + char varname_temp[] = iItr->first.c_str(); + bindme_chanvars[1].buffer = varname_temp; + + bindme_chanvars[2].buffer_type = MYSQL_TYPE_VAR_STRING; + long unsigned int varvalue_length = iItr->second.size(); + bindme_chanvars[2].length = &varvalue_length; + bindme_chanvars[2].buffer_length = varvalue_length; + char varvalue_temp[] = iItr->second.c_str(); + bindme_chanvars[1].buffer = varvalue_temp; + + mysql_stmt_bind_param(stmt_chanvars,bindme_chanvars); + mysql_stmt_execute(stmt_chanvars); + } + } + + mysql_commit(conn); + /* For future use if(!mysql_stmt_execute(stmt)) { @@ -216,6 +261,7 @@ void MysqlCDR::disconnect() { mysql_stmt_close(stmt); + mysql_stmt_close(stmt_chanvars); mysql_close(conn); }
participants (1)
-
mishehu@freeswitch.org