diff --git a/apps/voicemail/AnswerMachine.cpp b/apps/voicemail/AnswerMachine.cpp index e41e6e90..43eab7e6 100644 --- a/apps/voicemail/AnswerMachine.cpp +++ b/apps/voicemail/AnswerMachine.cpp @@ -451,9 +451,10 @@ AmSession* AnswerMachineFactory::onInvite(const AmSipRequest& req) AmSession::Exception(500, "voicemail: parameters not found"); } - language = get_header_keyvalue(iptel_app_param,"Language"); - email = get_header_keyvalue(iptel_app_param,"Email-Address"); - string mode = get_header_keyvalue(iptel_app_param,"Mode"); + language = get_header_keyvalue(iptel_app_param, "lng", "Language"); + email = get_header_keyvalue(iptel_app_param, "eml", "Email-Address"); + + string mode = get_header_keyvalue(iptel_app_param,"mod", "Mode"); if (!mode.empty()) { if (mode == "box") vm_mode = MODE_BOX; @@ -461,9 +462,17 @@ AmSession* AnswerMachineFactory::onInvite(const AmSipRequest& req) vm_mode = MODE_BOTH; } - user = get_header_keyvalue(iptel_app_param,"User"); - sender = get_header_keyvalue(iptel_app_param,"Sender"); - domain = get_header_keyvalue(iptel_app_param,"Domain"); + user = get_header_keyvalue(iptel_app_param,"usr", "User"); + if (!user.length()) + user = req.user; + + sender = get_header_keyvalue(iptel_app_param, "snd", "Sender"); + if (!sender.length()) + sender = req.from; + + domain = get_header_keyvalue(iptel_app_param, "dom", "Domain"); + if (!domain.length()) + domain = req.domain; // checks if (user.empty()) @@ -480,6 +489,7 @@ AmSession* AnswerMachineFactory::onInvite(const AmSipRequest& req) DBG("voicemail invocation parameters: \n"); DBG(" Mode: <%s> \n", mode.c_str()); + DBG(" Email: <%s> \n", email.c_str()); DBG(" User: <%s> \n", user.c_str()); DBG(" Sender: <%s> \n", sender.c_str()); DBG(" Domain: <%s> \n", domain.c_str()); @@ -588,6 +598,7 @@ AnswerMachineDialog::AnswerMachineDialog(const string& user, { email_dict["user"] = user; email_dict["sender"] = sender; + email_dict["from"] = sender; email_dict["domain"] = domain; email_dict["email"] = email; @@ -724,7 +735,18 @@ void AnswerMachineDialog::saveMessage() char buf[1024]; unsigned int rec_size = a_msg.getDataSize(); DBG("recorded data size: %i\n",rec_size); - + + int rec_length = a_msg.getLength(); + char rec_len_str[10]; + snprintf(rec_len_str, sizeof(rec_len_str), + "%.2f", float(rec_length)/1000.0); + string rec_len_s = rec_len_str; + + DBG("recorded file length: %i ms (%s sec)\n", + rec_length, rec_len_s.c_str()); + + email_dict["vmsg_length"] = rec_len_s; + if(!rec_size){ unlink(msg_filename.c_str());